import { drizzle } from "drizzle-orm/node-postgres";
import { Pool } from "pg";
import { env } from "@/lib/env";
import * as schema from "@/db/schema";

/**
 * Drizzle-pg-Client als Pool-Singleton.
 * Außerhalb der Produktion wird der Pool im globalThis gecacht, damit
 * Next.js-HMR keine Verbindungen leakt.
 */

declare global {
  // Pool-Cache für HMR außerhalb Produktion.
  var __floriannetzPool: Pool | undefined;
}

function createPool(): Pool {
  return new Pool({ connectionString: env.DATABASE_URL });
}

export const pool =
  env.NODE_ENV === "production"
    ? createPool()
    : (globalThis.__floriannetzPool ??= createPool());

export const db = drizzle(pool, { schema });
export type DB = typeof db;
