use crate::commands::CmdMessage;
use crate::model::{MetadataPatchWarning, Pad};
use crate::store::Bucket;
pub use crate::model::ParentPolicy;
pub fn apply_metadata_defensively(
pad: &mut Pad,
value: &serde_json::Value,
parent_policy: ParentPolicy<'_>,
source_label: &str,
) -> Vec<CmdMessage> {
pad.metadata
.apply_json_patch(value, &parent_policy)
.into_iter()
.map(|w| warning_to_message(w, source_label))
.collect()
}
fn warning_to_message(w: MetadataPatchWarning, source_label: &str) -> CmdMessage {
let text = format!("{}: {}", source_label, w);
if w.is_info() {
CmdMessage::info(text)
} else {
CmdMessage::warning(text)
}
}
pub fn parse_bucket_or_active(s: &str) -> Bucket {
match s {
"Archived" => Bucket::Archived,
"Deleted" => Bucket::Deleted,
_ => Bucket::Active,
}
}