Class: Pipeloader::Source
- Inherits:
-
GraphQL::Dataloader::Source
- Object
- GraphQL::Dataloader::Source
- Pipeloader::Source
- Defined in:
- lib/pipeloader/source.rb
Overview
A GraphQL::Dataloader source that gathers every SELECT parked at a fiber tick and runs them as one pipelined burst, returning an ActiveRecord::Result per query (so AR builds models normally).
Instance Method Summary collapse
-
#fetch(keys) ⇒ Object
keys: array of [sql, params], deduplicated by Dataloader.
-
#initialize(pg) ⇒ Source
constructor
A new instance of Source.
Constructor Details
#initialize(pg) ⇒ Source
Returns a new instance of Source.
6 7 8 |
# File 'lib/pipeloader/source.rb', line 6 def initialize(pg) @pg = pg end |
Instance Method Details
#fetch(keys) ⇒ Object
keys: array of [sql, params], deduplicated by Dataloader. Must return one result per key, in order.
12 13 14 15 16 17 |
# File 'lib/pipeloader/source.rb', line 12 def fetch(keys) batch = Pipeliner.pipeline_batch(@pg, keys) Pipeloader.round_trips += 1 Pipeloader.queries += keys.size batch.map { |columns, rows| ActiveRecord::Result.new(columns, rows) } end |