[package] authors = ["Simone Cottini "] categories = ["rust-patterns", "web-programming", "asynchronous", "data-structures"] description = "A Prima.it-opinionated library to achieve cqrs/es" edition = "2018" keywords = ["architecture", "ddd", "event-sourcing", "cqrs", "es"] license = "MIT OR Apache-2.0" name = "esrs" readme = "README.md" repository = "https://github.com/primait/event_sourcing.rs" rust-version = "1.81.0" version = "0.18.0" [package.metadata.docs.rs] all-features = true [features] default = [] postgres = ["sqlx", "sqlx/postgres", "typed-builder", "tokio"] rebuilder = [] kafka = ["rdkafka", "typed-builder"] rabbit = ["lapin", "typed-builder"] upcasting = [] [dependencies] tokio = { version = "1.6", optional = true } # Serialization/Deserialization serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" # Uuid generation uuid = { version = "1.6", features = ["serde", "v4", "v7"] } # Time esrs-core chrono = { version = "0.4", features = ["serde"] } # Build async trait async-trait = "0.1.50" # Self-referential structs (for PgStoreLockGuard) ouroboros = "0.18" # Sql library for async impl sqlx = { version = "0.8.0", features = ["runtime-tokio-native-tls", "uuid", "json", "chrono"], optional = true } # Kafka library rdkafka = { version = "0.35.*", features = ["ssl-vendored"], optional = true } # Rabbit library lapin = { version = "2.1.1", optional = true } # Builder pattern typed-builder = { version = "0.20.0", optional = true } bb8 = "0.8.1" # To stream over sqlx results futures = "0.3" tracing = "0.1" thiserror = "1.0" [dev-dependencies] tokio = { version = "1.6", features = ["full"] } rand = "0.8" [[example]] name = "aggregate_deletion" path = "examples/aggregate_deletion/main.rs" required-features = ["postgres"] [[example]] name = "event_bus" path = "examples/event_bus/main.rs" required-features = ["postgres", "rabbit", "kafka"] [[example]] name = "eventual_view" path = "examples/eventual_view/main.rs" required-features = ["postgres"] [[example]] name = "locking_strategies" path = "examples/locking_strategies/main.rs" required-features = ["postgres"] [[example]] name = "multi_aggregate_rebuild" path = "examples/multi_aggregate_rebuild/main.rs" required-features = ["postgres"] [[example]] name = "readme" path = "examples/readme/main.rs" required-features = ["postgres"] [[example]] name = "rebuilder" path = "examples/rebuilder/main.rs" required-features = ["rebuilder", "postgres"] [[example]] name = "saga" path = "examples/saga/main.rs" required-features = ["postgres"] [[example]] name = "shared_view" path = "examples/shared_view/main.rs" required-features = ["postgres"] [[example]] name = "store_crud" path = "examples/store_crud/main.rs" required-features = ["postgres"] [[example]] name = "transactional_view" path = "examples/transactional_view/main.rs" required-features = ["postgres"] [[example]] name = "upcasting" path = "examples/upcasting/main.rs" required-features = ["postgres", "upcasting"]