import { drizzle } from "drizzle-orm/node-postgres";
import { migrate } from "drizzle-orm/node-postgres/migrator";
import { Pool } from "pg";

/**
 * Programmatischer Migrations-Runner.
 *
 * Verwendet `drizzle-orm/node-postgres/migrator` mit dem Drizzle-Journal,
 * sodass mehrfaches Ausführen idempotent ist (bereits angewandte Migrationen
 * werden übersprungen). Liest `DATABASE_URL` direkt aus der Umgebung, um nicht
 * von der Next.js-Env-Validierung abhängig zu sein.
 */
async function main(): Promise<void> {
  const connectionString = process.env.DATABASE_URL;
  if (!connectionString) {
    throw new Error("DATABASE_URL ist nicht gesetzt.");
  }

  const pool = new Pool({ connectionString, max: 1 });
  const db = drizzle(pool);

  try {
    await migrate(db, { migrationsFolder: "./drizzle" });
    console.log("Migrationen erfolgreich angewandt.");
  } finally {
    await pool.end();
  }
}

main().catch((err: unknown) => {
  console.error("Migration fehlgeschlagen:", err);
  process.exit(1);
});
