"""File I/O helper utilities.""" import json from pathlib import Path from services.server_state import STATE def load_json_list(path: Path): """Load a JSON file and return it as a list.""" if not path.exists(): return [] with open(path, "r", encoding="utf-8") as f: return json.load(f) async def sync_state_from_file(path: Path, kind: str): """ Read JSON file (list of members dicts) and upsert into STATE. Expected member dict keys: id, name, level, estimate, optionally status/hits. """ arr = load_json_list(path) received_ids = [] for m in arr: try: await STATE.upsert_member(m, kind) received_ids.append(int(m["id"])) except Exception as e: print(f"Skipping bad member entry while syncing: {m} -> {e}") await STATE.remove_missing_members(received_ids, kind)