From bedf6b6bf887494a8396b11044221cf48ad444c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Bachmann?= Date: Thu, 15 Jan 2026 14:07:38 +0000 Subject: [PATCH] =?UTF-8?q?custom=5Fcomponents/bahmcloud=5Fstore/storage.p?= =?UTF-8?q?y=20gel=C3=B6scht?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- custom_components/bahmcloud_store/storage.py | 78 -------------------- 1 file changed, 78 deletions(-) delete mode 100644 custom_components/bahmcloud_store/storage.py diff --git a/custom_components/bahmcloud_store/storage.py b/custom_components/bahmcloud_store/storage.py deleted file mode 100644 index 8f359cd..0000000 --- a/custom_components/bahmcloud_store/storage.py +++ /dev/null @@ -1,78 +0,0 @@ -from __future__ import annotations - -import uuid -from dataclasses import dataclass -from typing import Any - -from homeassistant.core import HomeAssistant -from homeassistant.helpers.storage import Store - -_STORAGE_VERSION = 1 -_STORAGE_KEY = "bcs_store" - - -@dataclass -class CustomRepo: - id: str - url: str - name: str | None = None - - -class BCSStorage: - """Persistent storage for manually added repositories.""" - - def __init__(self, hass: HomeAssistant) -> None: - self.hass = hass - self._store = Store(hass, _STORAGE_VERSION, _STORAGE_KEY) - - async def _load(self) -> dict[str, Any]: - data = await self._store.async_load() - if not data: - return {"custom_repos": []} - if "custom_repos" not in data: - data["custom_repos"] = [] - return data - - async def _save(self, data: dict[str, Any]) -> None: - await self._store.async_save(data) - - async def list_custom_repos(self) -> list[CustomRepo]: - data = await self._load() - repos = data.get("custom_repos", []) - out: list[CustomRepo] = [] - for r in repos: - if not isinstance(r, dict): - continue - rid = str(r.get("id") or "") - url = str(r.get("url") or "") - name = r.get("name") - if rid and url: - out.append(CustomRepo(id=rid, url=url, name=str(name) if name else None)) - return out - - async def add_custom_repo(self, url: str, name: str | None) -> CustomRepo: - data = await self._load() - repos = data.get("custom_repos", []) - - # Deduplicate by URL - for r in repos: - if isinstance(r, dict) and str(r.get("url", "")).strip() == url.strip(): - # Update name if provided - if name: - r["name"] = name - await self._save(data) - return CustomRepo(id=str(r["id"]), url=str(r["url"]), name=r.get("name")) - - rid = f"custom:{uuid.uuid4().hex[:10]}" - entry = {"id": rid, "url": url.strip(), "name": name.strip() if name else None} - repos.append(entry) - data["custom_repos"] = repos - await self._save(data) - return CustomRepo(id=rid, url=entry["url"], name=entry["name"]) - - async def remove_custom_repo(self, repo_id: str) -> None: - data = await self._load() - repos = data.get("custom_repos", []) - data["custom_repos"] = [r for r in repos if not (isinstance(r, dict) and r.get("id") == repo_id)] - await self._save(data) -