#!/usr/bin/env node
/**
 * Test script: Scrape ETA and save to database
 * Tests both CMA and Hapag-Lloyd containers
 */

import 'dotenv/config';
import { Pool } from 'pg';
import { scrapAndSaveETA } from '../src/lib/python-scraper-wrapper';

const pool = new Pool({
  connectionString: process.env.DATABASE_URL,
});

async function test() {
  console.log('\n' + '='.repeat(70));
  console.log('🧪 Testing ETA Scraping and Database Save');
  console.log('='.repeat(70));

  const testContainers = [
    'CMAU0863618',    // CMA CGM
    'HLBU6221765',    // Hapag-Lloyd (without space - as stored in DB)
  ];

  for (const container of testContainers) {
    try {
      console.log(`\n📦 Testing container: ${container}`);
      
      // First, verify container exists in DB
      const checkQuery = 'SELECT id, container_number FROM container_shipment WHERE container_number = $1 LIMIT 1';
      const checkResult = await pool.query(checkQuery, [container]);
      
      if (checkResult.rows.length === 0) {
        console.log(`⚠️  Container ${container} not found in database. Skipping.`);
        continue;
      }
      
      console.log(`✓ Container found in database`);
      
      // Call scrape and save
      const result = await scrapAndSaveETA(pool, container);
      
      console.log(`\nResult:`, result);
      
      if (result.success) {
        console.log(`✅ SUCCESS: ETA ${result.eta} saved for ${container} (${result.carrier})`);
        
        // Verify it was saved
        const verifyQuery = 'SELECT eta_raw, eta, carrier FROM container_shipment WHERE container_number = $1';
        const verifyResult = await pool.query(verifyQuery, [container]);
        
        if (verifyResult.rows.length > 0) {
          const row = verifyResult.rows[0];
          console.log(`✓ Database verified:`);
          console.log(`  - eta_raw: ${row.eta_raw}`);
          console.log(`  - eta: ${row.eta}`);
          console.log(`  - carrier: ${row.carrier}`);
        }
      } else {
        console.log(`❌ FAILED: ${result.error || 'No ETA found'}`);
      }
      
    } catch (error) {
      console.error(`❌ Error testing ${container}:`, (error as any).message);
    }
  }

  await pool.end();
  console.log('\n' + '='.repeat(70));
  console.log('✅ Test complete');
  console.log('='.repeat(70) + '\n');
}

test().catch((error) => {
  console.error('Fatal error:', error);
  process.exit(1);
});
