import { createApprovalRequest } from "../../../db/device-approvals";

/**
 * POST /api/devices/approvals
 *
 * Aufgerufen vom NEUEN Gerät nachdem `register` mit DEVICE_LIMIT_REACHED
 * fehlgeschlagen ist und der User "Auf anderem Gerät bestätigen" gewählt hat.
 *
 * Body: { deviceId, platform, model?, name?, osVersion? }
 *
 * Returnt das Approval-Record (mit code für UI-Anzeige + expiresAt).
 * Existierende Geräte des Users werden via supabase_realtime (postgres_changes
 * INSERT on device_approval_requests filtered by user_id) automatisch
 * benachrichtigt — kein extra Push nötig.
 *
 * Bootstrap: skipDeviceCheck=true weil das Device noch nicht registriert ist.
 */
export default defineEventHandler(async (event) => {
  const user = await requireUser(event, { skipDeviceCheck: true });
  const body = await readBody(event);
  const { deviceId, platform, model, name, osVersion } = body as {
    deviceId?: string;
    platform?: string;
    model?: string;
    name?: string;
    osVersion?: string;
  };

  if (!deviceId || !platform) {
    throw createError({ statusCode: 400, message: "deviceId + platform required" });
  }
  if (!["ios", "android", "web"].includes(platform)) {
    throw createError({ statusCode: 400, message: "invalid platform" });
  }

  const approval = await createApprovalRequest({
    userId: user.id,
    newDeviceId: deviceId,
    newPlatform: platform,
    newModel: model ?? null,
    newName: name ?? null,
    newOsVersion: osVersion ?? null,
  });

  return { approval };
});
