From 6df0ef653649d86252e2cb00b1491d4ffe3dfd52 Mon Sep 17 00:00:00 2001 From: Jeremiah Russell Date: Wed, 8 Oct 2025 16:15:01 +0100 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor(config):=20enhanc?= =?UTF-8?q?e=20EolRule=20for=20label=20management?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - migrate labels from Vec to BTreeSet for uniqueness and order - add `remove_label` function to remove specific labels - change `labels()` function return type from `&Vec` to `Vec` - implement `Clone` trait for `EolRule` --- src/config/eol_rule.rs | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/config/eol_rule.rs b/src/config/eol_rule.rs index 0bfb3d4..003b738 100644 --- a/src/config/eol_rule.rs +++ b/src/config/eol_rule.rs @@ -1,15 +1,15 @@ -use std::fmt; +use std::{collections::BTreeSet, fmt}; use serde::{Deserialize, Serialize}; use crate::{Retention, eol_cmd::EolAction}; /// End of life rules -#[derive(Debug, Serialize, Deserialize, Default)] +#[derive(Debug, Serialize, Deserialize, Default, Clone)] pub(crate) struct EolRule { id: usize, retention: String, - labels: Vec, + labels: BTreeSet, query: Option, action: String, } @@ -42,7 +42,11 @@ impl fmt::Display for EolRule { f, "Rule #{} is active on {} and {action} is {count} {period} old.", self.id, - self.labels.join(", ") + self.labels + .iter() + .map(|i| i.to_string()) + .collect::>() + .join(", ") ) } else { write!(f, "Complete retention rule not set.") @@ -72,16 +76,20 @@ impl EolRule { } pub(crate) fn add_label(&mut self, value: &str) -> &mut Self { - self.labels.push(value.to_string()); + self.labels.insert(value.to_string()); self } + pub(crate) fn remove_label(&mut self, value: &str) { + self.labels.remove(value); + } + pub(crate) fn id(&self) -> usize { self.id } - pub(crate) fn labels(&self) -> &Vec { - &self.labels + pub(crate) fn labels(&self) -> Vec { + self.labels.iter().map(|i| i.to_string()).collect() } pub(crate) fn set_command(&mut self, value: EolAction) -> &mut Self {