# retoor from .core import TTLCache, bump_cache_version, db, get_table, sync_local_cache def internal_gateway_key() -> str: return get_setting("gateway_internal_key", "") _settings_cache = TTLCache(ttl=60, max_size=100) def get_setting(key: str, default: str = "") -> str: sync_local_cache("settings", _settings_cache) cached = _settings_cache.get(key) if cached is not None: return cached if "site_settings" not in db.tables: return default entry = db["site_settings"].find_one(key=key) if entry is None: return default _settings_cache.set(key, entry["value"]) return entry["value"] def get_int_setting(key: str, default: int) -> int: raw = get_setting(key, str(default)) try: return int(raw) except (TypeError, ValueError): return default def set_setting(key: str, value: str) -> None: settings = get_table("site_settings") existing = settings.find_one(key=key) if existing: settings.update({"id": existing["id"], "key": key, "value": value}, ["id"]) else: settings.insert({"uid": f"setting_{key}", "key": key, "value": value}) _settings_cache.set(key, value) bump_cache_version("settings") def clear_settings_cache() -> None: _settings_cache.clear() bump_cache_version("settings")