import pool from "@/lib/db";
import { scrapeShippingETA, updateETAInDatabase } from "@/lib/shipping-scraper";

/**
 * Script to verify and fix ETA for container MNBU4288732
 * Run with: npx tsx scripts/fix-container-mnbu.ts
 */

async function fixContainer() {
  try {
    console.log("=== Checking Database ===\n");

    // Step 1: Check what's currently in the DB
    const result = await pool.query(
      `SELECT 
        id,
        container_number,
        carrier,
        vessel_tracking_url,
        eta,
        eta_raw
      FROM container_shipment 
      WHERE container_number = $1`,
      ["MNBU4288732"]
    );

    if (result.rows.length === 0) {
      console.log("❌ Container MNBU4288732 not found in database");
      process.exit(1);
    }

    const container = result.rows[0];
    console.log(`Container: ${container.container_number}`);
    console.log(`Carrier: ${container.carrier}`);
    console.log(`Current ETA (formatted): ${container.eta}`);
    console.log(`Current ETA_RAW (from web): ${container.eta_raw}`);
    console.log(`Tracking URL: ${container.vessel_tracking_url}`);

    // Step 2: Re-scrape the container
    console.log("\n=== Re-scraping from Maersk ===\n");

    const scraperResult = await scrapeShippingETA(
      container.container_number,
      container.carrier,
      container.vessel_tracking_url
    );

    console.log(`\nScraper Result:`);
    console.log(`  etaRaw: ${scraperResult.etaRaw}`);
    console.log(`  etaFormatted: ${scraperResult.etaFormatted}`);
    console.log(`  status: ${scraperResult.status}`);

    // Step 3: Update the database
    if (scraperResult.status === "success") {
      console.log("\n=== Updating Database ===\n");
      await updateETAInDatabase(pool, container.id, container.carrier, scraperResult);

      // Verify the update
      const updatedResult = await pool.query(
        `SELECT eta, eta_raw FROM container_shipment WHERE id = $1`,
        [container.id]
      );

      if (updatedResult.rows.length > 0) {
        const updated = updatedResult.rows[0];
        console.log(`Updated ETA: ${updated.eta}`);
        console.log(`Updated ETA_RAW: ${updated.eta_raw}`);
        console.log("\n✅ Database updated successfully!");
      }
    } else {
      console.log(`\n❌ Scraping failed with status: ${scraperResult.status}`);
    }

    process.exit(0);
  } catch (error) {
    console.error("Error:", error);
    process.exit(1);
  }
}

fixContainer();
