import { PrismaClient } from "@prisma/client"

const globalForPrisma = globalThis as unknown as {
  prisma?: PrismaClient
}

export const prisma =
  globalForPrisma.prisma ??
  new PrismaClient({
    log: process.env.NODE_ENV === "development" ? ["query", "warn", "error"] : ["error"],
  })

if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma

/** Interactive `$transaction` default is 5s — remote MySQL + large payloads exceeds it (P2028). */
export const PRISMA_INTERACTIVE_TX_TIMEOUT_MS = Number.parseInt(
  process.env.PRISMA_TRANSACTION_TIMEOUT_MS ?? "",
  10
) || 120_000

export const PRISMA_INTERACTIVE_TX_MAX_WAIT_MS = Number.parseInt(
  process.env.PRISMA_TRANSACTION_MAX_WAIT_MS ?? "",
  10
) || 20_000
