debian-mirror-gitlab/lib/gitlab/batch_worker_context.rb

33 lines
761 B
Ruby
Raw Normal View History

2020-03-13 15:44:24 +05:30
# frozen_string_literal: true
module Gitlab
class BatchWorkerContext
def initialize(objects, arguments_proc:, context_proc:)
@objects = objects
@arguments_proc = arguments_proc
@context_proc = context_proc
end
def arguments
context_by_arguments.keys
end
def context_for(arguments)
context_by_arguments[arguments]
end
private
attr_reader :objects, :arguments_proc, :context_proc
def context_by_arguments
@context_by_arguments ||= objects.each_with_object({}) do |object, result|
arguments = Array.wrap(arguments_proc.call(object))
2021-02-22 17:27:13 +05:30
context = Gitlab::ApplicationContext.new(**context_proc.call(object))
2020-03-13 15:44:24 +05:30
result[arguments] = context
end
end
end
end