Cosa sono Prisma e Zod?

Prisma è uno strumento ORM (Object-Relational Mapping) che utilizza un file di schema per definire la struttura del database con modelli, campi e relazioni. Zod è una libreria di validazione degli schemi TypeScript-first che consente di definire validatori di tipi a runtime. La conversione degli schemi Prisma in schemi Zod consente di riutilizzare le definizioni dei modelli del database per la validazione degli input, garantendo coerenza tra la struttura del database e la logica di validazione in tutta l'applicazione.

Descrizione dello strumento

Questo strumento converte automaticamente le definizioni degli schemi Prisma in schemi di validazione Zod. Analizza i modelli, le enumerazioni e i tipi di campo Prisma, quindi genera gli schemi Zod corrispondenti con mappature dei tipi appropriate. Lo strumento gestisce campi opzionali, array e tipi speciali Prisma, creando schemi di validazione pronti per TypeScript che rispecchiano la struttura del database.

Funzionalità

  • Mappatura automatica dei tipi: Converte i tipi Prisma (String, Int, DateTime, ecc.) nei validatori Zod corrispondenti
  • Supporto enumerazioni: Genera schemi di enumerazione Zod dalle definizioni di enumerazione Prisma
  • Gestione array: Converte correttamente i campi lista Prisma in validatori array Zod
  • Campi opzionali: Mantiene le definizioni dei campi opzionali negli schemi Zod generati
  • Tipi TypeScript: Genera automaticamente definizioni di tipo TypeScript utilizzando z.infer
  • Commenti sulle relazioni: Aggiunge commenti per i campi di relazione che non possono essere convertiti direttamente
  • Modelli multipli: Elabora tutti i modelli e le enumerazioni in un singolo file di schema Prisma
  • Evidenziazione sintassi: Editor di codice con evidenziazione della sintassi Prisma e TypeScript

Casi d'uso

  • Validazione input API: Validare i corpi delle richieste rispetto ai modelli del database
  • Validazione form: Utilizzare schemi Zod con librerie di form come React Hook Form
  • Sicurezza dei tipi: Garantire che la validazione runtime corrisponda allo schema del database
  • Generazione codice: Generare automaticamente la logica di validazione dai modelli del database
  • Coerenza: Mantenere gli schemi di validazione sincronizzati con la struttura del database
  • Resolver GraphQL: Validare gli input nei resolver di mutazione GraphQL
  • Supporto migrazioni: Aggiornare gli schemi di validazione quando cambiano i modelli del database

Mappature dei tipi supportate

  • Stringz.string()
  • Int, Float, Decimalz.number()
  • Booleanz.boolean()
  • DateTimez.date()
  • Jsonz.record(z.any())
  • Bytesz.instanceof(Buffer)
  • BigIntz.bigint()
  • Tipi personalizzati/enumerazioni → z.lazy(() => TypeSchema)
  • Liste → z.array()
  • Campi opzionali → .optional()