use serde::{Deserialize, Serialize};
#[cfg(feature = "graphql")]
#[cfg_attr(feature = "builder", derive(typed_builder::TypedBuilder))]
#[derive(async_graphql::InputObject, Serialize, Clone, Debug)]
#[graphql(name = "SimpleQueryStringFilterInput")]
#[cfg_attr(feature = "builder", builder(field_defaults(setter(into))))]
pub struct SimpleQueryStringQueryInput {
#[graphql(default)]
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub fields: Vec<String>,
pub query: String,
}
#[cfg(feature = "graphql")]
impl SimpleQueryStringQueryInput {
#[inline]
pub fn new<I, T>(fields: I, query: impl Into<String>) -> SimpleQueryStringQueryInput
where
I: IntoIterator<Item = T>,
T: Into<String>,
{
SimpleQueryStringQueryInput {
fields: fields.into_iter().map(|f| f.into()).collect(),
query: query.into(),
}
}
}
#[cfg(feature = "graphql")]
impl From<SimpleQueryStringQuery> for SimpleQueryStringQueryInput {
#[inline]
fn from(query: SimpleQueryStringQuery) -> Self {
Self {
fields: query.fields,
query: query.query,
}
}
}
#[cfg_attr(test, derive(PartialEq))]
#[cfg_attr(feature = "graphql", derive(async_graphql::SimpleObject))]
#[cfg_attr(feature = "graphql", graphql(name = "SimpleQueryStringFilter"))]
#[cfg_attr(feature = "builder", derive(typed_builder::TypedBuilder))]
#[derive(Serialize, Deserialize, Clone, Debug)]
#[cfg_attr(feature = "builder", builder(field_defaults(setter(into))))]
pub struct SimpleQueryStringQuery {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub fields: Vec<String>,
pub query: String,
}
impl SimpleQueryStringQuery {
#[inline]
pub fn new<I, T>(fields: I, query: impl Into<String>) -> SimpleQueryStringQuery
where
I: IntoIterator<Item = T>,
T: Into<String>,
{
SimpleQueryStringQuery {
fields: fields.into_iter().map(|f| f.into()).collect(),
query: query.into(),
}
}
}
#[cfg(feature = "graphql")]
impl From<SimpleQueryStringQueryInput> for SimpleQueryStringQuery {
#[inline]
fn from(input: SimpleQueryStringQueryInput) -> SimpleQueryStringQuery {
SimpleQueryStringQuery {
fields: input.fields,
query: input.query,
}
}
}