Coverage for src/lexigram/admin/settings/store.py: 0%
14 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 23:18 +0800
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-24 23:18 +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(
34 self, key: str, default: Any = None, tenant_id: str | None = None
35 ) -> Any:
36 """Retrieve a value by key, falling back to *default* when unset."""
37 value = await self._service.get(tenant_id or self._tenant, key)
38 return value if value is not None else default
40 async def set(self, key: str, value: Any, tenant_id: str | None = None) -> None:
41 """Persist a value by key."""
42 await self._service.set(tenant_id or self._tenant, key, value)