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
@spec load(String.t()) :: {:ok, %{state: term(), revision: non_neg_integer()}} | {:error, :no_snapshot}
Loads the latest snapshot for a stream.
@spec save(String.t(), term(), non_neg_integer()) :: :ok | {:error, term()}
Saves a snapshot for a stream.
@spec should_snapshot?(module(), non_neg_integer()) :: boolean()
Checks if a snapshot should be taken based on the aggregate's config.