File tree Expand file tree Collapse file tree
lib/graphql/execution/interpreter Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -39,20 +39,29 @@ def initialize(dataloader:, lazies_at_depth:)
3939 @next_flush = [ ]
4040 @dataloader = dataloader
4141 @lazies_at_depth = lazies_at_depth
42+ @running_eagerly = false
4243 end
4344
4445 def <<( step )
45- @next_flush << step
46+ if @running_eagerly
47+ step . run
48+ else
49+ @next_flush << step
50+ end
4651 end
4752
48- def complete
53+ def complete ( eager : false )
54+ prev_eagerly = @running_eagerly
55+ @running_eagerly = eager
4956 while ( fl = @next_flush ) && !fl . empty?
5057 @next_flush = [ ]
5158 while ( step = fl . shift )
5259 step . run
5360 end
5461 Interpreter ::Resolve . resolve_each_depth ( @lazies_at_depth , @dataloader )
5562 end
63+ ensure
64+ @running_eagerly = prev_eagerly
5665 end
5766 end
5867
@@ -65,7 +74,7 @@ def complete
6574 # @return [GraphQL::Query::Context]
6675 attr_reader :context
6776
68- attr_reader :dataloader
77+ attr_reader :dataloader , :run_queue
6978
7079 def initialize ( query :, lazies_at_depth :)
7180 @query = query
Original file line number Diff line number Diff line change @@ -63,13 +63,13 @@ def run
6363 @ordered_result_keys ||= ordered_result_keys
6464 if is_selection_array
6565 selections_result = GraphQLResultHash . new (
66- @graphql_response_name ,
66+ @graphql_result_name ,
6767 @graphql_result_type ,
6868 @graphql_application_value ,
6969 @graphql_parent ,
7070 @graphql_is_non_null_in_parent ,
7171 gathered_selections ,
72- false ,
72+ @graphql_is_eager ,
7373 @ast_node ,
7474 @graphql_arguments ,
7575 @graphql_field )
@@ -106,6 +106,7 @@ def run
106106 selections_result . merge_into ( target_result )
107107 end
108108 end
109+ @runtime . run_queue . complete ( eager : true )
109110 @runtime . dataloader . clear_cache
110111 }
111112 else
You can’t perform that action at this time.
0 commit comments