1#[cfg(feature = "with-sea-query")]
3use crate::filter::{IntoSeaError, SeaResult};
4#[allow(unused_imports)]
5use chrono::{DateTime, Duration, FixedOffset, Utc};
6#[allow(unused_imports)]
7use serde::{Deserialize, Serialize};
8
9#[cfg(all(feature = "with-uuid", feature = "with-sea-query"))]
18pub fn uuid_to_sea_value(json_value: serde_json::Value) -> SeaResult<sea_query::Value> {
19 Ok(uuid::Uuid::deserialize(json_value)?.into())
20}
21
22#[cfg(feature = "with-sea-query")]
23pub fn datetime_to_sea_value(v: serde_json::Value) -> SeaResult<sea_query::Value> {
24 if v.as_str().is_some() {
25 let dt = DateTime::<FixedOffset>::deserialize(v)?.into();
26 Ok(dt)
27 } else if let Some(i) = v.as_i64() {
28 let d = DateTime::<Utc>::UNIX_EPOCH + Duration::milliseconds(i);
29 Ok(sea_query::Value::ChronoDateTimeUtc(Some(Box::new(d))))
30 } else {
31 Err(IntoSeaError::Custom(format!("Invalid value, need OffsetDateTime. incoming value is {:?}", v)))
32 }
33}