use chrono::{DateTime, Utc};
use serde::{
de::{Deserializer, IntoDeserializer},
Deserialize,
};
pub(crate) fn parse_datetime<'de, D>(value: D) -> Result<Option<DateTime<Utc>>, D::Error>
where
D: Deserializer<'de>,
{
match Option::<String>::deserialize(value)?.as_deref() {
Some("") | None => Ok(None),
Some(non_empty) => DateTime::deserialize(non_empty.into_deserializer()).map(Some),
}
}