Cliente generado fuera de node_modules
prisma/schema.prisma no genera el cliente en su ubicación habitual: apunta
a src/generated/prisma, una carpeta que está gitignored. Cada persona
que clona el repo (y cada build) tiene que correr npx prisma generate para
que esa carpeta exista.
Como consecuencia, el código nunca importa desde @prisma/client. Importa
siempre desde el cliente generado:
Conexión: prisma.config.ts, no la URL a pelo
El bloque datasource de schema.prisma no lleva url. La conexión a la
base de datos viene de prisma.config.ts, que carga dotenv/config para
leer las variables de entorno.
src/lib/prisma.ts tampoco pasa la URL directamente al cliente: la parsea a
mano (new URL(DATABASE_URL)) y con sus piezas (host, usuario, contraseña,
base de datos, puerto) construye el adapter PrismaMariaDb.
PRISMA_SCHEMA_VERSION, la constante definida en src/lib/prisma.ts, hay
que incrementarla cada vez que se añade o se quita un modelo del schema. Si
no se incrementa, el HMR de next dev puede reutilizar un client viejo en
memoria y las consultas dejan de coincidir con el schema real.
connection() antes de consultar
Los helpers que consultan la base de datos llaman await connection() (de
next/server) antes de ejecutar la query. Esto impide que Next.js intente
prerenderizar esas páginas en build time: el build de Docker corre con una
DATABASE_URL falsa, así que cualquier consulta real durante el build
fallaría.