56 lines
1.5 KiB
TypeScript
56 lines
1.5 KiB
TypeScript
import { PrismaClient } from '@prisma/client'
|
|
|
|
const global = globalThis as unknown as {
|
|
prisma: PrismaClient | undefined
|
|
}
|
|
|
|
export const prisma =
|
|
global.prisma ||
|
|
new PrismaClient({
|
|
log: [
|
|
{ emit: 'stdout', level: 'query' }, // SQL 쿼리
|
|
{ emit: 'stdout', level: 'error' }, // 에러
|
|
],
|
|
})
|
|
|
|
// export const prisma =
|
|
// globalForPrisma.prisma ??
|
|
// new PrismaClient({
|
|
// log: ['query', 'error', 'warn'],
|
|
// datasources: {
|
|
// db: {
|
|
// url: process.env.DATABASE_URL,
|
|
// // connection pool 설정
|
|
// connectionLimit: Number(process.env.DATABASE_CONNECTION_LIMIT) || 10, // 기본값 10
|
|
// pool: {
|
|
// min: Number(process.env.POOL_MIN) || 2, // 기본값 2
|
|
// max: Number(process.env.POOL_MAX) || 10, // 기본값 10
|
|
// idleTimeoutMillis: 30000, // 유휴 연결 타임아웃 (30초)
|
|
// acquireTimeoutMillis: 30000, // 연결 획득 타임아웃 (30초)
|
|
// },
|
|
// },
|
|
// },
|
|
// })
|
|
|
|
// prisma.$on('query', (e: any) => {
|
|
// console.log('Query: ' + e.query)
|
|
// console.log('Duration: ' + e.duration + 'ms')
|
|
// })
|
|
|
|
// prisma.$on('error', (e: any) => {
|
|
// console.error('Prisma Error:', e)
|
|
// })
|
|
|
|
// // 애플리케이션 종료 시 연결 정리
|
|
// process.on('SIGINT', async () => {
|
|
// await prisma.$disconnect()
|
|
// process.exit(0)
|
|
// })
|
|
|
|
// process.on('SIGTERM', async () => {
|
|
// await prisma.$disconnect()
|
|
// process.exit(0)
|
|
// })
|
|
|
|
if (process.env.NODE_ENV !== 'production') global.prisma = prisma
|