evoq_snapshot_store (evoq v1.14.1)

View Source

Wrapper for snapshot operations via adapter.

Provides a consistent interface for snapshot operations, delegating to a configured adapter.

Configuration (Required)

You must configure an adapter in your application config:

  {evoq, [
      {snapshot_store_adapter, evoq_esdb_gater_adapter}
  ]}

Summary

Functions

Delete all snapshots for a stream.

Delete a snapshot at a specific version.

Get the configured snapshot store adapter. Crashes if no adapter is configured.

Load the latest snapshot for a stream.

Load a snapshot at a specific version.

Set the snapshot store adapter (primarily for testing).

Types

evoq_snapshot/0

-type evoq_snapshot() ::
          #evoq_snapshot{stream_id :: binary(),
                         version :: non_neg_integer(),
                         data :: map() | binary(),
                         metadata :: map(),
                         timestamp :: integer()}.

Functions

delete(StoreId, StreamId)

-spec delete(atom(), binary()) -> ok | {error, term()}.

Delete all snapshots for a stream.

delete(StoreId, StreamId, Version)

-spec delete(atom(), binary(), non_neg_integer()) -> ok | {error, term()}.

Delete a snapshot at a specific version.

get_adapter()

-spec get_adapter() -> module().

Get the configured snapshot store adapter. Crashes if no adapter is configured.

load(StoreId, StreamId)

-spec load(atom(), binary()) -> {ok, map()} | {error, not_found | term()}.

Load the latest snapshot for a stream.

load(StoreId, StreamId, Version)

-spec load(atom(), binary(), non_neg_integer()) -> {ok, map()} | {error, not_found | term()}.

Load a snapshot at a specific version.

save(StoreId, StreamId, Version, Data, Metadata)

-spec save(atom(), binary(), non_neg_integer(), term(), map()) -> ok | {error, term()}.

Save a snapshot.

set_adapter(Adapter)

-spec set_adapter(module()) -> ok.

Set the snapshot store adapter (primarily for testing).