diff --git a/apps/backend/src/modules/expenses/expenses.service.ts b/apps/backend/src/modules/expenses/expenses.service.ts index 093dfb9..5c799fe 100644 --- a/apps/backend/src/modules/expenses/expenses.service.ts +++ b/apps/backend/src/modules/expenses/expenses.service.ts @@ -146,38 +146,36 @@ export async function payExpense(id: number, data: z.infer sum + Number(e.amountPayed ?? 0), 0); - return { total }; + return { total: Number(result._sum.amountPayed ?? 0) }; } export async function getMonthlyTotals(year: number, month: number) { const [payed, pending] = await Promise.all([ - prisma.expense.findMany({ + prisma.expense.aggregate({ where: { year, month, status: PaymentStatus.PAYED }, - select: { amountPayed: true }, + _sum: { amountPayed: true }, }), - prisma.expense.findMany({ + prisma.expense.aggregate({ where: { year, month, status: PaymentStatus.PENDING }, - select: { amount: true }, + _sum: { amount: true }, }), ]); return { - payed: payed.reduce((sum, e) => sum + Number(e.amountPayed ?? 0), 0), - pending: pending.reduce((sum, e) => sum + Number(e.amount), 0), + payed: Number(payed._sum.amountPayed ?? 0), + pending: Number(pending._sum.amount ?? 0), }; } export async function getTotalPending() { - const expenses = await prisma.expense.findMany({ + const result = await prisma.expense.aggregate({ where: { status: PaymentStatus.PENDING }, - select: { amount: true }, + _sum: { amount: true }, }); - const total = expenses.reduce((sum, e) => sum + Number(e.amount), 0); - return { total }; + return { total: Number(result._sum.amount ?? 0) }; } export async function generateExpensesForCurrentMonth() {