23 lines
561 B
Ruby
23 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
|