import z from "zod"; import { ComuniUpdateSchema, comuniId, NewComuniSchema, } from "~/schemas/public/Comuni"; import { NazioniUpdateSchema, NewNazioniSchema, nazioniId, } from "~/schemas/public/Nazioni"; import { NewProvincieSchema, ProvincieUpdateSchema, provincieId, } from "~/schemas/public/Provincie"; import { adminProcedure, createTRPCRouter, publicProcedure, } from "~/server/api/trpc"; import { createComune, createNazione, createProvincia, deleteComune, deleteNazione, deleteProvincia, editComune, editNazione, editProvincia, getComuni, getNazioni, getProvincie, } from "~/server/controllers/catasto.controller"; export const catastoRouter = createTRPCRouter({ getComuni: publicProcedure.query(async () => { return await getComuni(); }), createComune: adminProcedure .input(NewComuniSchema) .mutation(async ({ input }) => { return await createComune(input); }), editComune: adminProcedure .input( z.object({ id: comuniId, data: ComuniUpdateSchema, }), ) .mutation(async ({ input }) => { const { id, data } = input; return await editComune({ id, data }); }), deleteComune: adminProcedure .input( z.object({ id: comuniId, }), ) .mutation(async ({ input }) => { return await deleteComune(input.id); }), getProvincie: publicProcedure.query(async () => { return await getProvincie(); }), createProvincia: adminProcedure .input(NewProvincieSchema) .mutation(async ({ input }) => { return await createProvincia(input); }), editProvincia: adminProcedure .input( z.object({ id: provincieId, data: ProvincieUpdateSchema, }), ) .mutation(async ({ input }) => { const { id, data } = input; return await editProvincia({ id, data }); }), deleteProvincia: adminProcedure .input( z.object({ id: provincieId, }), ) .mutation(async ({ input }) => { return await deleteProvincia(input.id); }), getNazioni: publicProcedure.query(async () => { return await getNazioni(); }), createNazione: adminProcedure .input(NewNazioniSchema) .mutation(async ({ input }) => { return await createNazione(input); }), editNazione: adminProcedure .input( z.object({ id: nazioniId, data: NazioniUpdateSchema, }), ) .mutation(async ({ input }) => { const { id, data } = input; return await editNazione({ id, data }); }), deleteNazione: adminProcedure .input( z.object({ id: nazioniId, }), ) .mutation(async ({ input }) => { return await deleteNazione(input.id); }), });