diff options
| author | Chris Johnston <christopher_johnston@me.com> | 2024-01-11 21:38:30 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-11 16:38:30 -0500 |
| commit | 45ee9cdba4e6e7c9ac918859b89d2b2ed38d4571 (patch) | |
| tree | fab43518bdb1dce24bb9731b6f41f7f73a193282 /src/lib | |
| parent | 057f3e9c533704d9f1d695e8df9c4779c983c337 (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.ts | 11 | ||||
| -rw-r--r-- | src/lib/schemas.ts | 1 |
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( [ |
