import { NextResponse } from "next/server"; import { createServiceClient } from "@/lib/supabase"; import { requireAdmin } from "@/lib/admin-auth"; // Kein statischer Build – braucht Env-Vars zur Laufzeit export const dynamic = "force-dynamic"; // GET: Status der Queue abrufen export async function GET() { const check = await requireAdmin(); if (check instanceof NextResponse) return check; const supabase = createServiceClient(); const { data, error } = await supabase .from("email_queue") .select("id, created_at, next_retry_at, retry_count, max_retries, status, error_last, mail_to, subject") .order("created_at", { ascending: false }) .limit(50); if (error) return NextResponse.json({ error: error.message }, { status: 500 }); return NextResponse.json(data); } // POST: Alle pending Mails sofort erneut versuchen (manueller Trigger) export async function POST() { const check = await requireAdmin(); if (check instanceof NextResponse) return check; const supabase = createServiceClient(); const { error, count } = await supabase .from("email_queue") .update({ next_retry_at: new Date().toISOString() }) .eq("status", "pending"); if (error) return NextResponse.json({ error: error.message }, { status: 500 }); // Worker-Lauf anstoßen (falls noch nicht gestartet) try { const { startEmailQueueWorker } = await import("../../../../lib/email-queue"); startEmailQueueWorker(); } catch {} return NextResponse.json({ ok: true, updated: count ?? 0 }); } // DELETE: Fehlgeschlagene Mails aus Queue entfernen export async function DELETE() { const check = await requireAdmin(); if (check instanceof NextResponse) return check; const supabase = createServiceClient(); const { error, count } = await supabase .from("email_queue") .delete() .eq("status", "failed"); if (error) return NextResponse.json({ error: error.message }, { status: 500 }); return NextResponse.json({ ok: true, deleted: count ?? 0 }); }