/** * Database configuration and Prisma client singleton */ import { PrismaClient } from '@prisma/client'; // PrismaClient is attached to the `global` object in development to prevent // exhausting your database connection limit. const globalForPrisma = global as unknown as { prisma: PrismaClient }; 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; } /** * Connect to the database */ export async function connectDatabase() { try { await prisma.$connect(); console.log('✅ Database connected successfully'); } catch (error) { console.error('❌ Database connection failed:', error); process.exit(1); } } /** * Disconnect from the database */ export async function disconnectDatabase() { await prisma.$disconnect(); console.log('Database disconnected'); } /** * Health check for database connection */ export async function checkDatabaseHealth(): Promise { try { await prisma.$queryRaw`SELECT 1`; return true; } catch (error) { console.error('Database health check failed:', error); return false; } } export default prisma;