aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorChris Johnston <christopher_johnston@me.com>2024-01-11 21:38:30 +0000
committerGitHub <noreply@github.com>2024-01-11 16:38:30 -0500
commit45ee9cdba4e6e7c9ac918859b89d2b2ed38d4571 (patch)
treefab43518bdb1dce24bb9731b6f41f7f73a193282 /src/lib
parent057f3e9c533704d9f1d695e8df9c4779c983c337 (diff)
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 <sebastien@castiel.me>
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/api.ts11
-rw-r--r--src/lib/schemas.ts1
2 files changed, 10 insertions, 2 deletions
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(
[