summaryrefslogtreecommitdiff
path: root/db/migrate/20221108185442_add_project_wiki_repository_id_to_project_wiki_repository_states.rb
blob: 317f58dac2759dbe919e510947121a7be8404360 (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
31
32
33
34
35
# frozen_string_literal: true

class AddProjectWikiRepositoryIdToProjectWikiRepositoryStates < Gitlab::Database::Migration[2.0]
  disable_ddl_transaction!

  INDEX_NAME = 'idx_project_wiki_repository_states_project_wiki_repository_id'

  def up
    with_lock_retries do
      unless column_exists?(:project_wiki_repository_states, :project_wiki_repository_id)
        add_column :project_wiki_repository_states, :project_wiki_repository_id, :bigint
      end
    end

    add_concurrent_index :project_wiki_repository_states,
      :project_wiki_repository_id,
      name: INDEX_NAME

    add_concurrent_foreign_key :project_wiki_repository_states,
      :project_wiki_repositories,
      column: :project_wiki_repository_id,
      on_delete: :cascade
  end

  def down
    with_lock_retries do
      if column_exists?(:project_wiki_repository_states, :project_wiki_repository_id)
        remove_column :project_wiki_repository_states, :project_wiki_repository_id
      end
    end

    remove_foreign_key_if_exists :project_wiki_repository_states, column: :project_wiki_repository_id
    remove_concurrent_index_by_name :project_wiki_repository_states, name: INDEX_NAME
  end
end