Skip to main content

Module query

Module query 

Source
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§

PaginatedQueryResult
Result wrapper for paginated queries.

Traits§

CacheableQuery
Trait for queries that support caching.
PaginatedQuery
Trait for paginated queries.
Query
Marker trait for CQRS queries.
QueryDispatcher
Query dispatcher for routing queries to their handlers.
QueryHandler
Handler for executing queries.