Class: Gitlab::BackgroundMigration::BackfillProjectFeaturePackageRegistryAccessLevel
- Inherits:
-
BatchedMigrationJob
- Object
- BatchedMigrationJob
- Gitlab::BackgroundMigration::BackfillProjectFeaturePackageRegistryAccessLevel
- Defined in:
- lib/gitlab/background_migration/backfill_project_feature_package_registry_access_level.rb
Overview
Backfill projectfeatures.package_registry_access_level depending on projects.packages_enabled
Defined Under Namespace
Classes: ProjectFeature
Constant Summary collapse
- FEATURE_DISABLED =
ProjectFeature::DISABLED
0
- FEATURE_PRIVATE =
ProjectFeature::PRIVATE
10
- FEATURE_ENABLED =
ProjectFeature::ENABLED
20
- FEATURE_PUBLIC =
ProjectFeature::PUBLIC
30
- PROJECT_PRIVATE =
Gitlab::VisibilityLevel::PRIVATE
0
- PROJECT_INTERNAL =
Gitlab::VisibilityLevel::INTERNAL
10
- PROJECT_PUBLIC =
Gitlab::VisibilityLevel::PUBLIC
20
Constants inherited from BatchedMigrationJob
Gitlab::BackgroundMigration::BatchedMigrationJob::DEFAULT_FEATURE_CATEGORY
Constants included from Database::DynamicModelHelpers
Database::DynamicModelHelpers::BATCH_SIZE
Instance Method Summary collapse
Methods inherited from BatchedMigrationJob
#batch_metrics, feature_category, #filter_batch, generic_instance, #initialize, job_arguments, job_arguments_count, operation_name, scope_to
Methods included from Database::DynamicModelHelpers
#define_batchable_model, #each_batch, #each_batch_range
Constructor Details
This class inherits a constructor from Gitlab::BackgroundMigration::BatchedMigrationJob
Instance Method Details
#perform ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/gitlab/background_migration/backfill_project_feature_package_registry_access_level.rb', line 23 def perform each_sub_batch do |sub_batch| ProjectFeature.connection.execute( <<~SQL UPDATE project_features pf SET package_registry_access_level = (CASE p.packages_enabled WHEN true THEN (CASE p.visibility_level WHEN #{PROJECT_PUBLIC} THEN #{FEATURE_PUBLIC} WHEN #{PROJECT_INTERNAL} THEN #{FEATURE_ENABLED} WHEN #{PROJECT_PRIVATE} THEN #{FEATURE_PRIVATE} END) WHEN false THEN #{FEATURE_DISABLED} ELSE #{FEATURE_DISABLED} END) FROM projects p WHERE pf.project_id = p.id AND pf.project_id BETWEEN #{start_id} AND #{end_id} SQL ) end end |