import { eq, sql } from "drizzle-orm"
import { db } from "@/lib/db/client"
import { domainEvents, notifications, taskInstances, taskSubmissions } from "@/lib/db/schema"

await db.delete(taskSubmissions).where(eq(taskSubmissions.id, "a416d895-81cd-4394-b415-3f92b7cc369e"))

const [s] = await db.select({ n: sql<number>`count(*)::int` }).from(taskSubmissions)
const [e] = await db.select({ n: sql<number>`count(*)::int` }).from(domainEvents)
const [n] = await db.select({ n: sql<number>`count(*)::int` }).from(notifications)
const st = await db
  .select({ s: taskInstances.status, n: sql<number>`count(*)::int` })
  .from(taskInstances).groupBy(taskInstances.status).orderBy(taskInstances.status)

console.log({ rendus: s?.n, evenements: e?.n, notifications: n?.n })
console.log("statuts :", st)

// Aucun rendu ne doit exister sans que la tache soit au moins terminee.
const [bad] = await db
  .select({ n: sql<number>`count(*)::int` })
  .from(taskSubmissions)
  .innerJoin(taskInstances, eq(taskInstances.id, taskSubmissions.taskInstanceId))
  .where(sql`${taskInstances.finishedAt} is null`)
console.log("rendus sans tache terminee :", bad?.n)
process.exit(0)
