Source code for ascetic_ddd.seedwork.domain.aggregate.eventive_entity

import typing
from abc import ABCMeta

from ascetic_ddd.seedwork.domain.aggregate.interfaces import IEventiveEntity

__all__ = ("EventiveEntity",)

DomainEventT = typing.TypeVar("DomainEventT")


[docs] class EventiveEntity(IEventiveEntity[DomainEventT], typing.Generic[DomainEventT], metaclass=ABCMeta): __pending_domain_events: list[DomainEventT] def __init__(self, **kwargs) -> None: self.__pending_domain_events = [] super().__init__(**kwargs) def _add_domain_event(self, event: DomainEventT) -> None: self.__pending_domain_events.append(event) @property def pending_domain_events(self) -> typing.Iterable[DomainEventT]: return tuple(self.__pending_domain_events) @pending_domain_events.deleter def pending_domain_events(self) -> None: self.__pending_domain_events.clear()