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 parse;
pub use parse::ParseConfig;
pub mod publish;
pub use publish::PublishConfig;
pub mod filter;
pub use filter::{FILTER_STATUS_HALT, FILTER_STATUS_SKIP, FilterConfig, RejectAction};
pub mod log;
pub use log::{LogConfig, LogLevel};
pub mod integration;
pub use integration::{EnrichConfig, HttpCallConfig, PublishKafkaConfig};
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>)>;
}