Files
got-gaming/lib/prisma.ts
2025-12-17 15:16:04 +01:00

42 lines
1.2 KiB
TypeScript

import { PrismaClient } from "@/prisma/generated/prisma/client";
import { PrismaPg } from "@prisma/adapter-pg";
import { Pool } from "pg";
// Construire DATABASE_URL si elle n'est pas définie, en utilisant les variables individuelles
let databaseUrl = process.env.DATABASE_URL;
if (!databaseUrl) {
const user = process.env.POSTGRES_USER || "gotgaming";
const password = process.env.POSTGRES_PASSWORD || "change-this-in-production";
const host = process.env.POSTGRES_HOST || "got-postgres";
const port = process.env.POSTGRES_PORT || "5432";
const db = process.env.POSTGRES_DB || "gotgaming";
// Encoder le mot de passe pour l'URL
const encodedPassword = encodeURIComponent(password);
databaseUrl = `postgresql://${user}:${encodedPassword}@${host}:${port}/${db}?schema=public`;
}
if (typeof databaseUrl !== "string") {
throw new Error("DATABASE_URL must be a string");
}
const pool = new Pool({
connectionString: databaseUrl,
});
const adapter = new PrismaPg(pool);
const globalForPrisma = globalThis as unknown as {
prisma: PrismaClient | undefined;
};
export const prisma =
globalForPrisma.prisma ??
new PrismaClient({
adapter,
log: ["error"],
});
if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma;