34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Ruby
		
	
	
	
# frozen_string_literal: true
 | 
						|
 | 
						|
module Gitlab
 | 
						|
  module BackgroundMigration
 | 
						|
    # This migration fixes existing `vulnerability_reads` records which did not have `has_issues`
 | 
						|
    # correctly set at the time of creation.
 | 
						|
    class FixVulnerabilityReadsHasIssues < BatchedMigrationJob
 | 
						|
      operation_name :fix_has_issues
 | 
						|
      feature_category :vulnerability_management
 | 
						|
 | 
						|
      # rubocop:disable Style/Documentation
 | 
						|
      class VulnerabilityRead < ::ApplicationRecord
 | 
						|
        self.table_name = 'vulnerability_reads'
 | 
						|
 | 
						|
        scope :with_vulnerability_ids, ->(ids) { where(vulnerability_id: ids) }
 | 
						|
        scope :without_issues, -> { where(has_issues: false) }
 | 
						|
      end
 | 
						|
      # rubocop:enable Style/Documentation
 | 
						|
 | 
						|
      def perform
 | 
						|
        each_sub_batch do |sub_batch|
 | 
						|
          vulnerability_reads_with_issue_links(sub_batch).update_all('has_issues = true')
 | 
						|
        end
 | 
						|
      end
 | 
						|
 | 
						|
      private
 | 
						|
 | 
						|
      def vulnerability_reads_with_issue_links(sub_batch)
 | 
						|
        VulnerabilityRead.with_vulnerability_ids(sub_batch.select(:vulnerability_id)).without_issues
 | 
						|
      end
 | 
						|
    end
 | 
						|
  end
 | 
						|
end
 |