/**
 * Test script to trigger schedulers and generate metrics for Grafana dashboard testing
 */

import { PrismaClient } from '@prisma/client';
import { TabApiClient } from '../src/api/tab';
import { MorningScrapeScheduler } from '../src/schedulers/morning-scrape-scheduler';
import logger from '../src/utils/logger';

const prisma = new PrismaClient();

async function main() {
  console.log('🧪 Testing Scheduler Metrics Generation\n');

  try {
    // Initialize API client
    const apiClient = new TabApiClient();

    // Create morning scrape scheduler
    const scheduler = new MorningScrapeScheduler(apiClient, prisma);

    console.log('⚡ Triggering morning scrape manually...');
    const result = await scheduler.triggerManually();

    console.log('\n✅ Morning scrape completed!');
    console.log('═══════════════════════════════════════');
    console.log(`Success: ${result.success}`);
    console.log(`Items Processed: ${result.itemsProcessed}`);
    console.log(`Duration: ${(result.durationMs / 1000).toFixed(2)}s`);
    console.log(`Errors: ${result.errors.length}`);

    if (result.metadata) {
      console.log('\nMetadata:');
      console.log(`  Meetings by Day:`, result.metadata.meetingsByDay);
      console.log(`  Races by Day:`, result.metadata.racesByDay);
    }

    if (result.errors.length > 0) {
      console.log('\n❌ Errors:');
      result.errors.forEach((err, i) => {
        console.log(`  ${i + 1}. ${err}`);
      });
    }

    console.log('\n📊 Check Grafana dashboard at: http://localhost:3000');
    console.log('   Dashboard: TAB API - Scheduler Monitoring');
    console.log('   Login: admin / admin\n');

  } catch (error) {
    console.error('❌ Test failed:', error);
    throw error;
  } finally {
    await prisma.$disconnect();
  }
}

main();
