Crate cqrs_es2[−][src]
Expand description
cqrs-es2
A Rust library providing lightweight CQRS and event sourcing framework.
Provides all basic interfaces for the CQRS system.
Installation
[dependencies]
serde = { version = "^1.0.127", features = ["derive"] }
serde_json = "^1.0.66"
cqrs-es2 = { version = "*"}
Usage
Full fledged demo applications:
Structs
Returns the aggregate and context around it that is needed when committing events in an event store implementation.
ConsumerTester
provides a consistent way to test query
implementations
EventContext
is a data structure that encapsulates an event
with along with it’s pertinent information. All of the associated
data will be transported and persisted together.
HandlerTester
provides a consistent way to test aggregate
implementations
Returns the query and context around it that is needed when committing in a query store implementation.
Payload for an Error::UserError
, somewhat modeled on
the errors produced by the validator
package. This payload implements Serialize
with the intention of allowing the user to return this object as
the response payload.
Enums
The base error for the framework.
Traits
In CQRS (and Domain Driven Design) an Aggregate
is the
fundamental component that encapsulates the state and application
logic (aka business rules) for the application. An Aggregate
is
always an entity along with all objects associated with it.
An ICommand
represents business API call.
Command handlers are usually the aggregates. It consumes the command and emit all events resulting from this command.
An IEvent
represents any business change in the state of an
Aggregate
. IEvent
s are immutable and with
event sourcing
they are the source of truth.
Event consumers are usually the queries. It updates its state with the emitted events.
Event handlers are usually the aggregates. It applies the events to its state.
A Query
is a read element in a CQRS system. As events are
emitted multiple downstream queries are updated to reflect the
current state of the system. A query may also be referred to as a
‘view’, the concepts are identical but ‘query’ is used here to
conform with CQRS nomenclature.