Sha256: 2454964150da37f6c18b098be5a1d4c3fe51de4dd543e57201bc350eb57f0469

Contents?: true

Size: 865 Bytes

Versions: 1

Compression:

Stored size: 865 Bytes

Contents

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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
graphql-batch-0.1.0 lib/graphql/batch/query_group.rb