33 lines
826 B
Ruby
33 lines
826 B
Ruby
# frozen_string_literal: true
|
|
# rubocop:disable Style/Documentation
|
|
|
|
module Gitlab
|
|
module BackgroundMigration
|
|
class PopulateMergeRequestsLatestMergeRequestDiffId
|
|
BATCH_SIZE = 1_000
|
|
|
|
class MergeRequest < ActiveRecord::Base
|
|
self.table_name = 'merge_requests'
|
|
|
|
include ::EachBatch
|
|
end
|
|
|
|
def perform(start_id, stop_id)
|
|
update = '
|
|
latest_merge_request_diff_id = (
|
|
SELECT MAX(id)
|
|
FROM merge_request_diffs
|
|
WHERE merge_requests.id = merge_request_diffs.merge_request_id
|
|
)'.squish
|
|
|
|
MergeRequest
|
|
.where(id: start_id..stop_id)
|
|
.where(latest_merge_request_diff_id: nil)
|
|
.each_batch(of: BATCH_SIZE) do |relation|
|
|
|
|
relation.update_all(update)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|