From 035d466ad93a909276eadbf1a4a6f2506002221f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=A9o=20M=C3=A9vollon?= <38255502+matmut7@users.noreply.github.com> Date: Thu, 17 Oct 2024 17:21:18 +0200 Subject: [PATCH] fix: prisma client (#633) --- formulaire/src/lib/prismaClient.ts | 21 ++++++++++----- src/lib/prismaClient.ts | 28 +++++++++----------- src/pages/api/commentaires/index.ts | 3 +-- src/pages/api/commissions/[id].ts | 3 +-- src/pages/api/commissions/date/index.ts | 3 +-- src/pages/api/commissions/index.ts | 4 +-- src/pages/api/commissions/upcoming/index.tsx | 3 +-- src/pages/api/dossiers/[id].ts | 3 +-- src/pages/api/enfant/[id].ts | 3 +-- src/pages/api/enfants/index.ts | 3 +-- src/pages/api/search.json.ts | 3 +-- src/pages/api/sendlist/index.ts | 3 +-- src/pages/api/sync/inc/dossiers/[id].tsx | 3 +-- src/pages/api/sync/inc/dossiers/index.tsx | 3 +-- src/pages/api/sync/inc/enfant/[id].tsx | 3 +-- src/pages/api/users/id/index.ts | 7 ++--- src/pages/api/users/index.ts | 4 +-- src/pages/api/users/search/index.ts | 3 +-- 18 files changed, 45 insertions(+), 58 deletions(-) diff --git a/formulaire/src/lib/prismaClient.ts b/formulaire/src/lib/prismaClient.ts index 25cd0eea9..30aca7b53 100644 --- a/formulaire/src/lib/prismaClient.ts +++ b/formulaire/src/lib/prismaClient.ts @@ -1,11 +1,20 @@ -// cf https://www.prisma.io/docs/support/help-articles/nextjs-prisma-client-dev-practices - import { PrismaClient } from "@prisma/client"; -const getClient = () => { - return new PrismaClient(); -}; +declare global { + var prismaClient: PrismaClient | undefined; +} + +const client = + globalThis.prismaClient ?? + new PrismaClient({ + datasources: { + db: { + url: process.env.DATABASE_URL + "&connection_limit=5", + }, + }, + log: ["info", "warn", "error"], + }); -const client = getClient(); +globalThis.prismaClient = client; export default client; diff --git a/src/lib/prismaClient.ts b/src/lib/prismaClient.ts index eafac61e8..c8ba10fb4 100644 --- a/src/lib/prismaClient.ts +++ b/src/lib/prismaClient.ts @@ -1,22 +1,18 @@ -// cf https://www.prisma.io/docs/support/help-articles/nextjs-prisma-client-dev-practices - import { PrismaClient } from "@prisma/client"; declare global { - // eslint-disable-next-line no-var - var prisma: PrismaClient | null; - // function getPrismaClient(): PrismaClient; + var prismaClient: PrismaClient | undefined; } -const getClient = () => { - if (process.env.NODE_ENV === "production") { - return new PrismaClient(); - } else { - if (!global.prisma) global.prisma = new PrismaClient(); - return global.prisma; - } -}; - -const client = getClient(); +export const client = + globalThis.prismaClient ?? + new PrismaClient({ + datasources: { + db: { + url: process.env.DATABASE_URL + "&connection_limit=5", + }, + }, + log: ["info", "warn", "error"], + }); -export default client; +globalThis.prismaClient = client; diff --git a/src/pages/api/commentaires/index.ts b/src/pages/api/commentaires/index.ts index 17766f35f..f3c8e8988 100644 --- a/src/pages/api/commentaires/index.ts +++ b/src/pages/api/commentaires/index.ts @@ -3,8 +3,7 @@ import type { NextApiHandler, NextApiRequest } from "next"; import { getSession } from "next-auth/react"; import superjson from "superjson"; -import { PrismaClient, Prisma } from '@prisma/client' -const client = new PrismaClient() +import { client } from "src/lib/prismaClient"; const handler: NextApiHandler = async (req, res) => { const session = await getSession({ req }); diff --git a/src/pages/api/commissions/[id].ts b/src/pages/api/commissions/[id].ts index c4cf39af3..fbf4550bc 100644 --- a/src/pages/api/commissions/[id].ts +++ b/src/pages/api/commissions/[id].ts @@ -2,8 +2,7 @@ import { withSentry } from "@sentry/nextjs"; import type { NextApiHandler, NextApiRequest } from "next"; import superjson from "superjson"; -import { PrismaClient, Prisma } from '@prisma/client' -const client = new PrismaClient() +import { client } from "src/lib/prismaClient"; const handler: NextApiHandler = async (req, res) => { const { id: commissionIdStr } = req.query; diff --git a/src/pages/api/commissions/date/index.ts b/src/pages/api/commissions/date/index.ts index d4e7746ee..11c34ead9 100644 --- a/src/pages/api/commissions/date/index.ts +++ b/src/pages/api/commissions/date/index.ts @@ -2,8 +2,7 @@ import { withSentry } from "@sentry/nextjs"; import type { NextApiHandler } from "next"; import superjson from "superjson"; -import { PrismaClient, Prisma } from '@prisma/client' -const client = new PrismaClient() +import { client } from "src/lib/prismaClient"; const handler: NextApiHandler = async (req, res) => { if (req.method == "GET") { diff --git a/src/pages/api/commissions/index.ts b/src/pages/api/commissions/index.ts index 20b8a1b6a..d7e72b96b 100644 --- a/src/pages/api/commissions/index.ts +++ b/src/pages/api/commissions/index.ts @@ -3,8 +3,7 @@ import type { NextApiHandler, NextApiRequest } from "next"; import { getSession } from "next-auth/react"; import superjson from "superjson"; -import { PrismaClient, Prisma } from '@prisma/client' -const client = new PrismaClient() +import { client } from "src/lib/prismaClient"; const handler: NextApiHandler = async (req, res) => { const session = await getSession({ req }); @@ -42,7 +41,6 @@ const get: NextApiHandler = async (req, res) => { ? await getUpcomingCommissionsNotEmpty(req) : await getUpcomingCommissions() : await getUpcomingCommissionsByDepartement(departements as string); - await client?.$disconnect() res.status(200).json(superjson.stringify(commissions)); }; diff --git a/src/pages/api/commissions/upcoming/index.tsx b/src/pages/api/commissions/upcoming/index.tsx index a7214f83c..7a1aed6fd 100644 --- a/src/pages/api/commissions/upcoming/index.tsx +++ b/src/pages/api/commissions/upcoming/index.tsx @@ -2,8 +2,7 @@ import { withSentry } from "@sentry/nextjs"; import type { NextApiHandler } from "next"; import { getSession } from "next-auth/react"; -import { PrismaClient, Prisma } from '@prisma/client' -const client = new PrismaClient() +import { client } from "src/lib/prismaClient"; const handler: NextApiHandler = async (req, res) => { const session = await getSession({ req }); diff --git a/src/pages/api/dossiers/[id].ts b/src/pages/api/dossiers/[id].ts index bbc4fa1ea..09a631aa3 100644 --- a/src/pages/api/dossiers/[id].ts +++ b/src/pages/api/dossiers/[id].ts @@ -6,8 +6,7 @@ import type { TransitionEvent } from "src/lib/statutDossierStateMachine"; import { factory as statutDossierStateMachineFactory } from "src/lib/statutDossierStateMachine"; import superjson from "superjson"; -import { PrismaClient, Prisma } from '@prisma/client' -const client = new PrismaClient() +import { client } from "src/lib/prismaClient" const handler: NextApiHandler = async (req, res) => { const session = await getSession({ req }); diff --git a/src/pages/api/enfant/[id].ts b/src/pages/api/enfant/[id].ts index d56bc1af0..0d03b0110 100644 --- a/src/pages/api/enfant/[id].ts +++ b/src/pages/api/enfant/[id].ts @@ -3,8 +3,7 @@ import type { NextApiHandler, NextApiRequest } from "next"; import { getSession } from "next-auth/react"; import superjson from "superjson"; -import { PrismaClient, Prisma } from '@prisma/client' -const client = new PrismaClient() +import { client } from "src/lib/prismaClient"; const handler: NextApiHandler = async (req, res) => { const session = await getSession({ req }); diff --git a/src/pages/api/enfants/index.ts b/src/pages/api/enfants/index.ts index 2f00ea90a..ae1bc90eb 100644 --- a/src/pages/api/enfants/index.ts +++ b/src/pages/api/enfants/index.ts @@ -3,8 +3,7 @@ import type { NextApiHandler } from "next"; import { getSession } from "next-auth/react"; import superjson from "superjson"; -import { PrismaClient, Prisma } from '@prisma/client' -const client = new PrismaClient() +import { client } from "src/lib/prismaClient"; const handler: NextApiHandler = async (req, res) => { const session = await getSession({ req }); diff --git a/src/pages/api/search.json.ts b/src/pages/api/search.json.ts index db3631adb..43c21d5d1 100644 --- a/src/pages/api/search.json.ts +++ b/src/pages/api/search.json.ts @@ -4,8 +4,7 @@ import { getSession } from "next-auth/react"; import { searchDossiers, searchEnfants } from "src/lib/queries"; import superjson from "superjson"; -import { PrismaClient, Prisma } from '@prisma/client' -const client = new PrismaClient() +import { client } from "src/lib/prismaClient"; const handler: NextApiHandler = async (req, res) => { if (req.method !== "GET") { diff --git a/src/pages/api/sendlist/index.ts b/src/pages/api/sendlist/index.ts index 1c55c80a8..23c9b1c11 100644 --- a/src/pages/api/sendlist/index.ts +++ b/src/pages/api/sendlist/index.ts @@ -3,8 +3,7 @@ import type { NextApiHandler, NextApiRequest } from "next"; import { getSession } from "next-auth/react"; import superjson from "superjson"; -import { PrismaClient, Prisma } from '@prisma/client' -const client = new PrismaClient() +import { client } from "src/lib/prismaClient"; const handler: NextApiHandler = async (req, res) => { const session = await getSession({ req }); diff --git a/src/pages/api/sync/inc/dossiers/[id].tsx b/src/pages/api/sync/inc/dossiers/[id].tsx index ad3e7a4e3..16e4a4dcb 100644 --- a/src/pages/api/sync/inc/dossiers/[id].tsx +++ b/src/pages/api/sync/inc/dossiers/[id].tsx @@ -1,8 +1,7 @@ import { withSentry } from "@sentry/nextjs"; import type { NextApiHandler, NextApiRequest } from "next"; -import { PrismaClient, Prisma } from "@prisma/client"; -const client = new PrismaClient(); +import { client } from "src/lib/prismaClient"; const handler: NextApiHandler = async (req, res) => { if (req.method === "GET") { diff --git a/src/pages/api/sync/inc/dossiers/index.tsx b/src/pages/api/sync/inc/dossiers/index.tsx index 4fe878e16..9f2e1ea7a 100644 --- a/src/pages/api/sync/inc/dossiers/index.tsx +++ b/src/pages/api/sync/inc/dossiers/index.tsx @@ -11,8 +11,7 @@ import { import { frenchDateText, frenchDepartementName } from "src/lib/helpers"; import type { z } from "zod"; -import { PrismaClient, Prisma } from "@prisma/client"; -const client = new PrismaClient(); +import { client } from "src/lib/prismaClient"; export const config = { api: { diff --git a/src/pages/api/sync/inc/enfant/[id].tsx b/src/pages/api/sync/inc/enfant/[id].tsx index cd03a1c97..7a10752d2 100644 --- a/src/pages/api/sync/inc/enfant/[id].tsx +++ b/src/pages/api/sync/inc/enfant/[id].tsx @@ -1,8 +1,7 @@ import { withSentry } from "@sentry/nextjs"; import type { NextApiHandler, NextApiRequest } from "next"; -import { PrismaClient, Prisma } from '@prisma/client' -const client = new PrismaClient() +import { client } from "src/lib/prismaClient"; const handler: NextApiHandler = async (req, res) => { if (req.method == "DELETE") { diff --git a/src/pages/api/users/id/index.ts b/src/pages/api/users/id/index.ts index cd47c1593..c7d1006cf 100644 --- a/src/pages/api/users/id/index.ts +++ b/src/pages/api/users/id/index.ts @@ -1,5 +1,5 @@ import type { NextApiHandler } from "next"; -import { PrismaClient, User } from "@prisma/client"; +import { client } from "src/lib/prismaClient"; import { getSession } from "next-auth/react"; const handler: NextApiHandler = async (req, res) => { @@ -17,7 +17,6 @@ const handler: NextApiHandler = async (req, res) => { }; const getUserById: NextApiHandler = async (req, res) => { - const prisma = new PrismaClient(); let userIds: number[] | number = []; if (req.query.id) { @@ -30,17 +29,15 @@ const getUserById: NextApiHandler = async (req, res) => { } } try { - const users = await prisma.user.findMany({ + const users = await client.user.findMany({ where: { id: { in: userIds, }, }, }); - await prisma?.$disconnect(); res.status(200).json(users); } catch (e: unknown) { - await prisma?.$disconnect(); console.log(e); } }; diff --git a/src/pages/api/users/index.ts b/src/pages/api/users/index.ts index e39b6ad37..17475461b 100644 --- a/src/pages/api/users/index.ts +++ b/src/pages/api/users/index.ts @@ -3,8 +3,8 @@ import type { NextApiHandler } from "next"; import { getSession } from "next-auth/react"; import superjson from "superjson"; -import { PrismaClient, Prisma, Role } from '@prisma/client' -const client = new PrismaClient() +import { Role } from "@prisma/client"; +import { client } from "src/lib/prismaClient"; const handler: NextApiHandler = async (req, res) => { const session = await getSession({ req }); diff --git a/src/pages/api/users/search/index.ts b/src/pages/api/users/search/index.ts index 7a80b9775..16a836cff 100644 --- a/src/pages/api/users/search/index.ts +++ b/src/pages/api/users/search/index.ts @@ -3,8 +3,7 @@ import type { NextApiHandler } from "next"; import { getSession } from "next-auth/react"; import superjson from "superjson"; -import { PrismaClient, Prisma } from '@prisma/client' -const client = new PrismaClient() +import { client } from "src/lib/prismaClient"; const handler: NextApiHandler = async (req, res) => { const session = await getSession({ req });