import { PrismaClient } from '@prisma/client' // 환경별 설정 const isDevelopment = process.env.NODE_ENV === 'development' const isProduction = process.env.NODE_ENV === 'production' const globalForPrisma = globalThis as unknown as { prisma: PrismaClient | undefined } // Prisma Client 설정 export const prisma = globalForPrisma.prisma ?? new PrismaClient({ log: isDevelopment ? ['query', 'error', 'warn'] : ['error'], // 데이터소스 설정 datasources: { db: { url: process.env.DATABASE_URL, }, }, // 에러 포맷팅 errorFormat: isDevelopment ? 'pretty' : 'minimal', }) // 개발 환경에서만 글로벌 객체에 저장 if (!isProduction) globalForPrisma.prisma = prisma // Graceful shutdown const shutdown = async () => { console.log('🚀 ~ shutdown ~ Shutting down Prisma Client...:') await prisma.$disconnect() process.exit(0) } process.on('SIGINT', shutdown) process.on('SIGTERM', shutdown) process.on('beforeExit', async () => { console.log('🚀 ~ process.on ~ beforeExit:') await prisma.$disconnect() })