Coverage for src / lexigram / admin / settings / store.py: 64%
14 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-08-13 22:14 +0800
« prev ^ index » next coverage.py v7.13.5, created at 2026-08-13 22:14 +0800
1"""DB-backed store adapter bridging ConfigRegistry to tenant_configs."""
3from __future__ import annotations
5from typing import TYPE_CHECKING, Any
7from lexigram.admin.settings.panel.registry import StoreBase
9if TYPE_CHECKING:
10 from lexigram.admin.services.settings_service import AdminSettingsService
12__all__ = ["TenantConfigStore"]
14DEFAULT_TENANT = "default"
17class TenantConfigStore(StoreBase):
18 """StoreBase implementation persisting to tenant_configs.
20 Keys are stored verbatim (e.g. ``admin.cache.enabled``) via
21 ``AdminSettingsService``, which prefixes them with ``admin_ui.`` in the
22 ``tenant_configs`` table.
23 """
25 def __init__(
26 self,
27 service: AdminSettingsService,
28 tenant_id: str = DEFAULT_TENANT,
29 ) -> None:
30 self._service = service
31 self._tenant = tenant_id
33 async def get(self, key: str, default: Any = None) -> Any:
34 """Retrieve a value by key, falling back to *default* when unset."""
35 value = await self._service.get(self._tenant, key)
36 return value if value is not None else default
38 async def set(self, key: str, value: Any) -> None:
39 """Persist a value by key."""
40 await self._service.set(self._tenant, key, value)