module GraphQL::Batch class QueryGroup < QueryContainer def initialize(queries, &block) @pending_queries = queries.dup @pending_queries.each do |query| query.query_listener = self end @block = block raise ArgumentError, "QueryGroup requires a block" unless block end def each_query @pending_queries.each do |query_container| query_container.each_query do |query| yield query end end end def query_completed(query) @pending_queries.delete(query) if @pending_queries.empty? result = @block.call @block = nil if result.is_a?(QueryContainer) result.query_listener = self @pending_queries << result register_queries(result) else complete(result) end end end end end