import { and, eq, ilike, isNull, ne, not, or } from "drizzle-orm"; import { contas, lancamentos } from "@/db/schema"; import { ACCOUNT_AUTO_INVOICE_NOTE_PREFIX, INITIAL_BALANCE_NOTE, } from "@/lib/contas/constants"; type DashboardAdminFiltersParams = { userId: string; adminPagadorId: string; }; type DashboardAdminPeriodFiltersParams = DashboardAdminFiltersParams & { period: string; }; export const buildDashboardAdminFilters = ({ userId, adminPagadorId, }: DashboardAdminFiltersParams) => [ eq(lancamentos.userId, userId), eq(lancamentos.pagadorId, adminPagadorId), ] as const; export const buildDashboardAdminPeriodFilters = ({ userId, period, adminPagadorId, }: DashboardAdminPeriodFiltersParams) => [ ...buildDashboardAdminFilters({ userId, adminPagadorId }), eq(lancamentos.period, period), ] as const; export const excludeAutoInvoiceEntries = () => or( isNull(lancamentos.note), not(ilike(lancamentos.note, `${ACCOUNT_AUTO_INVOICE_NOTE_PREFIX}%`)), ); export const excludeAutoGeneratedEntryNotes = () => or( isNull(lancamentos.note), and( ne(lancamentos.note, INITIAL_BALANCE_NOTE), not(ilike(lancamentos.note, `${ACCOUNT_AUTO_INVOICE_NOTE_PREFIX}%`)), ), ); export const excludeInitialBalanceWhenConfigured = () => or( ne(lancamentos.note, INITIAL_BALANCE_NOTE), isNull(contas.excludeInitialBalanceFromIncome), eq(contas.excludeInitialBalanceFromIncome, false), );