diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-01-31 09:08:53 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-01-31 09:08:53 +0000 |
commit | fd3a95f07ae9cd78fecffcfa5de4494f933a7808 (patch) | |
tree | a38a8abb0afb14aa396edd30137ddf45e71d2713 /lib/gitlab/batch_worker_context.rb | |
parent | 6a7005feed2e88568f42627e7190ff5c4f2aa8d3 (diff) | |
download | gitlab-ce-fd3a95f07ae9cd78fecffcfa5de4494f933a7808.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'lib/gitlab/batch_worker_context.rb')
-rw-r--r-- | lib/gitlab/batch_worker_context.rb | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/gitlab/batch_worker_context.rb b/lib/gitlab/batch_worker_context.rb new file mode 100644 index 00000000000..0589206fefc --- /dev/null +++ b/lib/gitlab/batch_worker_context.rb @@ -0,0 +1,32 @@ +# 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)) + context = Gitlab::ApplicationContext.new(context_proc.call(object)) + + result[arguments] = context + end + end + end +end |