use protobuf::EnumFull;
use crate::uattributes::UAttributesError;
pub use crate::up_core_api::uattributes::UPriority;
use crate::up_core_api::uoptions::exts::ce_name;
impl UPriority {
pub fn to_priority_code(self) -> String {
let desc = self.descriptor();
let desc_proto = desc.proto();
ce_name
.get(desc_proto.options.get_or_default())
.unwrap_or_default()
}
pub fn try_from_priority_code<T>(code: T) -> Result<Self, UAttributesError>
where
T: Into<String>,
{
let prio: String = code.into();
Self::enum_descriptor()
.values()
.find_map(|desc| {
let proto_desc = desc.proto();
ce_name
.get(proto_desc.options.get_or_default())
.and_then(|prio_option_value| {
if prio_option_value.eq(prio.as_str()) {
desc.cast::<Self>()
} else {
None
}
})
})
.ok_or_else(|| UAttributesError::parsing_error(format!("unknown priority [{prio}]")))
}
}