import 'dotenv/config';
import pool from '../db';
import {
  getMlbAlertAssets,
  getMlbZeroCandidateIssues,
  storeMlbZeroCandidateIssues,
  summarizeMlbAlertAssets,
  summarizeMlbZeroCandidateIssues,
} 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 assets = await getMlbAlertAssets(dateET);
  const issues = await getMlbZeroCandidateIssues(dateET);
  await storeMlbZeroCandidateIssues(dateET, issues);
  const summary = summarizeMlbAlertAssets(assets);
  const issueSummary = summarizeMlbZeroCandidateIssues(issues);

  console.log(JSON.stringify({ date_et: dateET, summary, issue_summary: issueSummary, issues, assets }, null, 2));
  await pool.end();

  if (summary.critical_assets > 0 || (issueSummary.by_issue_type.missing_feed || 0) > 0 || (issueSummary.by_issue_type.upstream_team_mismatch || 0) > 0) {
    process.exit(2);
  }
  if (summary.warning_assets > 0 || issueSummary.total_games > 0) {
    process.exit(1);
  }
  process.exit(0);
}

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