Change user settings to be stored in a more optimal way (#23630)
Co-authored-by: Claire <claire.github-309c@sitedethib.com>
This commit is contained in:
parent
e7c3e55874
commit
a9b5598c97
36 changed files with 817 additions and 525 deletions
37
app/models/user_settings/dsl.rb
Normal file
37
app/models/user_settings/dsl.rb
Normal file
|
@ -0,0 +1,37 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module UserSettings::DSL
|
||||
module ClassMethods
|
||||
def setting(key, options = {})
|
||||
@definitions ||= {}
|
||||
|
||||
UserSettings::Setting.new(key, options).tap do |s|
|
||||
@definitions[s.key] = s
|
||||
end
|
||||
end
|
||||
|
||||
def namespace(key, &block)
|
||||
@definitions ||= {}
|
||||
|
||||
UserSettings::Namespace.new(key).configure(&block).tap do |n|
|
||||
@definitions.merge!(n.definitions)
|
||||
end
|
||||
end
|
||||
|
||||
def keys
|
||||
@definitions.keys
|
||||
end
|
||||
|
||||
def definition_for(key)
|
||||
@definitions[key.to_sym]
|
||||
end
|
||||
|
||||
def definition_for?(key)
|
||||
@definitions.key?(key.to_sym)
|
||||
end
|
||||
end
|
||||
|
||||
def self.included(base)
|
||||
base.extend ClassMethods
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue