summaryrefslogtreecommitdiff
path: root/lib/gitlab/background_migration/backfill_project_import_level.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/background_migration/backfill_project_import_level.rb')
-rw-r--r--lib/gitlab/background_migration/backfill_project_import_level.rb35
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/gitlab/background_migration/backfill_project_import_level.rb b/lib/gitlab/background_migration/backfill_project_import_level.rb
new file mode 100644
index 00000000000..06706b729ea
--- /dev/null
+++ b/lib/gitlab/background_migration/backfill_project_import_level.rb
@@ -0,0 +1,35 @@
+# frozen_string_literal: true
+# rubocop:disable Style/Documentation
+module Gitlab
+ module BackgroundMigration
+ class BackfillProjectImportLevel < BatchedMigrationJob
+ LEVEL = {
+ Gitlab::Access::NO_ACCESS => [0],
+ Gitlab::Access::DEVELOPER => [2],
+ Gitlab::Access::MAINTAINER => [1],
+ Gitlab::Access::OWNER => [nil]
+ }.freeze
+
+ def perform
+ each_sub_batch(operation_name: :update_import_level) do |sub_batch|
+ update_import_level(sub_batch)
+ end
+ end
+
+ private
+
+ def update_import_level(relation)
+ LEVEL.each do |import_level, creation_level|
+ namespace_ids = relation
+ .where(type: 'Group', project_creation_level: creation_level)
+
+ NamespaceSetting.where(
+ namespace_id: namespace_ids
+ ).update_all(project_import_level: import_level)
+ end
+ end
+ end
+ end
+end
+
+# rubocop:enable Style/Documentation