@@ -13,8 +13,20 @@ public final class Type<Resolver, Context, ObjectType: Encodable>: TypeComponent
1313 }
1414
1515 override func update( typeProvider: SchemaTypeProvider , coders: Coders ) throws {
16- var fieldDefs = try fields ( typeProvider: typeProvider, coders: coders)
16+ let fieldDefs = try fields ( typeProvider: typeProvider, coders: coders)
17+ let objectType = try GraphQLObjectType (
18+ name: name,
19+ description: description,
20+ fields: fieldDefs,
21+ interfaces: interfaces. map {
22+ try typeProvider. getInterfaceType ( from: $0)
23+ } ,
24+ isTypeOf: isTypeOf
25+ )
26+
27+ try typeProvider. add ( type: ObjectType . self, as: objectType)
1728
29+ // If federation keys are included, validate and create resolver closure
1830 if !keys. isEmpty {
1931 let fieldNames = Array ( fieldDefs. keys)
2032 for key in keys {
@@ -55,22 +67,9 @@ public final class Type<Resolver, Context, ObjectType: Encodable>: TypeComponent
5567 coders: coders
5668 )
5769 }
58- typeProvider. federatedResolvers [ name] = resolve
59- }
60-
61- let objectType = try GraphQLObjectType (
62- name: name,
63- description: description,
64- fields: fieldDefs,
65- interfaces: interfaces. map {
66- try typeProvider. getInterfaceType ( from: $0)
67- } ,
68- isTypeOf: isTypeOf
69- )
70-
71- try typeProvider. add ( type: ObjectType . self, as: objectType)
72- if !keys. isEmpty {
70+
7371 typeProvider. federatedTypes. append ( objectType)
72+ typeProvider. federatedResolvers [ name] = resolve
7473 }
7574 }
7675
0 commit comments