@@ -48,22 +48,43 @@ pub enum TypeExtension {
4848 InputObject ( InputObjectTypeExtension ) ,
4949}
5050
51- #[ derive( Debug , Clone , Default , PartialEq ) ]
51+ #[ derive( Debug , Clone , PartialEq ) ]
5252pub struct ScalarType {
5353 pub position : Pos ,
5454 pub description : Option < String > ,
5555 pub name : Name ,
5656 pub directives : Vec < Directive > ,
5757}
5858
59- #[ derive( Debug , Clone , Default , PartialEq ) ]
59+ impl ScalarType {
60+ pub fn new ( name : Name ) -> Self {
61+ Self {
62+ position : Pos :: default ( ) ,
63+ description : None ,
64+ name,
65+ directives : vec ! [ ] ,
66+ }
67+ }
68+ }
69+
70+ #[ derive( Debug , Clone , PartialEq ) ]
6071pub struct ScalarTypeExtension {
6172 pub position : Pos ,
6273 pub name : Name ,
6374 pub directives : Vec < Directive > ,
6475}
6576
66- #[ derive( Debug , Clone , Default , PartialEq ) ]
77+ impl ScalarTypeExtension {
78+ pub fn new ( name : Name ) -> Self {
79+ Self {
80+ position : Pos :: default ( ) ,
81+ name,
82+ directives : vec ! [ ] ,
83+ }
84+ }
85+ }
86+
87+ #[ derive( Debug , Clone , PartialEq ) ]
6788pub struct ObjectType {
6889 pub position : Pos ,
6990 pub description : Option < String > ,
@@ -73,7 +94,20 @@ pub struct ObjectType {
7394 pub fields : Vec < Field > ,
7495}
7596
76- #[ derive( Debug , Clone , Default , PartialEq ) ]
97+ impl ObjectType {
98+ pub fn new ( name : Name ) -> Self {
99+ Self {
100+ position : Pos :: default ( ) ,
101+ description : None ,
102+ name,
103+ implements_interfaces : vec ! [ ] ,
104+ directives : vec ! [ ] ,
105+ fields : vec ! [ ] ,
106+ }
107+ }
108+ }
109+
110+ #[ derive( Debug , Clone , PartialEq ) ]
77111pub struct ObjectTypeExtension {
78112 pub position : Pos ,
79113 pub name : Name ,
@@ -82,6 +116,18 @@ pub struct ObjectTypeExtension {
82116 pub fields : Vec < Field > ,
83117}
84118
119+ impl ObjectTypeExtension {
120+ pub fn new ( name : Name ) -> Self {
121+ Self {
122+ position : Pos :: default ( ) ,
123+ name,
124+ implements_interfaces : vec ! [ ] ,
125+ directives : vec ! [ ] ,
126+ fields : vec ! [ ] ,
127+ }
128+ }
129+ }
130+
85131#[ derive( Debug , Clone , PartialEq ) ]
86132pub struct Field {
87133 pub position : Pos ,
@@ -102,7 +148,7 @@ pub struct InputValue {
102148 pub directives : Vec < Directive > ,
103149}
104150
105- #[ derive( Debug , Clone , Default , PartialEq ) ]
151+ #[ derive( Debug , Clone , PartialEq ) ]
106152pub struct InterfaceType {
107153 pub position : Pos ,
108154 pub description : Option < String > ,
@@ -111,15 +157,38 @@ pub struct InterfaceType {
111157 pub fields : Vec < Field > ,
112158}
113159
114- #[ derive( Debug , Clone , Default , PartialEq ) ]
160+ impl InterfaceType {
161+ pub fn new ( name : Name ) -> Self {
162+ Self {
163+ position : Pos :: default ( ) ,
164+ description : None ,
165+ name,
166+ directives : vec ! [ ] ,
167+ fields : vec ! [ ] ,
168+ }
169+ }
170+ }
171+
172+ #[ derive( Debug , Clone , PartialEq ) ]
115173pub struct InterfaceTypeExtension {
116174 pub position : Pos ,
117175 pub name : Name ,
118176 pub directives : Vec < Directive > ,
119177 pub fields : Vec < Field > ,
120178}
121179
122- #[ derive( Debug , Clone , Default , PartialEq ) ]
180+ impl InterfaceTypeExtension {
181+ pub fn new ( name : Name ) -> Self {
182+ Self {
183+ position : Pos :: default ( ) ,
184+ name,
185+ directives : vec ! [ ] ,
186+ fields : vec ! [ ] ,
187+ }
188+ }
189+ }
190+
191+ #[ derive( Debug , Clone , PartialEq ) ]
123192pub struct UnionType {
124193 pub position : Pos ,
125194 pub description : Option < String > ,
@@ -128,15 +197,38 @@ pub struct UnionType {
128197 pub types : Vec < NamedType > ,
129198}
130199
131- #[ derive( Debug , Clone , Default , PartialEq ) ]
200+ impl UnionType {
201+ pub fn new ( name : Name ) -> Self {
202+ Self {
203+ position : Pos :: default ( ) ,
204+ description : None ,
205+ name,
206+ directives : vec ! [ ] ,
207+ types : vec ! [ ] ,
208+ }
209+ }
210+ }
211+
212+ #[ derive( Debug , Clone , PartialEq ) ]
132213pub struct UnionTypeExtension {
133214 pub position : Pos ,
134215 pub name : Name ,
135216 pub directives : Vec < Directive > ,
136217 pub types : Vec < NamedType > ,
137218}
138219
139- #[ derive( Debug , Clone , Default , PartialEq ) ]
220+ impl UnionTypeExtension {
221+ pub fn new ( name : Name ) -> Self {
222+ Self {
223+ position : Pos :: default ( ) ,
224+ name,
225+ directives : vec ! [ ] ,
226+ types : vec ! [ ] ,
227+ }
228+ }
229+ }
230+
231+ #[ derive( Debug , Clone , PartialEq ) ]
140232pub struct EnumType {
141233 pub position : Pos ,
142234 pub description : Option < String > ,
@@ -145,23 +237,57 @@ pub struct EnumType {
145237 pub values : Vec < EnumValue > ,
146238}
147239
148- #[ derive( Debug , Clone , Default , PartialEq ) ]
240+ impl EnumType {
241+ pub fn new ( name : Name ) -> Self {
242+ Self {
243+ position : Pos :: default ( ) ,
244+ description : None ,
245+ name,
246+ directives : vec ! [ ] ,
247+ values : vec ! [ ] ,
248+ }
249+ }
250+ }
251+
252+ #[ derive( Debug , Clone , PartialEq ) ]
149253pub struct EnumValue {
150254 pub position : Pos ,
151255 pub description : Option < String > ,
152256 pub name : Name ,
153257 pub directives : Vec < Directive > ,
154258}
155259
156- #[ derive( Debug , Clone , Default , PartialEq ) ]
260+ impl EnumValue {
261+ pub fn new ( name : Name ) -> Self {
262+ Self {
263+ position : Pos :: default ( ) ,
264+ description : None ,
265+ name,
266+ directives : vec ! [ ] ,
267+ }
268+ }
269+ }
270+
271+ #[ derive( Debug , Clone , PartialEq ) ]
157272pub struct EnumTypeExtension {
158273 pub position : Pos ,
159274 pub name : Name ,
160275 pub directives : Vec < Directive > ,
161276 pub values : Vec < EnumValue > ,
162277}
163278
164- #[ derive( Debug , Clone , Default , PartialEq ) ]
279+ impl EnumTypeExtension {
280+ pub fn new ( name : Name ) -> Self {
281+ Self {
282+ position : Pos :: default ( ) ,
283+ name,
284+ directives : vec ! [ ] ,
285+ values : vec ! [ ] ,
286+ }
287+ }
288+ }
289+
290+ #[ derive( Debug , Clone , PartialEq ) ]
165291pub struct InputObjectType {
166292 pub position : Pos ,
167293 pub description : Option < String > ,
@@ -170,14 +296,37 @@ pub struct InputObjectType {
170296 pub fields : Vec < InputValue > ,
171297}
172298
173- #[ derive( Debug , Clone , Default , PartialEq ) ]
299+ impl InputObjectType {
300+ pub fn new ( name : Name ) -> Self {
301+ Self {
302+ position : Pos :: default ( ) ,
303+ description : None ,
304+ name,
305+ directives : vec ! [ ] ,
306+ fields : vec ! [ ] ,
307+ }
308+ }
309+ }
310+
311+ #[ derive( Debug , Clone , PartialEq ) ]
174312pub struct InputObjectTypeExtension {
175313 pub position : Pos ,
176314 pub name : Name ,
177315 pub directives : Vec < Directive > ,
178316 pub fields : Vec < InputValue > ,
179317}
180318
319+ impl InputObjectTypeExtension {
320+ pub fn new ( name : Name ) -> Self {
321+ Self {
322+ position : Pos :: default ( ) ,
323+ name,
324+ directives : vec ! [ ] ,
325+ fields : vec ! [ ] ,
326+ }
327+ }
328+ }
329+
181330#[ derive( Debug , Clone , PartialEq , Eq , Hash ) ]
182331pub enum DirectiveLocation {
183332 // executable
@@ -203,7 +352,7 @@ pub enum DirectiveLocation {
203352 InputFieldDefinition ,
204353}
205354
206- #[ derive( Debug , Clone , Default , PartialEq ) ]
355+ #[ derive( Debug , Clone , PartialEq ) ]
207356pub struct DirectiveDefinition {
208357 pub position : Pos ,
209358 pub description : Option < String > ,
@@ -212,6 +361,18 @@ pub struct DirectiveDefinition {
212361 pub locations : Vec < DirectiveLocation > ,
213362}
214363
364+ impl DirectiveDefinition {
365+ pub fn new ( name : Name ) -> Self {
366+ Self {
367+ position : Pos :: default ( ) ,
368+ description : None ,
369+ name,
370+ arguments : vec ! [ ] ,
371+ locations : vec ! [ ] ,
372+ }
373+ }
374+ }
375+
215376impl DirectiveLocation {
216377 /// Returns GraphQL syntax compatible name of the directive
217378 pub fn as_str ( & self ) -> & ' static str {
0 commit comments