/// <reference types="node" />
import { PrismaClient } from '@prisma/client';

/**
 * Database Configuration
 * Handles database connection and configuration
 */
let prisma: PrismaClient;

if (process.env.NODE_ENV === 'production') {
  prisma = new PrismaClient();
} else {
  const globalForPrisma = global as unknown as { prisma?: PrismaClient };
  if (!globalForPrisma.prisma) {
    globalForPrisma.prisma = new PrismaClient({
      log: process.env.PRISMA_LOG_LEVEL
        ? ['query', 'info', 'warn', 'error']
        : ['warn', 'error'],
    });
  }
  prisma = globalForPrisma.prisma;
}

const prismaClient = prisma;
export { prismaClient as prisma };

export async function assertDatabaseConnection(): Promise<void> {
  await prisma.$connect();
  await prisma.$disconnect();
}
