# frozen_string_literal: true

# == Schema Information
#
# Table name: address_endpoints
#
#  id           :integer          not null, primary key
#  server_id    :integer
#  uuid         :string(255)
#  address      :string(255)
#  last_used_at :datetime
#  created_at   :datetime         not null
#  updated_at   :datetime         not null
#

class AddressEndpoint < ApplicationRecord

  include HasUUID

  belongs_to :server
  has_many :routes, as: :endpoint
  has_many :additional_route_endpoints, dependent: :destroy, as: :endpoint

  validates :address, presence: true, format: { with: /@/ }, uniqueness: { scope: [:server_id], message: "has already been added", case_sensitive: false }

  before_destroy :update_routes

  def mark_as_used
    update_column(:last_used_at, Time.now)
  end

  def update_routes
    routes.each { |r| r.update(endpoint: nil, mode: "Reject") }
  end

  def description
    address
  end

  def domain
    address.split("@", 2).last
  end

end
