@@ -139,6 +139,34 @@ def build(schema_superclass, document, default_resolve:, using: {}, base_types:
139139
140140 raise InvalidDocumentError . new ( 'Must provide schema definition with query type or a type named Query.' ) unless query_root_type
141141
142+ schema_extensions &.each do |ext |
143+ next if ext . is_a? ( GraphQL ::Language ::Nodes ::SchemaExtension )
144+
145+ built_type = types [ ext . name ]
146+
147+ case ext
148+ when GraphQL ::Language ::Nodes ::ScalarTypeExtension
149+ build_directives ( built_type , ext , type_resolver )
150+ when GraphQL ::Language ::Nodes ::ObjectTypeExtension
151+ build_directives ( built_type , ext , type_resolver )
152+ build_fields ( built_type , ext . fields , type_resolver , default_resolve : true )
153+ build_interfaces ( built_type , ext . interfaces , type_resolver )
154+ when GraphQL ::Language ::Nodes ::InterfaceTypeExtension
155+ build_directives ( built_type , ext , type_resolver )
156+ build_fields ( built_type , ext . fields , type_resolver , default_resolve : nil )
157+ build_interfaces ( built_type , ext . interfaces , type_resolver )
158+ when GraphQL ::Language ::Nodes ::UnionTypeExtension
159+ build_directives ( built_type , ext , type_resolver )
160+ built_type . possible_types ( *ext . types . map { |type_name | type_resolver . call ( type_name ) } )
161+ when GraphQL ::Language ::Nodes ::EnumTypeExtension
162+ build_directives ( built_type , ext , type_resolver )
163+ build_values ( built_type , ext . values , type_resolver )
164+ when GraphQL ::Language ::Nodes ::InputObjectTypeExtension
165+ build_directives ( built_type , ext , type_resolver )
166+ build_arguments ( built_type , ext . fields , type_resolver )
167+ end
168+ end
169+
142170 builder = self
143171
144172 found_types = types . values
@@ -207,36 +235,9 @@ def self.inherited(child_class)
207235 end
208236 end
209237
210- if schema_extensions
211- schema_extensions . each do |ext |
212- case ext
213- when GraphQL ::Language ::Nodes ::SchemaExtension
214- build_directives ( schema_class , ext , type_resolver )
215- when GraphQL ::Language ::Nodes ::ScalarTypeExtension
216- build_directives ( schema_class . get_type ( ext . name ) , ext , type_resolver )
217- when GraphQL ::Language ::Nodes ::ObjectTypeExtension
218- object_type = schema_class . get_type ( ext . name )
219- build_directives ( object_type , ext , type_resolver )
220- build_fields ( object_type , ext . fields , type_resolver , default_resolve : true )
221- build_interfaces ( object_type , ext . interfaces , type_resolver )
222- when GraphQL ::Language ::Nodes ::InterfaceTypeExtension
223- interface_type = schema_class . get_type ( ext . name )
224- build_directives ( interface_type , ext , type_resolver )
225- build_fields ( interface_type , ext . fields , type_resolver , default_resolve : nil )
226- build_interfaces ( interface_type , ext . interfaces , type_resolver )
227- when GraphQL ::Language ::Nodes ::UnionTypeExtension
228- union_type = schema_class . get_type ( ext . name )
229- build_directives ( union_type , ext , type_resolver )
230- union_type . possible_types ( *ext . types . map { |type_name | type_resolver . call ( type_name ) } )
231- when GraphQL ::Language ::Nodes ::EnumTypeExtension
232- enum_type = schema_class . get_type ( ext . name )
233- build_directives ( enum_type , ext , type_resolver )
234- build_values ( enum_type , ext . values , type_resolver )
235- when GraphQL ::Language ::Nodes ::InputObjectTypeExtension
236- input_object_type = schema_class . get_type ( ext . name )
237- build_directives ( input_object_type , ext , type_resolver )
238- build_arguments ( input_object_type , ext . fields , type_resolver )
239- end
238+ schema_extensions &.each do |ext |
239+ if ext . is_a? ( GraphQL ::Language ::Nodes ::SchemaExtension )
240+ build_directives ( schema_class , ext , type_resolver )
240241 end
241242 end
242243
@@ -411,7 +412,7 @@ def build_interfaces(type_class, interface_names, type_resolver)
411412 type_class . implements ( type_resolver . call ( interface_name ) )
412413 end
413414 end
414-
415+
415416 def build_input_object_type ( input_object_type_definition , type_resolver , base_type )
416417 builder = self
417418 Class . new ( base_type ) do
0 commit comments