common_function/
handlers.rs1use std::sync::Arc;
16
17use async_trait::async_trait;
18use catalog::CatalogManagerRef;
19use common_base::AffectedRows;
20use common_meta::rpc::procedure::{
21 AddRegionFollowerRequest, MigrateRegionRequest, ProcedureStateResponse,
22 RemoveRegionFollowerRequest,
23};
24use common_query::error::Result;
25use common_query::Output;
26use session::context::QueryContextRef;
27use store_api::storage::RegionId;
28use table::requests::{CompactTableRequest, DeleteRequest, FlushTableRequest, InsertRequest};
29
30#[async_trait]
32pub trait TableMutationHandler: Send + Sync {
33 async fn insert(&self, request: InsertRequest, ctx: QueryContextRef) -> Result<Output>;
35
36 async fn delete(&self, request: DeleteRequest, ctx: QueryContextRef) -> Result<AffectedRows>;
38
39 async fn flush(&self, request: FlushTableRequest, ctx: QueryContextRef)
41 -> Result<AffectedRows>;
42
43 async fn compact(
45 &self,
46 request: CompactTableRequest,
47 ctx: QueryContextRef,
48 ) -> Result<AffectedRows>;
49
50 async fn flush_region(&self, region_id: RegionId, ctx: QueryContextRef)
52 -> Result<AffectedRows>;
53
54 async fn compact_region(
56 &self,
57 region_id: RegionId,
58 ctx: QueryContextRef,
59 ) -> Result<AffectedRows>;
60}
61
62#[async_trait]
64pub trait ProcedureServiceHandler: Send + Sync {
65 async fn migrate_region(&self, request: MigrateRegionRequest) -> Result<Option<String>>;
67
68 async fn query_procedure_state(&self, pid: &str) -> Result<ProcedureStateResponse>;
70
71 async fn add_region_follower(&self, request: AddRegionFollowerRequest) -> Result<()>;
73
74 async fn remove_region_follower(&self, request: RemoveRegionFollowerRequest) -> Result<()>;
76
77 fn catalog_manager(&self) -> &CatalogManagerRef;
79}
80
81#[async_trait]
83pub trait FlowServiceHandler: Send + Sync {
84 async fn flush(
85 &self,
86 catalog: &str,
87 flow: &str,
88 ctx: QueryContextRef,
89 ) -> Result<api::v1::flow::FlowResponse>;
90}
91
92pub type TableMutationHandlerRef = Arc<dyn TableMutationHandler>;
93
94pub type ProcedureServiceHandlerRef = Arc<dyn ProcedureServiceHandler>;
95
96pub type FlowServiceHandlerRef = Arc<dyn FlowServiceHandler>;