dataflow_rs/engine/functions/
config.rs1use crate::engine::functions::map::MapConfig;
2use crate::engine::functions::parse::ParseConfig;
3use crate::engine::functions::publish::PublishConfig;
4use crate::engine::functions::validation::ValidationConfig;
5use serde::Deserialize;
6use serde_json::Value;
7
8#[derive(Debug, Clone, Deserialize)]
11#[serde(untagged)]
12pub enum FunctionConfig {
13 Map {
14 name: MapName,
15 input: MapConfig,
16 },
17 Validation {
18 name: ValidationName,
19 input: ValidationConfig,
20 },
21 ParseJson {
22 name: ParseJsonName,
23 input: ParseConfig,
24 },
25 ParseXml {
26 name: ParseXmlName,
27 input: ParseConfig,
28 },
29 PublishJson {
30 name: PublishJsonName,
31 input: PublishConfig,
32 },
33 PublishXml {
34 name: PublishXmlName,
35 input: PublishConfig,
36 },
37 Custom {
39 name: String,
40 input: Value,
41 },
42}
43
44#[derive(Debug, Clone, Deserialize)]
45#[serde(rename_all = "lowercase")]
46pub enum MapName {
47 Map,
48}
49
50#[derive(Debug, Clone, Deserialize, PartialEq)]
51#[serde(rename_all = "lowercase")]
52pub enum ValidationName {
53 Validation,
54 Validate,
55}
56
57#[derive(Debug, Clone, Deserialize, PartialEq)]
58#[serde(rename_all = "snake_case")]
59pub enum ParseJsonName {
60 ParseJson,
61}
62
63#[derive(Debug, Clone, Deserialize, PartialEq)]
64#[serde(rename_all = "snake_case")]
65pub enum ParseXmlName {
66 ParseXml,
67}
68
69#[derive(Debug, Clone, Deserialize, PartialEq)]
70#[serde(rename_all = "snake_case")]
71pub enum PublishJsonName {
72 PublishJson,
73}
74
75#[derive(Debug, Clone, Deserialize, PartialEq)]
76#[serde(rename_all = "snake_case")]
77pub enum PublishXmlName {
78 PublishXml,
79}
80
81impl FunctionConfig {
82 pub fn function_name(&self) -> &str {
84 match self {
85 FunctionConfig::Map { .. } => "map",
86 FunctionConfig::Validation { .. } => "validate",
87 FunctionConfig::ParseJson { .. } => "parse_json",
88 FunctionConfig::ParseXml { .. } => "parse_xml",
89 FunctionConfig::PublishJson { .. } => "publish_json",
90 FunctionConfig::PublishXml { .. } => "publish_xml",
91 FunctionConfig::Custom { name, .. } => name,
92 }
93 }
94}