¿Qué son Prisma y Zod?

Prisma es una herramienta ORM (Mapeo Objeto-Relacional) que utiliza un archivo de esquema para definir la estructura de su base de datos con modelos, campos y relaciones. Zod es una biblioteca de validación de esquemas TypeScript-first que le permite definir validadores de tipos en tiempo de ejecución. Convertir esquemas de Prisma a esquemas de Zod le permite reutilizar las definiciones de modelos de base de datos para la validación de entradas, garantizando consistencia entre la estructura de su base de datos y la lógica de validación en toda su aplicación.

Descripción de la herramienta

Esta herramienta convierte automáticamente definiciones de esquemas Prisma en esquemas de validación Zod. Analiza sus modelos, enumeraciones y tipos de campos Prisma, luego genera los esquemas Zod correspondientes con mapeo de tipos apropiado. La herramienta maneja campos opcionales, arrays y tipos especiales de Prisma, creando esquemas de validación listos para TypeScript que reflejan la estructura de su base de datos.

Características

  • Mapeo automático de tipos: Convierte tipos Prisma (String, Int, DateTime, etc.) a validadores Zod correspondientes
  • Soporte de enumeraciones: Genera esquemas de enumeración Zod a partir de definiciones de enumeración Prisma
  • Manejo de arrays: Convierte correctamente campos de lista Prisma a validadores de array Zod
  • Campos opcionales: Mantiene definiciones de campos opcionales en los esquemas Zod generados
  • Tipos TypeScript: Genera automáticamente definiciones de tipos TypeScript usando z.infer
  • Comentarios de relaciones: Agrega comentarios para campos de relación que no pueden convertirse directamente
  • Múltiples modelos: Procesa todos los modelos y enumeraciones en un único archivo de esquema Prisma
  • Resaltado de sintaxis: Editor de código con resaltado de sintaxis Prisma y TypeScript

Casos de uso

  • Validación de entrada API: Validar cuerpos de solicitud contra sus modelos de base de datos
  • Validación de formularios: Usar esquemas Zod con bibliotecas de formularios como React Hook Form
  • Seguridad de tipos: Asegurar que la validación en tiempo de ejecución coincida con su esquema de base de datos
  • Generación de código: Generar automáticamente lógica de validación desde sus modelos de base de datos
  • Consistencia: Mantener esquemas de validación sincronizados con la estructura de la base de datos
  • Resolvers GraphQL: Validar entradas en resolvers de mutación GraphQL
  • Soporte de migración: Actualizar esquemas de validación cuando cambian los modelos de base de datos

Mapeos de tipos soportados

  • Stringz.string()
  • Int, Float, Decimalz.number()
  • Booleanz.boolean()
  • DateTimez.date()
  • Jsonz.record(z.any())
  • Bytesz.instanceof(Buffer)
  • BigIntz.bigint()
  • Tipos personalizados/enumeraciones → z.lazy(() => TypeSchema)
  • Listas → z.array()
  • Campos opcionales → .optional()