ai/utils/
time.rs

1use serde::Deserialize;
2use time::OffsetDateTime;
3
4pub fn deserialize_iso8601_timestamp_to_unix_timestamp<'de, D>(
5    deserializer: D,
6) -> Result<u64, D::Error>
7where
8    D: serde::Deserializer<'de>,
9{
10    let iso8601_str = String::deserialize(deserializer)?;
11
12    // Parse ISO8601 string to OffsetDateTime
13    let datetime = OffsetDateTime::parse(
14        &iso8601_str,
15        &time::format_description::well_known::Iso8601::DEFAULT,
16    )
17    .map_err(serde::de::Error::custom)?;
18
19    // Convert to Unix timestamp
20    Ok(datetime.unix_timestamp() as u64)
21}