diff options
Diffstat (limited to 'db/post_migrate/20220830061704_orphaned_invited_members_cleanup.rb')
-rw-r--r-- | db/post_migrate/20220830061704_orphaned_invited_members_cleanup.rb | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/db/post_migrate/20220830061704_orphaned_invited_members_cleanup.rb b/db/post_migrate/20220830061704_orphaned_invited_members_cleanup.rb new file mode 100644 index 00000000000..c5249510164 --- /dev/null +++ b/db/post_migrate/20220830061704_orphaned_invited_members_cleanup.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +class OrphanedInvitedMembersCleanup < Gitlab::Database::Migration[2.0] + disable_ddl_transaction! + + restrict_gitlab_migration gitlab_schema: :gitlab_main + + def up + # rubocop:disable Style/SymbolProc + membership.where(query_condition).each_batch(of: 100) do |relation| + relation.delete_all + end + # rubocop:enable Style/SymbolProc + end + + def down + # This migration is irreversible + end + + private + + def membership + @membership ||= define_batchable_model('members') + end + + def query_condition + 'invite_token IS NULL and invite_accepted_at IS NOT NULL AND user_id IS NULL' + end +end |