0.0.9 • Published 2 years ago

zod-prisma-utils v0.0.9

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

zod-prisma-utils WIP

The libs out there for Prisma and Zod try to squish them together by forcing you write a non-typesafe code inside your Prisma schema. Instead, we use a different approach here. We don't generate anything for you, but we do provide you with a set of utilities that you can use to make your Zod schemas a little bit more Prisma safe.

Installation

npm install zod-prisma-utils

Usage

Simply import the Schema type from zod-prisma-utils and use it to define your Zod schema. You can also specify which fields you want to hide from the schema.

import { z } from "zod";

import type { User } from "@prisma/client";
import type { Schema } from "zod-prisma-utils";

type HiddenFields = "createdAt" | "updatedAt";

export const UserSchema = z.object({
  id: z.string().uuid(),
  email: z.string().max(255).email(),
  name: z.string().max(255).optional(),
  password: z.string(),
  someField: z.string().max(255).optional(),
} satisfies Schema<User, HiddenFields>);

That's it! No need to generate anything, no need to write any code inside your Prisma schema. Just use the Schema type and you're good to go.

Since Prisma has a special way to handle decimal and json fields, we also provide a decimal and json function that you can use to define your schema.

import { z } from "zod";
import type { Prisma } from "@prisma/client";

import * as zpu from "zod-prisma-utils";

export const TransactionSchema = z.object({
  amount: zpu.decimal(),
  metadata: zpu.json(),
} satisfies Schema<Prisma.TransactionCreateInput>);
0.0.9

2 years ago

0.0.8

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago