class SharedSettings::Persistence::Redis

Constants

PREFIX

Public Class Methods

new(client) click to toggle source
# File lib/shared_settings/persistence/redis.rb, line 6
def initialize(client)
  @client = client
end

Public Instance Methods

all() click to toggle source
# File lib/shared_settings/persistence/redis.rb, line 36
def all
  setting_keys = @client.scan_each(match: prefixed_name('*')).to_a

  setting_keys.map do |key|
    setting_name = key.split("#{PREFIX}:").last

    get(setting_name)
  end
end
delete(name) click to toggle source
# File lib/shared_settings/persistence/redis.rb, line 46
def delete(name)
  @client.del(prefixed_name(name))

  true
end
get(name) click to toggle source
# File lib/shared_settings/persistence/redis.rb, line 21
def get(name)
  stored_value = @client.hgetall(prefixed_name(name))

  if stored_value.keys.any?
    return SharedSettings::Setting.new(
      stored_value['name'],
      stored_value['type'],
      stored_value['value'],
      stored_value['encrypted'] == '1'
    )
  end

  raise SettingNotFoundError
end
put(serialized_setting) click to toggle source
# File lib/shared_settings/persistence/redis.rb, line 10
def put(serialized_setting)
  @client.hset(prefixed_name(serialized_setting.name), {
    'name' => serialized_setting.name,
    'type' => serialized_setting.type,
    'value' => serialized_setting.value,
    'encrypted' => serialized_setting.encrypted ? '1' : '0'
  })

  serialized_setting.name
end

Private Instance Methods

prefixed_name(name) click to toggle source
# File lib/shared_settings/persistence/redis.rb, line 54
def prefixed_name(name)
  "#{PREFIX}:#{name}"
end