23 lines
696 B
TypeScript
23 lines
696 B
TypeScript
import { PrismaClient } from '@prisma/client'
|
|
|
|
// Singleton pattern для Prisma Client
|
|
// Использует lazy initialization - клиент создается только при первом использовании
|
|
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'],
|
|
})
|
|
|
|
if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma
|
|
|
|
// Graceful shutdown
|
|
if (typeof window === 'undefined') {
|
|
process.on('beforeExit', async () => {
|
|
await prisma.$disconnect()
|
|
})
|
|
}
|