Co to jest Prisma i Zod?

Prisma jest narzędziem ORM (Object-Relational Mapping), które używa pliku schematu do definiowania struktury bazy danych za pomocą modeli, pól i relacji. Zod jest biblioteką walidacji schematów typu TypeScript‑first, umożliwiającą definiowanie walidatorów typów w czasie wykonywania. Konwersja schematów Prisma na schematy Zod pozwala ponownie wykorzystać definicje modeli bazy danych do walidacji danych wejściowych, zapewniając spójność między strukturą bazy a logiką walidacji w całej aplikacji.

Opis narzędzia

To narzędzie automatycznie konwertuje definicje schematów Prisma na schematy walidacji Zod. Parsuje modele, enumy i typy pól Prisma, a następnie generuje odpowiadające schematy Zod z właściwymi mapowaniami typów. Narzędzie obsługuje pola opcjonalne, tablice oraz specjalne typy Prisma, tworząc gotowe do użycia w TypeScript schematy walidacji, które odzwierciedlają strukturę bazy danych.

Funkcje

  • Automatyczne mapowanie typów: Konwertuje typy Prisma (String, Int, DateTime, itp.) na odpowiednie walidatory Zod
  • Obsługa enumów: Generuje schematy enum Zod na podstawie definicji enumów Prisma
  • Obsługa tablic: Poprawnie konwertuje pola list w Prisma na walidatory tablic Zod
  • Pola opcjonalne: Zachowuje definicje pól opcjonalnych w generowanych schematach Zod
  • Typy TypeScript: Automatycznie generuje definicje typów TypeScript przy użyciu z.infer
  • Komentarze relacji: Dodaje komentarze do pól relacji, które nie mogą być bezpośrednio skonwertowane
  • Wiele modeli: Przetwarza wszystkie modele i enumy w jednym pliku schematu Prisma
  • Podświetlanie składni: Edytor kodu z podświetlaniem składni Prisma i TypeScript

Przypadki użycia

  • Walidacja wejść API: Waliduj ciała żądań względem modeli bazy danych
  • Walidacja formularzy: Używaj schematów Zod z bibliotekami formularzy, takimi jak React Hook Form
  • Bezpieczeństwo typów: Zapewnij, że walidacja w czasie wykonywania odpowiada schematowi bazy danych
  • Generowanie kodu: Automatycznie generuj logikę walidacji na podstawie modeli bazy danych
  • Spójność: Utrzymuj schematy walidacji zsynchronizowane ze strukturą bazy danych
  • Resolverzy GraphQL: Waliduj dane wejściowe w resolverach mutacji GraphQL
  • Wsparcie migracji: Aktualizuj schematy walidacji po zmianie modeli bazy danych

Obsługiwane mapowania typów

  • Stringz.string()
  • Int, Float, Decimalz.number()
  • Booleanz.boolean()
  • DateTimez.date()
  • Jsonz.record(z.any())
  • Bytesz.instanceof(Buffer)
  • BigIntz.bigint()
  • Typy niestandardowe/enumy → z.lazy(() => TypeSchema)
  • Listy → z.array()
  • Pola opcjonalne → .optional()