dataflow_rs/engine/functions/
config.rs

1use crate::engine::functions::map::MapConfig;
2use crate::engine::functions::validation::ValidationConfig;
3use serde::Deserialize;
4use serde_json::Value;
5
6/// Enum containing all possible function configurations
7/// Uses internally tagged representation for clean deserialization
8#[derive(Debug, Clone, Deserialize)]
9#[serde(untagged)]
10pub enum FunctionConfig {
11    Map {
12        name: MapName,
13        input: MapConfig,
14    },
15    Validation {
16        name: ValidationName,
17        input: ValidationConfig,
18    },
19    /// For custom or unknown functions, store raw input
20    Custom {
21        name: String,
22        input: Value,
23    },
24}
25
26#[derive(Debug, Clone, Deserialize)]
27#[serde(rename_all = "lowercase")]
28pub enum MapName {
29    Map,
30}
31
32#[derive(Debug, Clone, Deserialize, PartialEq)]
33#[serde(rename_all = "lowercase")]
34pub enum ValidationName {
35    Validation,
36    Validate,
37}
38
39impl FunctionConfig {
40    /// Get the function name for this configuration
41    pub fn function_name(&self) -> &str {
42        match self {
43            FunctionConfig::Map { .. } => "map",
44            FunctionConfig::Validation { .. } => "validate",
45            FunctionConfig::Custom { name, .. } => name,
46        }
47    }
48}