gluon/src/utils/general/get_expiration_time.rs

31 lines
1.0 KiB
Rust

use crate::types::{
enums::time_metrics::TimeDuration, structs::countable_time::CountableTime,
traits::countable_interface::ICountable,
};
use chrono::{Duration, Local, NaiveDateTime};
pub type ExtractedDuration = (NaiveDateTime, String, i64);
#[inline]
pub fn get_expiration_date(duration: TimeDuration) -> NaiveDateTime {
let mute_duration = match duration {
TimeDuration::Minutes(min) => Duration::minutes(min),
TimeDuration::Hours(hrs) => Duration::hours(hrs),
TimeDuration::Days(day) => Duration::days(day),
TimeDuration::Weeks(wks) => Duration::weeks(wks),
TimeDuration::Mounths(mon) => Duration::weeks(mon * 4),
};
Local::now().naive_utc() + mute_duration
}
pub fn get_expiration_time(time: TimeDuration) -> ExtractedDuration {
let time_duration = time.extract();
let unmute_date = get_expiration_date(time);
let postfix = CountableTime::from_value(time_duration)
.get_postfix(time)
.unwrap();
(unmute_date, postfix, time_duration)
}