/**
 * GEPRÜFTE TIERE: API-Client für die „vollständig korrekt"-Markierung + den Schutz
 * manueller Änderungen (/verified-gerbils). Eine markierte Maus wird vom automatischen
 * Import nicht mehr verändert (Freeze).
 */
import { api, ApiError } from './client'
import type { VerifiedGerbil } from './types'

const RESOURCE = '/verified-gerbils'

/** Alle geprüften/geschützten Tiere mit Drift-Status. */
export function listVerified(): Promise<VerifiedGerbil[]> {
  return api.get<VerifiedGerbil[]>(RESOURCE)
}

/**
 * Prüfstatus eines einzelnen Tiers. Gibt null zurück, wenn das Tier weder markiert
 * noch geschützt ist (Backend liefert dann 404) — dann gibt es einfach keinen Status.
 */
export async function getVerifiedStatus(gerbilId: string): Promise<VerifiedGerbil | null> {
  try {
    return await api.get<VerifiedGerbil>(`${RESOURCE}/${gerbilId}`)
  } catch (e) {
    if (e instanceof ApiError && e.status === 404) return null
    throw e
  }
}

/** Als „vollständig korrekt" markieren (Freeze aller eigenen Felder). Optionaler Hinweis. */
export function verifyGerbil(gerbilId: string, note?: string | null): Promise<VerifiedGerbil> {
  return api.post<VerifiedGerbil>(`${RESOURCE}/${gerbilId}`, { note: note ?? null })
}

/** Markierung/Schutz entfernen (nicht-destruktiv; nächster Import macht wieder import-getrieben). */
export function unverifyGerbil(gerbilId: string): Promise<void> {
  return api.delete(`${RESOURCE}/${gerbilId}`)
}
