fix: prevents prisma idle connections (#12068)

pull/12065/head^2
Omar López 2023-10-24 12:59:15 -07:00 committed by GitHub
parent a8c03262c2
commit 0ae6506bc1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 7 deletions

View File

@ -6,9 +6,16 @@ import { bookingReferenceMiddleware } from "./middleware";
const prismaOptions: Prisma.PrismaClientOptions = {}; const prismaOptions: Prisma.PrismaClientOptions = {};
const globalForPrisma = global as unknown as {
prismaWithoutClientExtensions: PrismaClientWithoutExtension;
prismaWithClientExtensions: PrismaClientWithExtensions;
};
if (!!process.env.NEXT_PUBLIC_DEBUG) prismaOptions.log = ["query", "error", "warn"]; if (!!process.env.NEXT_PUBLIC_DEBUG) prismaOptions.log = ["query", "error", "warn"];
const prismaWithoutClientExtensions = new PrismaClientWithoutExtension(prismaOptions); // Prevents flooding with idle connections
const prismaWithoutClientExtensions =
globalForPrisma.prismaWithoutClientExtensions || new PrismaClientWithoutExtension(prismaOptions);
export const customPrisma = (options?: Prisma.PrismaClientOptions) => export const customPrisma = (options?: Prisma.PrismaClientOptions) =>
new PrismaClientWithoutExtension({ ...prismaOptions, ...options }).$extends(withAccelerate()); new PrismaClientWithoutExtension({ ...prismaOptions, ...options }).$extends(withAccelerate());
@ -50,16 +57,15 @@ const prismaWithClientExtensions = prismaWithoutClientExtensions
// }, // },
// }) // })
// const prismaWithClientExtensions = prismaWithoutClientExtensions; export const prisma = globalForPrisma.prismaWithClientExtensions || prismaWithClientExtensions;
export const prisma =
((globalThis as any).prisma as typeof prismaWithClientExtensions) || prismaWithClientExtensions;
if (process.env.NODE_ENV !== "production") { if (process.env.NODE_ENV !== "production") {
(globalThis as any).prisma = prisma; globalForPrisma.prismaWithoutClientExtensions = prismaWithoutClientExtensions;
globalForPrisma.prismaWithClientExtensions = prisma;
} }
export type PrismaClient = typeof prismaWithClientExtensions; type PrismaClientWithExtensions = typeof prismaWithClientExtensions;
export type PrismaClient = PrismaClientWithExtensions;
export default prisma; export default prisma;
export * from "./selects"; export * from "./selects";