summaryrefslogtreecommitdiff
path: root/db/migrate/20170928133643_create_fork_network_members.rb
blob: 836f023efdc41ca6114f1d5a9f0498bda83cf39c (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
class CreateForkNetworkMembers < ActiveRecord::Migration
  include Gitlab::Database::MigrationHelpers

  DOWNTIME = false

  disable_ddl_transaction!

  def up
    create_table :fork_network_members do |t|
      t.references :fork_network, null: false, index: true, foreign_key: { on_delete: :cascade }
      t.references :project, null: false, index: { unique: true }, foreign_key: { on_delete: :cascade }
      t.references :forked_from_project, references: :projects
    end

    add_concurrent_foreign_key :fork_network_members, :projects,
                               column: :forked_from_project_id,
                               on_delete: :nullify
  end

  def down
    if foreign_keys_for(:fork_network_members, :forked_from_project_id).any?
      remove_foreign_key :fork_network_members, column: :forked_from_project_id
    end
    drop_table :fork_network_members
  end
end