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 AddRegionFollowerRequest, MigrateRegionRequest, ProcedureStateResponse,
23 RemoveRegionFollowerRequest,
24};
25use common_query::error::Result;
26use common_query::Output;
27use session::context::QueryContextRef;
28use store_api::storage::RegionId;
29use table::requests::{CompactTableRequest, DeleteRequest, FlushTableRequest, InsertRequest};
30
31#[async_trait]
33pub trait TableMutationHandler: Send + Sync {
34 async fn insert(&self, request: InsertRequest, ctx: QueryContextRef) -> Result<Output>;
36
37 async fn delete(&self, request: DeleteRequest, ctx: QueryContextRef) -> Result<AffectedRows>;
39
40 async fn flush(&self, request: FlushTableRequest, ctx: QueryContextRef)
42 -> Result<AffectedRows>;
43
44 async fn compact(
46 &self,
47 request: CompactTableRequest,
48 ctx: QueryContextRef,
49 ) -> Result<AffectedRows>;
50
51 async fn flush_region(&self, region_id: RegionId, ctx: QueryContextRef)
53 -> Result<AffectedRows>;
54
55 async fn compact_region(
57 &self,
58 region_id: RegionId,
59 ctx: QueryContextRef,
60 ) -> Result<AffectedRows>;
61}
62
63#[async_trait]
65pub trait ProcedureServiceHandler: Send + Sync {
66 async fn migrate_region(&self, request: MigrateRegionRequest) -> Result<Option<String>>;
68
69 async fn reconcile(&self, request: ReconcileRequest) -> Result<Option<String>>;
71
72 async fn query_procedure_state(&self, pid: &str) -> Result<ProcedureStateResponse>;
74
75 async fn add_region_follower(&self, request: AddRegionFollowerRequest) -> Result<()>;
77
78 async fn remove_region_follower(&self, request: RemoveRegionFollowerRequest) -> Result<()>;
80
81 fn catalog_manager(&self) -> &CatalogManagerRef;
83}
84
85#[async_trait]
87pub trait FlowServiceHandler: Send + Sync {
88 async fn flush(
89 &self,
90 catalog: &str,
91 flow: &str,
92 ctx: QueryContextRef,
93 ) -> Result<api::v1::flow::FlowResponse>;
94}
95
96pub type TableMutationHandlerRef = Arc<dyn TableMutationHandler>;
97
98pub type ProcedureServiceHandlerRef = Arc<dyn ProcedureServiceHandler>;
99
100pub type FlowServiceHandlerRef = Arc<dyn FlowServiceHandler>;