From 0ae6506bc13bd720ea3583504f9cfb89237aa8f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Omar=20L=C3=B3pez?= Date: Tue, 24 Oct 2023 12:59:15 -0700 Subject: [PATCH] fix: prevents prisma idle connections (#12068) --- packages/prisma/index.ts | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/packages/prisma/index.ts b/packages/prisma/index.ts index 071f6fdbbe..b045ff8fb6 100644 --- a/packages/prisma/index.ts +++ b/packages/prisma/index.ts @@ -6,9 +6,16 @@ import { bookingReferenceMiddleware } from "./middleware"; 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"]; -const prismaWithoutClientExtensions = new PrismaClientWithoutExtension(prismaOptions); +// Prevents flooding with idle connections +const prismaWithoutClientExtensions = + globalForPrisma.prismaWithoutClientExtensions || new PrismaClientWithoutExtension(prismaOptions); export const customPrisma = (options?: Prisma.PrismaClientOptions) => new PrismaClientWithoutExtension({ ...prismaOptions, ...options }).$extends(withAccelerate()); @@ -50,16 +57,15 @@ const prismaWithClientExtensions = prismaWithoutClientExtensions // }, // }) -// const prismaWithClientExtensions = prismaWithoutClientExtensions; - -export const prisma = - ((globalThis as any).prisma as typeof prismaWithClientExtensions) || prismaWithClientExtensions; +export const prisma = globalForPrisma.prismaWithClientExtensions || prismaWithClientExtensions; 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 * from "./selects";