Skip to main content

InMemoryEventStore

Struct InMemoryEventStore 

Source
pub struct InMemoryEventStore { /* private fields */ }
Expand description

In-memory event store implementation for testing.

InMemoryEventStore provides a lightweight, zero-dependency storage backend for EventCore integration tests and development. It implements the EventStore, EventReader, CheckpointStore, and ProjectorCoordinator traits using standard library collections with optimistic concurrency control via version checking.

§Example

use eventcore_memory::InMemoryEventStore;

let store = InMemoryEventStore::new();
// Use store with execute() function

§Thread Safety

InMemoryEventStore uses interior mutability (Mutex) for concurrent access.

Implementations§

Source§

impl InMemoryEventStore

Source

pub fn new() -> Self

Create a new in-memory event store.

Returns an empty event store ready for command execution. All streams start at version 0 (no events).

Trait Implementations§

Source§

impl CheckpointStore for InMemoryEventStore

Source§

type Error = InMemoryCheckpointError

Error type returned by checkpoint operations.
Source§

async fn load(&self, name: &str) -> Result<Option<StreamPosition>, Self::Error>

Load the last saved checkpoint position for a subscription. Read more
Source§

async fn save( &self, name: &str, position: StreamPosition, ) -> Result<(), Self::Error>

Save a checkpoint position for a subscription. Read more
Source§

impl Default for InMemoryEventStore

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl EventReader for InMemoryEventStore

Source§

type Error = EventStoreError

Error type returned by read operations.
Source§

async fn read_events<E: Event>( &self, filter: EventFilter, page: EventPage, ) -> Result<Vec<(E, StreamPosition)>, Self::Error>

Read events matching filter criteria with pagination. Read more
Source§

impl EventStore for InMemoryEventStore

Source§

async fn read_stream<E: Event>( &self, stream_id: StreamId, ) -> Result<EventStreamReader<E>, EventStoreError>

Read all events from a stream. Read more
Source§

async fn append_events( &self, writes: StreamWrites, ) -> Result<EventStreamSlice, EventStoreError>

Atomically append events to multiple streams with optimistic concurrency control. Read more
Source§

impl ProjectorCoordinator for InMemoryEventStore

Source§

type Error = InMemoryCoordinationError

Error type returned when leadership acquisition fails. Read more
Source§

type Guard = InMemoryCoordinationGuard

Guard type that releases leadership when dropped. Read more
Source§

async fn try_acquire( &self, subscription_name: &str, ) -> Result<Self::Guard, Self::Error>

Attempt to acquire leadership for a subscription. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more