Ir al contenido

Prisma

Prisma 7 es el ORM que traduce TypeScript a SQL.

Decisión Opción
Versión Prisma 7.8.0
Adapter @prisma/adapter-pg (requerido en Prisma 7)
DB local PostgreSQL via Docker (syncro-pg)
DB cloud Neon PostgreSQL

Prisma 7 — Cambios importantes respecto a v6

Sección titulada «Prisma 7 — Cambios importantes respecto a v6»

Prisma 7 ya no usa solo prisma/schema.prisma. Requiere un archivo prisma.config.ts en la raíz del proyecto:

import "dotenv/config";
import type { PrismaConfig } from "prisma"
export default {
schema: "prisma/schema.prisma",
datasource: {
url: process.env.DATABASE_URL!,
},
} satisfies PrismaConfig

En Prisma 7, new PrismaClient({ datasourceUrl }) no existe. Se usa el driver adapter:

import { PrismaClient } from "@prisma/client"
import { PrismaPg } from "@prisma/adapter-pg"
const globalForPrisma = globalThis as unknown as { prisma: PrismaClient }
export const prisma = globalForPrisma.prisma ?? new PrismaClient({
adapter: new PrismaPg({ connectionString: process.env.DATABASE_URL! }),
})
if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma

El cliente generado se almacena en el store de pnpm (node_modules/.pnpm/...). Se genera con:

Ventana de terminal
pnpm prisma generate

El schema completo incluye 15 modelos y 3 enums, organizados en 4 capas: Autenticación, Perfil, Workspace y Kanban.

Documentación completa del schema con decisiones de diseño

Capa Modelos
Autenticación User, Account, Session, VerificationToken
Perfil Profile (1:1 con User)
Workspace Workspace, WorkspaceMember, Invitation
Kanban Board, Column, Task, Label, Comment
Intermedias TaskAssignee, TaskLabel
  • MemberRole: OWNER, ADMIN, MEMBER
  • TaskPriority: LOW, MEDIUM, HIGH, URGENT
  • InvitationStatus: PENDING, ACCEPTED, EXPIRED

Problema: PrismaClient no exportado en build

Sección titulada «Problema: PrismaClient no exportado en build»

Prisma 7 necesita prisma generate antes de next build. En Vercel:

  1. prisma debe estar en dependencies (no en devDependencies), porque Vercel solo instala producción por defecto
  2. postinstall script para que se genere automáticamente tras pnpm install:
{
"scripts": {
"build": "prisma generate && next build",
"postinstall": "prisma generate"
},
"dependencies": {
"prisma": "^7.8.0"
}
}
Error Causa Fix
Module '"@prisma/client"' has no exported member 'PrismaClient' prisma generate no se ejecutó Mover prisma a dependencies + postinstall
Broken lockfile: no entry for Lockfile desactualizado tras merge conflict pnpm install --no-frozen-lockfile
DATABASE_URL="postgresql://user:password@ep-xxx.eu-west-2.aws.neon.tech/neondb?sslmode=require"

Para cambiar entre local y Neon, comentar/descomentar la línea en .env.