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]
# logging
log = { version = "^0.4", features = [
"max_level_debug",
"release_max_level_warn",
] }
fern = "^0.5"
# serialization
serde = { version = "^1.0.127", features = ["derive"] }
serde_json = "^1.0.66"
async-trait = "^0.1"
# CQRS framework
cqrs-es2 = { version = "*"}
# Sync postgres store implementation
tokio-cqrs-es2-store = { version = "*", default-features = false, features = [
"with-postgres",
] }
# sqlx
sqlx = { version = "0.5.6", features = [
# tokio + rustls
"runtime-tokio-rustls",
# PostgresSQL
"postgres",
"uuid",
"json",
# misc
"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§
- memory_
store - A simple memory store for testing purposes only
- mongodb_
store - MongoDB store
- mysql_
store - MySql/MariaDB store
- postgres_
store - Postgres store
- redis_
store - Redis store
- sqlite_
store - SQLite store
Structs§
- Cached
Event Store - Async cached event store
- Cached
Query Store - Async cached query store
- Repository
- This is the base framework for applying commands to produce events.
Traits§
- IEvent
Dispatcher - Event dispatcher are usually the query stores. It updates its query with the emitted events.
- IEvent
Store - The abstract central source for loading past events and committing new events.
- IQuery
Store - The abstract central source for loading and committing queries.