/**
 * Jetable. La sonde précédente a basculé une instance vérifiée en « todo »
 * avant d'échouer. On la remet, et on vérifie l'état global des statuts.
 */
import { and, eq, isNotNull, lt, sql } from "drizzle-orm"

import { db } from "@/lib/db/client"
import { taskInstances } from "@/lib/db/schema"

// Une instance ancienne, contrôlée (checked_at rempli) mais dont le statut dit
// « todo » : c'est exactement la ligne que la sonde a abîmée.
const broken = await db
  .select({ id: taskInstances.id, status: taskInstances.status })
  .from(taskInstances)
  .where(
    and(
      isNotNull(taskInstances.checkedAt),
      sql`${taskInstances.status} <> 'checked'`,
    ),
  )
console.log("incohérentes :", broken)

for (const row of broken) {
  await db
    .update(taskInstances)
    .set({ status: "checked" })
    .where(eq(taskInstances.id, row.id))
}

const counts = await db
  .select({ status: taskInstances.status, n: sql<number>`count(*)::int` })
  .from(taskInstances)
  .groupBy(taskInstances.status)
console.log("statuts :", counts)

void lt
process.exit(0)
