import { PrismaClient } from "@prisma/client"; const globalForPrisma = globalThis as unknown as { prisma: PrismaClient | undefined; prismaPragmaSet: boolean | undefined; }; export const prisma = globalForPrisma.prisma ?? new PrismaClient(); // SQLite: WAL est persistant (posé sur le fichier), mais busy_timeout est // par-connexion → on l'applique une fois au démarrage pour que les écritures // concurrentes attendent le verrou au lieu d'échouer ("database is locked"). if (!globalForPrisma.prismaPragmaSet) { globalForPrisma.prismaPragmaSet = true; prisma .$executeRawUnsafe("PRAGMA busy_timeout = 5000;") .then(() => prisma.$executeRawUnsafe("PRAGMA synchronous = NORMAL;")) .catch(() => { /* non-SQLite ou indisponible : ignore */ }); } // Toujours mémoriser le client (évite l'épuisement de connexions en dev hot-reload) globalForPrisma.prisma = prisma;