import { PrismaClient } from "@prisma/client"; import { env } from "@/config/env.js"; const globalForPrisma = globalThis as unknown as { prisma: PrismaClient | undefined; }; // For TiDB Cloud: add sslaccept=strict parameter const databaseUrl = (() => { let url = env.DATABASE_URL; // Add ssl parameters if not present if (!url.includes("?")) { url += "?sslaccept=strict"; } else if (!url.includes("sslaccept")) { url += "&sslaccept=strict"; } return url; })(); export const prisma = globalForPrisma.prisma ?? new PrismaClient({ datasources: { db: { url: databaseUrl, }, }, log: env.NODE_ENV === "development" ? ["query", "error", "warn"] : ["error"], }); if (env.NODE_ENV !== "production") { globalForPrisma.prisma = prisma; } export async function connectDatabase(): Promise { try { await prisma.$connect(); console.log("Database connected successfully"); } catch (error) { console.error("Database connection failed:", error); process.exit(1); } } export async function disconnectDatabase(): Promise { await prisma.$disconnect(); }