"""RDP / RDG flap auto-disconnect settings (ui_settings singleton).""" from __future__ import annotations from dataclasses import dataclass from sqlalchemy.orm import Session from app.models.ui_settings import UI_SETTINGS_ROW_ID, UiSettings @dataclass(frozen=True) class RdpFlapSettings: auto_disconnect: bool source: str = "db" def get_effective_rdp_flap_settings(db: Session) -> RdpFlapSettings: row = db.get(UiSettings, UI_SETTINGS_ROW_ID) if row is None: return RdpFlapSettings(auto_disconnect=False, source="default") return RdpFlapSettings(auto_disconnect=bool(row.auto_rdp_flap_disconnect), source="db") def upsert_rdp_flap_settings(db: Session, *, auto_disconnect: bool) -> RdpFlapSettings: row = db.get(UiSettings, UI_SETTINGS_ROW_ID) if row is None: row = UiSettings(id=UI_SETTINGS_ROW_ID, show_sidebar_system_stats=True) db.add(row) row.auto_rdp_flap_disconnect = bool(auto_disconnect) db.commit() db.refresh(row) return get_effective_rdp_flap_settings(db)