#!/usr/bin/env python3 """ Read sync configuration for a user from the database and output JSON. Usage: python run/read_config.py Output JSON structure: { "enabled": true, "confirmed": true, "filters": { "stores": [{"id": "...", "name": "...", "mode": "include"}], "groups": [{"id": "...", "name": "...", "mode": "include", "parent_store_id": "..."}], "products": [{"id": "...", "name": "...", "mode": "exclude", "parent_group_id": "..."}] } } """ import json import sys import os sys.path.insert(0, os.path.join(os.path.dirname(__file__), "..")) from web.database import SessionLocal from web.models import SyncConfig, SyncFilter def read_config(user_id: int) -> dict: db = SessionLocal() try: config = db.query(SyncConfig).filter(SyncConfig.user_id == user_id).first() if not config: return {"enabled": False, "confirmed": False, "filters": {"stores": [], "groups": [], "products": []}} enabled = config.is_enabled confirmed = config.confirmed_at is not None stores = [] groups = [] products = [] for f in config.filters: entry = {"id": f.entity_id, "name": f.entity_name, "mode": f.filter_mode} if f.entity_type == "store": stores.append(entry) elif f.entity_type == "group": stores.append({**entry, "parent_store_id": f.parent_entity_id}) elif f.entity_type == "product": products.append({**entry, "parent_group_id": f.parent_entity_id}) return { "enabled": enabled, "confirmed": confirmed, "filters": {"stores": stores, "groups": groups, "products": products}, } finally: db.close() if __name__ == "__main__": if len(sys.argv) != 2: print("Usage: read_config.py ", file=sys.stderr) sys.exit(1) user_id = int(sys.argv[1]) print(json.dumps(read_config(user_id), ensure_ascii=False, indent=2))