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§
Source§impl 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§
Source§impl TryFrom<Document> for Document
impl TryFrom<Document> for Document
Source§fn try_from(node: Document) -> Result<Self, Self::Error>
fn try_from(node: Document) -> Result<Self, Self::Error>
Create an apollo-encoder node from an apollo-parser one.
§Errors
This returns an error if the apollo-parser tree is not valid. The error doesn’t have much context due to TryFrom API constraints: validate the parse tree before using TryFrom if granular errors are important to you.