From 45ee9cdba4e6e7c9ac918859b89d2b2ed38d4571 Mon Sep 17 00:00:00 2001 From: Chris Johnston Date: Thu, 11 Jan 2024 21:38:30 +0000 Subject: Assign categories to expenses (#28) * add expense categories * set category to Payment for reimbursements * Insert categories as part of the migration * Display category groups --------- Co-authored-by: Sebastien Castiel --- src/lib/api.ts | 11 +++++++++-- src/lib/schemas.ts | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'src/lib') diff --git a/src/lib/api.ts b/src/lib/api.ts index 6ff55b6..2a03ded 100644 --- a/src/lib/api.ts +++ b/src/lib/api.ts @@ -48,6 +48,7 @@ export async function createExpense( id: randomId(), groupId, expenseDate: expenseFormValues.expenseDate, + categoryId: expenseFormValues.category, amount: expenseFormValues.amount, title: expenseFormValues.title, paidById: expenseFormValues.paidBy, @@ -124,6 +125,7 @@ export async function updateExpense( expenseDate: expenseFormValues.expenseDate, amount: expenseFormValues.amount, title: expenseFormValues.title, + categoryId: expenseFormValues.category, paidById: expenseFormValues.paidBy, splitMode: expenseFormValues.splitMode, paidFor: { @@ -207,11 +209,16 @@ export async function getGroup(groupId: string) { }) } +export async function getCategories() { + const prisma = await getPrisma() + return prisma.category.findMany() +} + export async function getGroupExpenses(groupId: string) { const prisma = await getPrisma() return prisma.expense.findMany({ where: { groupId }, - include: { paidFor: { include: { participant: true } }, paidBy: true }, + include: { paidFor: { include: { participant: true } }, paidBy: true, category: true }, orderBy: { expenseDate: 'desc' }, }) } @@ -220,6 +227,6 @@ export async function getExpense(groupId: string, expenseId: string) { const prisma = await getPrisma() return prisma.expense.findUnique({ where: { id: expenseId }, - include: { paidBy: true, paidFor: true }, + include: { paidBy: true, paidFor: true, category: true }, }) } diff --git a/src/lib/schemas.ts b/src/lib/schemas.ts index 14b253c..be90481 100644 --- a/src/lib/schemas.ts +++ b/src/lib/schemas.ts @@ -45,6 +45,7 @@ export const expenseFormSchema = z title: z .string({ required_error: 'Please enter a title.' }) .min(2, 'Enter at least two characters.'), + category: z.coerce.number().default(0), amount: z .union( [ -- cgit v1.3