#![allow(clippy::ref_option, clippy::trivially_copy_pass_by_ref, reason = "for serde")]
use crate::places_new::Date;
use serde::{Deserialize, Serialize, Serializer};
pub fn deserialize_optional_jiff_date<'de, D>(
deserializer: D,
) -> Result<Option<jiff::civil::Date>, D::Error>
where
D: serde::Deserializer<'de>,
{
let date = Option::<Date>::deserialize(deserializer)?;
let result = date
.and_then(|d| d.try_to_jiff_date().transpose())
.transpose()
.map_err(serde::de::Error::custom)?;
Ok(result)
}
pub fn serialize_optional_jiff_date<S>(
date: &Option<jiff::civil::Date>,
serializer: S
) -> Result<S::Ok, S::Error>
where
S: Serializer
{
match date {
Some(jiff_date) => {
let google_date = Date::from_jiff_date(jiff_date);
google_date.serialize(serializer)
}
None => serializer.serialize_none(),
}
}