mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-01-07 05:42:57 +00:00
chore: add trigger querier factory trait (#7053)
feat: add trigger-querier-factory-ent
This commit is contained in:
@@ -186,14 +186,14 @@ impl FrontendBuilder {
|
||||
table_route_cache,
|
||||
Some(process_manager.clone()),
|
||||
);
|
||||
|
||||
#[cfg(feature = "enterprise")]
|
||||
let statement_executor = if let Some(trigger_querier) =
|
||||
plugins.get::<operator::statement::TriggerQuerierRef>()
|
||||
{
|
||||
statement_executor.with_trigger_querier(trigger_querier.clone())
|
||||
} else {
|
||||
statement_executor
|
||||
};
|
||||
let statement_executor =
|
||||
if let Some(factory) = plugins.get::<operator::statement::TriggerQuerierFactoryRef>() {
|
||||
statement_executor.with_trigger_querier(factory.create(kv_backend.clone()))
|
||||
} else {
|
||||
statement_executor
|
||||
};
|
||||
|
||||
let statement_executor = Arc::new(statement_executor);
|
||||
|
||||
|
||||
@@ -105,10 +105,19 @@ pub struct StatementExecutor {
|
||||
|
||||
pub type StatementExecutorRef = Arc<StatementExecutor>;
|
||||
|
||||
/// Trait for creating [`TriggerQuerier`] instance.
|
||||
#[cfg(feature = "enterprise")]
|
||||
pub trait TriggerQuerierFactory: Send + Sync {
|
||||
fn create(&self, kv_backend: KvBackendRef) -> TriggerQuerierRef;
|
||||
}
|
||||
|
||||
#[cfg(feature = "enterprise")]
|
||||
pub type TriggerQuerierFactoryRef = Arc<dyn TriggerQuerierFactory>;
|
||||
|
||||
/// Trait for querying trigger info, such as `SHOW CREATE TRIGGER` etc.
|
||||
#[cfg(feature = "enterprise")]
|
||||
#[async_trait::async_trait]
|
||||
pub trait TriggerQuerier {
|
||||
pub trait TriggerQuerier: Send + Sync {
|
||||
// Query the `SHOW CREATE TRIGGER` statement for the given trigger.
|
||||
async fn show_create_trigger(
|
||||
&self,
|
||||
@@ -121,7 +130,7 @@ pub trait TriggerQuerier {
|
||||
}
|
||||
|
||||
#[cfg(feature = "enterprise")]
|
||||
pub type TriggerQuerierRef = Arc<dyn TriggerQuerier + Send + Sync>;
|
||||
pub type TriggerQuerierRef = Arc<dyn TriggerQuerier>;
|
||||
|
||||
impl StatementExecutor {
|
||||
#[allow(clippy::too_many_arguments)]
|
||||
|
||||
Reference in New Issue
Block a user