/** Ma vérification : la base est-elle revenue à son état d'origine ? */
import { and, eq, isNotNull, sql } from "drizzle-orm"

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

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

const [subs] = await db
  .select({ n: sql<number>`count(*)::int` })
  .from(taskSubmissions)
console.log("rendus :", subs?.n)

// La contrainte que l'agent dit avoir testée.
const [bad] = await db
  .select({ n: sql<number>`count(*)::int` })
  .from(taskInstances)
  .where(and(eq(taskInstances.status, "missed"), isNotNull(taskInstances.checkedAt)))
console.log("manquées portant un contrôle (doit être 0) :", bad?.n)

// Les manquées, réparties par rapport à aujourd'hui.
const [split] = await db
  .select({
    avant: sql<number>`count(*) filter (where ${taskInstances.dueDate} < '2026-08-04')::int`,
    aujourdhui: sql<number>`count(*) filter (where ${taskInstances.dueDate} = '2026-08-04')::int`,
    apres: sql<number>`count(*) filter (where ${taskInstances.dueDate} > '2026-08-04')::int`,
  })
  .from(taskInstances)
  .where(eq(taskInstances.status, "missed"))
console.log("manquées :", split)

process.exit(0)
