cull_gmail/retention/
message_age.rs1use std::fmt::Display;
2
3#[derive(Debug)]
5pub enum MessageAge {
6 Days(usize),
8 Weeks(usize),
10 Months(usize),
12 Years(usize),
14}
15
16impl Display for MessageAge {
17 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
18 match self {
19 MessageAge::Days(v) => write!(f, "d:{v}"),
20 MessageAge::Weeks(v) => write!(f, "w:{v}"),
21 MessageAge::Months(v) => write!(f, "m:{v}"),
22 MessageAge::Years(v) => write!(f, "y:{v}"),
23 }
24 }
25}
26
27impl MessageAge {
28 pub fn new(period: &str, count: usize) -> Self {
30 match period.to_lowercase().as_str() {
31 "days" => MessageAge::Days(count),
32 "weeks" => MessageAge::Weeks(count),
33 "months" => MessageAge::Months(count),
34 "years" => MessageAge::Years(count),
35 _ => unreachable!(),
36 }
37 }
38
39 pub(crate) fn label(&self) -> String {
40 match self {
41 MessageAge::Days(v) => format!("retention/{v}-days"),
42 MessageAge::Weeks(v) => format!("retention/{v}-weeks"),
43 MessageAge::Months(v) => format!("retention/{v}-months"),
44 MessageAge::Years(v) => format!("retention/{v}-years"),
45 }
46 }
47}