fraiseql_server/routes/graphql/
request.rs1use axum::{
4 Json,
5 response::{IntoResponse, Response},
6};
7use serde::{Deserialize, Serialize};
8
9#[derive(Debug, Deserialize)]
11#[serde(rename_all = "camelCase")]
12pub struct GraphQLRequest {
13 #[serde(default)]
15 pub query: Option<String>,
16
17 #[serde(default)]
19 pub variables: Option<serde_json::Value>,
20
21 #[serde(default)]
23 pub operation_name: Option<String>,
24
25 #[serde(default)]
27 pub extensions: Option<serde_json::Value>,
28
29 #[serde(default, rename = "documentId")]
31 pub document_id: Option<String>,
32}
33
34#[derive(Debug, Deserialize)]
41#[serde(rename_all = "camelCase")]
42pub struct GraphQLGetParams {
43 pub query: String,
45
46 #[serde(default)]
48 pub variables: Option<String>,
49
50 #[serde(default)]
52 pub operation_name: Option<String>,
53}
54
55#[derive(Debug, Serialize)]
57pub struct GraphQLResponse {
58 #[serde(flatten)]
60 pub body: serde_json::Value,
61}
62
63impl IntoResponse for GraphQLResponse {
64 fn into_response(self) -> Response {
65 Json(self.body).into_response()
66 }
67}