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, Gitlab::BackgroundMigration::BatchedMigrationJob::MINIMUM_PAUSE_MS
Constants included from Database::DynamicModelHelpers
Database::DynamicModelHelpers::BATCH_SIZE
Instance Method Summary collapse
Methods inherited from BatchedMigrationJob
#batch_metrics, cursor, cursor?, cursor_columns, 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  |