require 'open-uri'

class Training::Video < ApplicationRecord
  include Cacheable

  belongs_to :category, touch: true

  validates :name, presence: true, length: { maximum: 128 }
  validates :url, presence: true
  validates :url, format: URI::DEFAULT_PARSER.make_regexp(['http', 'https'])

  validate :valid_url

  scope :by_categories, ->(ids) { where(category_id: ids) if ids }

  private
    def set_cache_keys
      self.cache_keys = ["training/videos/#{category_id}"]
    end

    def valid_url
      open(url).status
    rescue
      errors.add(:url, 'invalid')
    end
end
