Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-03-10 06:09:10 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-03-10 06:09:10 +0300
commit5d756f9966c2f91b96cef7e552693e5bd1f1fb21 (patch)
tree4edd5c50411c21c57867d57a776e6c8a67d6f247 /app/workers/packages
parent23e66f03108f811dbb6f9aa4fc463f888666522d (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/workers/packages')
-rw-r--r--app/workers/packages/maven/metadata/sync_worker.rb59
1 files changed, 59 insertions, 0 deletions
diff --git a/app/workers/packages/maven/metadata/sync_worker.rb b/app/workers/packages/maven/metadata/sync_worker.rb
new file mode 100644
index 00000000000..eb7abf4cdd0
--- /dev/null
+++ b/app/workers/packages/maven/metadata/sync_worker.rb
@@ -0,0 +1,59 @@
+# frozen_string_literal: true
+
+module Packages
+ module Maven
+ module Metadata
+ class SyncWorker
+ include ApplicationWorker
+ include Gitlab::Utils::StrongMemoize
+
+ queue_namespace :package_repositories
+ feature_category :package_registry
+
+ deduplicate :until_executing
+ idempotent!
+
+ loggable_arguments 2
+
+ SyncError = Class.new(StandardError)
+
+ def perform(user_id, project_id, package_name)
+ @user_id = user_id
+ @project_id = project_id
+ @package_name = package_name
+
+ return unless valid?
+
+ result = ::Packages::Maven::Metadata::SyncService.new(container: project, current_user: user, params: { package_name: @package_name })
+ .execute
+
+ if result.success?
+ log_extra_metadata_on_done(:message, result.message)
+ else
+ raise SyncError.new(result.message)
+ end
+
+ raise SyncError.new(result.message) unless result.success?
+ end
+
+ private
+
+ def valid?
+ @package_name.present? && user.present? && project.present?
+ end
+
+ def user
+ strong_memoize(:user) do
+ User.find_by_id(@user_id)
+ end
+ end
+
+ def project
+ strong_memoize(:project) do
+ Project.find_by_id(@project_id)
+ end
+ end
+ end
+ end
+ end
+end