/* eslint-disable @typescript-eslint/no-explicit-any */ /* IMPORT */ import { asc, count, desc, eq } from 'drizzle-orm'; import { PgTransaction } from 'drizzle-orm/pg-core'; import { riskEvents, risksView, type NewRiskEvents, type RiskEvents, } from '@/db/schema'; // ---------------------------------------------------------------------------------------------------- /* SELECT RISKS VIEW TRANSACTION */ async function selectRisksView( tx: PgTransaction, params: { where?: any; orderBy?: (ReturnType | ReturnType)[]; offset?: number; limit?: number; }, ) { const { where, orderBy, offset = 0, limit = 10, } = params; const result = await tx .select() .from(risksView) .where(where) .orderBy(...(orderBy ?? [])) .offset(offset) .limit(limit); return result; } /* SELECT COUNT TRANSACTION */ async function countRisksView( tx: PgTransaction, where?: any, ) { const result = await tx .select({ count: count() }) .from(risksView) .where(where); return result[0]?.count ?? 0; } /* SELECT RISK EVENTS TRANSACTION */ async function selectRiskEvents( tx: PgTransaction, params: { where?: any; orderBy?: (ReturnType | ReturnType)[]; offset?: number; limit?: number; }, ) { const { where, orderBy, offset = 0, limit = 10, } = params; const result = await tx .select() .from(riskEvents) .where(where) .orderBy(...(orderBy ?? [])) .offset(offset) .limit(limit); return result; } // ---------------------------------------------------------------------------------------------------- /* INSERT RISK EVENTS TRANSACTION */ async function insertRiskEvents( tx: PgTransaction, data: NewRiskEvents, ) { const [insertRes] = await tx .insert(riskEvents) .values(data) .returning(); return insertRes; } // ---------------------------------------------------------------------------------------------------- /* UPDATE RISK EVENTS TRANSACTION */ async function updateRiskEvents( tx: PgTransaction, eventId: number, data: Partial, ) { const [updateRes] = await tx .update(riskEvents) .set(data) .where(eq(riskEvents.id, eventId)) .returning(); return updateRes; } // ---------------------------------------------------------------------------------------------------- /* EXPORT */ export { countRisksView, insertRiskEvents, selectRisksView, selectRiskEvents, updateRiskEvents, };