papjackrock / src /utils /db.ts
kylsprt's picture
Update src/utils/db.ts
ab4c789 verified
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();
}