#!/usr/bin/env npx tsx
/**
 * Test direct data queries for each sport
 */
require('dotenv').config({ path: '.env.local' });
require('dotenv').config({ path: '.env' });

import { getSportsDb, isSportsDbEnabled } from '../lib/sportsDb';

async function main() {
  if (!isSportsDbEnabled()) {
    console.error('❌ SportsDB not enabled');
    process.exit(1);
  }

  const prisma = getSportsDb();
  const today = new Date();
  const oneWeekAgo = new Date(today.getTime() - 7 * 24 * 60 * 60 * 1000);
  const oneWeekAhead = new Date(today.getTime() + 7 * 24 * 60 * 60 * 1000);

  console.log('Testing direct queries for each sport\n');
  console.log(`Date range: ${oneWeekAgo.toISOString().split('T')[0]} to ${oneWeekAhead.toISOString().split('T')[0]}`);

  const leagues = ['nba', 'nfl', 'nhl', 'mlb'];

  for (const league of leagues) {
    console.log(`\n=== ${league.toUpperCase()} ===`);

    // Query games in date range
    const games = await prisma.sportsGame.findMany({
      where: {
        league,
        gameDate: {
          gte: oneWeekAgo,
          lte: oneWeekAhead,
        },
      },
      orderBy: { gameDate: 'asc' },
      take: 5,
      select: {
        homeTeam: true,
        awayTeam: true,
        gameDate: true,
        homeScore: true,
        awayScore: true,
      },
    });

    if (games.length === 0) {
      console.log('  No games in date range');

      // Get latest game
      const latest = await prisma.sportsGame.findFirst({
        where: { league },
        orderBy: { gameDate: 'desc' },
        select: {
          homeTeam: true,
          awayTeam: true,
          gameDate: true,
        },
      });

      const earliest = await prisma.sportsGame.findFirst({
        where: { league },
        orderBy: { gameDate: 'asc' },
        select: {
          homeTeam: true,
          awayTeam: true,
          gameDate: true,
        },
      });

      if (latest && earliest) {
        const latestDate = latest.gameDate ? new Date(latest.gameDate).toISOString().split('T')[0] : 'N/A';
        const earliestDate = earliest.gameDate ? new Date(earliest.gameDate).toISOString().split('T')[0] : 'N/A';
        console.log(`  Data range: ${earliestDate} to ${latestDate}`);
        console.log(`  Latest: ${latest.awayTeam} @ ${latest.homeTeam}`);
      }
    } else {
      console.log(`  Found ${games.length} games:`);
      for (const g of games) {
        const date = g.gameDate ? new Date(g.gameDate).toISOString().split('T')[0] : 'N/A';
        console.log(`    ${date}: ${g.awayTeam} @ ${g.homeTeam}`);
      }
    }
  }

  // Check player metrics
  console.log('\n=== Player Metrics Sample ===');
  for (const league of leagues) {
    const metrics = await prisma.playerGameMetric.findFirst({
      where: { league },
      orderBy: { gameDate: 'desc' },
      select: {
        playerName: true,
        statKey: true,
        value: true,
        gameDate: true,
        team: true,
      },
    });

    if (metrics) {
      const date = metrics.gameDate ? new Date(metrics.gameDate).toISOString().split('T')[0] : 'N/A';
      console.log(`${league.toUpperCase()}: ${metrics.playerName} - ${metrics.statKey}: ${metrics.value} (${date})`);
    } else {
      console.log(`${league.toUpperCase()}: No metrics found`);
    }
  }
}

main().catch(console.error);
