Какво е Prisma и Zod?

Prisma е ORM (Object-Relational Mapping) инструмент, който използва файл със схема за определяне на структурата на вашата база данни с модели, полета и връзки. Zod е TypeScript-първа библиотека за валидация на схеми, която ви позволява да определите валидатори на типове по време на изпълнение. Преобразуването на Prisma схеми в Zod схеми ви позволява да преизползвате дефинициите на моделите на вашата база данни за валидация на входни данни, което гарантира съответствие между структурата на вашата база данни и логиката на валидация в цялото приложение.

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

Този инструмент автоматично преобразува дефинициите на Prisma схеми в Zod валидационни схеми. Той анализира вашите Prisma модели, enum-и и типове полета, след което генерира съответните Zod схеми с правилни картографирания на типове. Инструментът обработва незадължителни полета, масиви и специални Prisma типове, създавайки TypeScript-готини валидационни схеми, които отразяват структурата на вашата база данни.

Функции

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

Случаи на употреба

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

Поддържани картографирания на типове

  • Stringz.string()
  • Int, Float, Decimalz.number()
  • Booleanz.boolean()
  • DateTimez.date()
  • Jsonz.record(z.any())
  • Bytesz.instanceof(Buffer)
  • BigIntz.bigint()
  • Персонализирани типове/enum-и → z.lazy(() => TypeSchema)
  • Списъци → z.array()
  • Незадължителни полета → .optional()