Source code for cadrumo.application.auth._mutation
"""Shared append-only bucket-event construction for auth mutations."""from__future__importannotationsfromcollections.abcimportMappingfromdatetimeimportdatetimefromtypingimportNamedTuplefrom...domain.buckets.eventimportBucketEvent,BucketEventObjectType,BucketEventType,derive_bucket_event_id
[docs]classAuthBucketEventSpec(NamedTuple):"""One append-only auth bucket event prepared by an application mutation."""event_type:BucketEventTypeobject_id:strpayload:Mapping[str,str]occurred_at:datetime
[docs]defbuild_auth_bucket_events(*,bucket_id:str,events:tuple[AuthBucketEventSpec,...],)->tuple[BucketEvent,...]:"""Build deterministic secret-free auth events for atomic persistence."""actor="operator"built:list[BucketEvent]=[]foreventinevents:payload=dict(event.payload)event_id=derive_bucket_event_id(bucket_id=bucket_id,event_type=event.event_type,occurred_at=event.occurred_at,actor=actor,object_type=BucketEventObjectType.PROFILE,object_id=event.object_id,payload=payload,)built.append(BucketEvent(event_id=event_id,bucket_id=bucket_id,event_type=event.event_type,occurred_at=event.occurred_at,actor=actor,object_type=BucketEventObjectType.PROFILE,object_id=event.object_id,payload_version=1,payload=payload,),)returntuple(built)