28 lines
807 B
Ruby
28 lines
807 B
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
module Gitlab
|
||
|
module BackgroundMigration
|
||
|
# Class that will insert record into project_push_rules
|
||
|
# for each existing push_rule
|
||
|
class BackfillPushRulesIdInProjects
|
||
|
# Temporary AR table for push rules
|
||
|
class ProjectSetting < ActiveRecord::Base
|
||
|
self.table_name = 'project_settings'
|
||
|
end
|
||
|
|
||
|
def perform(start_id, stop_id)
|
||
|
ProjectSetting.connection.execute(<<~SQL)
|
||
|
UPDATE project_settings ps1
|
||
|
SET push_rule_id = pr.id
|
||
|
FROM project_settings ps2
|
||
|
INNER JOIN push_rules pr
|
||
|
ON ps2.project_id = pr.project_id
|
||
|
WHERE pr.is_sample = false
|
||
|
AND pr.id BETWEEN #{start_id} AND #{stop_id}
|
||
|
AND ps1.project_id = ps2.project_id
|
||
|
SQL
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|