🐛 fix(message_age): correct data type for message age count
- change the data type of count from usize to i64 to allow negative values - add parse method to parse message age from string
This commit is contained in:
committed by
Jeremiah Russell
parent
d48abdc3ad
commit
49e7ff5617
@@ -4,13 +4,13 @@ use std::fmt::Display;
|
||||
#[derive(Debug)]
|
||||
pub enum MessageAge {
|
||||
/// Number of days to retain the message
|
||||
Days(usize),
|
||||
Days(i64),
|
||||
/// Number of weeks to retain the message
|
||||
Weeks(usize),
|
||||
Weeks(i64),
|
||||
/// Number of months to retain the message
|
||||
Months(usize),
|
||||
Months(i64),
|
||||
/// Number of years to retain the message
|
||||
Years(usize),
|
||||
Years(i64),
|
||||
}
|
||||
|
||||
impl Display for MessageAge {
|
||||
@@ -26,7 +26,7 @@ impl Display for MessageAge {
|
||||
|
||||
impl MessageAge {
|
||||
/// Create a new MessageAge enum
|
||||
pub fn new(period: &str, count: usize) -> Self {
|
||||
pub fn new(period: &str, count: i64) -> Self {
|
||||
match period.to_lowercase().as_str() {
|
||||
"days" => MessageAge::Days(count),
|
||||
"weeks" => MessageAge::Weeks(count),
|
||||
@@ -36,6 +36,19 @@ impl MessageAge {
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn parse(str: &str) -> Option<MessageAge> {
|
||||
let period = str.chars().nth(0).unwrap_or('x');
|
||||
let count = str[2..].to_string().parse::<i64>().unwrap_or(0);
|
||||
|
||||
match period {
|
||||
'd' => Some(MessageAge::Days(count)),
|
||||
'w' => Some(MessageAge::Weeks(count)),
|
||||
'm' => Some(MessageAge::Months(count)),
|
||||
'y' => Some(MessageAge::Years(count)),
|
||||
_ => None,
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn label(&self) -> String {
|
||||
match self {
|
||||
MessageAge::Days(v) => format!("retention/{v}-days"),
|
||||
|
||||
Reference in New Issue
Block a user