Spaces:
Running
Running
File size: 1,143 Bytes
6368531 ab4c789 a2aaef6 6368531 a2aaef6 6368531 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | 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();
}
|