Collection of traits and other utilities to help you build your Event-sourced applications in Rust.
⚠️ v0.5.0 is under active development: Breaking changes are expected. If you are using
eventually
as a git dependency you should use a pinned version!
Add eventually
into your project dependencies:
[dependencies]
eventually = { version = "0.5.0", features = ["full"], git = "https://github.com/get-eventually/eventually-rs" }
This library is actively being developed, and prior to v1
release the following Semantic versioning
is being adopted:
MINOR
releasePATCH
releaseBefore diving into the crate's internals, you may be wondering what Event Sourcing is.
From eventstore.com introduction:
Event Sourcing is an architectural pattern that is gaining popularity as a method for building modern systems. Unlike traditional databases which only store and update the current state of data, event-sourced systems store all changes as an immutable series of events in the order that they occurred and current state is derived from that event log.
eventually-rs
support Event Sourcing?eventually
exposes all the necessary abstraction to model your
Domain Entities (in lingo, Aggregates) using Domain Events, and
to save these Events using an Event Store (the append-only event log).
For more information, check out the crate documentation.
You can also take a look at the bank-accounting
example,
showcasing Event-sourced application for a generic (and simple) Bank Accounting bounded context.
eventually-rs
provides the necessary abstractions for modeling and interacting
with an Event Store.
These are the following officially-supported backend implementations:
eventually::event::store::InMemory
: simple inmemory Event Store implementation, using std::collections::HashMap
,eventually-postgres
: Event Store and Aggregate Root Repository implementations for PostgreSQL databases.You want to contribute to eventually-rs
but you don't know where to start?
First of all, thank you for considering contributing ❤️
You can head over our CONTRIBUTING
section to know
how to contribute to the project, and — in case you don't have a clear idea what
to contribute — what is most needed needed from contributors.
This project is licensed under the MIT license.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in eventually-rs
by you, shall be licensed as MIT, without any additional terms or conditions.