23 lines
719 B
TypeScript
23 lines
719 B
TypeScript
import { PrismaClient } from '@prisma/client';
|
|
|
|
/**
|
|
* Globaler Prisma-Client.
|
|
*
|
|
* In der Entwicklung startet Next.js bei Hot Reload mehrfach Modul-Instanzen;
|
|
* ohne Caching wuerde jede Instanz eigene Verbindungen aufbauen und die
|
|
* Datenbank mit Verbindungen ueberfluten. Daher wird die Instanz auf
|
|
* `globalThis` gecacht (offizielles Prisma-Rezept fuer Next.js).
|
|
*/
|
|
const globalForPrisma = globalThis as unknown as {
|
|
prisma: PrismaClient | undefined;
|
|
};
|
|
|
|
export const prisma: PrismaClient =
|
|
globalForPrisma.prisma ??
|
|
new PrismaClient({
|
|
log: process.env.NODE_ENV === 'development' ? ['warn', 'error'] : ['error'],
|
|
});
|
|
|
|
if (process.env.NODE_ENV !== 'production') {
|
|
globalForPrisma.prisma = prisma;
|
|
} |