Spaces:
Running
Running
| 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<void> { | |
| 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<void> { | |
| await prisma.$disconnect(); | |
| } | |