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)