From 4efd94a90b01e3b727e1f0a1fe197430cc28f6ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karl=20Erik=20=C3=95unapuu?= Date: Tue, 19 May 2020 15:23:00 +0300 Subject: [PATCH] Reserved: Respect other domain statuses --- app/jobs/update_whois_record_job.rb | 6 ++++-- app/models/reserved_domain.rb | 17 +++++++++++------ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/app/jobs/update_whois_record_job.rb b/app/jobs/update_whois_record_job.rb index 4740a12cb..4d41a70d0 100644 --- a/app/jobs/update_whois_record_job.rb +++ b/app/jobs/update_whois_record_job.rb @@ -47,8 +47,10 @@ class UpdateWhoisRecordJob < Que::Job end def delete_reserved(name) - Domain.where(name: name).any? - Whois::Record.where(name: name).delete_all + Whois::Record.where(name: name).each do |r| + r.json['status'] = r.json['Reserved'].delete_if { |status| status == 'Reserved' } + r.json['status'].blank? ? r.destroy : r.save + end end def delete_blocked(name) diff --git a/app/models/reserved_domain.rb b/app/models/reserved_domain.rb index 9ee85548b..6ca22887b 100644 --- a/app/models/reserved_domain.rb +++ b/app/models/reserved_domain.rb @@ -51,17 +51,22 @@ class ReservedDomain < ApplicationRecord return if Domain.where(name: name).any? wr = Whois::Record.find_or_initialize_by(name: name) - wr.json = @json = generate_json # we need @json to bind to class + wr.json = @json = generate_json(wr) # we need @json to bind to class wr.save end alias_method :update_whois_record, :generate_data - def generate_json - h = HashWithIndifferentAccess.new - h[:name] = self.name - h[:status] = ['Reserved'] - h + def generate_json(record) + h = HashWithIndifferentAccess.new(name: name, status: ['Reserved']) + return h if record.json.blank? + + status_arr = (record.json['status'] ||= []) + return record.json if status_arr.include? 'Reserved' + + status_arr.push('Reserved') + record.json['status'] = status_arr + record.json end def remove_data