Crate tokio_cqrs_es2_store[−][src]
Expand description
Async implementation of the cqrs-es2 store.
Provides async interfaces to different database implementations for the CQRS system store.
Design
The main components of this library are:
IEventDispatcher
- an interface for async events listenersIEventStore
- an interface for async event storesIQueryStore
- an interface for async query stores
Features
with-postgres
- async Postgres storewith-mysql
- async MySQL storewith-sqlite
- async SQLite storewith-all-sql
- all SQL driverswith-mongodb
- async MongoDB storewith-all-doc-db
- all doc DBs driverswith-redis
- async Redis storewith-all-kv-db
- all key-value DBs driverswith-all-async
- all async drivers (default)
Installation
To use this library in an async application, add the following to
your dependency section in the project’s Cargo.toml
:
[dependencies]
log = { version = "^0.4", features = [
"max_level_debug",
"release_max_level_warn",
] }
fern = "^0.5"
serde = { version = "^1.0.127", features = ["derive"] }
serde_json = "^1.0.66"
async-trait = "^0.1"
cqrs-es2 = { version = "*"}
tokio-cqrs-es2-store = { version = "*", default-features = false, features = [
"with-postgres",
] }
sqlx = { version = "0.5.6", features = [
"runtime-tokio-rustls",
"postgres",
"uuid",
"json",
"macros",
"chrono",
"tls",
] }
tokio = { version = "1", features = [
"rt-multi-thread",
"time",
"fs",
"macros",
"net",
] }
Usage
A full async store example application is available here.
Modules
A simple memory store for testing purposes only
MongoDB store
MySql/MariaDB store
Postgres store
Redis store
SQLite store
Structs
Async cached event store
Async cached query store
This is the base framework for applying commands to produce events.
Traits
Event dispatcher are usually the query stores. It updates its query with the emitted events.
The abstract central source for loading past events and committing new events.
The abstract central source for loading and committing queries.