class GnListResolver::ResolverJob

Remote resolution for parallel jobs

Constants

GRAPHQL
QUERY

Public Class Methods

new(names, batch_data, data_source_id) click to toggle source
# File lib/gn_list_resolver/resolver_job.rb, line 8
def initialize(names, batch_data, data_source_id)
  @names = names
  @batch_data = batch_data
  @data_source_id = data_source_id
  @stats = Stats.new
end

Public Instance Methods

run() click to toggle source
# File lib/gn_list_resolver/resolver_job.rb, line 15
def run
  res = remote_resolve(@names)
  [res, @batch_data, @stats]
end

Private Instance Methods

remote_resolve(names) click to toggle source
# File lib/gn_list_resolver/resolver_job.rb, line 28
def remote_resolve(names)
  batch_start = Time.now
  res = GRAPHQL.client.query(QUERY, variables: variables(names))
  stats_add_batch_time(batch_start)
  res.data.name_resolver.responses
end
stats_add_batch_time(batch_start) click to toggle source
# File lib/gn_list_resolver/resolver_job.rb, line 35
def stats_add_batch_time(batch_start)
  @stats.stats[:current_speed] = @names.size / (Time.now - batch_start)
  @stats.stats[:resolution][:completed_records] = @names.size
end
variables(names) click to toggle source
# File lib/gn_list_resolver/resolver_job.rb, line 22
def variables(names)
  { dataSourceIds: [@data_source_id],
    names: names.
      map { |name| { value: name[:name], suppliedId: name[:id] } } }
end