import { NextResponse } from "next/server";
import { auth } from "@/auth";
import { prisma } from "@/lib/prisma";
import { syncCreatorPlatforms } from "@/lib/creators/sync";

// Tägliche Synchronisierung aller aktiven Creator.
// Zwei Auslöser:
//  1) Scheduler (z. B. Windows-Aufgabenplanung/cron) via ?secret=CREATORS_SYNC_SECRET
//  2) Eingeloggte(r) Nutzer(in) mit creators.manage (manuell/„Alle aktualisieren")
export async function GET(req: Request) {
  const secret = process.env.CREATORS_SYNC_SECRET;
  const provided = new URL(req.url).searchParams.get("secret");

  let authorized = false;
  if (secret && provided && provided === secret) {
    authorized = true;
  } else {
    const session = await auth();
    authorized = Boolean(session?.user?.permissions?.includes("creators.manage"));
  }
  if (!authorized) return NextResponse.json({ error: "unauthorized" }, { status: 401 });

  // Ehemalige/blockierte Creator werden nicht mehr abgerufen.
  const creators = await prisma.creator.findMany({
    where: { status: { notIn: ["FORMER", "BLOCKED"] } },
    select: { id: true },
  });

  let updated = 0;
  for (const c of creators) {
    try {
      const res = await syncCreatorPlatforms(c.id);
      if (res.changed) updated++;
    } catch {
      /* einzelne Fehler überspringen */
    }
  }

  return NextResponse.json({ ok: true, processed: creators.length, updated });
}
