eventide_application/query_handler.rs
1use async_trait::async_trait;
2
3use crate::{context::AppContext, error::AppError};
4
5/// 查询处理器(Query Handler)
6///
7/// - 处理具体类型的查询,返回结果对象/类型;
8/// - 建议只读,不修改领域状态,可直接访问读模型或投影。
9#[async_trait]
10pub trait QueryHandler<Q, R>: Send + Sync {
11 /// 处理查询并返回结果对象/类型
12 async fn handle(&self, ctx: &AppContext, q: Q) -> Result<R, AppError>;
13}