zod-prisma-utils
TypeScript icon, indicating that this package has built-in type declarations

0.0.9 • Public • Published

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>);

Readme

Keywords

none

Package Sidebar

Install

npm i zod-prisma-utils

Weekly Downloads

1

Version

0.0.9

License

MIT

Unpacked Size

11.2 kB

Total Files

12

Last publish

Collaborators

  • wladiston