﻿import { NextRequest, NextResponse } from "next/server"
import { purgePrefixExcept } from "@/lib/r2-storage"

export const dynamic = "force-dynamic"
export const revalidate = 0

function sanitizeFolder(input: unknown): string | null {
  if (typeof input !== "string") return null
  const f = input.trim().replace(/\/+$/, "")
  return f.startsWith("articles/") ? f : null
}

function sanitizeKeepIds(input: unknown): string[] {
  if (!Array.isArray(input)) return []
  return input
    .map((v) => (typeof v === "string" ? v.trim() : ""))
    .filter((v) => v.startsWith("articles/"))
}

/** Purge R2 objects under `folder` except those listed (saved inline images). */
export async function POST(req: NextRequest) {
  try {
    const body = await req.json().catch(() => ({}))
    const folder = sanitizeFolder((body as { folder?: unknown }).folder)
    const keepPublicIds = sanitizeKeepIds((body as { keepPublicIds?: unknown }).keepPublicIds)
    if (!folder) {
      return NextResponse.json({ success: false as const, error: "Invalid folder" }, { status: 400 })
    }
    await purgePrefixExcept(folder, keepPublicIds)
    return NextResponse.json({ success: true as const })
  } catch (err) {
    console.error("[articles] purge-inline-folder-except error:", err)
    return NextResponse.json({ success: false as const, error: "Purge failed" }, { status: 500 })
  }
}
