import { PrismaClient } from "@prisma/client";
import { PrismaMariaDb } from "@prisma/adapter-mariadb";
import { env } from "./env";

// Parse the MySQL/MariaDB URL for the driver adapter
const dbUrl = new URL(env.DATABASE_URL);
const host = dbUrl.hostname === "localhost" ? "127.0.0.1" : dbUrl.hostname;
const isSsl = dbUrl.searchParams.get("ssl") === "true" || env.NODE_ENV === "production";

const adapter = new PrismaMariaDb({
  host,
  port: dbUrl.port ? parseInt(dbUrl.port, 10) : 3306,
  user: dbUrl.username || "root",
  password: decodeURIComponent(dbUrl.password || ""),
  database: dbUrl.pathname.substring(1),
  connectionLimit: 10,
  connectTimeout: 15000,
  ...(isSsl ? { ssl: { rejectUnauthorized: false } } : {}),
});

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