import { withZod } from "@remix-validated-form/with-zod"; import z from "zod"; export const clinicSchema = { name: z.string().min(1, { message: "Il nome è obbligatorio" }), address: z.string().min(1, { message: "L'indirizzo è obbligatorio" }), city: z.string().min(1, { message: "La città è obbligatoria" }), province: z.string().length(2, { message: "La provincia è obbligatoria" }), postalCode: z.string().length(5, { message: "Il CAP è obbligatoria" }), phoneNumber: z .string() .min(5, { message: "Il numero di telefono è obbligatoria" }), }; export const clinic = z.object(clinicSchema); export const clinicKeys = Object.keys(clinicSchema); export type Clinic = z.infer; const union = z.discriminatedUnion("_action", [ z .object({ _action: z.literal("create"), _redirect: z.string().optional() }) .extend(clinicSchema), z .object({ _action: z.literal("update"), _id: z.string(), _redirect: z.string().optional(), }) .extend(clinicSchema), z.object({ _action: z.literal("delete"), _id: z.string(), _redirect: z.string().optional(), }), ]); export const validator = withZod(union);