use axum::{
Json,
response::{IntoResponse, Response},
};
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GraphQLRequest {
#[serde(default)]
pub query: Option<String>,
#[serde(default)]
pub variables: Option<serde_json::Value>,
#[serde(default)]
pub operation_name: Option<String>,
#[serde(default)]
pub extensions: Option<serde_json::Value>,
#[serde(default, rename = "documentId")]
pub document_id: Option<String>,
}
#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct GraphQLGetParams {
pub query: String,
#[serde(default)]
pub variables: Option<String>,
#[serde(default)]
pub operation_name: Option<String>,
}
#[derive(Debug, Serialize)]
pub struct GraphQLResponse {
#[serde(flatten)]
pub body: serde_json::Value,
}
impl IntoResponse for GraphQLResponse {
fn into_response(self) -> Response {
Json(self.body).into_response()
}
}