From e77b372413218d95f1f46373cf716020976371b1 Mon Sep 17 00:00:00 2001 From: Jeremiah Russell Date: Tue, 7 Oct 2025 15:51:41 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(config):=20add=20EolRule=20str?= =?UTF-8?q?uct=20for=20managing=20end-of-life=20rules?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - introduce EolRule struct with fields for id, retention, labels, query, and command - implement methods for creating new rules, setting retention, and adding labels - add default implementation for EolRule --- src/config/eol_rule.rs | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/config/eol_rule.rs diff --git a/src/config/eol_rule.rs b/src/config/eol_rule.rs new file mode 100644 index 0000000..85a0bd3 --- /dev/null +++ b/src/config/eol_rule.rs @@ -0,0 +1,40 @@ +use serde::{Deserialize, Serialize}; + +use crate::{Retention, eol_cmd::EolCmd}; + +/// End of life rules +#[derive(Debug, Serialize, Deserialize, Default)] +pub(crate) struct EolRule { + id: usize, + retention: String, + labels: Vec, + query: Option, + command: String, +} + +impl EolRule { + pub(crate) fn new(id: usize) -> Self { + EolRule { + id, + command: EolCmd::Trash.to_string(), + ..Default::default() + } + } + + pub(crate) fn set_retention(&mut self, value: Retention) -> &mut Self { + self.retention = value.age().to_string(); + if value.generate_label() { + self.add_label(&value.age().label()); + } + self + } + + pub(crate) fn add_label(&mut self, value: &str) -> &mut Self { + self.labels.push(value.to_string()); + self + } + + pub(crate) fn id(&self) -> usize { + self.id + } +}