summaryrefslogtreecommitdiff
path: root/src/serde.rs
blob: 9049d64be90c69c4ee04567c003f710aaa665023 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
use chrono::NaiveDateTime;
use serde::{Deserialize, Deserializer};


pub fn naive_read_unixtime<'de, D>(d: D) -> Result<NaiveDateTime, D::Error>
where
    D: Deserializer<'de>,
{
    let ts = <i64>::deserialize(d)?;
    Ok(NaiveDateTime::from_timestamp(ts, 0))
}

pub fn option_naive_read_unixtime<'de, D>(d: D) -> Result<Option<NaiveDateTime>, D::Error>
where
    D: Deserializer<'de>,
{
    match <i64>::deserialize(d) {
        Ok(ts) =>
            Ok(Some(NaiveDateTime::from_timestamp(ts, 0))),
        Err(_) => Ok(None)
    }
}