use indexmap::IndexMap;
use serde::{Deserialize, Serialize};
use super::types::IntermediateDeprecation;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct IntermediateArgument {
pub name: String,
#[serde(rename = "type")]
pub arg_type: String,
pub nullable: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub default: Option<serde_json::Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub deprecated: Option<IntermediateDeprecation>,
}
#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
pub struct IntermediateQuery {
pub name: String,
pub return_type: String,
#[serde(default)]
pub returns_list: bool,
#[serde(default)]
pub nullable: bool,
#[serde(default)]
pub arguments: Vec<IntermediateArgument>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sql_source: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub auto_params: Option<IntermediateAutoParams>,
#[serde(skip_serializing_if = "Option::is_none")]
pub deprecated: Option<IntermediateDeprecation>,
#[serde(skip_serializing_if = "Option::is_none")]
pub jsonb_column: Option<String>,
#[serde(default, skip_serializing_if = "std::ops::Not::not")]
pub relay: bool,
#[serde(default, skip_serializing_if = "IndexMap::is_empty")]
pub inject: IndexMap<String, String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub cache_ttl_seconds: Option<u64>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub additional_views: Vec<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub requires_role: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub relay_cursor_type: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
pub struct IntermediateMutation {
pub name: String,
pub return_type: String,
#[serde(default)]
pub returns_list: bool,
#[serde(default)]
pub nullable: bool,
#[serde(default)]
pub arguments: Vec<IntermediateArgument>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sql_source: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub operation: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub deprecated: Option<IntermediateDeprecation>,
#[serde(default, skip_serializing_if = "IndexMap::is_empty")]
pub inject: IndexMap<String, String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub invalidates_fact_tables: Vec<String>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub invalidates_views: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct IntermediateAutoParams {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub limit: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub offset: Option<bool>,
#[serde(rename = "where", default, skip_serializing_if = "Option::is_none")]
pub where_clause: Option<bool>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub order_by: Option<bool>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct IntermediateQueryDefaults {
pub where_clause: bool,
pub order_by: bool,
pub limit: bool,
pub offset: bool,
}
impl Default for IntermediateQueryDefaults {
fn default() -> Self {
Self {
where_clause: true,
order_by: true,
limit: true,
offset: true,
}
}
}