use crate::utility::*;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, PartialEq, Clone, Default)]
pub enum VariableSourceType {
#[default]
#[serde(rename = "TEXT")]
Text,
JSON,
#[serde(rename = "FILE-JSON")]
FileJSON,
#[serde(rename = "FILE-CSV")]
FileCSV,
}
impl VariableSourceType {
fn is_default(&self) -> bool {
*self == VariableSourceType::Text
}
}
#[derive(Serialize, Deserialize, PartialEq, Clone)]
pub struct Variable {
#[serde(default = "generate_uuid")]
pub name: String,
#[serde(
default,
rename = "type",
skip_serializing_if = "VariableSourceType::is_default"
)]
pub source_type: VariableSourceType,
pub value: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub disabled: Option<bool>,
}