Skip to content

0.12.0

Compare
Choose a tag to compare
@cottinisimone cottinisimone released this 09 Jun 14:38
· 32 commits to master since this release
967306e

Added

  • [[#148]]: ReplayableEventHandler trait to mark an EventHandler as replayable or not. This does not stick to
    TransactionalEventHandlers since it is taken for granted that they must always be replayable.
  • [[#149]]: PgStoreBuilder struct, currently the sole method for constructing a PgStore.
  • [[#151]]: The EventBus trait is integrated with the PgStore implementation to facilitate the publishing of events
    after they have been processed by the handlers.
  • [[#152]]: MigrationHandler trait to run migrations while building a new PgStore.
  • [[#155]]: Concrete implementations of the EventBus interface for Apache Kafka and RabbitMQ. These implementations
    are available under the rabbit and kafka features.
  • [[#155]]: Docker compose file for local development and testing.
  • [[#156]]: The table_name and add_event_handler functions to PgStore.
  • [[#156]]: Generic Rebuilder trait and concrete PgRebuilder struct facilities to rebuild a single aggregate. These
    implementations are available under the rebuilder feature.
  • [[#157]]: The TransactionalEventHandler now includes a new generic type argument that allow to specify the error
    return type.
  • [[#157]]: The EventStore trait now takes the Aggregate as associated type and now includes a new associated type
    that allow to specify the error return type.
  • [[#157]]: New PgStoreError type as error return type for PgStore.

Changed

  • [[#148]]: Projector and Policy no longer exists. Replaced with EventHandler and TransactionalEventHandler.
  • [[#150]]: AggregateManager is no longer a trait; it now lives as a struct.
  • [[#150]]: The EventStore, PgStore, EventHandler, TransactionalEventHandler and ReplayableEventHandler types,
    previously associated with the AggregateManager trait, now have a simplified constraint that they are bound
    to the Aggregate trait.
  • [[#153]]: The save_event function in the PgStore is now accessible only within the crate scope.
  • [[#156]]: The examples have been refactored as external executables and are no longer part of the cargo workspace.
  • [[#157]]: The AggregateManager type bound has been changed from Aggregate to an EventStore type.
  • [[#157]]:
  • [[#157]]: The return type error of the inner functions in AggregateManager has been modified from Aggregate::Error
    to a new type called AggregateManagerError<E>. This change introduces a clear differentiation between an
    Aggregate error and an EventStore error.
  • [[#157]]: The functions in the EventStore, including those in the PgStore, now utilize the new error associated type
    as their return type.
  • [[#161]]: Moved some traits and structs in other packages
    • The esrs::AggregateManager struct (previously a trait) moved into esrs::manager module.
    • The esrs::postgres module has been relocated and can now be found under esrs::store::postgres.
    • The esrs::EventStore, esrs::EventStoreLockGuard, esrs::StoreEvent and esrs::UnlockOnDrop objects moved to esrs::store module.

Removed

  • [[#153]]: PgStore getters functions transactional_event_handlers, event_handlers and event_buses.
  • [[#153]]: PgStore custom persist function.
  • [[#157]]: The Clone, Send, and Sync bounds on the associated types of Aggregate have been eliminated.
  • [[#161]]: The error module has been removed and is no longer available.

Commits