Welcome to mirror list, hosted at ThFree Co, Russian Federation.

20210526222715_backfill_draft_status_on_merge_requests.rb « post_migrate « db - gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 300c180acc30e1a41158e433037a0630e6a520fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# frozen_string_literal: true

class BackfillDraftStatusOnMergeRequests < ActiveRecord::Migration[6.0]
  include Gitlab::Database::MigrationHelpers

  DOWNTIME = false

  INDEX_NAME = "tmp_index_merge_requests_draft_and_status"

  disable_ddl_transaction!

  def up
    add_concurrent_index :merge_requests, :id,
      where: "draft = false AND state_id = 1 AND ((title)::text ~* '^\\[draft\\]|\\(draft\\)|draft:|draft|\\[WIP\\]|WIP:|WIP'::text)",
      name: INDEX_NAME

    update_column_in_batches(:merge_requests, :draft, true, batch_size: 100) do |table, query|
      query
        .where(table[:state_id].eq(1))
        .where(table[:draft].eq(false))
        .where(table[:title].matches_regexp('^\\[draft\\]|\\(draft\\)|draft:|draft|\\[WIP\\]|WIP:|WIP', false))
    end

    remove_concurrent_index_by_name :merge_requests, INDEX_NAME
  end

  def down
    remove_concurrent_index_by_name :merge_requests, INDEX_NAME
  end
end