import "dotenv/config";
import { PrismaClient } from "@prisma/client";

const globalForPrisma = globalThis as unknown as {
    prisma: PrismaClient | undefined;
};

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

        // datasources: {
        //     db: {
        //         url: process.env.DATABASE_URL, // ensure this includes pool config
        //     },
        // },
    });

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

/**
 * Check DB connection + warm up
 */
export async function checkDbConnection() {
    try {
        await prisma.$connect();

        // Optional: lightweight test query
        await prisma.$queryRaw`SELECT 1`;

        console.log("✅ Database connected successfully");
    } catch (err) {
        console.error("❌ Database connection failed");
        console.error(err);
        process.exit(1);
    }
}