Struct apollo_encoder::Document
source · [−]pub struct Document { /* private fields */ }
Expand description
The Document
type represents a GraphQL document. A GraphQL Document
describes a complete file or request string operated on by a GraphQL service
or client. A document contains multiple definitions, either executable or
representative of a GraphQL type system.
Document: OperationDefinition* FragmentDefinition* SchemaDefinition* ScalarTypeDefinition* ObjectTypeDefinition* InterfaceTypeDefinition* UnionTypeDefinition* EnumTypeDefinition* InputObjectDefinition* DirectiveDefinition*
Detailed documentation can be found in GraphQL spec.
Example
use apollo_encoder::{
Argument, Directive, Document, Field, OperationDefinition, OperationType, Selection, SelectionSet, Type_, Value,
VariableDefinition,
};
use indoc::indoc;
let mut document = Document::new();
let selection_set = {
let sels = vec![
Selection::Field(Field::new(String::from("first"))),
Selection::Field(Field::new(String::from("second"))),
];
let mut sel_set = SelectionSet::new();
sels.into_iter().for_each(|sel| sel_set.selection(sel));
sel_set
};
let var_def = VariableDefinition::new(
String::from("variable_def"),
Type_::List {
ty: Box::new(Type_::NamedType {
name: String::from("Int"),
}),
},
);
let mut new_op = OperationDefinition::new(OperationType::Query, selection_set);
let mut directive = Directive::new(String::from("testDirective"));
directive.arg(Argument::new(
String::from("first"),
Value::String("one".to_string()),
));
new_op.variable_definition(var_def);
new_op.directive(directive);
document.operation(new_op);
assert_eq!(
document.to_string(),
indoc! { r#"
query($variable_def: [Int]) @testDirective(first: "one") {
first
second
}
"#}
);
Implementations
sourceimpl Document
impl Document
sourcepub fn operation(&mut self, operation_definition: OperationDefinition)
pub fn operation(&mut self, operation_definition: OperationDefinition)
Add operation
sourcepub fn fragment(&mut self, fragment_definition: FragmentDefinition)
pub fn fragment(&mut self, fragment_definition: FragmentDefinition)
Add fragment
sourcepub fn schema(&mut self, schema_definition: SchemaDefinition)
pub fn schema(&mut self, schema_definition: SchemaDefinition)
Add schema
sourcepub fn scalar(&mut self, scalar_type_definition: ScalarDefinition)
pub fn scalar(&mut self, scalar_type_definition: ScalarDefinition)
Add scalar
sourcepub fn object(&mut self, object_type_definition: ObjectDefinition)
pub fn object(&mut self, object_type_definition: ObjectDefinition)
Add object
sourcepub fn interface(&mut self, interface_type_definition: InterfaceDefinition)
pub fn interface(&mut self, interface_type_definition: InterfaceDefinition)
Add interface
sourcepub fn union(&mut self, union_type_definition: UnionDefinition)
pub fn union(&mut self, union_type_definition: UnionDefinition)
Add union
sourcepub fn enum_(&mut self, enum_type_definition: EnumDefinition)
pub fn enum_(&mut self, enum_type_definition: EnumDefinition)
Add enum
sourcepub fn input_object(
&mut self,
input_object_type_definition: InputObjectDefinition
)
pub fn input_object(
&mut self,
input_object_type_definition: InputObjectDefinition
)
Add input_object
sourcepub fn directive(&mut self, directive_definition: DirectiveDefinition)
pub fn directive(&mut self, directive_definition: DirectiveDefinition)
Add directive
Trait Implementations
Auto Trait Implementations
impl RefUnwindSafe for Document
impl Send for Document
impl Sync for Document
impl Unpin for Document
impl UnwindSafe for Document
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more