import { prisma } from "../server/utils/prisma"
import { persistedSourceSlugs, scrapeAndStoreSource } from "../server/utils/scrape-storage"

process.loadEnvFile?.()

async function main() {
  const results = []
  const failures: { source: string; message: string }[] = []

  for (const source of persistedSourceSlugs) {
    console.log(`[ingest] Iniciando ${source}...`)

    try {
      const result = await scrapeAndStoreSource(source)
      results.push(result)
      console.log(
        `[ingest] ${source} listo: ${result.fetchedCount} registros, ${result.newCount} nuevos, ${result.updatedCount} actualizados`
      )
    } catch (error) {
      const message = error instanceof Error ? error.message : "fallo desconocido"
      failures.push({ source, message })
      console.error(`[ingest] ${source} fallo: ${message}`)
    }
  }

  if (results.length === 0) {
    throw new Error(`Ninguna fuente pudo completar la ingesta. ${failures.map((item) => `${item.source}: ${item.message}`).join(" | ")}`)
  }

  console.log(JSON.stringify({ ok: results, failed: failures }, null, 2))
}

main()
  .catch((error) => {
    console.error(error)
    process.exit(1)
  })
  .finally(async () => {
    await prisma.$disconnect()
  })
