use serde::{Deserialize, Serialize};
use super::types::ArgumentDefinition;
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(default, deny_unknown_fields)]
pub struct QueryDefaults {
#[serde(rename = "where", default = "default_true")]
pub where_clause: bool,
#[serde(default = "default_true")]
pub order_by: bool,
#[serde(default = "default_true")]
pub limit: bool,
#[serde(default = "default_true")]
pub offset: bool,
}
impl Default for QueryDefaults {
fn default() -> Self {
Self {
where_clause: true,
order_by: true,
limit: true,
offset: true,
}
}
}
fn default_true() -> bool {
true
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(default, deny_unknown_fields)]
pub struct SchemaMetadata {
pub name: String,
pub version: String,
pub description: Option<String>,
pub database_target: String,
}
impl Default for SchemaMetadata {
fn default() -> Self {
Self {
name: "myapp".to_string(),
version: "1.0.0".to_string(),
description: None,
database_target: "postgresql".to_string(),
}
}
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(default, deny_unknown_fields)]
pub struct QueryDefinition {
pub return_type: String,
#[serde(default)]
pub return_array: bool,
pub sql_source: String,
pub description: Option<String>,
pub args: Vec<ArgumentDefinition>,
}
impl Default for QueryDefinition {
fn default() -> Self {
Self {
return_type: "String".to_string(),
return_array: false,
sql_source: "v_entity".to_string(),
description: None,
args: vec![],
}
}
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(default, deny_unknown_fields)]
pub struct MutationDefinition {
pub return_type: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub sql_source: Option<String>,
pub operation: String,
pub description: Option<String>,
pub args: Vec<ArgumentDefinition>,
}
impl Default for MutationDefinition {
fn default() -> Self {
Self {
return_type: "String".to_string(),
sql_source: None,
operation: "CREATE".to_string(),
description: None,
args: vec![],
}
}
}