import { NextResponse } from "next/server"; import { requireAdmin } from "@/lib/admin-auth"; export const dynamic = "force-dynamic"; function isSupabaseConfigured() { return !!(process.env.SUPABASE_URL && process.env.SUPABASE_SERVICE_ROLE_KEY); } function supabaseNotReadyResponse() { return NextResponse.json( { error: "Supabase nicht konfiguriert – Email-Queue nicht verfügbar" }, { status: 503 } ); } export async function GET(request: Request) { const check = await requireAdmin(); if (check instanceof NextResponse) return check; if (!isSupabaseConfigured()) return supabaseNotReadyResponse(); const { createServiceClient } = await import("@/lib/supabase"); const supabase = createServiceClient(); const { data, error } = await supabase .from("email_queue") .select("id, created_at, next_retry_at, retry_count, 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); } export async function POST(request: Request) { const check = await requireAdmin(); if (check instanceof NextResponse) return check; if (!isSupabaseConfigured()) return supabaseNotReadyResponse(); const { createServiceClient } = await import("@/lib/supabase"); 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 }); try { const { startEmailQueueWorker } = await import("@/lib/email-queue"); startEmailQueueWorker(); } catch {} return NextResponse.json({ ok: true, updated: count ?? 0 }); } export async function DELETE(request: Request) { const check = await requireAdmin(); if (check instanceof NextResponse) return check; if (!isSupabaseConfigured()) return supabaseNotReadyResponse(); const { createServiceClient } = await import("@/lib/supabase"); 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 }); }