diff options
author | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2017-07-04 12:40:45 +0200 |
---|---|---|
committer | Grzegorz Bizon <grzesiek.bizon@gmail.com> | 2017-07-04 12:40:45 +0200 |
commit | 5af3eb5f9f4d467ad70a2c5107d7c837bff36afa (patch) | |
tree | 70bf8f01e2eec62f0c180ef06d94c3d0dc5de8ba | |
parent | 6a61528512b35f246d0391d1f6d1c099692405fd (diff) | |
download | gitlab-ce-5af3eb5f9f4d467ad70a2c5107d7c837bff36afa.tar.gz |
Check foreign keys in migration in separate conditional
-rw-r--r-- | db/migrate/20170703102400_add_stage_id_foreign_key_to_builds.rb | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/db/migrate/20170703102400_add_stage_id_foreign_key_to_builds.rb b/db/migrate/20170703102400_add_stage_id_foreign_key_to_builds.rb index a54d8e3c36d..68b947583d3 100644 --- a/db/migrate/20170703102400_add_stage_id_foreign_key_to_builds.rb +++ b/db/migrate/20170703102400_add_stage_id_foreign_key_to_builds.rb @@ -8,14 +8,28 @@ class AddStageIdForeignKeyToBuilds < ActiveRecord::Migration def up unless index_exists?(:ci_builds, :stage_id) add_concurrent_index(:ci_builds, :stage_id) + end + + unless foreign_key_exists?(:ci_builds, :stage_id) add_concurrent_foreign_key(:ci_builds, :ci_stages, column: :stage_id, on_delete: :cascade) end end def down - if index_exists?(:ci_builds, :stage_id) + if foreign_key_exists?(:ci_builds, :stage_id) remove_foreign_key(:ci_builds, column: :stage_id) + end + + if index_exists?(:ci_builds, :stage_id) remove_concurrent_index(:ci_builds, :stage_id) end end + + private + + def foreign_key_exists?(table, column) + foreign_keys(:ci_builds).any? do |key| + key.options[:column] == column.to_s + end + end end |