Что такое Prisma и Zod?

Prisma — это инструмент ORM (объектно-реляционное отображение), который использует файл схемы для определения структуры базы данных с моделями, полями и связями. Zod — это библиотека валидации схем для TypeScript, которая позволяет определять валидаторы типов времени выполнения. Преобразование схем Prisma в схемы Zod позволяет повторно использовать определения моделей базы данных для валидации входных данных, обеспечивая согласованность между структурой базы данных и логикой валидации во всем приложении.

Описание инструмента

Этот инструмент автоматически преобразует определения схем Prisma в схемы валидации Zod. Он анализирует ваши модели, перечисления и типы полей Prisma, затем генерирует соответствующие схемы Zod с правильным отображением типов. Инструмент обрабатывает необязательные поля, массивы и специальные типы Prisma, создавая готовые для TypeScript схемы валидации, которые отражают структуру вашей базы данных.

Возможности

  • Автоматическое отображение типов: Преобразует типы Prisma (String, Int, DateTime и т.д.) в соответствующие валидаторы Zod
  • Поддержка перечислений: Генерирует схемы перечислений Zod из определений перечислений Prisma
  • Обработка массивов: Правильно преобразует поля-списки Prisma в валидаторы массивов Zod
  • Необязательные поля: Сохраняет определения необязательных полей в генерируемых схемах Zod
  • Типы TypeScript: Автоматически генерирует определения типов TypeScript с использованием z.infer
  • Комментарии к связям: Добавляет комментарии для полей связей, которые нельзя напрямую преобразовать
  • Множественные модели: Обрабатывает все модели и перечисления в одном файле схемы Prisma
  • Подсветка синтаксиса: Редактор кода с подсветкой синтаксиса Prisma и TypeScript

Сценарии использования

  • Валидация входных данных API: Проверка тел запросов на соответствие моделям базы данных
  • Валидация форм: Использование схем Zod с библиотеками форм, такими как React Hook Form
  • Типобезопасность: Обеспечение соответствия валидации времени выполнения схеме базы данных
  • Генерация кода: Автоматическая генерация логики валидации из моделей базы данных
  • Согласованность: Синхронизация схем валидации со структурой базы данных
  • Резолверы GraphQL: Валидация входных данных в резолверах мутаций GraphQL
  • Поддержка миграций: Обновление схем валидации при изменении моделей базы данных

Поддерживаемые отображения типов

  • Stringz.string()
  • Int, Float, Decimalz.number()
  • Booleanz.boolean()
  • DateTimez.date()
  • Jsonz.record(z.any())
  • Bytesz.instanceof(Buffer)
  • BigIntz.bigint()
  • Пользовательские типы/перечисления → z.lazy(() => TypeSchema)
  • Списки → z.array()
  • Необязательные поля → .optional()