use std::collections::HashMap;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct EvalOutputPluginConfig {
pub expressions: Vec<ExpressionConfig>,
pub on_failure: OnFailureBehavior,
}
#[derive(Serialize, Deserialize, Clone, Debug)]
pub struct ExpressionConfig {
pub inputs: HashMap<String, String>,
pub expr: String,
pub output: String,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "snake_case", tag = "type")]
pub enum OnFailureBehavior {
Interrupt,
Record { path: String },
Ignore,
}
impl ExpressionConfig {
pub fn new(inputs: &[(&str, &str)], expression: &str, output: &str) -> Self {
Self {
inputs: inputs
.iter()
.map(|(k, v)| (k.to_string(), v.to_string()))
.collect::<HashMap<_, _>>(),
expr: expression.to_string(),
output: output.to_string(),
}
}
}