1
9import { Prisma, PrismaClient } from "@prisma/client";
10import { getLogger } from "../logger.js";
11
12const log = getLogger("prisma");
13
14let client: PrismaClient | null = null;
15
16
21export const asJson = (v: unknown): Prisma.InputJsonValue => v as Prisma.InputJsonValue;
22
23export function getPrisma(): PrismaClient {
24 if (!client) {
25 client = new PrismaClient({
26 log: process.env.NODE_ENV === "development" ? ["warn", "error"] : ["error"]
27 });
28 }
29 return client;
30}
31
32
33export async function connectPrisma(): Promise<PrismaClient> {
34 const prisma = getPrisma();
35 await prisma.$connect();
36 log.debug("prisma connected");
37 return prisma;
38}
39
40export async function closePrisma(): Promise<void> {
41 if (client) {
42 await client.$disconnect();
43 client = null;
44 log.debug("prisma disconnected");
45 }
46}
47