Skip to main content
Table of Contents

Interface IEventStreamRepository

Namespace
Stratara.Abstractions.EventSourcing
Assembly
Stratara.Abstractions.dll

Low-level repository over the event_stream_entry table. Implementations live in the EF Core write-store package; consumers typically go through IEventSource instead of using this directly.

public interface IEventStreamRepository
Extension Methods

Methods

AddRangeAsync(IReadOnlyList<EventStreamEntry>, CancellationToken)

Appends entries to the underlying DbContext. Caller is responsible for the transactional save.

Task AddRangeAsync(IReadOnlyList<EventStreamEntry> eventEntries, CancellationToken cancellationToken = default)

Parameters

eventEntries IReadOnlyList<EventStreamEntry>
cancellationToken CancellationToken

Returns

Task

GetFirstOrDefaultAsync(Guid, CancellationToken)

Returns the first entry of the stream — typically the creation event.

Task<EventStreamEntry?> GetFirstOrDefaultAsync(Guid streamId, CancellationToken cancellationToken = default)

Parameters

streamId Guid
cancellationToken CancellationToken

Returns

Task<EventStreamEntry>

GetLastHashedEventAsync(CancellationToken)

Returns the most recent entry whose hash has been computed.

Task<EventStreamEntry?> GetLastHashedEventAsync(CancellationToken cancellationToken = default)

Parameters

cancellationToken CancellationToken

Returns

Task<EventStreamEntry>

GetManyAfterSequenceAsync(long, int, CancellationToken)

Returns up to batchSize entries with a sequence number greater than afterSequenceNumber.

Task<IReadOnlyList<EventStreamEntry>> GetManyAfterSequenceAsync(long afterSequenceNumber, int batchSize, CancellationToken cancellationToken = default)

Parameters

afterSequenceNumber long
batchSize int
cancellationToken CancellationToken

Returns

Task<IReadOnlyList<EventStreamEntry>>

GetManyAsync(Guid, long?, long?, CancellationToken)

Returns entries of the stream filtered by version range, ascending by version.

Task<IReadOnlyList<EventStreamEntry>> GetManyAsync(Guid streamId, long? fromVersion = null, long? toVersion = null, CancellationToken cancellationToken = default)

Parameters

streamId Guid
fromVersion long?
toVersion long?
cancellationToken CancellationToken

Returns

Task<IReadOnlyList<EventStreamEntry>>

GetMaxSequenceNumberAsync(CancellationToken)

Returns the maximum sequence number across all streams.

Task<long> GetMaxSequenceNumberAsync(CancellationToken cancellationToken = default)

Parameters

cancellationToken CancellationToken

Returns

Task<long>

GetPreviousEventAsync(long, CancellationToken)

Returns the entry immediately preceding sequenceNumber in stream order.

Task<EventStreamEntry?> GetPreviousEventAsync(long sequenceNumber, CancellationToken cancellationToken = default)

Parameters

sequenceNumber long
cancellationToken CancellationToken

Returns

Task<EventStreamEntry>

GetUnhashedEventsAsync(int, DateTimeOffset, CancellationToken)

Returns up to batchSize entries that have not yet been hashed and are older than cutoff.

Task<IReadOnlyList<EventStreamEntry>> GetUnhashedEventsAsync(int batchSize, DateTimeOffset cutoff, CancellationToken cancellationToken = default)

Parameters

batchSize int
cutoff DateTimeOffset
cancellationToken CancellationToken

Returns

Task<IReadOnlyList<EventStreamEntry>>

GetVersionOrDefaultAsync(Guid, CancellationToken)

Returns the head version of the stream, or 0 if it does not exist.

Task<long> GetVersionOrDefaultAsync(Guid streamId, CancellationToken cancellationToken = default)

Parameters

streamId Guid
cancellationToken CancellationToken

Returns

Task<long>

StreamExistsAsync(Guid, CancellationToken)

Returns true if the stream has at least one entry.

Task<bool> StreamExistsAsync(Guid streamId, CancellationToken cancellationToken = default)

Parameters

streamId Guid
cancellationToken CancellationToken

Returns

Task<bool>

UpdateRange(IReadOnlyList<EventStreamEntry>)

Updates entries already tracked by the underlying DbContext.

void UpdateRange(IReadOnlyList<EventStreamEntry> eventEntries)

Parameters

eventEntries IReadOnlyList<EventStreamEntry>