gitlab-org--gitlab-foss/app/services/users/batch_status_cleaner_service.rb

22 lines
561 B
Ruby

# frozen_string_literal: true
module Users
class BatchStatusCleanerService
BATCH_SIZE = 100.freeze
# Cleanup BATCH_SIZE user_statuses records
# rubocop: disable CodeReuse/ActiveRecord
def self.execute(batch_size: BATCH_SIZE)
scope = UserStatus
.select(:user_id)
.scheduled_for_cleanup
.lock('FOR UPDATE SKIP LOCKED')
.limit(batch_size)
deleted_rows = UserStatus.where(user_id: scope).delete_all
{ deleted_rows: deleted_rows }
end
# rubocop: enable CodeReuse/ActiveRecord
end
end