import { softDeleteAdminUser } from "../../../db/adminUsers";

/**
 * DELETE /api/admin/users/[id] — Soft-Delete (DSGVO Art. 17, scrubbed PII)
 *
 * Was passiert (Details siehe db/adminUsers.ts → softDeleteAdminUser):
 *   - PII-Felder werden auf null gesetzt (nickname, avatar, demographics)
 *   - username → "deleted-{shortid}"
 *   - deletedAt-Marker → User taucht in normalen Listen nicht mehr auf
 *
 * Was NICHT passiert:
 *   - Hard-Delete (FK-Cascade auf Posts/Likes wäre destruktiv für Community-State)
 *   - Supabase auth.users Eintrag (separater Schritt — in dieser Operation
 *     bewusst getrennt damit kein Login-Lock vor User-Bestätigung)
 *
 * Auth: x-admin-secret.
 * Idempotent — wiederholtes DELETE → { ok: true, alreadyDeleted: true }.
 */
export default defineEventHandler(async (event) => {
  const config = useRuntimeConfig();
  const secret = getHeader(event, "x-admin-secret");
  if (!config.adminSecret || secret !== config.adminSecret) {
    throw createError({ statusCode: 401, message: "Unauthorized" });
  }

  const id = getRouterParam(event, "id");
  if (!id) throw createError({ statusCode: 400, message: "User-ID fehlt" });

  const result = await softDeleteAdminUser(id);

  // Console-audit-trail bis dedicated audit_log table verfügbar ist
  console.log(
    `[admin/users] DELETE (soft) user=${id} alreadyDeleted=${result.alreadyDeleted}`,
  );

  return result;
});
