import { PrismaMariaDb } from "@prisma/adapter-mariadb"; import { env } from "@/env"; import { PrismaClient } from "@/generated/prisma/client"; const globalForPrisma = globalThis as unknown as { prisma?: PrismaClient }; function createPrismaClient(): PrismaClient { const url = new URL(env.DATABASE_URL); const adapter = new PrismaMariaDb({ host: url.hostname, port: Number(url.port) || 3306, user: decodeURIComponent(url.username), password: decodeURIComponent(url.password), database: url.pathname.replace(/^\//, ""), connectionLimit: env.DATABASE_POOL_SIZE, connectTimeout: env.DATABASE_CONNECT_TIMEOUT_MS, acquireTimeout: env.DATABASE_CONNECT_TIMEOUT_MS, idleTimeout: env.DATABASE_IDLE_TIMEOUT_MS, }); return new PrismaClient({ adapter, log: env.NODE_ENV === "development" ? ["error", "warn"] : ["error"], }); } export const prisma = globalForPrisma.prisma ?? createPrismaClient(); if (env.NODE_ENV !== "production") globalForPrisma.prisma = prisma;