Skip to content

Commit

Permalink
Make cnb migration idempotent
Browse files Browse the repository at this point in the history
  • Loading branch information
johha committed Jun 19, 2024
1 parent d2a2a46 commit daffedc
Showing 1 changed file with 13 additions and 12 deletions.
25 changes: 13 additions & 12 deletions db/migrations/20240514113500_create_cnb_lifecycle_data.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,24 @@

up do
transaction do
create_table(:cnb_lifecycle_data) do
create_table?(:cnb_lifecycle_data) do
VCAP::Migration.common(self, :cnb_lifecycle_data)

String :build_guid, size: 255
foreign_key [:build_guid], :builds, key: :guid, name: :fk_cnb_lifecycle_build_guid, on_delete: :cascade
add_index [:build_guid], name: :fk_cnb_lifecycle_build_guid_index, if_not_exists: true, concurrently: true if database_type == :postgres

index [:build_guid], name: :fk_cnb_lifecycle_build_guid_index
String :app_guid, size: 255
add_index [:app_guid], name: :fk_cnb_lifecycle_app_guid_index, if_not_exists: true, concurrently: true if database_type == :postgres

index [:app_guid], name: :fk_cnb_lifecycle_app_guid_index
String :droplet_guid, size: 255
add_index [:droplet_guid], name: :fk_cnb_lifecycle_droplet_guid_index, if_not_exists: true, concurrently: true if database_type == :postgres

index [:droplet_guid], name: :fk_cnb_lifecycle_droplet_guid_index
String :stack, size: 255
end

add_column :buildpack_lifecycle_buildpacks, :cnb_lifecycle_data_guid, String, size: 255, if_not_exists: true
alter_table(:buildpack_lifecycle_buildpacks) do
add_foreign_key [:cnb_lifecycle_data_guid], :cnb_lifecycle_data, key: :guid, name: :fk_blcnb_bldata_guid, on_delete: :cascade, if_not_exists: true
if foreign_key_list(:buildpack_lifecycle_buildpacks).none? { |fk| fk[:name] == :fk_blcnb_bldata_guid }
alter_table(:buildpack_lifecycle_buildpacks) do
add_foreign_key [:cnb_lifecycle_data_guid], :cnb_lifecycle_data, key: :guid, name: :fk_blcnb_bldata_guid, on_delete: :cascade
end
end
end

Expand All @@ -37,11 +36,13 @@
end

transaction do
alter_table(:buildpack_lifecycle_buildpacks) do
drop_foreign_key [:cnb_lifecycle_data_guid]
if foreign_key_list(:buildpack_lifecycle_buildpacks).any? { |fk| fk[:name] == :fk_blcnb_bldata_guid }
alter_table(:buildpack_lifecycle_buildpacks) do
drop_foreign_key [:cnb_lifecycle_data_guid] if @db.foreign_key_list(:buildpack_lifecycle_buildpacks)
end
end
drop_column :buildpack_lifecycle_buildpacks, :cnb_lifecycle_data_guid, if_exists: true
drop_table :cnb_lifecycle_data
drop_table? :cnb_lifecycle_data
end
end
end

0 comments on commit daffedc

Please sign in to comment.