1use serde_derive::{Deserialize, Serialize};
2use crate::ast::common::*;
3use crate::position::Span;
4
5#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
6pub struct SchmaTypeDefination<'a> {
7 pub description: Option<StringValue<'a>>,
8 pub directives: Option<Vec<Directive<'a>>>,
9 pub query: Vec<NameVarType<'a>>,
10 pub mutation: Vec<NameVarType<'a>>,
11 pub subscription: Vec<NameVarType<'a>>,
12 pub span: Span,
13}
14#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
15pub struct SchemaTypeExtension<'a> {
16 pub directives: Option<Vec<Directive<'a>>>,
17 pub query: Vec<NameVarType<'a>>,
18 pub mutation: Vec<NameVarType<'a>>,
19 pub subscription: Vec<NameVarType<'a>>,
20 pub span: Span,
21}
22#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
23pub struct DirectiveDefinition<'a> {
24 pub description: Option<StringValue<'a>>,
25 pub name: Name<'a>,
26 pub argument_definations: Option<Vec<InputValueDefinition<'a>>>,
27 pub directive_locations: Vec<DirectiveLocation>,
28 pub is_repeatable: bool,
29 pub span: Span,
30}
31#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
32pub enum DirectiveLocation {
33 Query,
35 Mutation,
36 Subscription,
37 Field,
38 FragmentDefinition,
39 FragmentSpread,
40 InlineFragment,
41 VariableDefination,
42 Schema,
44 Scalar,
45 Object,
46 FieldDefinition,
47 ArgumentDefinition,
48 Interface,
49 Union,
50 Enum,
51 EnumValue,
52 InputObject,
53 InputFieldDefinition,
54}
55#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
56pub struct InputValueDefinition<'a> {
57 pub description: Option<StringValue<'a>>,
58 pub name: Name<'a>,
59 pub var_type: VarType<'a>,
60 pub default_value: Option<Value<'a>>,
61 pub directives: Option<Vec<Directive<'a>>>,
62 pub span: Span,
63}
64#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
65pub struct ScalarTypeDefinition<'a> {
66 pub description: Option<StringValue<'a>>,
67 pub name: Name<'a>,
68 pub directives: Option<Vec<Directive<'a>>>,
69 pub span: Span,
70}
71#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
72pub struct ScalarTypeExtension<'a> {
73 pub name: Name<'a>,
74 pub directives: Option<Vec<Directive<'a>>>,
75 pub span: Span,
76}
77#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
78pub struct ObjectTypeDefinition<'a> {
79 pub description: Option<StringValue<'a>>,
80 pub name: Name<'a>,
81 pub implement_interfaces: Option<Vec<NameVarType<'a>>>,
82 pub field_definations: Option<Vec<FieldDefination<'a>>>,
83 pub directives: Option<Vec<Directive<'a>>>,
84 pub span: Span,
85}
86#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
87pub struct ObjectTypeExtension<'a> {
88 pub name: Name<'a>,
89 pub implement_interfaces: Option<Vec<NameVarType<'a>>>,
90 pub field_definations: Option<Vec<FieldDefination<'a>>>,
91 pub directives: Option<Vec<Directive<'a>>>,
92 pub span: Span,
93}
94#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
95pub struct FieldDefination<'a> {
96 pub description: Option<StringValue<'a>>,
97 pub name: Name<'a>,
98 pub argument_definations: Option<Vec<InputValueDefinition<'a>>>,
99 pub directives: Option<Vec<Directive<'a>>>,
100 pub var_type: VarType<'a>,
101 pub span: Span,
102}
103#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
104pub struct InterfaceTypeDefinition<'a> {
105 pub description: Option<StringValue<'a>>,
106 pub implement_interfaces: Option<Vec<NameVarType<'a>>>,
107 pub name: Name<'a>,
108 pub directives: Option<Vec<Directive<'a>>>,
109 pub field_definations: Option<Vec<FieldDefination<'a>>>,
110 pub span: Span,
111}
112#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
113pub struct InterfaceTypeExtension<'a> {
114 pub name: Name<'a>,
115 pub implement_interfaces: Option<Vec<NameVarType<'a>>>,
116 pub directives: Option<Vec<Directive<'a>>>,
117 pub field_definations: Option<Vec<FieldDefination<'a>>>,
118 pub span: Span,
119}
120#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
121pub struct UnionTypeDefinition<'a> {
122 pub description: Option<StringValue<'a>>,
123 pub name: Name<'a>,
124 pub directives: Option<Vec<Directive<'a>>>,
125 pub union_member_types: Option<Vec<NameVarType<'a>>>,
126 pub span: Span,
127}
128#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
129pub struct UnionTypeExtension<'a> {
130 pub name: Name<'a>,
131 pub directives: Option<Vec<Directive<'a>>>,
132 pub union_member_types: Option<Vec<NameVarType<'a>>>,
133 pub span: Span,
134}
135#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
136pub struct EnumTypeDefinition<'a> {
137 pub description: Option<StringValue<'a>>,
138 pub name: Name<'a>,
139 pub directives: Option<Vec<Directive<'a>>>,
140 pub value_definations: Option<Vec<EnumValueDefinition<'a>>>,
141 pub span: Span,
142}
143#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
144pub struct EnumTypeExtension<'a> {
145 pub name: Name<'a>,
146 pub directives: Option<Vec<Directive<'a>>>,
147 pub value_definations: Option<Vec<EnumValueDefinition<'a>>>,
148 pub span: Span,
149}
150#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
151pub struct EnumValueDefinition<'a> {
152 pub description: Option<StringValue<'a>>,
153 pub value: EnumValue<'a>,
154 pub directives: Option<Vec<Directive<'a>>>,
155 pub span: Span,
156}
157#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
158pub struct InputObjectTypeDefinition<'a> {
159 pub description: Option<StringValue<'a>>,
160 pub name: Name<'a>,
161 pub directives: Option<Vec<Directive<'a>>>,
162 pub input_definations: Option<Vec<InputValueDefinition<'a>>>,
163 pub span: Span,
164}
165#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
166pub struct InputObjectTypeExtension<'a> {
167 pub name: Name<'a>,
168 pub directives: Option<Vec<Directive<'a>>>,
169 pub input_definations: Option<Vec<InputValueDefinition<'a>>>,
170 pub span: Span,
171}