feat(retention): introduce message age enum

- add MessageAge enum to represent retention periods in days, weeks, months, or years
- implement Display trait for MessageAge to format retention periods
- implement label function to generate retention label
This commit is contained in:
Jeremiah Russell
2025-10-07 15:51:48 +01:00
committed by Jeremiah Russell
parent e77b372413
commit 17dc58c4a7

View File

@@ -0,0 +1,36 @@
use std::fmt::Display;
/// Message age
#[derive(Debug)]
pub enum MessageAge {
/// Number of days to retain the message
Days(usize),
/// Number of weeks to retain the message
Weeks(usize),
/// Number of months to retain the message
Months(usize),
/// Number of years to retain the message
Years(usize),
}
impl Display for MessageAge {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
MessageAge::Days(v) => write!(f, "d:{v}"),
MessageAge::Weeks(v) => write!(f, "w:{v}"),
MessageAge::Months(v) => write!(f, "m:{v}"),
MessageAge::Years(v) => write!(f, "y:{v}"),
}
}
}
impl MessageAge {
pub(crate) fn label(&self) -> String {
match self {
MessageAge::Days(v) => format!("retention/{v}-days"),
MessageAge::Weeks(v) => format!("retention/:{v}-weeks"),
MessageAge::Months(v) => format!("retention/:{v}-months"),
MessageAge::Years(v) => format!("retention/:{v}-years"),
}
}
}