mirror of
https://github.com/internetee/registry.git
synced 2025-06-10 06:34:46 +02:00
38 lines
937 B
Ruby
38 lines
937 B
Ruby
module Domain::Deletable
|
|
extend ActiveSupport::Concern
|
|
|
|
DELETE_STATUSES = [
|
|
DomainStatus::PENDING_DELETE_CONFIRMATION,
|
|
DomainStatus::PENDING_DELETE,
|
|
DomainStatus::FORCE_DELETE,
|
|
].freeze
|
|
|
|
def deletion_time
|
|
@deletion_time ||= Time.zone.at(rand(deletion_time_span))
|
|
end
|
|
|
|
private
|
|
|
|
def delete_later
|
|
DomainDeleteJob.set(wait_until: deletion_time).perform_later(id)
|
|
logger.info "Domain #{name} is scheduled to be deleted around #{deletion_time}"
|
|
end
|
|
|
|
def do_not_delete_later
|
|
return if Rails.env.test?
|
|
|
|
jobs = Sidekiq::ScheduledSet.new.select do |job|
|
|
job.args.first['job_class'] == 'DomainDeleteJob' && job.args.first['arguments'] == [id]
|
|
end
|
|
jobs.each(&:delete)
|
|
end
|
|
|
|
def deletion_time_span
|
|
range_params = [Time.zone.now.to_i, deletion_deadline.to_i].sort
|
|
Range.new(*range_params)
|
|
end
|
|
|
|
def deletion_deadline
|
|
(delete_date || Time.zone.now) + 24.hours
|
|
end
|
|
end
|