mirror of
https://github.com/internetee/registry.git
synced 2025-07-29 05:56:20 +02:00
Add rake task optional args
This commit is contained in:
parent
be0ac715b1
commit
b1afdbf50e
4 changed files with 39 additions and 18 deletions
|
@ -1,11 +1,29 @@
|
|||
desc 'Check Force Delete'
|
||||
task check_force_delete: :environment do
|
||||
task :check_force_delete, %i[batch batch_size batches_delay] => :environment do |_t, args|
|
||||
args.with_defaults(batch: false, batch_size: 1_000, batches_delay: 15)
|
||||
|
||||
batch = ActiveModel::Type::Boolean.new.cast(args[:batch])
|
||||
batch_size = args[:batch_size].to_i
|
||||
batches_delay = args[:batches_delay].to_i.minutes
|
||||
|
||||
invalid_contacts = Contact.joins(:validation_events).select do |contact|
|
||||
events = contact.validation_events
|
||||
events.mx.count >= 3 || events.regex.present?
|
||||
end.uniq(&:id)
|
||||
mx = events.mx.select(&:failed?).count >= ValidationEvent::MX_CHECK
|
||||
regex = events.regex.select(&:failed?).present?
|
||||
|
||||
invalid_contacts.each do |contact|
|
||||
ValidationEventCheckForceDeleteJob.perform_later(contact.id)
|
||||
(contact.need_to_start_force_delete? || contact.need_to_lift_force_delete?) && (mx || regex)
|
||||
end.uniq
|
||||
|
||||
if batch
|
||||
waiting_minutes = 0.minutes
|
||||
|
||||
invalid_contacts.find_in_batches(batch_size: batch_size) do |contact_batches|
|
||||
CheckForceDeleteJob.set(wait: waiting_minutes).perform_later(contact_batches)
|
||||
waiting_minutes += batches_delay
|
||||
end
|
||||
else
|
||||
invalid_contacts.each do |contact|
|
||||
CheckForceDeleteJob.perform_later([contact.id])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue