From ab0f1c7a99c03725b3b5a1b7fee9aba879129e83 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Sat, 9 Nov 2019 00:06:35 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- ...-via-soft-delete-for-groups-db-changes.yml | 5 +++++ ...358_add_mark_for_deletion_to_namespaces.rb | 10 ++++++++++ ...mark_for_deletion_indices_to_namespaces.rb | 20 +++++++++++++++++++ db/schema.rb | 5 +++++ lib/gitlab/import_export/import_export.yml | 2 ++ 5 files changed, 42 insertions(+) create mode 100644 changelogs/unreleased/33257-prevent-accidental-deletions-via-soft-delete-for-groups-db-changes.yml create mode 100644 db/migrate/20191029060358_add_mark_for_deletion_to_namespaces.rb create mode 100644 db/migrate/20191029061556_add_mark_for_deletion_indices_to_namespaces.rb diff --git a/changelogs/unreleased/33257-prevent-accidental-deletions-via-soft-delete-for-groups-db-changes.yml b/changelogs/unreleased/33257-prevent-accidental-deletions-via-soft-delete-for-groups-db-changes.yml new file mode 100644 index 00000000000..7b785b04fdf --- /dev/null +++ b/changelogs/unreleased/33257-prevent-accidental-deletions-via-soft-delete-for-groups-db-changes.yml @@ -0,0 +1,5 @@ +--- +title: Add migrations for 'soft-delete for groups' feature +merge_request: 19342 +author: +type: added diff --git a/db/migrate/20191029060358_add_mark_for_deletion_to_namespaces.rb b/db/migrate/20191029060358_add_mark_for_deletion_to_namespaces.rb new file mode 100644 index 00000000000..b66e3b7e62a --- /dev/null +++ b/db/migrate/20191029060358_add_mark_for_deletion_to_namespaces.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +class AddMarkForDeletionToNamespaces < ActiveRecord::Migration[5.2] + DOWNTIME = false + + def change + add_column :namespaces, :marked_for_deletion_at, :date + add_column :namespaces, :marked_for_deletion_by_user_id, :integer + end +end diff --git a/db/migrate/20191029061556_add_mark_for_deletion_indices_to_namespaces.rb b/db/migrate/20191029061556_add_mark_for_deletion_indices_to_namespaces.rb new file mode 100644 index 00000000000..ce01791bc2e --- /dev/null +++ b/db/migrate/20191029061556_add_mark_for_deletion_indices_to_namespaces.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +class AddMarkForDeletionIndicesToNamespaces < ActiveRecord::Migration[5.2] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + disable_ddl_transaction! + + def up + add_concurrent_foreign_key :namespaces, :users, column: :marked_for_deletion_by_user_id, on_delete: :nullify + add_concurrent_index :namespaces, :marked_for_deletion_by_user_id, where: 'marked_for_deletion_by_user_id IS NOT NULL' + add_concurrent_index :namespaces, :marked_for_deletion_at, where: 'marked_for_deletion_at IS NOT NULL' + end + + def down + remove_foreign_key_if_exists :namespaces, column: :marked_for_deletion_by_user_id + remove_concurrent_index :namespaces, :marked_for_deletion_by_user_id + remove_concurrent_index :namespaces, :marked_for_deletion_at + end +end diff --git a/db/schema.rb b/db/schema.rb index c0b74841834..368a1b91e06 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -2492,11 +2492,15 @@ ActiveRecord::Schema.define(version: 2019_11_05_094625) do t.boolean "emails_disabled" t.integer "max_pages_size" t.integer "max_artifacts_size" + t.date "marked_for_deletion_at" + t.integer "marked_for_deletion_by_user_id" t.index ["created_at"], name: "index_namespaces_on_created_at" t.index ["custom_project_templates_group_id", "type"], name: "index_namespaces_on_custom_project_templates_group_id_and_type", where: "(custom_project_templates_group_id IS NOT NULL)" t.index ["file_template_project_id"], name: "index_namespaces_on_file_template_project_id" t.index ["ldap_sync_last_successful_update_at"], name: "index_namespaces_on_ldap_sync_last_successful_update_at" t.index ["ldap_sync_last_update_at"], name: "index_namespaces_on_ldap_sync_last_update_at" + t.index ["marked_for_deletion_at"], name: "index_namespaces_on_marked_for_deletion_at", where: "(marked_for_deletion_at IS NOT NULL)" + t.index ["marked_for_deletion_by_user_id"], name: "index_namespaces_on_marked_for_deletion_by_user_id", where: "(marked_for_deletion_by_user_id IS NOT NULL)" t.index ["name", "parent_id"], name: "index_namespaces_on_name_and_parent_id", unique: true t.index ["name"], name: "index_namespaces_on_name_trigram", opclass: :gin_trgm_ops, using: :gin t.index ["owner_id"], name: "index_namespaces_on_owner_id" @@ -4363,6 +4367,7 @@ ActiveRecord::Schema.define(version: 2019_11_05_094625) do add_foreign_key "namespaces", "namespaces", column: "custom_project_templates_group_id", name: "fk_e7a0b20a6b", on_delete: :nullify add_foreign_key "namespaces", "plans", name: "fk_fdd12e5b80", on_delete: :nullify add_foreign_key "namespaces", "projects", column: "file_template_project_id", name: "fk_319256d87a", on_delete: :nullify + add_foreign_key "namespaces", "users", column: "marked_for_deletion_by_user_id", name: "fk_9ff61b4c22", on_delete: :nullify add_foreign_key "note_diff_files", "notes", column: "diff_note_id", on_delete: :cascade add_foreign_key "notes", "projects", name: "fk_99e097b079", on_delete: :cascade add_foreign_key "notes", "reviews", name: "fk_2e82291620", on_delete: :nullify diff --git a/lib/gitlab/import_export/import_export.yml b/lib/gitlab/import_export/import_export.yml index 1aafe5804c0..61a314d0576 100644 --- a/lib/gitlab/import_export/import_export.yml +++ b/lib/gitlab/import_export/import_export.yml @@ -153,6 +153,8 @@ excluded_attributes: namespaces: - :runners_token - :runners_token_encrypted + - :marked_for_deletion_at + - :marked_for_deletion_by_user_id project_import_state: - :last_error - :jid