graphgate_planner/
request.rs1use 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}