use crate::swarm::DecompositionStrategy;
use super::metadata_strings::metadata_str;
pub(super) fn normalize_forage_execution_engine(value: Option<String>) -> String {
match value
.as_deref()
.unwrap_or("run")
.trim()
.to_ascii_lowercase()
.as_str()
{
"swarm" => "swarm".to_string(),
"go" => "go".to_string(),
_ => "run".to_string(),
}
}
pub(super) fn normalize_forage_swarm_strategy(value: Option<String>) -> String {
match value
.as_deref()
.unwrap_or("auto")
.trim()
.to_ascii_lowercase()
.as_str()
{
"domain" | "data" | "stage" | "none" => value.unwrap().trim().to_ascii_lowercase(),
_ => "auto".to_string(),
}
}
pub(super) fn parse_swarm_strategy(
metadata: &serde_json::Map<String, serde_json::Value>,
) -> DecompositionStrategy {
match metadata_str(
metadata,
&[
"decomposition_strategy",
"swarm_strategy",
"strategy",
"swarm_decomposition",
],
)
.as_deref()
.map(str::to_ascii_lowercase)
.as_deref()
{
Some("none") | Some("single") => DecompositionStrategy::None,
Some("domain") | Some("by_domain") => DecompositionStrategy::ByDomain,
Some("data") | Some("by_data") => DecompositionStrategy::ByData,
Some("stage") | Some("by_stage") => DecompositionStrategy::ByStage,
_ => DecompositionStrategy::Automatic,
}
}