use crate::engine::error::Result;
use crate::engine::message::{Change, Message};
use async_trait::async_trait;
use datalogic_rs::DataLogic;
use std::sync::Arc;
pub mod config;
pub use config::FunctionConfig;
pub mod validation;
pub use validation::{ValidationConfig, ValidationRule};
pub mod map;
pub use map::{MapConfig, MapMapping};
pub mod builtins {
use super::*;
pub fn get_all_functions() -> Vec<(String, Box<dyn AsyncFunctionHandler + Send + Sync>)> {
vec![]
}
}
#[async_trait]
pub trait AsyncFunctionHandler: Send + Sync {
async fn execute(
&self,
message: &mut Message,
config: &FunctionConfig,
datalogic: Arc<DataLogic>,
) -> Result<(usize, Vec<Change>)>;
}