使用EventStoreDB實現事件溯源的Python開源專案

banq發表於2022-06-14

這是 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)



詳細點選標題

相關文章