import { PrismaClient } from '@prisma/client' import { PrismaLibSql } from '@prisma/adapter-libsql' import { createClient } from '@libsql/client' const globalForPrisma = globalThis as unknown as { prisma: PrismaClient | undefined } function getPrismaClient(): PrismaClient { if (!globalForPrisma.prisma) { const libsql = createClient({ url: process.env.DATABASE_URL ?? 'file:./dev.db', }) const adapter = new PrismaLibSql(libsql) globalForPrisma.prisma = new PrismaClient({ adapter, log: process.env.NODE_ENV === 'development' ? ['query', 'error', 'warn'] : ['error'], }) } return globalForPrisma.prisma } // Use a Proxy so `new PrismaClient()` is only called when a property // is first accessed (inside a request handler), NOT at module import time. export const prisma = new Proxy({} as PrismaClient, { get(_target, prop) { return Reflect.get(getPrismaClient(), prop) }, apply(_target, thisArg, args) { return Reflect.apply(getPrismaClient() as unknown as Function, thisArg, args) }, })