#[cfg(feature = "serde")]
use super::{QueryBuilder, QueryData};
#[cfg(feature = "serde")]
use crate::core::error::{RinqError, RinqResult};
#[cfg(feature = "serde")]
use crate::core::state::Initial;
#[cfg(feature = "serde")]
use serde::de::DeserializeOwned;
#[cfg(feature = "serde")]
use std::marker::PhantomData;
#[cfg(feature = "serde")]
impl<T: DeserializeOwned + 'static> QueryBuilder<T, Initial> {
pub fn from_json(json: &str) -> RinqResult<Self> {
let items: Vec<T> = serde_json::from_str(json).map_err(|e| RinqError::ExecutionError {
message: e.to_string(),
})?;
Ok(QueryBuilder {
data: QueryData::Iterator(Box::new(items.into_iter())),
_state: PhantomData,
})
}
}
#[cfg(feature = "serde")]
impl QueryBuilder<serde_json::Value, Initial> {
pub fn from_json_value(json: &str) -> RinqResult<Self> {
Self::from_json(json)
}
}