Source code for src.share_kernel.domain.base_aggregate

import uuid
from typing import TYPE_CHECKING

from src.share_kernel.domain.base_entity import Entity

if TYPE_CHECKING:
    from src.share_kernel.domain.domain_event import DomainEvent


[docs] class AggregateRoot(Entity): """ Base pour tous les agrégats. Collecte les domain events et les expose pour dispatch après persistance. """ def __init__(self, entity_id: uuid.UUID | None = None): super().__init__(entity_id) self._domain_events: list["DomainEvent"] = []
[docs] def _record_event(self, event: "DomainEvent") -> None: self._domain_events.append(event)
[docs] def pull_domain_events(self) -> list["DomainEvent"]: """Retourne et vide la liste des events en attente.""" events = list(self._domain_events) self._domain_events.clear() return events