diff --git a/src/db/client.ts b/src/db/client.ts index 9d89206..d8c5921 100644 --- a/src/db/client.ts +++ b/src/db/client.ts @@ -1,11 +1,35 @@ import { PrismaPg } from "@prisma/adapter-pg"; import { PrismaClient } from "../generated/prisma/client"; +import { Pool } from "pg"; export * from "../generated/prisma/client"; -const adapter = new PrismaPg({ - connectionString: process.env.DATABASE_URL, -}); +const globalForPrisma = globalThis as unknown as { + prisma?: PrismaClient; + pgPool?: Pool; +}; + +const pool = + globalForPrisma.pgPool ?? + new Pool({ + connectionString: process.env.DATABASE_URL, + }); + +const adapter = new PrismaPg(pool); + +export const prisma = + globalForPrisma.prisma ?? + new PrismaClient({ + adapter, + log: + process.env.NODE_ENV === "development" + ? ["query", "error", "warn"] + : ["error"], + }); + +if (process.env.NODE_ENV !== "production") { + globalForPrisma.prisma = prisma; + globalForPrisma.pgPool = pool; +} -const prisma = new PrismaClient({ adapter }); export default prisma; \ No newline at end of file