Files
football-next/lib/db.ts
2026-05-03 17:01:46 +03:30

40 lines
897 B
TypeScript

import { PrismaClient } from "@prisma/client";
const globalForPrisma = globalThis as unknown as {
prisma: PrismaClient | undefined;
};
function getPrismaDatabaseUrl() {
const databaseUrl = process.env.DATABASE_URL;
if (!databaseUrl) {
return undefined;
}
const url = new URL(databaseUrl);
// In dev, Next can spin up multiple workers. Keep each Prisma pool small so
// the database is not exhausted by parallel hot-reload processes.
if (!url.searchParams.has("connection_limit")) {
url.searchParams.set("connection_limit", "5");
}
if (!url.searchParams.has("pool_timeout")) {
url.searchParams.set("pool_timeout", "20");
}
return url.toString();
}
export const db =
globalForPrisma.prisma ??
new PrismaClient({
log: ["error"],
datasources: {
db: {
url: getPrismaDatabaseUrl(),
},
},
});
globalForPrisma.prisma = db;