graphgate_planner/
request.rs

1use serde::{Deserialize, Serialize};
2use value::{ConstValue, Variables};
3
4#[derive(Debug, Serialize, Deserialize)]
5pub struct Request {
6    pub query: String,
7    pub operation: Option<String>,
8    #[serde(skip_serializing_if = "variables_is_empty", default)]
9    pub variables: Variables,
10}
11
12impl Request {
13    pub fn new(query: impl Into<String>) -> Self {
14        Self {
15            query: query.into(),
16            operation: None,
17            variables: Default::default(),
18        }
19    }
20
21    pub fn operation(self, operation: impl Into<String>) -> Self {
22        Self {
23            operation: Some(operation.into()),
24            ..self
25        }
26    }
27
28    pub fn variables(self, variables: Variables) -> Self {
29        Self { variables, ..self }
30    }
31
32    pub fn extend_variables(mut self, variables: Variables) -> Self {
33        if let ConstValue::Object(obj) = variables.into_value() {
34            self.variables.extend(obj);
35        }
36        self
37    }
38}
39
40#[inline]
41fn variables_is_empty(variables: &Variables) -> bool {
42    variables.is_empty()
43}