from __future__ import annotations
from eventsourcing.domain import event
from examples.aggregate9.immutablemodel import Immutable
from examples.aggregate10.mutablemodel import (
Aggregate,
AggregateSnapshot,
SnapshotState,
)
[docs]
class Trick(Immutable, frozen=True):
name: str
[docs]
class DogSnapshotState(SnapshotState, frozen=True):
name: str
tricks: list[Trick]
[docs]
class Dog(Aggregate):
class Snapshot(AggregateSnapshot, frozen=True):
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)