Sha256: b566eb3d76ecec40ab06859ff134fb821908df698f742523531a6c1aaac0b404
Contents?: true
Size: 1 KB
Versions: 2
Compression:
Stored size: 1 KB
Contents
module GraphQL::Batch class Loader def self.for(*group_args) Executor.current.loaders[group_args] ||= new(*group_args) end def promises_by_key @promises_by_key ||= {} end def keys promises_by_key.keys end def load(key) promises_by_key[key] ||= Promise.new end def fulfill(key, value) promises_by_key[key].fulfill(value) end def fulfilled?(key) promises_by_key[key].fulfilled? end # batch load keys and fulfill promises def perform(keys) raise NotImplementedError end def resolve perform(keys) check_for_broken_promises rescue => err promises_by_key.each do |key, promise| promise.reject(err) end end private def check_for_broken_promises promises_by_key.each do |key, promise| if promise.pending? promise.reject(BrokenPromiseError.new("#{self.class} didn't fulfill promise for key #{key.inspect}")) end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
graphql-batch-0.2.1 | lib/graphql/batch/loader.rb |
graphql-batch-0.2.0 | lib/graphql/batch/loader.rb |