from sqlalchemy.orm import DeclarativeMeta from app.modules.business import models DOMAIN_MODELS: dict[str, type[DeclarativeMeta]] = { "projects": models.Project, "tasks": models.WorkTask, "procurements": models.Procurement, "expenses": models.Expense, "fund-accounts": models.FundAccount, "policies": models.Policy, "standards": models.Standard, "performance-metrics": models.PerformanceMetric, "suppliers": models.Supplier, "attendance-records": models.AttendanceRecord, "work-reports": models.WorkReport, "risk-events": models.RiskEvent, "legacy-sync-runs": models.LegacySyncRun, } LOW_RISK_DOMAINS = { "projects", "tasks", "procurements", "expenses", "policies", "standards", "suppliers", "attendance-records", "work-reports", "risk-events", "legacy-sync-runs", } HIGH_RISK_DOMAINS = {"fund-accounts", "performance-metrics"} def get_domain_model(domain: str) -> type[DeclarativeMeta]: if domain not in DOMAIN_MODELS: supported = ", ".join(sorted(DOMAIN_MODELS)) raise KeyError(f"Unsupported domain '{domain}'. Supported: {supported}") return DOMAIN_MODELS[domain]