common_function/
handlers.rs1use std::sync::Arc;
16
17use api::v1::meta::ReconcileRequest;
18use async_trait::async_trait;
19use catalog::CatalogManagerRef;
20use common_base::AffectedRows;
21use common_meta::rpc::procedure::{
22 ManageRegionFollowerRequest, MigrateRegionRequest, ProcedureStateResponse,
23};
24use common_query::Output;
25use common_query::error::Result;
26use session::context::QueryContextRef;
27use store_api::storage::RegionId;
28use table::requests::{
29 BuildIndexTableRequest, CompactTableRequest, DeleteRequest, FlushTableRequest, InsertRequest,
30};
31
32#[async_trait]
34pub trait TableMutationHandler: Send + Sync {
35 async fn insert(&self, request: InsertRequest, ctx: QueryContextRef) -> Result<Output>;
37
38 async fn delete(&self, request: DeleteRequest, ctx: QueryContextRef) -> Result<AffectedRows>;
40
41 async fn flush(&self, request: FlushTableRequest, ctx: QueryContextRef)
43 -> Result<AffectedRows>;
44
45 async fn compact(
47 &self,
48 request: CompactTableRequest,
49 ctx: QueryContextRef,
50 ) -> Result<AffectedRows>;
51
52 async fn build_index(
54 &self,
55 request: BuildIndexTableRequest,
56 ctx: QueryContextRef,
57 ) -> Result<AffectedRows>;
58
59 async fn flush_region(&self, region_id: RegionId, ctx: QueryContextRef)
61 -> Result<AffectedRows>;
62
63 async fn compact_region(
65 &self,
66 region_id: RegionId,
67 ctx: QueryContextRef,
68 ) -> Result<AffectedRows>;
69}
70
71#[async_trait]
73pub trait ProcedureServiceHandler: Send + Sync {
74 async fn migrate_region(&self, request: MigrateRegionRequest) -> Result<Option<String>>;
76
77 async fn reconcile(&self, request: ReconcileRequest) -> Result<Option<String>>;
79
80 async fn query_procedure_state(&self, pid: &str) -> Result<ProcedureStateResponse>;
82
83 async fn manage_region_follower(&self, request: ManageRegionFollowerRequest) -> Result<()>;
85
86 fn catalog_manager(&self) -> &CatalogManagerRef;
88}
89
90#[async_trait]
92pub trait FlowServiceHandler: Send + Sync {
93 async fn flush(
94 &self,
95 catalog: &str,
96 flow: &str,
97 ctx: QueryContextRef,
98 ) -> Result<api::v1::flow::FlowResponse>;
99}
100
101pub type TableMutationHandlerRef = Arc<dyn TableMutationHandler>;
102
103pub type ProcedureServiceHandlerRef = Arc<dyn ProcedureServiceHandler>;
104
105pub type FlowServiceHandlerRef = Arc<dyn FlowServiceHandler>;