summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2017-07-04 12:40:45 +0200
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2017-07-04 12:40:45 +0200
commit5af3eb5f9f4d467ad70a2c5107d7c837bff36afa (patch)
tree70bf8f01e2eec62f0c180ef06d94c3d0dc5de8ba
parent6a61528512b35f246d0391d1f6d1c099692405fd (diff)
downloadgitlab-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.rb16
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