✨ feat(config): add delete flag for retention rules
- allow retention rules to be configured to delete messages - add `delete` flag to `add_rule` function - add `set_command` function to `EolRule` to set the action to delete
This commit is contained in:
committed by
Jeremiah Russell
parent
9737ef4b7d
commit
c81cd6d6cc
@@ -11,7 +11,7 @@ mod eol_rule;
|
|||||||
|
|
||||||
use eol_rule::EolRule;
|
use eol_rule::EolRule;
|
||||||
|
|
||||||
use crate::{Error, MessageAge, Retention};
|
use crate::{Error, MessageAge, Retention, eol_cmd::EolAction};
|
||||||
|
|
||||||
/// Configuration file for the program
|
/// Configuration file for the program
|
||||||
#[derive(Debug, Serialize, Deserialize)]
|
#[derive(Debug, Serialize, Deserialize)]
|
||||||
@@ -29,10 +29,10 @@ impl Default for Config {
|
|||||||
rules,
|
rules,
|
||||||
};
|
};
|
||||||
|
|
||||||
cfg.add_rule(Retention::new(MessageAge::Years(1), true), None)
|
cfg.add_rule(Retention::new(MessageAge::Years(1), true), None, false)
|
||||||
.add_rule(Retention::new(MessageAge::Weeks(1), true), None)
|
.add_rule(Retention::new(MessageAge::Weeks(1), true), None, false)
|
||||||
.add_rule(Retention::new(MessageAge::Months(1), true), None)
|
.add_rule(Retention::new(MessageAge::Months(1), true), None, false)
|
||||||
.add_rule(Retention::new(MessageAge::Years(5), true), None);
|
.add_rule(Retention::new(MessageAge::Years(5), true), None, false);
|
||||||
|
|
||||||
cfg
|
cfg
|
||||||
}
|
}
|
||||||
@@ -51,7 +51,12 @@ impl Config {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Add a new rule to the rule set by setting the retention age
|
/// Add a new rule to the rule set by setting the retention age
|
||||||
pub fn add_rule(&mut self, retention: Retention, label: Option<&String>) -> &mut Self {
|
pub fn add_rule(
|
||||||
|
&mut self,
|
||||||
|
retention: Retention,
|
||||||
|
label: Option<&String>,
|
||||||
|
delete: bool,
|
||||||
|
) -> &mut Self {
|
||||||
if self.rules.contains_key(&retention.age().to_string()) && label.is_none() {
|
if self.rules.contains_key(&retention.age().to_string()) && label.is_none() {
|
||||||
log::warn!("rule already exists");
|
log::warn!("rule already exists");
|
||||||
return self;
|
return self;
|
||||||
@@ -79,6 +84,9 @@ impl Config {
|
|||||||
if let Some(l) = label {
|
if let Some(l) = label {
|
||||||
rule.add_label(l);
|
rule.add_label(l);
|
||||||
}
|
}
|
||||||
|
if delete {
|
||||||
|
rule.set_command(EolAction::Delete);
|
||||||
|
}
|
||||||
log::info!("added rule: {rule}");
|
log::info!("added rule: {rule}");
|
||||||
self.rules.insert(rule.retention().to_string(), rule);
|
self.rules.insert(rule.retention().to_string(), rule);
|
||||||
self
|
self
|
||||||
|
|||||||
Reference in New Issue
Block a user