Class: SharedSettings::Persistence::Redis

Inherits:
Object
  • Object
show all
Defined in:
lib/shared_settings/persistence/redis.rb

Constant Summary collapse

PREFIX =
'shared_settings'.freeze

Instance Method Summary collapse

Constructor Details

#initialize(client) ⇒ Redis

Returns a new instance of Redis.



6
7
8
# File 'lib/shared_settings/persistence/redis.rb', line 6

def initialize(client)
  @client = client
end

Instance Method Details

#allObject



36
37
38
39
40
41
42
43
44
# 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) ⇒ Object



46
47
48
49
50
# File 'lib/shared_settings/persistence/redis.rb', line 46

def delete(name)
  @client.del(prefixed_name(name))

  true
end

#get(name) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
# 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) ⇒ Object



10
11
12
13
14
15
16
17
18
19
# 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