use crate::engine::functions::map::MapConfig;
use crate::engine::functions::validation::ValidationConfig;
use serde::Deserialize;
use serde_json::Value;
#[derive(Debug, Clone, Deserialize)]
#[serde(untagged)]
pub enum FunctionConfig {
Map {
name: MapName,
input: MapConfig,
},
Validation {
name: ValidationName,
input: ValidationConfig,
},
Custom {
name: String,
input: Value,
},
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum MapName {
Map,
}
#[derive(Debug, Clone, Deserialize, PartialEq)]
#[serde(rename_all = "lowercase")]
pub enum ValidationName {
Validation,
Validate,
}
impl FunctionConfig {
pub fn function_name(&self) -> &str {
match self {
FunctionConfig::Map { .. } => "map",
FunctionConfig::Validation { .. } => "validate",
FunctionConfig::Custom { name, .. } => name,
}
}
}