class EduSetting < ApplicationRecord
  after_commit :expire_value_cache

  def value_cache_key
    self.class.value_cache_key(name)
  end

  def self.get(key)
    Rails.cache.fetch(value_cache_key(key), expires_in: 1.days) do
      find_by_name(key.to_s)&.value
    end
  end

  def self.value_cache_key(name)
    raise ArgumentError if name.blank?

    "educoder/edu-settings/#{name.to_s}"
  end

  private

  def expire_value_cache
    Rails.cache.write(value_cache_key, value)
  end
end