我正在尝试学习事件溯源设计模式。我正在使用 python eventsourcing 库。
我已经完成了“Dog School”教程,但我不清楚如何进行投影。如果我想检索聚合中的项目列表,我假设我需要一个投影?
图书馆里好像没有投影。我是否负责编写查询以从持久性中提取数据?
来自教程:
class DogSchool(Application):
def register_dog(self, name):
dog = Dog(name)
self.save(dog)
return dog.id
def add_trick(self, dog_id, trick):
dog = self.repository.get(dog_id)
dog.add_trick(trick=trick)
self.save(dog)
def get_dog(self, dog_id):
dog = self.repository.get(dog_id)
return {'name': dog.name, 'tricks': tuple(dog.tricks)}
我想要一个像这样的功能:
def list_dogs(self):
dogs = get_all_from_aggregate() #??
return dogs