2
0

Change terms of service e-mail job to be iterable (#35126)

This commit is contained in:
Eugen Rochko
2025-06-24 09:41:39 +02:00
committed by GitHub
parent e60014ed9c
commit 1be48d0cab
3 changed files with 49 additions and 16 deletions

View File

@@ -1,15 +1,18 @@
# frozen_string_literal: true
class Admin::DistributeAnnouncementNotificationWorker
include Sidekiq::Worker
include Sidekiq::IterableJob
include BulkMailer
def perform(announcement_id)
announcement = Announcement.find(announcement_id)
def build_enumerator(announcement_id, cursor:)
@announcement = Announcement.find(announcement_id)
announcement.scope_for_notification.find_each do |user|
UserMailer.announcement_published(user, announcement).deliver_later!
end
active_record_batches_enumerator(@announcement.scope_for_notification, cursor:)
rescue ActiveRecord::RecordNotFound
true
nil
end
def each_iteration(batch_of_users, _announcement_id)
push_bulk_mailer(UserMailer, :announcement_published, batch_of_users.map { |user| [user, @announcement] })
end
end