import { router, publicProcedure, isAdminMiddleware, } from "../trpc"; import { z } from "zod"; import { projectAreaSchema } from "@/lib/schemas/projectAreaSchema"; import { v4 as uuidv4 } from 'uuid'; import { projectServiceFacade } from "../project/application/facade"; export const areasRouter = router({ createProjectArea: publicProcedure .use(isAdminMiddleware) .input(projectAreaSchema.extend({ id:z.string().default(()=>uuidv4()) })) .mutation(async ({ input, ctx }) => { const {projectId,...rest}=input const userId={value:ctx.user.userId} return await projectServiceFacade.createProjectArea(input as any,userId) }), updateProjectArea: publicProcedure .use(isAdminMiddleware) .input(projectAreaSchema.partial().extend({ id:z.string().uuid({message:'area id not valid'}) })) .mutation(async ({ input, ctx }) => { const userId={value:ctx.user.userId} return await projectServiceFacade.updateProjectArea(input as any,userId) }), deleteProjectArea: publicProcedure .use(isAdminMiddleware) .input( z.object({ id: z.string().uuid(), }) ) .mutation(async ({ input, ctx }) => { const { id } = input; const areaId={value:id} const userId={value:ctx.user.userId} return await projectServiceFacade.deleteProjectArea(areaId,userId) }), });