41 lines
1.2 KiB
Ruby
41 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Gitlab
|
|
module BackgroundMigration
|
|
# Backfill project_ci_feature_usages for a range of projects with coverage
|
|
class BackfillProjectsWithCoverage
|
|
class ProjectCiFeatureUsage < ActiveRecord::Base # rubocop:disable Style/Documentation
|
|
self.table_name = 'project_ci_feature_usages'
|
|
end
|
|
|
|
COVERAGE_ENUM_VALUE = 1
|
|
INSERT_DELAY_SECONDS = 0.1
|
|
|
|
def perform(start_id, end_id, sub_batch_size)
|
|
report_results = ActiveRecord::Base.connection.execute <<~SQL
|
|
SELECT DISTINCT project_id, default_branch
|
|
FROM ci_daily_build_group_report_results
|
|
WHERE id BETWEEN #{start_id} AND #{end_id}
|
|
SQL
|
|
|
|
report_results.to_a.in_groups_of(sub_batch_size, false) do |batch|
|
|
ProjectCiFeatureUsage.insert_all(build_values(batch))
|
|
|
|
sleep INSERT_DELAY_SECONDS
|
|
end
|
|
end
|
|
|
|
private
|
|
|
|
def build_values(batch)
|
|
batch.map do |data|
|
|
{
|
|
project_id: data['project_id'],
|
|
feature: COVERAGE_ENUM_VALUE,
|
|
default_branch: data['default_branch']
|
|
}
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|