use crate::data_type::{self, DataType};
use crate::errors::{AtentoError, Result};
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(untagged)]
pub enum Input {
Ref {
#[serde(rename = "ref")]
ref_: String,
},
Inline {
#[serde(default, rename = "type")]
type_: DataType,
value: serde_yaml::Value,
},
}
impl Input {
pub fn to_string_value(&self) -> Result<String> {
match self {
Self::Inline { value, type_ } => data_type::to_string_value(type_, value),
Self::Ref { .. } => Err(AtentoError::Execution(
"Cannot convert Ref directly to string; must resolve first".to_string(),
)),
}
}
}