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 testCMA() {
  console.log("\n╔════════════════════════════════════╗");
  console.log("║  TEST: CMA Container CMAU0863618  ║");
  console.log("╚════════════════════════════════════╝\n");

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

    if (result.rows.length === 0) {
      console.log("❌ Container CMAU0863618 not found in database");
      console.log("Creating test record...\n");
      
      // Insert test container
      const insertResult = await pool.query(
        `INSERT INTO container_shipment (container_number, carrier, vessel_tracking_url, eta)
         VALUES ('CMAU0863618', 'CMA', NULL, NULL)
         RETURNING id, container_number, carrier, eta`
      );
      
      const container = insertResult.rows[0];
      console.log(`✅ Created test container: ${container.container_number}\n`);
      
      await testContainer(container);
    } else {
      const container = result.rows[0];
      await testContainer(container);
    }

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

async function testContainer(container: any) {
  console.log(`✅ Found container: ${container.container_number}`);
  console.log(`   Current ETA: ${container.eta || "None"}`);
  console.log(`   Carrier: ${container.carrier}`);
  console.log(`   URL: ${container.vessel_tracking_url || "Will auto-generate"}\n`);

  console.log("🌐 Starting CMA scrape (URL will be auto-generated)...\n");
  console.log("━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n");

  try {
    // Scrape ETA (without providing URL - it will auto-generate)
    const eta = await scrapeShippingETA(
      container.container_number,
      "CMA",
      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
      console.log("\n💾 Updating database...");
      await updateETAInDatabase(pool, container.id, "CMA", 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");
}

testCMA().catch(console.error);
