use crate::runtime::model::RuntimeValue;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
pub enum ErrorMode {
#[default]
Fail,
Invalid,
Null,
Route,
}
pub fn parse_error_mode(s: &str) -> Result<ErrorMode, String> {
match s {
"fail" => Ok(ErrorMode::Fail),
"invalid" => Ok(ErrorMode::Invalid),
"null" => Ok(ErrorMode::Null),
"route" => Ok(ErrorMode::Route),
other => Err(format!(
"unsupported errorMode '{other}'; expected fail|invalid|null|route"
)),
}
}
pub fn apply_error_mode(mode: ErrorMode, err: String) -> Result<RuntimeValue, String> {
match mode {
ErrorMode::Fail => Err(err),
ErrorMode::Invalid => Ok(RuntimeValue::invalid(err)),
ErrorMode::Null => Ok(RuntimeValue::Null),
ErrorMode::Route => Err(format!("route: {err}")),
}
}