mirror of
https://github.com/spliit-app/spliit.git
synced 2026-02-25 08:56:13 +01:00
Use tRPC for expense form (#251)
This commit is contained in:
committed by
GitHub
parent
2281316d58
commit
21d0c02687
23
src/trpc/routers/groups/expenses/create.procedure.ts
Normal file
23
src/trpc/routers/groups/expenses/create.procedure.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { createExpense } from '@/lib/api'
|
||||
import { expenseFormSchema } from '@/lib/schemas'
|
||||
import { baseProcedure } from '@/trpc/init'
|
||||
import { z } from 'zod'
|
||||
|
||||
export const createGroupExpenseProcedure = baseProcedure
|
||||
.input(
|
||||
z.object({
|
||||
groupId: z.string().min(1),
|
||||
expenseFormValues: expenseFormSchema,
|
||||
participantId: z.string().optional(),
|
||||
}),
|
||||
)
|
||||
.mutation(
|
||||
async ({ input: { groupId, expenseFormValues, participantId } }) => {
|
||||
const expense = await createExpense(
|
||||
expenseFormValues,
|
||||
groupId,
|
||||
participantId,
|
||||
)
|
||||
return { expenseId: expense.id }
|
||||
},
|
||||
)
|
||||
16
src/trpc/routers/groups/expenses/delete.procedure.ts
Normal file
16
src/trpc/routers/groups/expenses/delete.procedure.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
import { deleteExpense } from '@/lib/api'
|
||||
import { baseProcedure } from '@/trpc/init'
|
||||
import { z } from 'zod'
|
||||
|
||||
export const deleteGroupExpenseProcedure = baseProcedure
|
||||
.input(
|
||||
z.object({
|
||||
expenseId: z.string().min(1),
|
||||
groupId: z.string().min(1),
|
||||
participantId: z.string().optional(),
|
||||
}),
|
||||
)
|
||||
.mutation(async ({ input: { expenseId, groupId, participantId } }) => {
|
||||
await deleteExpense(groupId, expenseId, participantId)
|
||||
return {}
|
||||
})
|
||||
17
src/trpc/routers/groups/expenses/get.procedure.ts
Normal file
17
src/trpc/routers/groups/expenses/get.procedure.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import { getExpense } from '@/lib/api'
|
||||
import { baseProcedure } from '@/trpc/init'
|
||||
import { TRPCError } from '@trpc/server'
|
||||
import { z } from 'zod'
|
||||
|
||||
export const getGroupExpenseProcedure = baseProcedure
|
||||
.input(z.object({ groupId: z.string().min(1), expenseId: z.string().min(1) }))
|
||||
.query(async ({ input: { groupId, expenseId } }) => {
|
||||
const expense = await getExpense(groupId, expenseId)
|
||||
if (!expense) {
|
||||
throw new TRPCError({
|
||||
code: 'NOT_FOUND',
|
||||
message: 'Expense not found',
|
||||
})
|
||||
}
|
||||
return { expense }
|
||||
})
|
||||
@@ -1,6 +1,14 @@
|
||||
import { createTRPCRouter } from '@/trpc/init'
|
||||
import { createGroupExpenseProcedure } from '@/trpc/routers/groups/expenses/create.procedure'
|
||||
import { deleteGroupExpenseProcedure } from '@/trpc/routers/groups/expenses/delete.procedure'
|
||||
import { getGroupExpenseProcedure } from '@/trpc/routers/groups/expenses/get.procedure'
|
||||
import { listGroupExpensesProcedure } from '@/trpc/routers/groups/expenses/list.procedure'
|
||||
import { updateGroupExpenseProcedure } from '@/trpc/routers/groups/expenses/update.procedure'
|
||||
|
||||
export const groupExpensesRouter = createTRPCRouter({
|
||||
list: listGroupExpensesProcedure,
|
||||
get: getGroupExpenseProcedure,
|
||||
create: createGroupExpenseProcedure,
|
||||
update: updateGroupExpenseProcedure,
|
||||
delete: deleteGroupExpenseProcedure,
|
||||
})
|
||||
|
||||
27
src/trpc/routers/groups/expenses/update.procedure.ts
Normal file
27
src/trpc/routers/groups/expenses/update.procedure.ts
Normal file
@@ -0,0 +1,27 @@
|
||||
import { updateExpense } from '@/lib/api'
|
||||
import { expenseFormSchema } from '@/lib/schemas'
|
||||
import { baseProcedure } from '@/trpc/init'
|
||||
import { z } from 'zod'
|
||||
|
||||
export const updateGroupExpenseProcedure = baseProcedure
|
||||
.input(
|
||||
z.object({
|
||||
expenseId: z.string().min(1),
|
||||
groupId: z.string().min(1),
|
||||
expenseFormValues: expenseFormSchema,
|
||||
participantId: z.string().optional(),
|
||||
}),
|
||||
)
|
||||
.mutation(
|
||||
async ({
|
||||
input: { expenseId, groupId, expenseFormValues, participantId },
|
||||
}) => {
|
||||
const expense = await updateExpense(
|
||||
groupId,
|
||||
expenseId,
|
||||
expenseFormValues,
|
||||
participantId,
|
||||
)
|
||||
return { expenseId: expense.id }
|
||||
},
|
||||
)
|
||||
Reference in New Issue
Block a user