mirror of
https://github.com/internetee/registry.git
synced 2025-06-10 14:44:47 +02:00
40 lines
970 B
Ruby
40 lines
970 B
Ruby
module Concerns::Domain::Discardable
|
|
extend ActiveSupport::Concern
|
|
|
|
class_methods do
|
|
def discard_domains
|
|
domains = where('delete_at < ? AND ? != ALL(coalesce(statuses, array[]::varchar[])) AND' \
|
|
' ? != ALL(COALESCE(statuses, array[]::varchar[]))',
|
|
Time.zone.now,
|
|
DomainStatus::SERVER_DELETE_PROHIBITED,
|
|
DomainStatus::DELETE_CANDIDATE)
|
|
|
|
domains.each do |domain|
|
|
domain.discard
|
|
yield domain if block_given?
|
|
end
|
|
end
|
|
end
|
|
|
|
def discard
|
|
raise 'Domain is already discarded' if discarded?
|
|
|
|
statuses << DomainStatus::DELETE_CANDIDATE
|
|
transaction do
|
|
save(validate: false)
|
|
delete_later
|
|
end
|
|
end
|
|
|
|
def keep
|
|
statuses.delete(DomainStatus::DELETE_CANDIDATE)
|
|
transaction do
|
|
save(validate: false)
|
|
do_not_delete_later
|
|
end
|
|
end
|
|
|
|
def discarded?
|
|
statuses.include?(DomainStatus::DELETE_CANDIDATE)
|
|
end
|
|
end
|