1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
#![forbid(unsafe_code)]
#![deny(missing_docs)]
#![deny(clippy::all)]
#![warn(rust_2018_idioms)]
#![warn(
clippy::pedantic,
//missing_debug_implementations
)]
//! # cqrs-es2
//!
//! A Rust library providing lightweight CQRS and event sourcing
//! framework.
//!
//! [![Publish](https://github.com/brgirgis/cqrs-es2/actions/workflows/crates-io.yml/badge.svg)](https://github.com/brgirgis/cqrs-es2/actions/workflows/crates-io.yml)
//! [![Test](https://github.com/brgirgis/cqrs-es2/actions/workflows/rust-ci.yml/badge.svg)](https://github.com/brgirgis/cqrs-es2/actions/workflows/rust-ci.yml)
//! [![Latest version](https://img.shields.io/crates/v/cqrs-es2)](https://crates.io/crates/cqrs-es2)
//! [![docs](https://img.shields.io/badge/API-docs-blue.svg)](https://docs.rs/cqrs-es2)
//! ![License](https://img.shields.io/crates/l/cqrs-es2.svg)
//!
//! ---
//!
//! Provides all basic interfaces for the CQRS system.
//!
//! ## Installation
//!
//! ```toml
//! [dependencies]
//! # serialization
//! serde = { version = "^1.0.127", features = ["derive"] }
//! serde_json = "^1.0.66"
//!
//! # CQRS framework
//! cqrs-es2 = { version = "*"}
//! ```
//!
//! ## Usage
//!
//! Full fledged demo applications:
//!
//! - Sync [RESTful](https://github.com/brgirgis/cqrs-es2-store/tree/master/examples/restful)
//! - Async [gRPC](https://github.com/brgirgis/tokio-cqrs-es2-store/tree/master/examples/grpc)
pub use crate::{
aggregates::*,
commands::*,
errors::*,
events::*,
queries::*,
test_framework::*,
};
/// Errors module holds the library error types.
mod errors;
/// Aggregates module holds the central traits that define the
/// fundamental component of CQRS.
mod aggregates;
/// Commands module provides the abstract domain commands.
mod commands;
/// Events module provides the abstract domain events and associated
/// wrapper.
mod events;
/// Queries module provides the basic downstream query objects needed
/// to render queries (or "views") that describe the state of the
/// system.
mod queries;
/// Test provides a test framework for building a resilient test base
/// around aggregates. A `HandlerTester` and a `ConsumerTester` should
/// be used to build a comprehensive set of aggregate and query tests
/// to verify your application logic (aka business rules).
mod test_framework;
#[doc(hidden)]
pub mod example_impl;