import 'dotenv/config';
import pool from '../db';
import { getMlbZeroCandidateIssues, storeMlbZeroCandidateIssues } from '../services/mlb-alerts';

function getDateET(): string {
  return new Date().toLocaleDateString('en-CA', { timeZone: 'America/New_York' });
}

async function main() {
  const dateET = process.argv[2] || getDateET();
  const zeroCandidateGames = await getMlbZeroCandidateIssues(dateET);
  await storeMlbZeroCandidateIssues(dateET, zeroCandidateGames);
  const totalGames = await pool.query(
    `SELECT COUNT(*)::int AS count
     FROM rm_events
     WHERE league = 'mlb'
       AND (starts_at AT TIME ZONE 'America/New_York')::date = $1::date`,
    [dateET],
  ).then(res => Number(res.rows[0]?.count || 0)).catch(() => 0);
  console.log(JSON.stringify({
    date_et: dateET,
    total_games: totalGames,
    zero_candidate_games: zeroCandidateGames.length,
    rows: zeroCandidateGames,
  }, null, 2));

  await pool.end();
  process.exit(zeroCandidateGames.length > 0 ? 1 : 0);
}

if (require.main === module) {
  main().catch(async (err) => {
    console.error('[mlb-zero-candidate-audit] Fatal:', err);
    await pool.end().catch(() => {});
    process.exit(1);
  });
}
