Vad är Prisma och Zod?

Prisma är ett ORM (Object-Relational Mapping)-verktyg som använder en schemafil för att definiera din databasstruktur med modeller, fält och relationer. Zod är ett TypeScript‑först schema‑valideringsbibliotek som låter dig definiera typvaliderare vid körning. Att konvertera Prisma‑scheman till Zod‑scheman gör det möjligt att återanvända dina databasmodellsdefinitioner för inmatningsvalidering, vilket säkerställer konsistens mellan din databasstruktur och valideringslogik i hela applikationen.

Verktygsbeskrivning

Detta verktyg konverterar automatiskt Prisma‑schemadefinitioner till Zod‑valideringsscheman. Det analyserar dina Prisma‑modeller, enum‑typer och fälttyper och genererar därefter motsvarande Zod‑scheman med korrekta typmappningar. Verktyget hanterar valfria fält, arrayer och speciella Prisma‑typer och skapar TypeScript‑klara valideringsscheman som speglar din databasstruktur.

Funktioner

  • Automatisk typmappning: Konverterar Prisma‑typer (String, Int, DateTime, etc.) till motsvarande Zod‑validerare
  • Enum‑stöd: Genererar Zod‑enum‑scheman från Prisma‑enum‑definitioner
  • Array‑hantering: Konverterar korrekt Prisma‑listfält till Zod‑array‑validerare
  • Valfria fält: Bevarar definitioner av valfria fält i de genererade Zod‑schemana
  • TypeScript‑typer: Genererar automatiskt TypeScript‑typdefinitioner med z.infer
  • Relationskommentarer: Lägger till kommentarer för relationsfält som inte kan konverteras direkt
  • Flera modeller: Bearbetar alla modeller och enum‑typer i en enda Prisma‑schemafil
  • Syntax‑markering: Kodredigerare med Prisma‑ och TypeScript‑syntaxmarkering

Användningsområden

  • API‑inmatningsvalidering: Validera request‑kroppar mot dina databasmodeller
  • Formulärvalidering: Använd Zod‑scheman med formulärbibliotek som React Hook Form
  • Typ‑säkerhet: Säkerställ att körningsvalidering matchar ditt databasschema
  • Kodgenerering: Generera automatiskt valideringslogik från dina databasmodeller
  • Konsistens: Håll valideringsscheman synkroniserade med databasstrukturen
  • GraphQL‑resolvers: Validera indata i GraphQL‑mutationsresolvers
  • Migrationsstöd: Uppdatera valideringsscheman när databasmodeller ändras

Stödda typmappningar

  • Stringz.string()
  • Int, Float, Decimalz.number()
  • Booleanz.boolean()
  • DateTimez.date()
  • Jsonz.record(z.any())
  • Bytesz.instanceof(Buffer)
  • BigIntz.bigint()
  • Custom types/enums → z.lazy(() => TypeSchema)
  • Lists → z.array()
  • Optional fields → .optional()