2018-05-29 10:28:03 +02:00
|
|
|
# == Schema Information
|
|
|
|
#
|
|
|
|
# Table name: checks
|
|
|
|
#
|
|
|
|
# id :bigint(8) not null, primary key
|
|
|
|
# active :boolean default(TRUE), not null
|
|
|
|
# comment :string(255)
|
|
|
|
# domain :string(255) not null
|
|
|
|
# domain_created_at :datetime
|
|
|
|
# domain_expire_at :datetime
|
|
|
|
# domain_updated_at :datetime
|
|
|
|
# kind :integer not null
|
|
|
|
# last_run_at :datetime
|
|
|
|
# last_success_at :datetime
|
|
|
|
# vendor :string(255)
|
|
|
|
# created_at :datetime not null
|
|
|
|
# updated_at :datetime not null
|
|
|
|
# user_id :bigint(8)
|
|
|
|
#
|
|
|
|
# Indexes
|
|
|
|
#
|
|
|
|
# index_checks_on_user_id (user_id)
|
|
|
|
#
|
|
|
|
# Foreign Keys
|
|
|
|
#
|
|
|
|
# fk_rails_... (user_id => users.id)
|
|
|
|
#
|
|
|
|
|
|
|
|
class Check < ApplicationRecord
|
|
|
|
belongs_to :user
|
2018-05-30 16:50:41 +02:00
|
|
|
has_many :logs, class_name: "CheckLog"
|
2018-05-29 10:28:03 +02:00
|
|
|
|
|
|
|
enum kind: [:domain, :ssl]
|
|
|
|
|
|
|
|
self.skip_time_zone_conversion_for_attributes = [
|
|
|
|
:domain_created_at,
|
|
|
|
:domain_updated_at,
|
|
|
|
:domain_expire_at,
|
|
|
|
]
|
|
|
|
|
|
|
|
validates :kind, presence: true
|
|
|
|
validates :domain, presence: true
|
2018-05-29 13:11:22 +02:00
|
|
|
validate :domain_created_at_past
|
|
|
|
validate :domain_updated_at_past
|
|
|
|
validates :comment, length: { maximum: 255 }
|
|
|
|
validates :vendor, length: { maximum: 255 }
|
|
|
|
|
2018-05-30 18:16:43 +02:00
|
|
|
after_save :enqueue_sync
|
|
|
|
|
2018-05-29 13:11:22 +02:00
|
|
|
protected
|
|
|
|
|
|
|
|
def domain_created_at_past
|
|
|
|
errors.add(:domain_created_at, :past) if domain_created_at.present? && domain_created_at.future?
|
|
|
|
end
|
|
|
|
|
|
|
|
def domain_updated_at_past
|
|
|
|
errors.add(:domain_updated_at, :past) if domain_updated_at.present? && domain_updated_at.future?
|
|
|
|
end
|
2018-05-30 18:16:43 +02:00
|
|
|
|
|
|
|
def enqueue_sync
|
|
|
|
return unless active?
|
|
|
|
return unless saved_changes.key?("domain")
|
|
|
|
|
|
|
|
WhoisSyncJob.perform_later(id) if domain?
|
|
|
|
end
|
2018-05-29 10:28:03 +02:00
|
|
|
end
|