import { z } from "zod"; import { router, publicProcedure } from "../trpc"; export const notesRouter = router({ getByActivity: publicProcedure .input(z.object({ activityId: z.number() })) .query(async ({ ctx, input }) => { return await ctx.queryBuilder .selectFrom("notes") .select(["id", "name", "createdAt", "updatedAt"]) .where("activities1", "=", input.activityId) .orderBy("createdAt", "desc") .execute(); }), getById: publicProcedure .input(z.object({ id: z.number() })) .query(async ({ ctx, input }) => { return await ctx.queryBuilder .selectFrom("notes") .select(["id", "name", "createdAt", "updatedAt"]) .where("id", "=", input.id) .executeTakeFirst(); }), create: publicProcedure .input( z.object({ name: z.string().min(1), activities1: z.array(z.number()), }) ) .mutation(async ({ ctx, input }) => { return await ctx.queryBuilder .insertInto("notes") .values(input) .executeTakeFirst(); }), update: publicProcedure .input( z.object({ id: z.number(), name: z.string().optional(), }) ) .mutation(async ({ ctx, input }) => { const { id, ...data } = input; const updateData = Object.fromEntries( Object.entries(data).filter(([, v]) => v !== undefined) ) as typeof data; return await ctx.queryBuilder .update("notes") .set(updateData) .where("id", "=", id) .execute(); }), delete: publicProcedure .input(z.object({ id: z.number() })) .mutation(async ({ ctx, input }) => { return await ctx.queryBuilder .deleteFrom("notes") .where("id", "=", input.id) .execute(); }), });