import { NextRequest, NextResponse } from "next/server";
import { supabaseAdmin as db } from "@/lib/supabase-admin";
import { sendMetaEvent } from "@/lib/capi";

export const runtime = "nodejs";
export const dynamic = "force-dynamic";
export const maxDuration = 60;

// Dipanggil terjadwal (Vercel Cron mengirim "Authorization: Bearer $CRON_SECRET").
// Tugas: kirim ulang event pending/failed, dan hapus chat yang melewati masa retensi.
export async function GET(req: NextRequest) {
  const secret = process.env.CRON_SECRET;
  if (!secret || req.headers.get("authorization") !== `Bearer ${secret}`) {
    return new NextResponse("Unauthorized", { status: 401 });
  }

  const { data } = await db
    .from("meta_events")
    .select("id")
    .in("status", ["pending", "failed"])
    .lt("attempts", 5)
    .lt("created_at", new Date(Date.now() - 60_000).toISOString())
    .order("created_at")
    .limit(50);

  for (const e of data ?? []) await sendMetaEvent(e.id).catch((err) => console.error("retry gagal", err));

  await db.from("chat_imports").delete().lt("expires_at", new Date().toISOString());
  return NextResponse.json({ retried: data?.length ?? 0 });
}
