├── .github └── workflows │ └── ci.yml ├── .gitignore ├── .gitjournal.toml ├── CHANGELOG.md ├── Cargo.toml ├── README.md ├── cliff.toml ├── crates ├── chekov-macros │ ├── Cargo.toml │ └── src │ │ ├── aggregate.rs │ │ ├── command.rs │ │ ├── event.rs │ │ ├── event_handler.rs │ │ └── lib.rs ├── chekov │ ├── Cargo.toml │ └── src │ │ ├── aggregate │ │ ├── instance │ │ │ ├── internal.rs │ │ │ ├── mod.rs │ │ │ └── runtime.rs │ │ ├── mod.rs │ │ ├── registry.rs │ │ └── resolver.rs │ │ ├── application │ │ ├── builder.rs │ │ ├── internal.rs │ │ └── mod.rs │ │ ├── command │ │ ├── consistency.rs │ │ ├── handler │ │ │ ├── instance.rs │ │ │ ├── mod.rs │ │ │ └── registry.rs │ │ ├── metadata.rs │ │ └── mod.rs │ │ ├── error.rs │ │ ├── event │ │ ├── applier.rs │ │ ├── handler.rs │ │ ├── mod.rs │ │ └── resolver.rs │ │ ├── event_store.rs │ │ ├── lib.rs │ │ ├── message.rs │ │ ├── prelude.rs │ │ ├── router.rs │ │ ├── subscriber │ │ ├── listener.rs │ │ ├── manager.rs │ │ ├── mod.rs │ │ └── subscriber.rs │ │ └── tests │ │ ├── aggregates │ │ ├── mod.rs │ │ ├── persistency.rs │ │ ├── runtime.rs │ │ ├── state.rs │ │ ├── subscription.rs │ │ └── support │ │ │ ├── helpers.rs │ │ │ └── mod.rs │ │ └── mod.rs ├── event_store-backend-inmemory │ ├── Cargo.toml │ └── src │ │ └── lib.rs ├── event_store-backend-postgres │ ├── Cargo.toml │ └── src │ │ ├── error.rs │ │ ├── lib.rs │ │ └── sql.rs ├── event_store-core │ ├── Cargo.toml │ └── src │ │ ├── backend │ │ ├── error.rs │ │ └── mod.rs │ │ ├── error.rs │ │ ├── event │ │ ├── error.rs │ │ ├── mod.rs │ │ └── test.rs │ │ ├── event_bus │ │ ├── error.rs │ │ └── mod.rs │ │ ├── lib.rs │ │ ├── storage │ │ ├── error.rs │ │ └── mod.rs │ │ ├── stream │ │ ├── error.rs │ │ └── mod.rs │ │ └── versions.rs ├── event_store-eventbus-inmemory │ ├── Cargo.toml │ └── src │ │ └── lib.rs ├── event_store-eventbus-postgres │ ├── Cargo.toml │ └── src │ │ └── lib.rs ├── event_store-storage-inmemory │ ├── Cargo.toml │ └── src │ │ └── lib.rs ├── event_store-storage-postgres │ ├── Cargo.toml │ └── src │ │ └── lib.rs ├── event_store │ ├── .env │ ├── .gitignore │ ├── Cargo.toml │ └── src │ │ ├── connection │ │ ├── messaging.rs │ │ └── mod.rs │ │ ├── event │ │ └── mod.rs │ │ ├── event_store │ │ ├── logic.rs │ │ ├── mod.rs │ │ └── runtime.rs │ │ ├── lib.rs │ │ ├── prelude.rs │ │ ├── storage │ │ ├── appender.rs │ │ ├── mod.rs │ │ ├── reader.rs │ │ └── test.rs │ │ └── subscriptions │ │ ├── error.rs │ │ ├── fsm.rs │ │ ├── mod.rs │ │ ├── pub_sub.rs │ │ ├── state.rs │ │ ├── subscriber.rs │ │ ├── subscription.rs │ │ ├── supervisor.rs │ │ └── tests │ │ ├── mod.rs │ │ ├── monitoring_subscription.rs │ │ ├── persistent_fsm.rs │ │ ├── pub_sub.rs │ │ ├── subscribe_to_stream.rs │ │ ├── subscription_acknowledgement.rs │ │ ├── subscription_catch_up.rs │ │ ├── support │ │ ├── event.rs │ │ ├── mod.rs │ │ └── subscriber.rs │ │ └── transient_fsm.rs └── watcher │ ├── Cargo.toml │ └── src │ ├── app.rs │ ├── main.rs │ ├── ui.rs │ └── ui │ └── util.rs ├── examples ├── bank │ ├── .env │ ├── Cargo.toml │ └── src │ │ ├── account.rs │ │ ├── account │ │ ├── aggregate.rs │ │ ├── projector.rs │ │ └── repository.rs │ │ ├── commands.rs │ │ ├── events.rs │ │ ├── http.rs │ │ └── main.rs └── gift_shop │ ├── Cargo.toml │ └── src │ ├── account.rs │ ├── account │ ├── aggregate.rs │ ├── projector.rs │ └── repository.rs │ ├── commands.rs │ ├── events.rs │ ├── gift_card.rs │ ├── http.rs │ ├── main.rs │ └── order.rs ├── scripts └── tests │ ├── docker-compose.yml │ └── postgres │ ├── setup.sh │ ├── setup_bank.sql │ ├── setup_event_store.sql │ ├── setup_gift_shop.sql │ └── test.sql └── sonar-project.properties /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | **/*.rs.bk 3 | Cargo.lock 4 | bs-config.js 5 | -------------------------------------------------------------------------------- /.gitjournal.toml: -------------------------------------------------------------------------------- 1 | categories = ["Added", "Changed", "Fixed", "Improved", "Removed"] 2 | category_delimiters = ["[", "]"] 3 | colored_output = true 4 | enable_debug = true 5 | excluded_commit_tags = [] 6 | enable_footers = false 7 | show_commit_hash = true 8 | show_prefix = false 9 | sort_by = "date" 10 | template_prefix = "JIRA-1234" 11 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Changelog 2 | 3 | All notable changes to this project will be documented in this file. 4 | 5 | ## [unreleased] 6 | 7 | ### Features 8 | 9 | - Improve pubsub management 10 | 11 | ### Miscellaneous Tasks 12 | 13 | - Update CHANGELOG.md for 0.1.0 14 | 15 | 16 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | resolver = "2" 3 | default-members = ["crates/*"] 4 | members = ["crates/*", "examples/*"] 5 | 6 | [workspace.dependencies] 7 | uuid = { version = "1.3.0", features = ["serde", "v4"] } 8 | serde = { version = "1.0.117", features = ["derive"] } 9 | sqlx = { version = "0.6.2", features = [ 10 | "chrono", 11 | "time", 12 | "uuid", 13 | "json", 14 | "offline", 15 | "runtime-actix-native-tls", 16 | ] } 17 | async-trait = "0.1.51" 18 | serde_json = "1.0.68" 19 | actix = "0.12.0" 20 | futures = "0.3.17" 21 | log = "0.4.14" 22 | tokio = { version = "1.12.0", features = ["full"] } 23 | tracing = "0.1.28" 24 | tracing-futures = "0.2.5" 25 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
CQRS/ES
framework for building application in Rust
5 |