From db1f62227bb19fc3edb697aa8d2863b7f41a2c08 Mon Sep 17 00:00:00 2001 From: Hitonabi Date: Thu, 25 Jun 2026 12:41:58 +0200 Subject: [PATCH] feat(2.0): DELETE /api/models/{id} (Eintrag + Gruppen-Mitgliedschaft entfernen) Co-Authored-By: Claude Opus 4.8 --- backend/routers/models.py | 7 +++++++ backend/services/llamaswap.py | 14 ++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/backend/routers/models.py b/backend/routers/models.py index 1fdb273..835ade0 100644 --- a/backend/routers/models.py +++ b/backend/routers/models.py @@ -124,6 +124,13 @@ def cancel(job_id: str) -> dict: return {"ok": jobengine.cancel_job(job_id)} +@router.delete("/models/{model_id}") +def delete(model_id: str) -> dict: + if not llamaswap.delete_model(model_id): + raise HTTPException(404, "Modell nicht gefunden") + return {"ok": True} + + @router.get("/groups") def groups() -> dict: return {"groups": llamaswap.list_groups()} diff --git a/backend/services/llamaswap.py b/backend/services/llamaswap.py index bed1759..974e1f6 100644 --- a/backend/services/llamaswap.py +++ b/backend/services/llamaswap.py @@ -186,3 +186,17 @@ def set_group(group: str, members: list[str], swap: bool = False, persist: bool def list_groups() -> dict: return read_config().get("groups") or {} + + +def delete_model(model_id: str) -> bool: + """Entfernt einen Modell-Eintrag aus der config.yaml (und aus allen Gruppen).""" + cfg = read_config() + models = cfg.get("models") or {} + if model_id not in models: + return False + del models[model_id] + for g in (cfg.get("groups") or {}).values(): + if isinstance(g, dict) and model_id in (g.get("members") or []): + g["members"] = [m for m in g["members"] if m != model_id] + write_config(cfg) + return True