diff --git a/docs/patterns/prisma-client.md b/docs/patterns/prisma-client.md index 119bba9..47aab69 100644 --- a/docs/patterns/prisma-client.md +++ b/docs/patterns/prisma-client.md @@ -2,14 +2,37 @@ ## lib/prisma.ts +Detecteert automatisch SQLite (lokaal, `file:`) of PostgreSQL (Neon/Vercel). + ```ts import { PrismaClient } from '@prisma/client' +import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3' +import { Pool } from 'pg' +import { PrismaPg } from '@prisma/adapter-pg' + +function createPrismaClient() { + const url = process.env.DATABASE_URL + if (!url) throw new Error('DATABASE_URL is not set') + + if (url.startsWith('file:')) { + const adapter = new PrismaBetterSqlite3({ url }) + return new PrismaClient({ + adapter, + log: process.env.NODE_ENV === 'development' ? ['error', 'warn'] : ['error'], + }) + } + + const pool = new Pool({ connectionString: url }) + const adapter = new PrismaPg(pool) + return new PrismaClient({ + adapter, + log: process.env.NODE_ENV === 'development' ? ['error', 'warn'] : ['error'], + }) +} const globalForPrisma = globalThis as unknown as { prisma: PrismaClient | undefined } -export const prisma = globalForPrisma.prisma ?? new PrismaClient({ - log: process.env.NODE_ENV === 'development' ? ['query', 'error', 'warn'] : ['error'], -}) +export const prisma = globalForPrisma.prisma ?? createPrismaClient() if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma ```