Source code for examples.aggregate11.application

from __future__ import annotations

from typing import Any

from eventsourcing.application import Application
from examples.aggregate11.domainmodel import Dog, Snapshot


[docs] class DogSchool(Application[str]): is_snapshotting_enabled = True snapshot_class = Snapshot
[docs] def register_dog(self, name: str) -> str: dog = Dog(name) self.save(dog) return dog.id
[docs] def add_trick(self, dog_id: str, trick: str) -> None: dog: Dog = self.repository.get(dog_id) dog.add_trick(trick) self.save(dog)
[docs] def get_dog(self, dog_id: str) -> dict[str, Any]: dog: Dog = self.repository.get(dog_id) return {"name": dog.name, "tricks": tuple(dog.tricks)}