Files
breakpilot-compliance/backend-compliance/compliance/db/repository.py
Sharang Parnerkar 482e8574ad refactor(backend/db): split repository.py + isms_repository.py per-aggregate
Phase 1 Step 5 of PHASE1_RUNBOOK.md.

compliance/db/repository.py (1547 LOC) decomposed into seven sibling
per-aggregate repository modules:

  regulation_repository.py     (268) — Regulation + Requirement
  control_repository.py        (291) — Control + ControlMapping
  evidence_repository.py       (143)
  risk_repository.py           (148)
  audit_export_repository.py   (110)
  service_module_repository.py (247)
  audit_session_repository.py  (478) — AuditSession + AuditSignOff

compliance/db/isms_repository.py (838 LOC) decomposed into two
sub-aggregate modules mirroring the models split:

  isms_governance_repository.py (354) — Scope, Policy, Objective, SoA
  isms_audit_repository.py      (499) — Finding, CAPA, Review, Internal Audit,
                                         Trail, Readiness

Both original files become thin re-export shims (37 and 25 LOC
respectively) so every existing import continues to work unchanged.
New code SHOULD import from the aggregate module directly.

All new sibling files under the 500-line hard cap; largest is
isms_audit_repository.py at 499 (on the edge; when Phase 1 Step 4
router->service extraction lands, the audit_session repo may split
further if growth exceeds 500).

Verified:
  - 173/173 pytest compliance/tests/ tests/contracts/ pass
  - OpenAPI 360 paths / 484 operations unchanged
  - All repo files under 500 LOC

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 18:08:39 +02:00

38 lines
1.7 KiB
Python

"""
compliance.db.repository — backwards-compatibility re-export shim.
Phase 1 Step 5 split the monolithic 1547-line repository module into per-aggregate
sibling modules. Every repository class is re-exported here so existing imports
(``from compliance.db.repository import ControlRepository, ...``) continue to
work unchanged.
New code SHOULD import directly from the aggregate module:
from compliance.db.regulation_repository import RegulationRepository, RequirementRepository
from compliance.db.control_repository import ControlRepository, ControlMappingRepository
from compliance.db.evidence_repository import EvidenceRepository
from compliance.db.risk_repository import RiskRepository
from compliance.db.audit_export_repository import AuditExportRepository
from compliance.db.service_module_repository import ServiceModuleRepository
from compliance.db.audit_session_repository import AuditSessionRepository, AuditSignOffRepository
DO NOT add new classes to this file.
"""
from compliance.db.regulation_repository import ( # noqa: F401
RegulationRepository,
RequirementRepository,
)
from compliance.db.control_repository import ( # noqa: F401
ControlRepository,
ControlMappingRepository,
)
from compliance.db.evidence_repository import EvidenceRepository # noqa: F401
from compliance.db.risk_repository import RiskRepository # noqa: F401
from compliance.db.audit_export_repository import AuditExportRepository # noqa: F401
from compliance.db.service_module_repository import ServiceModuleRepository # noqa: F401
from compliance.db.audit_session_repository import ( # noqa: F401
AuditSessionRepository,
AuditSignOffRepository,
)