@@ -51,66 +51,76 @@ def fetch(ops)
5151 # }"
5252 def build_document ( origin_sets_by_operation , operation_name = nil , operation_directives = nil )
5353 variable_defs = { }
54- query_fields = origin_sets_by_operation . map . with_index do |( op , origin_set ) , batch_index |
54+ fields_buffer = String . new
55+
56+ origin_sets_by_operation . each_with_index do |( op , origin_set ) , batch_index |
5557 variable_defs . merge! ( op . variables )
5658 resolver = @executor . request . supergraph . resolvers_by_version [ op . resolver ]
59+ fields_buffer << " " unless batch_index . zero?
5760
5861 if resolver . list?
59- arguments = resolver . arguments . map . with_index do |arg , i |
62+ fields_buffer << "_" << batch_index . to_s << "_result: " << resolver . field << "("
63+
64+ resolver . arguments . each_with_index do |arg , i |
65+ fields_buffer << "," unless i . zero?
6066 if arg . key?
6167 variable_name = "_#{ batch_index } _key_#{ i } " . freeze
6268 @variables [ variable_name ] = origin_set . map { arg . build ( _1 ) }
6369 variable_defs [ variable_name ] = arg . to_type_signature
64- " #{ arg . name } :$ #{ variable_name } "
70+ fields_buffer << arg . name << ":$" << variable_name
6571 else
66- " #{ arg . name } : #{ arg . value . print } "
72+ fields_buffer << arg . name << ":" << arg . value . print
6773 end
6874 end
6975
70- "_ #{ batch_index } _result: #{ resolver . field } ( #{ arguments . join ( "," ) } ) #{ op . selections } "
76+ fields_buffer << ") " << op . selections
7177 else
72- origin_set . map . with_index do |origin_obj , index |
73- arguments = resolver . arguments . map . with_index do |arg , i |
78+ origin_set . each_with_index do |origin_obj , index |
79+ fields_buffer << " " unless index . zero?
80+ fields_buffer << "_" << batch_index . to_s << "_" << index . to_s << "_result: " << resolver . field << "("
81+
82+ resolver . arguments . each_with_index do |arg , i |
83+ fields_buffer << "," unless i . zero?
7484 if arg . key?
7585 variable_name = "_#{ batch_index } _#{ index } _key_#{ i } " . freeze
7686 @variables [ variable_name ] = arg . build ( origin_obj )
7787 variable_defs [ variable_name ] = arg . to_type_signature
78- " #{ arg . name } :$ #{ variable_name } "
88+ fields_buffer << arg . name << ":$" << variable_name
7989 else
80- " #{ arg . name } : #{ arg . value . print } "
90+ fields_buffer << arg . name << ":" << arg . value . print
8191 end
8292 end
8393
84- "_ #{ batch_index } _ #{ index } _result: #{ resolver . field } ( #{ arguments . join ( "," ) } ) #{ op . selections } "
94+ fields_buffer << ") " << op . selections
8595 end
8696 end
8797 end
8898
89- doc = String . new ( QUERY_OP ) # << resolver fulfillment always uses query
99+ doc_buffer = String . new ( QUERY_OP ) # << resolver fulfillment always uses query
90100
91101 if operation_name
92- doc << " " << operation_name
102+ doc_buffer << " " << operation_name
93103 origin_sets_by_operation . each_key do |op |
94- doc << "_" << op . step . to_s
104+ doc_buffer << "_" << op . step . to_s
95105 end
96106 end
97107
98108 if variable_defs . any?
99- doc << "("
109+ doc_buffer << "("
100110 variable_defs . each_with_index do |( k , v ) , i |
101- doc << "," unless i . zero?
102- doc << "$" << k << ":" << v
111+ doc_buffer << "," unless i . zero?
112+ doc_buffer << "$" << k << ":" << v
103113 end
104- doc << ")"
114+ doc_buffer << ")"
105115 end
106116
107117 if operation_directives
108- doc << " " << operation_directives << " "
118+ doc_buffer << " " << operation_directives << " "
109119 end
110120
111- doc << "{ " << query_fields . join ( " " ) << " }"
121+ doc_buffer << "{ " << fields_buffer << " }"
112122
113- return doc , variable_defs . keys . tap do |names |
123+ return doc_buffer , variable_defs . keys . tap do |names |
114124 names . reject! { @variables . key? ( _1 ) }
115125 end
116126 end
0 commit comments