use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct VariableDefinition {
#[serde(rename = "variableName")]
pub variable_name: String,
#[serde(rename = "source")]
pub source: Source,
#[serde(rename = "tagName", skip_serializing_if = "Option::is_none")]
pub tag_name: Option<String>,
#[serde(rename = "capabilityName", skip_serializing_if = "Option::is_none")]
pub capability_name: Option<String>,
#[serde(rename = "readParameterName", skip_serializing_if = "Option::is_none")]
pub read_parameter_name: Option<String>,
#[serde(rename = "factType", skip_serializing_if = "Option::is_none")]
pub fact_type: Option<String>,
#[serde(rename = "factArguments", skip_serializing_if = "Option::is_none")]
pub fact_arguments: Option<Vec<models::VariableDefinitionFactArgumentsInner>>,
#[serde(rename = "variables", skip_serializing_if = "Option::is_none")]
pub variables: Option<Vec<models::VariableDefinition>>,
}
impl VariableDefinition {
pub fn new(variable_name: String, source: Source) -> VariableDefinition {
VariableDefinition {
variable_name,
source,
tag_name: None,
capability_name: None,
read_parameter_name: None,
fact_type: None,
fact_arguments: None,
variables: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Source {
#[serde(rename = "TagValue")]
TagValue,
#[serde(rename = "FactArgument")]
FactArgument,
#[serde(rename = "CapabilityValue")]
CapabilityValue,
#[serde(rename = "ReadParamValue")]
ReadParamValue,
}
impl Default for Source {
fn default() -> Source {
Self::TagValue
}
}