Source code for cadrumo.adapters.persistence.profile.evidence_bundles
"""Encrypted persistence bindings for application evidence-bundle ports.Core types::class:`~cadrumo.adapters.persistence.storage.sql.secure_objects.SecureObjectRepository`."""from__future__importannotationsfromcollections.abcimportIteratorfromtypingimportClassVar,overridefrom....application.evidence.modelsimportEvidenceBundlefrom....application.evidence.portsimport(EvidenceBundlePersistenceError,EvidenceBundleRepositoryPort,EvidenceBundleWorkUnitPort,)from....domain.modelos.repositoryimportWorkUnitPersistenceErrorfrom..storage.envelope.secure_bound_repositoryimportSecureBoundRepositoryfrom..storage.errorsimportStorageErrorfrom..storage.secure_object_namespacesimportAPPLICATION_EVIDENCE_BUNDLE_NAMESPACEfrom..storage.sql.secure_objectsimportSecureObjectRepositoryfrom.modelos_work_unitsimportWorkUnitCatalogueRepository
[docs]classEvidenceBundleRepository(SecureBoundRepository[EvidenceBundle],EvidenceBundleRepositoryPort):"""Bind encrypted secure-object storage to the evidence-bundle port."""namespace:ClassVar[str]=APPLICATION_EVIDENCE_BUNDLE_NAMESPACE.namespacesensitivity:ClassVar=APPLICATION_EVIDENCE_BUNDLE_NAMESPACE.sensitivityschema_version:ClassVar[int]=APPLICATION_EVIDENCE_BUNDLE_NAMESPACE.schema_versionpayload_type:ClassVar[type[EvidenceBundle]]=EvidenceBundledef__init__(self,*,objects:SecureObjectRepository)->None:"""Bind an already-composed secure-object store."""super().__init__(objects=objects)
[docs]@overridedefextract_identifier(self,payload:EvidenceBundle)->str:"""Return the stable storage key for an evidence bundle."""returnpayload.bundle_id
@staticmethoddef_translate(operation:str,_error:StorageError)->EvidenceBundlePersistenceError:"""Translate storage-specific failures before they cross the port."""returnEvidenceBundlePersistenceError(operation)
[docs]@overridedefload(self,identifier:str)->EvidenceBundle|None:"""Load one encrypted bundle and translate storage failures."""try:returnsuper().load(identifier)exceptStorageErroraserror:raiseself._translate("load",error)fromerror
[docs]@overridedefsave(self,payload:EvidenceBundle)->None:"""Save one encrypted bundle and translate storage failures."""try:super().save(payload)exceptStorageErroraserror:raiseself._translate("save",error)fromerror
[docs]@overridedefiter_records(self)->Iterator[EvidenceBundle]:"""Iterate encrypted bundles and translate scan failures."""try:yield fromsuper().iter_records()exceptStorageErroraserror:raiseself._translate("iter_records",error)fromerror
[docs]classEvidenceBundleWorkUnitRepository(EvidenceBundleWorkUnitPort):"""Adapt the encrypted work-unit catalogue to the evidence port."""def__init__(self,*,bucket_id:str,objects:SecureObjectRepository)->None:"""Bind the work-unit lookup to the same bucket-scoped store."""self._repository=WorkUnitCatalogueRepository(bucket_id=bucket_id,objects=objects)
[docs]@overridedefexists(self,work_unit_id:str)->bool:"""Return whether the bucket's catalogue contains ``work_unit_id``."""try:returnself._repository.load().get(work_unit_id)isnotNoneexcept(StorageError,WorkUnitPersistenceError)aserror:raiseEvidenceBundlePersistenceError("work_unit_exists")fromerror