21
1
Fork 0
mirror of https://github.com/Evolix/chexpire.git synced 2024-05-18 08:28:39 +02:00
chexpire/app/models/notification.rb

46 lines
1.3 KiB
Ruby
Raw Permalink Normal View History

# Copyright (C) 2018 Colin Darie <colin@darie.eu>, 2018 Jeremy Lecour <jlecour@evolix.fr>, 2018 Evolix <info@evolix.fr>
# License: GNU AGPL-3+ (see full text in LICENSE file)
2018-05-31 20:49:06 +02:00
# == Schema Information
#
# Table name: notifications
#
# id :bigint(8) not null, primary key
# channel :integer default("email"), not null
# checks_count :integer default(0), not null
# interval :integer not null
# label :string(255)
# recipient :string(255) not null
# created_at :datetime not null
# updated_at :datetime not null
# check_id :bigint(8)
# user_id :bigint(8)
2018-05-31 20:49:06 +02:00
#
# Indexes
#
# index_notifications_on_check_id (check_id)
# index_notifications_on_user_id (user_id)
2018-05-31 20:49:06 +02:00
#
# Foreign Keys
#
# fk_rails_... (check_id => checks.id)
# fk_rails_... (user_id => users.id)
2018-05-31 20:49:06 +02:00
#
class Notification < ApplicationRecord
belongs_to :user
2018-08-31 10:06:16 +02:00
has_many :check_notifications, dependent: :destroy
has_many :checks, -> { order(domain_expires_at: :asc) }, through: :check_notifications
2018-05-31 20:49:06 +02:00
2018-06-04 14:06:37 +02:00
enum channel: [:email]
2018-05-31 20:49:06 +02:00
validates :channel, presence: true
validates :interval, numericality: { only_integer: true, greater_than_or_equal_to: 1 }
2018-06-04 14:06:37 +02:00
validates :recipient, presence: true
def notifical_label
return label if label.present?
"#{recipient} (#{interval})"
end
2018-05-31 20:49:06 +02:00
end