import { NextResponse } from "next/server"; import { runImageArchiveJob } from "@/lib/jobs/image-archive-job"; import { getImageArchiveTaskStats } from "@/lib/storage/image-archive-db"; function verifyAuthToken(request: Request): boolean { const authHeader = request.headers.get("authorization"); const token = authHeader?.replace("Bearer ", ""); const cronSecret = process.env.CRON_SECRET; if (!cronSecret) { console.error("[ImageArchiveAPI] CRON_SECRET is not configured"); return false; } return token === cronSecret; } export async function POST(request: Request) { try { if (!verifyAuthToken(request)) { return NextResponse.json({ error: "Unauthorized" }, { status: 401 }); } const result = await runImageArchiveJob(); return NextResponse.json({ ...result, timestamp: new Date().toISOString(), }); } catch (error) { console.error("[ImageArchiveAPI] Job execution failed:", error); return NextResponse.json( { success: false, error: error instanceof Error ? error.message : String(error), timestamp: new Date().toISOString(), }, { status: 500 } ); } } export async function GET(request: Request) { try { if (!verifyAuthToken(request)) { return NextResponse.json({ error: "Unauthorized" }, { status: 401 }); } const stats = await getImageArchiveTaskStats(); return NextResponse.json({ success: true, stats, timestamp: new Date().toISOString(), }); } catch (error) { console.error("[ImageArchiveAPI] Stats query failed:", error); return NextResponse.json( { success: false, error: error instanceof Error ? error.message : String(error), timestamp: new Date().toISOString(), }, { status: 500 } ); } }