diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-07-09 03:09:01 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-07-09 03:09:01 +0000 |
commit | 0a9efe02885d9ad4dbdaf61746ae81daea0f575b (patch) | |
tree | ccd02a93eaaadb1c547c5f6e1d239d9276908bc6 /db/migrate | |
parent | f44bf01f69a491d4dfca8d631b390371bd0eec7a (diff) | |
download | gitlab-ce-0a9efe02885d9ad4dbdaf61746ae81daea0f575b.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'db/migrate')
-rw-r--r-- | db/migrate/20200305020458_add_label_restore_table.rb | 31 | ||||
-rw-r--r-- | db/migrate/20200305020459_add_label_restore_foreign_keys.rb | 35 |
2 files changed, 66 insertions, 0 deletions
diff --git a/db/migrate/20200305020458_add_label_restore_table.rb b/db/migrate/20200305020458_add_label_restore_table.rb new file mode 100644 index 00000000000..a5809cfe14b --- /dev/null +++ b/db/migrate/20200305020458_add_label_restore_table.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +class AddLabelRestoreTable < ActiveRecord::Migration[6.0] + DOWNTIME = false + + def up + # copy table + execute "CREATE TABLE #{backup_labels_table_name} (LIKE #{labels_table_name} INCLUDING ALL);" + + # make the primary key a real functioning one rather than incremental + execute "ALTER TABLE #{backup_labels_table_name} ALTER COLUMN ID DROP DEFAULT;" + + # add some fields that make changes trackable + execute "ALTER TABLE #{backup_labels_table_name} ADD COLUMN restore_action INTEGER;" + execute "ALTER TABLE #{backup_labels_table_name} ADD COLUMN new_title VARCHAR;" + end + + def down + drop_table backup_labels_table_name + end + + private + + def labels_table_name + :labels + end + + def backup_labels_table_name + :backup_labels + end +end diff --git a/db/migrate/20200305020459_add_label_restore_foreign_keys.rb b/db/migrate/20200305020459_add_label_restore_foreign_keys.rb new file mode 100644 index 00000000000..4b7c68cb20b --- /dev/null +++ b/db/migrate/20200305020459_add_label_restore_foreign_keys.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +class AddLabelRestoreForeignKeys < ActiveRecord::Migration[6.0] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + # create foreign keys + connection.foreign_keys(labels_table_name).each do |fk| + fk_options = fk.options + add_concurrent_foreign_key(backup_labels_table_name, fk.to_table, name: fk.name, column: fk_options[:column]) + end + end + + def down + connection.foreign_keys(backup_labels_table_name).each do |fk| + with_lock_retries do + remove_foreign_key backup_labels_table_name, name: fk.name + end + end + end + + private + + def labels_table_name + :labels + end + + def backup_labels_table_name + :backup_labels + end +end |