Class: MasterLoader::Batch

Inherits:
Object
  • Object
show all
Defined in:
lib/master_loader.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(loader_block, name: nil, max_batch_size: Float::INFINITY) ⇒ Batch

Returns a new instance of Batch.

[View source]

54
55
56
57
58
59
60
61
# File 'lib/master_loader.rb', line 54

def initialize(loader_block, name: nil, max_batch_size: Float::INFINITY)
  @name = name
  @queue = []
  @loader_block = loader_block
  @max_batch_size = max_batch_size
  @fulfilled = false
  @results = nil
end

Instance Attribute Details

#fulfilledObject

Returns the value of attribute fulfilled.


52
53
54
# File 'lib/master_loader.rb', line 52

def fulfilled
  @fulfilled
end

#nameObject

Returns the value of attribute name.


52
53
54
# File 'lib/master_loader.rb', line 52

def name
  @name
end

Instance Method Details

#fulfilled?Boolean

Returns:

  • (Boolean)
[View source]

87
88
89
# File 'lib/master_loader.rb', line 87

def fulfilled?
  @fulfilled
end

#queue(key) ⇒ Object

[View source]

63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/master_loader.rb', line 63

def queue(key)
  @queue << key

  DelayedResult.new do
    results = if @fulfilled
                @results
              else
                @fulfilled = true
                r = @loader_block.call(@queue)
                @results = if r.is_a?(DelayedResult)
                             normalize_results(r.value!)
                           else
                             normalize_results(r)
                           end
              end

    unless results.key?(key)
      raise StandardError, "Batch loader didn't resolve a key: #{key}. Resolved keys: #{results.keys}"
    end

    results[key]
  end
end