dataflow_rs/engine/functions/
config.rs1use crate::engine::functions::filter::FilterConfig;
2use crate::engine::functions::integration::{EnrichConfig, HttpCallConfig, PublishKafkaConfig};
3use crate::engine::functions::log::LogConfig;
4use crate::engine::functions::map::MapConfig;
5use crate::engine::functions::parse::ParseConfig;
6use crate::engine::functions::publish::PublishConfig;
7use crate::engine::functions::validation::ValidationConfig;
8use serde::Deserialize;
9use serde_json::Value;
10
11#[derive(Debug, Clone, Deserialize)]
14#[serde(untagged)]
15pub enum FunctionConfig {
16 Map {
17 name: MapName,
18 input: MapConfig,
19 },
20 Validation {
21 name: ValidationName,
22 input: ValidationConfig,
23 },
24 ParseJson {
25 name: ParseJsonName,
26 input: ParseConfig,
27 },
28 ParseXml {
29 name: ParseXmlName,
30 input: ParseConfig,
31 },
32 PublishJson {
33 name: PublishJsonName,
34 input: PublishConfig,
35 },
36 PublishXml {
37 name: PublishXmlName,
38 input: PublishConfig,
39 },
40 Filter {
41 name: FilterName,
42 input: FilterConfig,
43 },
44 Log {
45 name: LogName,
46 input: LogConfig,
47 },
48 HttpCall {
49 name: HttpCallName,
50 input: HttpCallConfig,
51 },
52 Enrich {
53 name: EnrichName,
54 input: EnrichConfig,
55 },
56 PublishKafka {
57 name: PublishKafkaName,
58 input: PublishKafkaConfig,
59 },
60 Custom {
62 name: String,
63 input: Value,
64 },
65}
66
67#[derive(Debug, Clone, Deserialize)]
68#[serde(rename_all = "lowercase")]
69pub enum MapName {
70 Map,
71}
72
73#[derive(Debug, Clone, Deserialize, PartialEq)]
74#[serde(rename_all = "lowercase")]
75pub enum ValidationName {
76 Validation,
77 Validate,
78}
79
80#[derive(Debug, Clone, Deserialize, PartialEq)]
81#[serde(rename_all = "snake_case")]
82pub enum ParseJsonName {
83 ParseJson,
84}
85
86#[derive(Debug, Clone, Deserialize, PartialEq)]
87#[serde(rename_all = "snake_case")]
88pub enum ParseXmlName {
89 ParseXml,
90}
91
92#[derive(Debug, Clone, Deserialize, PartialEq)]
93#[serde(rename_all = "snake_case")]
94pub enum PublishJsonName {
95 PublishJson,
96}
97
98#[derive(Debug, Clone, Deserialize, PartialEq)]
99#[serde(rename_all = "snake_case")]
100pub enum PublishXmlName {
101 PublishXml,
102}
103
104#[derive(Debug, Clone, Deserialize, PartialEq)]
105#[serde(rename_all = "lowercase")]
106pub enum FilterName {
107 Filter,
108}
109
110#[derive(Debug, Clone, Deserialize, PartialEq)]
111#[serde(rename_all = "lowercase")]
112pub enum LogName {
113 Log,
114}
115
116#[derive(Debug, Clone, Deserialize, PartialEq)]
117#[serde(rename_all = "snake_case")]
118pub enum HttpCallName {
119 HttpCall,
120}
121
122#[derive(Debug, Clone, Deserialize, PartialEq)]
123#[serde(rename_all = "snake_case")]
124pub enum EnrichName {
125 Enrich,
126}
127
128#[derive(Debug, Clone, Deserialize, PartialEq)]
129#[serde(rename_all = "snake_case")]
130pub enum PublishKafkaName {
131 PublishKafka,
132}
133
134impl FunctionConfig {
135 pub fn function_name(&self) -> &str {
137 match self {
138 FunctionConfig::Map { .. } => "map",
139 FunctionConfig::Validation { .. } => "validate",
140 FunctionConfig::ParseJson { .. } => "parse_json",
141 FunctionConfig::ParseXml { .. } => "parse_xml",
142 FunctionConfig::PublishJson { .. } => "publish_json",
143 FunctionConfig::PublishXml { .. } => "publish_xml",
144 FunctionConfig::Filter { .. } => "filter",
145 FunctionConfig::Log { .. } => "log",
146 FunctionConfig::HttpCall { .. } => "http_call",
147 FunctionConfig::Enrich { .. } => "enrich",
148 FunctionConfig::PublishKafka { .. } => "publish_kafka",
149 FunctionConfig::Custom { name, .. } => name,
150 }
151 }
152}