/**
 * Point city/property images at local JPEG assets.
 * Run: npm run fix:media
 */
import { connectDb, disconnectDb } from "../src/db/mongoose";
import { City, Property } from "../src/db/models";
import { cityImage, stayImage } from "../src/data/localMedia";

function needsLocal(url?: string | null) {
  if (!url) return true;
  return (
    url.includes("unsplash") ||
    url.endsWith(".svg") ||
    url.startsWith("http") ||
    !url.startsWith("/images/") ||
    url.endsWith(".svg")
  );
}

async function main() {
  await connectDb();
  const cities = await City.find().sort({ nameEn: 1 }).lean();
  let cityN = 0;
  for (let i = 0; i < cities.length; i++) {
    const c = cities[i];
    await City.updateOne({ _id: c._id }, { $set: { imageUrl: cityImage(i) } });
    cityN++;
  }

  const properties = await Property.find().lean();
  let propN = 0;
  for (let i = 0; i < properties.length; i++) {
    const p = properties[i];
    const images = (p.images || []).map((img: any, idx: number) => ({
      ...img,
      url: stayImage(i + idx),
    }));
    if (!images.length) {
      images.push({
        _id: p._id,
        url: stayImage(i),
        sortOrder: 0,
        createdAt: new Date(),
      });
    }
    await Property.updateOne({ _id: p._id }, { $set: { images } });
    propN++;
  }

  console.log(`Restored photo URLs — cities: ${cityN}, properties: ${propN}`);
  await disconnectDb();
}

main().catch(async (err) => {
  console.error(err);
  await disconnectDb().catch(() => undefined);
  process.exit(1);
});
