mod aliases;
mod builder;
mod count;
mod impls;
mod names;
mod render;
pub use render::RenderedQuery;
use indexmap::IndexMap;
use vantage_expressions::Order;
use crate::graphql::condition::{FilterDialect, GraphqlCondition};
#[derive(Clone, Debug, Default)]
pub struct GraphqlSelect {
pub(crate) root_field: Option<String>,
pub(crate) operation_name: Option<String>,
pub(crate) fields: Vec<String>,
pub(crate) aliases: IndexMap<String, String>,
pub(crate) root_args: Option<serde_json::Value>,
pub(crate) response_path: Vec<String>,
pub(crate) sub_selections: Vec<(String, GraphqlSelect)>,
pub(crate) conditions: Vec<GraphqlCondition>,
pub(crate) sort: Vec<(String, Order)>,
pub(crate) limit: Option<i64>,
pub(crate) skip: Option<i64>,
pub(crate) dialect: FilterDialect,
pub(crate) filter_arg_name: Option<String>,
}
impl GraphqlSelect {
pub fn new() -> Self {
Self::default()
}
pub fn root_field(&self) -> Option<&str> {
self.root_field.as_deref()
}
pub fn fields(&self) -> &[String] {
&self.fields
}
pub fn conditions(&self) -> &[GraphqlCondition] {
&self.conditions
}
pub fn dialect(&self) -> FilterDialect {
self.dialect
}
}