1use std::sync::Arc;
16
17use async_trait::async_trait;
18use common_meta::node_manager::NodeManagerRef;
19use common_query::request::QueryRequest;
20use common_recordbatch::SendableRecordBatchStream;
21use partition::manager::PartitionRuleManagerRef;
22use session::ReadPreference;
23
24use crate::error::Result;
25
26pub trait RegionQueryHandlerFactory: Send + Sync {
28 fn build(
30 &self,
31 partition_manager: PartitionRuleManagerRef,
32 node_manager: NodeManagerRef,
33 ) -> RegionQueryHandlerRef;
34}
35
36pub type RegionQueryHandlerFactoryRef = Arc<dyn RegionQueryHandlerFactory>;
37
38#[async_trait]
39pub trait RegionQueryHandler: Send + Sync {
40 async fn do_get(
41 &self,
42 read_preference: ReadPreference,
43 request: QueryRequest,
44 ) -> Result<SendableRecordBatchStream>;
45}
46
47pub type RegionQueryHandlerRef = Arc<dyn RegionQueryHandler>;