diff options
author | Jarka Kadlecova <jarka@gitlab.com> | 2017-08-25 13:37:21 +0200 |
---|---|---|
committer | Jarka Kadlecova <jarka@gitlab.com> | 2017-09-05 16:25:26 +0200 |
commit | b0e30189a0cb82a03d6b6b25c04fa1498da85b0b (patch) | |
tree | 0d12298788e5af2534d522875516f2a285a9a1b1 /db/migrate | |
parent | 597bc29260c4be3a1527a1c5307bec40004bac4d (diff) | |
download | gitlab-ce-b0e30189a0cb82a03d6b6b25c04fa1498da85b0b.tar.gz |
Migrate issues authored by deleted user to the Ghost user
Diffstat (limited to 'db/migrate')
-rw-r--r-- | db/migrate/20170825104051_migrate_issues_to_ghost_user.rb | 36 | ||||
-rw-r--r-- | db/migrate/20170901071411_add_foreign_key_to_issue_author.rb | 14 |
2 files changed, 50 insertions, 0 deletions
diff --git a/db/migrate/20170825104051_migrate_issues_to_ghost_user.rb b/db/migrate/20170825104051_migrate_issues_to_ghost_user.rb new file mode 100644 index 00000000000..294141e4fdb --- /dev/null +++ b/db/migrate/20170825104051_migrate_issues_to_ghost_user.rb @@ -0,0 +1,36 @@ +class MigrateIssuesToGhostUser < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + DOWNTIME = false + + disable_ddl_transaction! + + class User < ActiveRecord::Base + self.table_name = 'users' + end + + class Issue < ActiveRecord::Base + self.table_name = 'issues' + + include ::EachBatch + end + + def reset_column_in_migration_models + ActiveRecord::Base.clear_cache! + + ::User.reset_column_information + end + + def up + reset_column_in_migration_models + + # we use the model method because rewriting it is too complicated and would require copying multiple methods + ghost_id = ::User.ghost.id + + Issue.where('NOT EXISTS (?)', User.unscoped.select(1).where('issues.author_id = users.id')).each_batch do |relation| + relation.update_all(author_id: ghost_id) + end + end + + def down + end +end diff --git a/db/migrate/20170901071411_add_foreign_key_to_issue_author.rb b/db/migrate/20170901071411_add_foreign_key_to_issue_author.rb new file mode 100644 index 00000000000..ab6e9fb565a --- /dev/null +++ b/db/migrate/20170901071411_add_foreign_key_to_issue_author.rb @@ -0,0 +1,14 @@ +class AddForeignKeyToIssueAuthor < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + disable_ddl_transaction! + + def up + add_concurrent_foreign_key(:issues, :users, column: :author_id, on_delete: :nullify) + end + + def down + remove_foreign_key(:issues, column: :author_id) + end +end |