- Changes to the
Aggregate::handleinterface to support applying events in real time during command handling (see migration guide). - Remove
async-traitfrom a number of traits.
- Commits with no produced events will not invoke downstream queries.
- Updates per Clippy due to Rust compiler changes.
- Rust minimum version changed to 1.71.0
- Updated dependencies.
- Rust minimum version changed to 1.63.0
- Added the
when_asyncandandmethods to the test executor to supportasynctest frameworks and Gherkin testing.
- The primary branch is now set to
main. - Makes the runtime and TLS library configurable for the SQL based persistence crates.
Not released.
- Changes required for Rust 1.63 clippy additions.
- Dependency updates including moving to sqlx v0.6 in postgres-es and mysql-es crates.
- Added a
QueryReplaycomponent to assist in replaying events across a query. - Made the
QueryErrorHandlerconvenience type public. - Set consistent reads in dynamo-es to reduce optimistic locking errors.
- Add
append_querymethod to the framework.
- Modified the aggregate
handlemethod to expect a reply ofSelf::Error. PreviouslyAggregateErrorwas returned which allowed overloading enum branches other than theUserError, this is no longer allowed. - Added
Servicestype to the aggregate trait. Any external services used should now be configured with the CqrsFramework rather than attached to a command. - The TestFramework now provides the
expect_errorvalidator that is available if theSelf::ErrorimplementsPartialEq. - Removed deprecated
EventEnvelopemethods andUserErrorPayloadstruct from use in examples.
- Removed deprecated methods and structs from use in examples.
- Removed the
timestampfield from the database tables. This field is not needed by the framework or repositories and its use in examples led to confusion. - Deprecated UserErrorPayload, this will be removed in v0.4.0. User should create a custom error for their aggregate.
- Deprecated helper methods on
EventEnvelope. These methods will be removed in v0.4.0 however the fields onEventEnvelopewill remain public.
See the v0.2.5 ==> v0.3.0 migration guide for more details.
- Published a new persistence repository, dynamo-es, providing an underlying persistence layer based on AWS' DyanomoDb.
- The
handlemethod within theAggregatetrait is now async. This will greatly simplify calling asynchronous clients and services from the aggregate logic. - Deprecation of common peristence crate persist-es, all logic has moved to the
persistmodule of cqrs-es. - The event and snapshot table names are now configurable in the persistence packages.
- Corrected a bug that caused mysql-es to return the wrong error when an optimistic lock violation was encountered.
- In
AggregateTestExecutorthe methodthen_expect_error_messagewas added to replace the now deprecatedthen_expect_error.
See the v0.2.4 ==> v0.2.5 migration guide for more details.
- The payload for user errors in the aggregate is now configurable.
- Additional enumerations for
AggregateError. - Unexpected errors now return with the root cause rather than just the message.
- Move to Rust 2021 edition.
- Audit and update dependencies.
- Added upcasters to event stores.
- Consolidated repositories to a single trait encompassing all functionality.
- Moved generic persistence logic in from postgres-es package.
- Added event context information to event envelope.
Moved to async/await for better tool support.
Aggregates now consume events on apply.
Require Send + Sync for queries.
Require Send + Sync for support of multi-threaded applications.
Corrected to move all command and event logic into the aggregate.