From 57bd1c77b6e9ae9fcdcb5cc9c1d9006fffd3c51b Mon Sep 17 00:00:00 2001 From: Stas Date: Wed, 2 Mar 2016 17:44:25 +0200 Subject: [PATCH] 113430903-new_job_added --- app/jobs/domain_delete_job.rb | 16 ++++++++++++++++ app/jobs/domain_set_delete_candidate_job.rb | 1 + app/models/domain_cron.rb | 15 +++------------ 3 files changed, 20 insertions(+), 12 deletions(-) create mode 100644 app/jobs/domain_delete_job.rb diff --git a/app/jobs/domain_delete_job.rb b/app/jobs/domain_delete_job.rb new file mode 100644 index 000000000..5336dc466 --- /dev/null +++ b/app/jobs/domain_delete_job.rb @@ -0,0 +1,16 @@ +class DomainDeleteJob < Que::Job + + def run(domain_id) + domain = Domain.find(domain_id) + + WhoisRecord.where(domain_id: domain.id).destroy_all + + domain.destroy + bye_bye = domain.versions.last + domain.registrar.messages.create!( + body: "#{I18n.t(:domain_deleted)}: #{domain.name}", + attached_obj_id: bye_bye.id, + attached_obj_type: bye_bye.class.to_s + ) + end +end diff --git a/app/jobs/domain_set_delete_candidate_job.rb b/app/jobs/domain_set_delete_candidate_job.rb index 7101c237c..cfa55cf6e 100644 --- a/app/jobs/domain_set_delete_candidate_job.rb +++ b/app/jobs/domain_set_delete_candidate_job.rb @@ -4,5 +4,6 @@ class DomainSetDeleteCandidateJob < Que::Job domain = Domain.find(domain_id) domain.statuses << DomainStatus::DELETE_CANDIDATE domain.save(validate: false) + DomainDeleteJob.enqueue(domain.id, run_at: rand(24*60).minutes.from_now) end end diff --git a/app/models/domain_cron.rb b/app/models/domain_cron.rb index 90ab37044..5fd4331f8 100644 --- a/app/models/domain_cron.rb +++ b/app/models/domain_cron.rb @@ -87,22 +87,13 @@ class DomainCron STDOUT << "#{Time.zone.now.utc} - Destroying domains\n" unless Rails.env.test? c = 0 - Domain.where("statuses @> '{deleteCandidate}'::varchar[]").each do |x| - WhoisRecord.where(domain_id: x.id).destroy_all - destroy_with_message x - STDOUT << "#{Time.zone.now.utc} Domain.destroy_delete_candidates: by deleteCandidate ##{x.id} (#{x.name})\n" unless Rails.env.test? - - c += 1 - end - Domain.where('force_delete_at <= ?', Time.zone.now).each do |x| - WhoisRecord.where(domain_id: x.id).destroy_all - destroy_with_message x - STDOUT << "#{Time.zone.now.utc} DomainCron.destroy_delete_candidates: by force delete time ##{x.id} (#{x.name})\n" unless Rails.env.test? + DomainDeleteJob.enqueue(x.id, run_at: rand(24*60).minutes.from_now) + STDOUT << "#{Time.zone.now.utc} DomainCron.destroy_delete_candidates: job added by force delete time ##{x.id} (#{x.name})\n" unless Rails.env.test? c += 1 end - STDOUT << "#{Time.zone.now.utc} - Successfully destroyed #{c} domains\n" unless Rails.env.test? + STDOUT << "#{Time.zone.now.utc} - Job destroy added for #{c} domains\n" unless Rails.env.test? end # rubocop: enable Metrics/AbcSize