comment_app_backend 0.1.0

Serves comments through Restful APIs
Documentation
use chrono::prelude::*;

pub fn unique_id() -> String {
    Local::now().format("%Y%m%d%H%M%S%9f").to_string()
}

/*
pub fn ago(timestamp1: i64, timestamp2: i64) -> String {
    let diff = timestamp2 - timestamp1;
    let dt = Utc.timestamp(timestamp1, 0);
    let duration = Duration::seconds(diff);
    let mut elapsed_time = duration.whole_minutes();
    if elapsed_time < 60 { return format!("{:?}m ago", elapsed_time) }; // example: 2m ago
    elapsed_time = duration.whole_hours();
    if elapsed_time < 24 { return format!("{:?}h ago", elapsed_time) }; // example: 4h ago
    elapsed_time = duration.whole_days();
    if elapsed_time < 2 { return format!("yesterday") }; // example: yesterday
    if elapsed_time < 7 { return format!("{:?}", dt.weekday()) }; // example: Thu
    if elapsed_time < 365 { return dt.format("%d %b").to_string() }; // example:  25 Jan
    dt.format("%d %b %Y").to_string()   // example: 25 Jan 2020
}
*/

#[cfg(test)]
mod tests {
    use super::*;

    /*
    #[test]
    fn utest_minutes_ago() {
        let ts1 = Local::now().timestamp();
        let ts2 = Local::now().timestamp();
        let expected = "0m ago";
        let actual = ago(ts1, ts2);
        assert_eq!(actual, expected);
    }

    #[test]
    fn utest_hours_ago() {
        let mut ts1 = Local::now().timestamp();
        let hr = 60 * 60 * 2; // 2 hours
        ts1 -= hr; // subtract 2 hours
        let ts2 = Local::now().timestamp();
        let expected = "2h ago";
        let actual = ago(ts1, ts2);
        assert_eq!(actual, expected);        
    }

    #[test]
    fn utest_yesterday() {
        let mut ts1 = Local::now().timestamp();
        let hr = 60 * 60 * 24; // 24 hours
        ts1 -= hr; // subtract 24 hours
        let ts2 = Local::now().timestamp();
        let expected = "yesterday";
        let actual = ago(ts1, ts2);
        assert_eq!(actual, expected);        
    }

    #[test]
    fn utest_within_a_week() {
        let mut ts1 = Local::now().timestamp();
        let days = 60 * 60 * 24 * 2; // 2 days
        ts1 -= days; // subtract 2 days
        let ts2 = Local::now().timestamp();
        let expected = Utc.timestamp(ts1, 0).weekday().to_string(); // example: "Sat"
        let actual = ago(ts1, ts2);
        assert_eq!(actual, expected);        
    }

    #[test]
    fn utest_more_than_a_week() {
        let mut ts1 = Local::now().timestamp();
        let days = 60 * 60 * 24 * 7; // 7 days
        ts1 -= days; // subtract 7 days
        let ts2 = Local::now().timestamp();
        let expected = Utc.timestamp(ts1, 0).format("%d %b").to_string(); // example: "18 Jan"
        let actual = ago(ts1, ts2);
        assert_eq!(actual, expected);        
    }

    #[test]
    fn utest_more_than_a_year() {
        let mut ts1 = Local::now().timestamp();
        let days = 60 * 60 * 24 * 366; // 366 days
        ts1 -= days; // subtract 366 days
        let ts2 = Local::now().timestamp();
        let expected = Utc.timestamp(ts1, 0).format("%d %b %Y").to_string(); // example: "25 Jan 2019"
        let actual = ago(ts1, ts2);
        assert_eq!(actual, expected);          
    } */

}