summaryrefslogtreecommitdiff
path: root/lib/gitlab/background_migration/sync_merge_requests_state_id.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/background_migration/sync_merge_requests_state_id.rb')
-rw-r--r--lib/gitlab/background_migration/sync_merge_requests_state_id.rb25
1 files changed, 25 insertions, 0 deletions
diff --git a/lib/gitlab/background_migration/sync_merge_requests_state_id.rb b/lib/gitlab/background_migration/sync_merge_requests_state_id.rb
new file mode 100644
index 00000000000..923ceaeec54
--- /dev/null
+++ b/lib/gitlab/background_migration/sync_merge_requests_state_id.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+# rubocop:disable Style/Documentation
+
+module Gitlab
+ module BackgroundMigration
+ class SyncMergeRequestsStateId
+ def perform(start_id, end_id)
+ Rails.logger.info("Merge Requests - Populating state_id: #{start_id} - #{end_id}")
+
+ ActiveRecord::Base.connection.execute <<~SQL
+ UPDATE merge_requests
+ SET state_id =
+ CASE state
+ WHEN 'opened' THEN 1
+ WHEN 'closed' THEN 2
+ WHEN 'merged' THEN 3
+ WHEN 'locked' THEN 4
+ END
+ WHERE state_id IS NULL
+ AND id BETWEEN #{start_id} AND #{end_id}
+ SQL
+ end
+ end
+ end
+end