Source code for cadrumo.adapters.persistence.profile.workflow_gate
"""Persistence adapters for the Modelo workflow-gate capabilities."""from__future__importannotationsfromcollections.abcimportIteratorfromtypingimportoverridefrom....application.modelo.workflow_gate_portsimport(WorkflowGateDraftRepositoryProtocol,WorkflowGatePersistenceError,WorkflowGatePorts,WorkflowGateSubmissionRepositoryProtocol,)from....domain.filing.schemaimportModeloDraftfrom....domain.submission.modelsimportModeloPresentadofrom..storage.errorsimportStorageErrorfrom..storage.runtime_repositoryimportsecure_object_repository_for_bucketfrom.filing_draftsimportModeloDraftRepositoryfrom.submissionimportSubmissionRepository
[docs]classWorkflowGateDraftRepositoryAdapter(WorkflowGateDraftRepositoryProtocol):"""Translate the encrypted filing-draft repository to the app contract."""def__init__(self,*,repository:ModeloDraftRepository)->None:"""Bind an already-composed draft repository."""self._repository=repository
[docs]@overridedefsave(self,payload:ModeloDraft,/)->None:"""Persist an approved draft and translate storage failures. Core types: :class:`~cadrumo.domain.filing.schema.ModeloDraft`. """try:self._repository.save(payload)except(StorageError,OSError)asexc:raiseWorkflowGatePersistenceError("draft_save")fromexc
[docs]classWorkflowGateSubmissionRepositoryAdapter(WorkflowGateSubmissionRepositoryProtocol):"""Translate the encrypted submission repository to the app contract."""def__init__(self,*,repository:SubmissionRepository)->None:"""Bind an already-composed submission repository."""self._repository=repository
[docs]@overridedefload(self,record_id:str,/)->ModeloPresentado|None:"""Load one historical submission and translate storage failures."""try:returnself._repository.load(record_id)except(StorageError,OSError)asexc:raiseWorkflowGatePersistenceError("submission_load")fromexc
[docs]@overridedefiter_submissions(self)->Iterator[ModeloPresentado]:"""Yield historical submissions while translating iteration failures."""try:yield fromself._repository.iter_submissions()except(StorageError,OSError)asexc:raiseWorkflowGatePersistenceError("submission_iter")fromexc
[docs]@overridedeflist_submission_ids(self)->tuple[str,...]:"""List historical submission ids and translate storage failures."""try:returnself._repository.list_submission_ids()except(StorageError,OSError)asexc:raiseWorkflowGatePersistenceError("submission_list")fromexc
[docs]defbuild_workflow_gate_ports(*,bucket_id:str)->WorkflowGatePorts:"""Compose workflow-gate persistence capabilities for one profile bucket."""normalized_bucket_id=bucket_id.strip()objects=secure_object_repository_for_bucket(normalized_bucket_id)returnWorkflowGatePorts(draft_repository=WorkflowGateDraftRepositoryAdapter(repository=ModeloDraftRepository(bucket_id=normalized_bucket_id,objects=objects),),submission_repository=WorkflowGateSubmissionRepositoryAdapter(repository=SubmissionRepository(objects=objects),),)