SFM/app/path_store.py
2026-06-22 07:25:27 +03:00

44 lines
1.2 KiB
Python

from __future__ import annotations
import json
from app.app_config import PATH_STORE_FILE, SFM_DEFAULT_INPUT_DIR
def get_user_path(user_id: str) -> str:
payload = _load_data()
value = payload.get(user_id)
if isinstance(value, str) and value.strip():
return value
return SFM_DEFAULT_INPUT_DIR
def set_user_path(user_id: str, input_dir: str) -> None:
payload = _load_data()
payload[user_id] = input_dir
_save_data(payload)
def _load_data() -> dict[str, str]:
if not PATH_STORE_FILE.exists():
return {}
try:
raw = json.loads(PATH_STORE_FILE.read_text(encoding="utf-8"))
except json.JSONDecodeError:
return {}
if not isinstance(raw, dict):
return {}
normalized: dict[str, str] = {}
for key, value in raw.items():
if isinstance(key, str) and isinstance(value, str):
normalized[key] = value
return normalized
def _save_data(payload: dict[str, str]) -> None:
PATH_STORE_FILE.parent.mkdir(parents=True, exist_ok=True)
PATH_STORE_FILE.write_text(
json.dumps(payload, ensure_ascii=False, indent=2, sort_keys=True),
encoding="utf-8",
)