Maestro.Store (Maestro v0.5.0)
View SourceConcise API for events and snapshots.
If you are using the Maestro.Store.Postgres adapter, an Ecto.Repo should
be provided.
Summary
Functions
Commit the events and apply all projections within a transaction. If there's a sequence number conflict, the events and projections will be discarded such that the command generating these components could be retried.
Commit the events provided iff there is no sequence number conflict. Otherwise, the command should be retried as indicated by the specific error tuple.
Store the snapshot iff the sequence number is greater than what is in the store. This allows nodes that are partitioned from each other to treat the store as the source of truth even when writing snapshots.
Retrieve all events for a specific aggregate by id and minimum sequence number.
Retrieve a snapshot by aggregate id and minimum sequence number. If no snapshot is found, nil is returned.
Return the maximum allowable sequence number permitted by the durable storage adapter.
Types
@type event() :: Maestro.Types.Event.t()
@type events() :: [event()]
@type id() :: HLClock.Timestamp.t()
@type opts() :: [{:max_sequence, sequence()}]
@type sequence() :: non_neg_integer()
@type snapshot() :: Maestro.Types.Snapshot.t()
Functions
Commit the events and apply all projections within a transaction. If there's a sequence number conflict, the events and projections will be discarded such that the command generating these components could be retried.
@spec commit_events(events()) :: :ok | {:error, :retry_command}
Commit the events provided iff there is no sequence number conflict. Otherwise, the command should be retried as indicated by the specific error tuple.
@spec commit_snapshot(snapshot()) :: :ok
Store the snapshot iff the sequence number is greater than what is in the store. This allows nodes that are partitioned from each other to treat the store as the source of truth even when writing snapshots.
Retrieve all events for a specific aggregate by id and minimum sequence number.
Options include:
:max_sequence- useful hydration purposes (defaults tomax_sequence/0)
Retrieve a snapshot by aggregate id and minimum sequence number. If no snapshot is found, nil is returned.
Options include:
:max_sequence- useful hydration purposes (defaults tomax_sequence/0)
@spec max_sequence() :: non_neg_integer()
Return the maximum allowable sequence number permitted by the durable storage adapter.