Event Store Port¶
event_store_port
¶
Event store port for event-sourced aggregates.
Defines the EventStorePort protocol for appending and retrieving
domain events. The interface is agnostic of storage backend — in-memory,
relational, or event-native implementations are all supported.
EventStorePort
¶
Bases: OutboundPort[object, object], Protocol
Protocol for event stores that persist and retrieve domain events.
Implementations must handle
- Appending new events to an event stream.
- Retrieving events within an optional version range.
- Tracking the current version of each event stream.
- Optimistic concurrency via
expected_version.
Source code in src/forging_blocks/application/ports/outbound/event_store_port.py
append_events(aggregate_id: UUID, events: Sequence[Event[EventPayloadType]], expected_version: int | None = None) -> Result[int, EventStoreError]
async
¶
Append events to an aggregate's event stream.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aggregate_id
|
UUID
|
The aggregate identifier. |
required |
events
|
Sequence[Event[EventPayloadType]]
|
The domain events to append. |
required |
expected_version
|
int | None
|
Expected current version for optimistic |
None
|
Returns:
| Type | Description |
|---|---|
Result[int, EventStoreError]
|
A |
Result[int, EventStoreError]
|
|
Source code in src/forging_blocks/application/ports/outbound/event_store_port.py
get_events(aggregate_id: UUID, from_version: int | None = None, to_version: int | None = None) -> Result[Sequence[Event[EventPayloadType]], EventStoreError]
async
¶
Retrieve events from an aggregate's event stream.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aggregate_id
|
UUID
|
The aggregate identifier. |
required |
from_version
|
int | None
|
Start version (inclusive). |
None
|
to_version
|
int | None
|
End version (inclusive). |
None
|
Returns:
| Type | Description |
|---|---|
Result[Sequence[Event[EventPayloadType]], EventStoreError]
|
A |
Result[Sequence[Event[EventPayloadType]], EventStoreError]
|
|
Source code in src/forging_blocks/application/ports/outbound/event_store_port.py
get_current_version(aggregate_id: UUID) -> Result[int, EventStoreError]
async
¶
Retrieve the current version of an aggregate's event stream.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
aggregate_id
|
UUID
|
The aggregate identifier. |
required |
Returns:
| Type | Description |
|---|---|
Result[int, EventStoreError]
|
A |
Result[int, EventStoreError]
|
streams) on success, or an |