这是 Python 事件源库的扩展包, 它为[url=https://github.com/pyeventsourcing/eventsourcing]EventStoreDB[/url]提供了一个持久性模块。它使用esdbclient 包通过其 gRPC 接口与 EventStoreDB 进行通信。
以通常的方式定义聚合和应用。请注意,EventStoreDB中的聚合序列从位置0开始,所以要在你的聚合类上相应地设置INITIAL_VERSION。
from eventsourcing.application import Application from eventsourcing.domain import Aggregate, event
class TrainingSchool(Application): def register(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) self.save(dog)
def get_dog(self, dog_id): dog = self.repository.get(dog_id) return {'name': dog.name, 'tricks': list(dog.tricks)}
class Dog(Aggregate): INITIAL_VERSION = 0
@event('Registered') def __init__(self, name): self.name = name self.tricks = []
@event('TrickAdded') def add_trick(self, trick): self.tricks.append(trick)
|
详细点击标题