Source code for examples.aggregate8.domainmodel

from __future__ import annotations

from eventsourcing.domain import event
from examples.aggregate7.immutablemodel import Immutable
from examples.aggregate8.mutablemodel import Aggregate, AggregateSnapshot, SnapshotState


[docs] class Trick(Immutable): name: str
[docs] class DogSnapshotState(SnapshotState): name: str tricks: list[Trick]
[docs] class Dog(Aggregate):
[docs] class Snapshot(AggregateSnapshot): state: DogSnapshotState
@event("Registered") def __init__(self, name: str) -> None: self.name = name self.tricks: list[Trick] = []
[docs] @event("TrickAdded") def add_trick(self, trick: Trick) -> None: self.tricks.append(trick)