• Stars
    star
    407
  • Rank 106,183 (Top 3 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created over 2 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Prisma 2+ generator to emit Zod schemas from your Prisma schema

Prisma Zod Generator

npm version npm HitCount npm

Automatically generate Zod schemas from your Prisma Schema, and use them to validate your API endpoints or any other use you have. Updates every time npx prisma generate runs.

Buy Me A Coffee

Table of Contents

Supported Prisma Versions

Prisma 4

  • 0.3.0 and higher

Prisma 2/3

  • 0.2.0 and lower

Installation

Using npm:

 npm install prisma-zod-generator

Using yarn:

 yarn add prisma-zod-generator

Usage

1- Star this repo 😉

2- Add the generator to your Prisma schema

generator zod {
  provider = "prisma-zod-generator"
}

3- Enable strict mode in tsconfig as it is required by Zod, and considered a Typescript best practice

{
  "compilerOptions": {
    "strict": true
  }
}

4- Running npx prisma generate for the following schema.prisma

model User {
  id    Int     @id @default(autoincrement())
  email String  @unique
  name  String?
  posts Post[]
}

model Post {
  id        Int      @id @default(autoincrement())
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
  title     String
  content   String?
  published Boolean  @default(false)
  viewCount Int      @default(0)
  author    User?    @relation(fields: [authorId], references: [id])
  authorId  Int?
  likes     BigInt
}

will generate the following files

Zod Schemas

5- Use generated schemas somewhere in your API logic, like middleware or decorator

import { PostCreateOneSchema } from './prisma/generated/schemas/createOnePost.schema';

app.post('/blog', async (req, res, next) => {
  const { body } = req;
  await PostCreateOneSchema.parse(body);
});

Customizations

Skipping entire models

/// @@Gen.model(hide: true)
model User {
  id    Int     @id @default(autoincrement())
  email String  @unique
  name  String?
}

Additional Options

Option Description Type Default
output Output directory for the generated zod schemas string ./generated
isGenerateSelect Enables the generation of Select related schemas and the select property boolean false
isGenerateInclude Enables the generation of Include related schemas and the include property boolean false

Use additional options in the schema.prisma

generator zod {
  provider          = "prisma-zod-generator"
  output            = "./generated-zod-schemas"
  isGenerateSelect  = true
  isGenerateInclude = true
}

More Repositories

1

prisma-trpc-generator

Prisma 2+ generator to emit fully implemented tRPC routers
TypeScript
625
star
2

prisma-class-validator-generator

Prisma 2+ generator to emit typescript models of your database with class validator
TypeScript
55
star
3

prisma-yup-generator

Prisma 2+ generator to emit Yup schemas from your Prisma schema
TypeScript
48
star
4

prisma-trpc-shield-generator

Prisma +2 generator to emit a tRPC shield from your Prisma schema
TypeScript
46
star
5

prisma-joi-generator

Prisma 2+ generator to emit Joi schemas from your Prisma schema
TypeScript
38
star
6

prisma-json-server-generator

Prisma 2+ generator to emit a JSON file that can be run with json-server
TypeScript
23
star
7

create-trpc-app

Create tRPC-powered apps with one command
TypeScript
22
star
8

json-to-prisma-schema-convertor

Converts a Json schema to a Prisma schema
TypeScript
21
star
9

prisma-custom-models-generator

Prisma 2+ generator to emit custom models from your schema"
TypeScript
20
star
10

awesome-zod

A collection of awesome Zod resources .
16
star
11

prisma-schema-sorter

Prisma 2 tool to sort schema models, enums, generators and datasources
TypeScript
16
star
12

graphql-shield-generator

Emits a GraphQL Shield from your GraphQL schema
TypeScript
9
star
13

prisma-query-inspector

Prisma +2 tool to inspect all queries going to the database, formatted and with all params if any
TypeScript
8
star
14

firestore-prisma

Convert Firestore data into a Prisma schema
TypeScript
6
star
15

breakpoint-bookmarks

A vsCode extension that lets you bookmark all your different breakpoints into separate files, and activate them as needed
TypeScript
6
star
16

firebase-functions-downloader

Downloads Firebase/Google Cloud Functions code
TypeScript
3
star
17

lang-firestore

Firestore query language basic support for the CodeMirror code editor
TypeScript
3
star
18

jigsaw-puzzle

A basic Jigsaw game built using Angular 7's Drag and Drop
TypeScript
2
star
19

omar-dulaimi

Get to know me
2
star
20

firestore-indexes-diff

Displays differences between two Firestore index config files
TypeScript
2
star
21

firestore-prisma-web

Web editor of Firestore Prisma
TypeScript
2
star
22

pure-javascript-list-with-filtering

A task
JavaScript
1
star
23

learnyounode

Solutions for learnyounode exercises
JavaScript
1
star
24

django-vue-url-shortner

Shorten your URLs easily
Python
1
star
25

nextjs-shallow-routing-repro

A repro to prove that shallow routing doesn't work in a specific case
JavaScript
1
star
26

sveltejs-note-taking-app

A basic note taking web app built with SvelteJS for the purposes of trying out this awesome new framework.
JavaScript
1
star