import { processMailboxStorageDeletionJobs } from "@/lib/mailbox-file-drawer";
import { cleanupExpiredComposeUploads } from "@/lib/mail-compose-uploads";

export const runtime = "nodejs";
export const dynamic = "force-dynamic";

function hasValidCronSecret(request: Request) {
  const expected = process.env.OFFICIAL_MAIL_CRON_SECRET?.trim();
  return Boolean(expected && request.headers.get("x-officialmail-cron-secret")?.trim() === expected);
}

export async function POST(request: Request) {
  if (!hasValidCronSecret(request)) {
    return Response.json({ error: "forbidden", message: "유효한 크론 시크릿이 필요합니다." }, { status: 403 });
  }

  try {
    const summary = await processMailboxStorageDeletionJobs();
    const compose = new URL(request.url).searchParams.get("compose") === "1"
      ? await cleanupExpiredComposeUploads()
      : null;
    return Response.json({ ok: true, summary, compose });
  } catch (error) {
    return Response.json(
      {
        error: "file-cleanup-failed",
        message: error instanceof Error ? error.message : "파일 정리 작업에 실패했습니다.",
      },
      { status: 500 },
    );
  }
}
