import Surreal from "surrealdb";

const DB_URL = "wss://gentle-island-06di2pv2c9po3a8euttd1alkek.aws-euw1.surreal.cloud";
const DB_USER = process.env.SURREAL_USER || "rootuser";
const DB_PASS = process.env.SURREAL_PASS || "n1n@S1mone";

async function fixAdStatus() {
  const db = new Surreal();

  try {
    await db.connect(DB_URL, {
      namespace: "neoad",
      database: "neodb"
    });
    await db.signin({ username: DB_USER, password: DB_PASS });

    console.log("Connected to database");

    // D'abord, voir toutes les pubs
    const allAds = await db.query<[any[]]>(`
      SELECT id, name, status, content, output_url FROM ad
    `);
    console.log("\nAll ads in database:");
    for (const ad of allAds[0] || []) {
      console.log(`- ${ad.name}: status=${ad.status}, hasContent=${!!ad.content?.url}, hasOutput=${!!ad.output_url}`);
    }

    // Trouver toutes les pubs en draft qui ont du contenu avec une URL
    const draftAdsWithContent = await db.query<[any[]]>(`
      SELECT id, name, status, content 
      FROM ad 
      WHERE status = "draft" 
      AND (content.url != NONE OR output_url != NONE)
    `);

    const ads = draftAdsWithContent[0] || [];
    console.log(`Found ${ads.length} ads with content still in draft status`);

    for (const ad of ads) {
      const adId = typeof ad.id === 'string' ? ad.id : ad.id?.id || ad.id;
      console.log(`Fixing ad: ${ad.name} (${adId})`);
      
      await db.query(`
        UPDATE $adId SET status = "ready", updated_at = time::now()
      `, { adId: ad.id });
    }

    console.log(`\nFixed ${ads.length} ads - set status to "ready"`);

    // Vérification
    const verification = await db.query<[any[]]>(`
      SELECT id, name, status FROM ad WHERE status = "ready"
    `);
    console.log(`\nTotal ads with status "ready": ${verification[0]?.length || 0}`);

  } catch (error) {
    console.error("Error:", error);
  } finally {
    await db.close();
  }
}

fixAdStatus();
