ZTS Docs

Database (Prisma)

PostgreSQL and Prisma in packages/db.

This project uses Prisma in packages/db against PostgreSQL.

Prerequisites

  1. PostgreSQL locally (or remote). DBngin is a simple option on macOS/Windows.
  2. DATABASE_URL in root .env (see Environment).
  3. Initial migration from the monorepo root:
pnpm db:migrate

Migrations live in packages/db/prisma/migrations/.

Configuration

  • DATABASE_URL — e.g. postgresql://postgres@localhost:5432/your-db-name
  • DIRECT_URL (Supabase / pooler bypass) — uncomment directUrl in packages/db/prisma/schema.prisma when needed

Schema

  • Schema file: packages/db/prisma/schema.prisma
  • After edits, run pnpm db:migrate (runs prisma migrate dev in @zts/db)

Do not use prisma db push for routine schema changes. Use migrations only.

Prisma client

  • Generate: pnpm db:generate (root) or as part of db:migrate
  • Output: packages/db/src/generated/prisma
  • Singleton: packages/db/src/index.ts (extensions in packages/db/src/extensions/)

Usage in tRPC

db is injected in createTRPCContext in packages/trpc/src/trpc.ts as ctx.db.

// packages/trpc/src/routers/user.ts
protectedProcedure.query(async ({ ctx }) => {
  return ctx.db.user.findUnique({
    where: { id: ctx.session.user.id },
  });
});

Scripts (root)

CommandPurpose
pnpm db:migrateDev migrations
pnpm db:migrate:deployProduction deploy
pnpm db:generateRegenerate client
pnpm db:studioPrisma Studio GUI
pnpm db:seedSeed (requires ZTS_ALLOW_SEED=true)

On this page