import 'dotenv/config';
import { PrismaPg } from '@prisma/adapter-pg';
import { PrismaClient } from '../src/generated/prisma/client';
import { validateIssueMatrixSeedTarget } from './seeds/issue-matrix.seed';
import {
  loadRgcDecisionSeedSource,
  seedRgcDecisions,
} from './seeds/rgc-decisions.seed';

async function main() {
  const args = process.argv.slice(2);
  const databaseArgs = args.filter((arg) => arg.startsWith('--database='));
  const invalid = args.filter(
    (arg) =>
      ![
        '--apply',
        '--create-historical-plenary',
        '--batch=oct2026-kh',
      ].includes(arg) && !arg.startsWith('--database='),
  );
  if (
    invalid.length ||
    databaseArgs.length > 1 ||
    new Set(args).size !== args.length
  )
    throw new Error(
      'Unknown or repeated options. Use --batch=oct2026-kh, --apply, --create-historical-plenary, and optionally --database=NAME.',
    );
  const connectionString = process.env.DATABASE_URL;
  if (!connectionString) throw new Error('DATABASE_URL is missing');
  const target = validateIssueMatrixSeedTarget(
    connectionString,
    databaseArgs[0]?.slice('--database='.length),
  );
  const database = new PrismaClient({
    adapter: new PrismaPg({ connectionString }),
  });
  try {
    const result = await seedRgcDecisions(
      database,
      loadRgcDecisionSeedSource(),
      args.includes('--apply'),
      args.includes('--create-historical-plenary'),
    );
    console.log(JSON.stringify({ target, ...result }, null, 2));
  } finally {
    await database.$disconnect();
  }
}

main().catch((error: Error) => {
  console.error(error.message);
  process.exitCode = 1;
});
