import z from "zod"; import { createTRPCRouter, protectedApiProcedure } from "~/server/api/trpc"; import { db } from "~/server/db"; type ClienteData = { cognome?: string | undefined; nome?: string | undefined; cf?: string | undefined; telefono?: string | undefined; email?: string | undefined; data_nascita?: string | undefined; luogo_nascita?: string | undefined; naz_residenza?: string | undefined; provincia_residenza?: string | undefined; cap_residenza?: string | undefined; comune_residenza?: string | undefined; indirizzo_residenza?: string | undefined; civico_residenza?: string | undefined; }; const clienteDataSchema = z.object({ cap_residenza: z.string().optional(), cf: z.string().optional(), civico_residenza: z.string().optional(), cognome: z.string().optional(), comune_residenza: z.string().optional(), data_nascita: z.string().optional(), email: z.string().optional(), indirizzo_residenza: z.string().optional(), luogo_nascita: z.string().optional(), naz_residenza: z.string().optional(), nome: z.string().optional(), provincia_residenza: z.string().optional(), telefono: z.string().optional(), }); export const syncRouter = createTRPCRouter({ syncGet: protectedApiProcedure .input(z.object({ cf: z.string() })) .query(async ({ input }) => { const user = await db .selectFrom("users_anagrafica") .select([ "users_anagrafica.codice_fiscale", "users_anagrafica.userid", "users_anagrafica.data_nascita", "users_anagrafica.luogo_nascita", "users_anagrafica.nazione_residenza", "users_anagrafica.provincia_residenza", "users_anagrafica.cap_residenza", "users_anagrafica.comune_residenza", "users_anagrafica.via_residenza", "users_anagrafica.civico_residenza", ]) .innerJoin("users", "users.id", "users_anagrafica.userid") .select([ "users.nome", "users.cognome", "users.email", "users.telefono", ]) .where("users_anagrafica.codice_fiscale", "=", input.cf) .executeTakeFirst(); const result: ClienteData = { cognome: user?.cognome, nome: user?.nome, cf: user?.codice_fiscale || undefined, telefono: user?.telefono, email: user?.email, data_nascita: user?.data_nascita?.toLocaleDateString("it-IT", { year: "numeric", month: "2-digit", day: "2-digit", }), luogo_nascita: user?.luogo_nascita || undefined, naz_residenza: user?.nazione_residenza || undefined, provincia_residenza: user?.provincia_residenza || undefined, cap_residenza: user?.cap_residenza || undefined, comune_residenza: user?.comune_residenza || undefined, indirizzo_residenza: user?.via_residenza || undefined, civico_residenza: user?.civico_residenza || undefined, }; return result; }), syncPost: protectedApiProcedure .input(z.object({ data: clienteDataSchema })) .mutation(async ({ input }) => { console.log("input", input); // const parsed = clienteDataSchema.safeParse(JSON.parse(input.data)); // console.log("parsed", parsed); return { message: "Data received" }; }), });