All files / apps/web/src/handlers/debts get-all.ts

100% Statements 5/5
100% Branches 0/0
100% Functions 2/2
100% Lines 5/5

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30    6x             5x   5x                     5x 6x            
import { authProcedure } from "~web/handlers/trpc";
 
export const procedure = authProcedure
	.meta({
		title: "Get all debts",
		description:
			"Returns the current  user's total debt amounts, summed per currency across all peers.",
	})
	.query(async ({ ctx }) => {
		const { database } = ctx;
 
		const debts = await database
			.selectFrom("debts")
			.where("debts.ownerUserId", "=", ctx.auth.userId)
			.select([
				"debts.currencyCode",
				database.fn.sum<string>("debts.amount").as("sum"),
			])
			.orderBy("debts.currencyCode")
			.groupBy(["debts.currencyCode"])
			.execute();
 
		return {
			items: debts.map(({ currencyCode, sum }) => ({
				currencyCode,
				sum: Number(sum),
			})),
		};
	});