-
Notifications
You must be signed in to change notification settings - Fork 363
/
Copy path20240514113500_create_cnb_lifecycle_data.rb
48 lines (42 loc) · 2.07 KB
/
20240514113500_create_cnb_lifecycle_data.rb
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
36
37
38
39
40
41
42
43
44
45
46
47
48
Sequel.migration do
# adding an index concurrently cannot be done within a transaction
no_transaction
up do
transaction 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
index [:build_guid], name: :fk_cnb_lifecycle_build_guid_index
String :app_guid, size: 255
index [:app_guid], name: :fk_cnb_lifecycle_app_guid_index
String :droplet_guid, size: 255
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
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
VCAP::Migration.with_concurrent_timeout(self) do
add_index :buildpack_lifecycle_buildpacks, :cnb_lifecycle_data_guid, name: :bl_cnb_bldata_guid_index, if_not_exists: true, concurrently: true if database_type == :postgres
end
end
down do
VCAP::Migration.with_concurrent_timeout(self) do
drop_index :buildpack_lifecycle_buildpacks, :cnb_lifecycle_data_guid, name: :bl_cnb_bldata_guid_index, if_exists: true, concurrently: true if database_type == :postgres
end
transaction do
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
end
end
end