Federated social network node, running on kosmos.social
https://kosmos.social
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
58 lines
1.3 KiB
58 lines
1.3 KiB
# frozen_string_literal: true |
|
# == Schema Information |
|
# |
|
# Table name: settings |
|
# |
|
# id :bigint(8) not null, primary key |
|
# var :string not null |
|
# value :text |
|
# thing_type :string |
|
# created_at :datetime |
|
# updated_at :datetime |
|
# thing_id :bigint(8) |
|
# |
|
|
|
class Setting < RailsSettings::Base |
|
source Rails.root.join('config', 'settings.yml') |
|
|
|
def to_param |
|
var |
|
end |
|
|
|
class << self |
|
def [](key) |
|
return super(key) unless rails_initialized? |
|
|
|
val = Rails.cache.fetch(cache_key(key, nil)) do |
|
db_val = object(key) |
|
|
|
if db_val |
|
default_value = default_settings[key] |
|
|
|
return default_value.with_indifferent_access.merge!(db_val.value) if default_value.is_a?(Hash) |
|
db_val.value |
|
else |
|
default_settings[key] |
|
end |
|
end |
|
val |
|
end |
|
|
|
def all_as_records |
|
vars = thing_scoped |
|
records = vars.index_by(&:var) |
|
|
|
default_settings.each do |key, default_value| |
|
next if records.key?(key) || default_value.is_a?(Hash) |
|
records[key] = Setting.new(var: key, value: default_value) |
|
end |
|
|
|
records |
|
end |
|
|
|
def default_settings |
|
return {} unless RailsSettings::Default.enabled? |
|
RailsSettings::Default.instance |
|
end |
|
end |
|
end
|
|
|