Class: CardDB::Rails::GraphQL::DatasetLoader

Inherits:
GraphQL::Batch::Loader
  • Object
show all
Defined in:
lib/carddb/rails/graphql/dataset_loader.rb

Instance Method Summary collapse

Constructor Details

#initialize(publisher_slug: nil, game_key: nil, client: nil) ⇒ DatasetLoader

Returns a new instance of DatasetLoader.



9
10
11
12
13
14
# File 'lib/carddb/rails/graphql/dataset_loader.rb', line 9

def initialize(publisher_slug: nil, game_key: nil, client: nil)
  super()
  @publisher_slug = publisher_slug
  @game_key = game_key
  @client = client
end

Instance Method Details

#perform(dataset_keys) ⇒ Object

Raises:

  • (ArgumentError)


16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/carddb/rails/graphql/dataset_loader.rb', line 16

def perform(dataset_keys)
  client = @client || CardDB::Rails.client
  publisher_slug = client.config.resolve_publisher(@publisher_slug)
  game_key = client.config.resolve_game(@game_key)

  raise ArgumentError, 'publisher_slug is required (no default configured)' if publisher_slug.nil? || publisher_slug.empty?
  raise ArgumentError, 'game_key is required (no default configured)' if game_key.nil? || game_key.empty?

  results = client.batch do |batch|
    dataset_keys.each do |dataset_key|
      batch.datasets.get(
        publisher_slug: publisher_slug,
        game_key: game_key,
        dataset_key: dataset_key
      )
    end
  end

  dataset_keys.each_with_index do |dataset_key, index|
    fulfill(dataset_key, results[index])
  end
end