Orkestra.EventStore.Snapshot (orkestra v0.2.0)

Copy Markdown View Source

Snapshot support for aggregates.

Snapshots are stored in a separate stream: snapshot-{stream_id}. They capture the aggregate state at a given revision, enabling faster state reconstruction by skipping event replay.

Summary

Functions

Loads the latest snapshot for a stream.

Saves a snapshot for a stream.

Checks if a snapshot should be taken based on the aggregate's config.

Functions

load(stream_id)

@spec load(String.t()) ::
  {:ok, %{state: term(), revision: non_neg_integer()}} | {:error, :no_snapshot}

Loads the latest snapshot for a stream.

save(stream_id, state, revision)

@spec save(String.t(), term(), non_neg_integer()) :: :ok | {:error, term()}

Saves a snapshot for a stream.

should_snapshot?(aggregate_module, total_event_count)

@spec should_snapshot?(module(), non_neg_integer()) :: boolean()

Checks if a snapshot should be taken based on the aggregate's config.