♻️ refactor(labels): improve label listing and mapping

- refactor label listing to use `else` for option handling
- enhance label listing with id display and conditional logging
- create label map for efficient label id lookup
This commit is contained in:
Jeremiah Russell
2025-10-04 09:51:32 +01:00
committed by Jeremiah Russell
parent 603240ae06
commit 7cd4b8987b

View File

@@ -67,31 +67,38 @@ impl Labels {
let call = hub.users().labels_list("me"); let call = hub.users().labels_list("me");
let (_response, list) = call.doit().await.map_err(Box::new)?; let (_response, list) = call.doit().await.map_err(Box::new)?;
if show { // if show {
if let Some(labels) = &list.labels { // let Some(labels) = &list.labels else {
for label in labels { // for label in labels {
if let Some(name) = &label.name { // if let Some(name) = &label.name {
log::info!("{name}"); // log::info!("{name}");
} else { // } else {
log::warn!("No name for label {:?}", label.id); // log::warn!("No name for label {:?}", label.id);
} // }
} // }
} // }
} // }
let (label_list, label_map) = if let Some(labels) = list.labels { let Some(label_list) = list.labels else {
let mut label_map = HashMap::new(); return Ok(Labels {
for label in &labels { hub,
if label.id.is_some() && label.name.is_some() { label_list: Vec::new(),
let label = label.clone(); label_map: HashMap::new(),
label_map.insert(label.name.unwrap(), label.id.unwrap()); });
}
}
(labels, label_map)
} else {
(Vec::new(), HashMap::new())
}; };
let mut label_map = HashMap::new();
for label in &label_list {
if label.id.is_some() && label.name.is_some() {
let name = label.name.clone().unwrap();
let id = label.id.clone().unwrap();
if show {
log::info!("{name}: {id}")
}
label_map.insert(name, id);
}
}
Ok(Labels { Ok(Labels {
hub, hub,
label_list, label_list,