import { Pool } from "pg";
import * as dotenv from "dotenv";
import { scrapeShippingETA, updateETAInDatabase } from "@/lib/shipping-scraper";

dotenv.config({ path: ".env" });

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

async function testHMM() {
  console.log("\n╔════════════════════════════════════╗");
  console.log("║  TEST: HMM Container HDMU5599362  ║");
  console.log("╚════════════════════════════════════╝\n");

  try {
    // Get container from database
    console.log("📋 Querying database for HDMU5599362...\n");
    
    const result = await pool.query(
      `SELECT id, container_number, carrier, vessel_tracking_url, eta
       FROM container_shipment 
       WHERE container_number = 'HDMU5599362'
       LIMIT 1`
    );

    if (result.rows.length === 0) {
      console.log("❌ Container HDMU5599362 not found in database\n");
      await pool.end();
      return;
    }

    const container = result.rows[0];
    
    console.log(`✅ Found container: ${container.container_number}`);
    console.log(`   Current ETA: ${container.eta}`);
    console.log(`   Carrier: ${container.carrier}`);
    console.log(`   URL: ${container.vessel_tracking_url}\n`);

    console.log("🌐 Starting HMM scrape...\n");
    console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n");

    try {
      // Scrape ETA
      const eta = await scrapeShippingETA(
        container.container_number,
        "HMM",
        container.vessel_tracking_url
      );

      console.log("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
      console.log("\n📊 Scraping Results:");
      console.log(`   ETA Raw: ${eta.etaRaw}`);
      console.log(`   ETA Formatted: ${eta.etaFormatted}`);
      console.log(`   Status: ${eta.status}`);

      if (eta.etaFormatted && eta.etaFormatted !== "No encontrado") {
        console.log("\n✅ SUCCESS - ETA extracted!");
        
        // Update database to test DB write
        console.log("\n💾 Updating database...");
        await updateETAInDatabase(pool, container.id, "HMM", eta);
        console.log("✅ Database updated successfully");
      } else {
        console.log("\n❌ FAILED - Could not extract ETA");
      }
    } catch (scrapeErr: any) {
      console.log(`\n❌ Scraping error: ${scrapeErr.message}`);
    }

    console.log("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n");
    
    await pool.end();
  } catch (err) {
    console.error("❌ Error:", err);
    await pool.end();
    process.exit(1);
  }
}

testHMM().catch(console.error);
