import 'dotenv/config';
import { drizzle } from 'drizzle-orm/node-postgres';
import { migrate } from 'drizzle-orm/node-postgres/migrator';
import { Pool } from 'pg';
import * as path from 'path';

/**
 * Applies pending SQL migrations from ./drizzle using the owner connection.
 * Usage: pnpm db:migrate   (reads DATABASE_MIGRATION_URL or DATABASE_URL)
 */
async function main() {
  const url = process.env.DATABASE_MIGRATION_URL ?? process.env.DATABASE_URL;
  if (!url) throw new Error('DATABASE_MIGRATION_URL or DATABASE_URL must be set');
  const pool = new Pool({ connectionString: url, max: 1 });
  const db = drizzle(pool);
  const migrationsFolder = path.resolve(__dirname, '..', '..', 'drizzle');
  // eslint-disable-next-line no-console
  console.log(`Applying migrations from ${migrationsFolder}`);
  await migrate(db, { migrationsFolder });
  // eslint-disable-next-line no-console
  console.log('Migrations applied');
  await pool.end();
}

main().catch((err) => {
  // eslint-disable-next-line no-console
  console.error(err);
  process.exit(1);
});
