Expand description
CQRS Query Pattern
Provides traits for implementing the Query side of CQRS. Queries represent requests for information without side effects.
§Example
ⓘ
use backbone_core::{Query, QueryHandler};
// Define a query
pub struct GetUserByEmailQuery {
pub email: String,
}
impl Query for GetUserByEmailQuery {
type Result = Option<UserDto>;
}
// Implement the handler
pub struct GetUserByEmailHandler {
read_model: Arc<dyn UserReadModel>,
}
#[async_trait::async_trait]
impl QueryHandler<GetUserByEmailQuery> for GetUserByEmailHandler {
type Error = QueryError;
async fn handle(&self, query: GetUserByEmailQuery) -> Result<Option<UserDto>, Self::Error> {
self.read_model.find_by_email(&query.email).await
}
}Structs§
- Paginated
Query Result - Result wrapper for paginated queries.
Traits§
- Cacheable
Query - Trait for queries that support caching.
- Paginated
Query - Trait for paginated queries.
- Query
- Marker trait for CQRS queries.
- Query
Dispatcher - Query dispatcher for routing queries to their handlers.
- Query
Handler - Handler for executing queries.