Class: SplitIoClient::Cache::Repositories::SplitsRepository
- Inherits:
-
SplitIoClient::Cache::Repository
- Object
- SplitIoClient::Cache::Repository
- SplitIoClient::Cache::Repositories::SplitsRepository
- Defined in:
- lib/splitclient-rb/cache/repositories/splits_repository.rb
Instance Attribute Summary collapse
-
#adapter ⇒ Object
readonly
Returns the value of attribute adapter.
Instance Method Summary collapse
- #add_split(split) ⇒ Object
- #clear ⇒ Object
- #exists?(name) ⇒ Boolean
- #get_change_number ⇒ Object
- #get_split(name) ⇒ Object
- #get_splits(names) ⇒ Object
-
#initialize(adapter) ⇒ SplitsRepository
constructor
A new instance of SplitsRepository.
- #not_ready! ⇒ Object
- #ready! ⇒ Object
- #ready? ⇒ Boolean
- #remove_split(name) ⇒ Object
- #set_change_number(since) ⇒ Object
- #set_segment_names(names) ⇒ Object
-
#split_names ⇒ Object
Return an array of Split Names excluding control keys like splits.till.
- #splits ⇒ Object
Methods inherited from SplitIoClient::Cache::Repository
Constructor Details
#initialize(adapter) ⇒ SplitsRepository
Returns a new instance of SplitsRepository.
9 10 11 12 13 14 15 |
# File 'lib/splitclient-rb/cache/repositories/splits_repository.rb', line 9 def initialize(adapter) @adapter = adapter unless SplitIoClient.configuration.mode == :consumer @adapter.set_string(namespace_key('.splits.till'), '-1') @adapter.initialize_map(namespace_key('.segments.registered')) end end |
Instance Attribute Details
#adapter ⇒ Object (readonly)
Returns the value of attribute adapter.
7 8 9 |
# File 'lib/splitclient-rb/cache/repositories/splits_repository.rb', line 7 def adapter @adapter end |
Instance Method Details
#add_split(split) ⇒ Object
17 18 19 20 21 |
# File 'lib/splitclient-rb/cache/repositories/splits_repository.rb', line 17 def add_split(split) return unless split[:name] @adapter.set_string(namespace_key(".split.#{split[:name]}"), split.to_json) end |
#clear ⇒ Object
96 97 98 |
# File 'lib/splitclient-rb/cache/repositories/splits_repository.rb', line 96 def clear @adapter.clear(namespace_key) end |
#exists?(name) ⇒ Boolean
80 81 82 |
# File 'lib/splitclient-rb/cache/repositories/splits_repository.rb', line 80 def exists?(name) @adapter.exists?(namespace_key(".split.#{name}")) end |
#get_change_number ⇒ Object
68 69 70 |
# File 'lib/splitclient-rb/cache/repositories/splits_repository.rb', line 68 def get_change_number @adapter.string(namespace_key('.splits.till')) end |
#get_split(name) ⇒ Object
42 43 44 45 46 |
# File 'lib/splitclient-rb/cache/repositories/splits_repository.rb', line 42 def get_split(name) split = @adapter.string(namespace_key(".split.#{name}")) JSON.parse(split, symbolize_names: true) if split end |
#get_splits(names) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/splitclient-rb/cache/repositories/splits_repository.rb', line 27 def get_splits(names) splits = {} split_names = names.map { |name| namespace_key(".split.#{name}") } splits.merge!( @adapter .multiple_strings(split_names) .map { |name, data| [name.gsub(namespace_key('.split.'), ''), data] }.to_h ) splits.map do |name, data| parsed_data = data ? JSON.parse(data, symbolize_names: true) : nil [name.to_sym, parsed_data] end.to_h end |
#not_ready! ⇒ Object
88 89 90 |
# File 'lib/splitclient-rb/cache/repositories/splits_repository.rb', line 88 def not_ready! @adapter.set_string(namespace_key('.splits.ready'), -1) end |
#ready! ⇒ Object
92 93 94 |
# File 'lib/splitclient-rb/cache/repositories/splits_repository.rb', line 92 def ready! @adapter.set_string(namespace_key('.splits.ready'), Time.now.utc.to_i) end |
#ready? ⇒ Boolean
84 85 86 |
# File 'lib/splitclient-rb/cache/repositories/splits_repository.rb', line 84 def ready? @adapter.string(namespace_key('.splits.ready')).to_i != -1 end |
#remove_split(name) ⇒ Object
23 24 25 |
# File 'lib/splitclient-rb/cache/repositories/splits_repository.rb', line 23 def remove_split(name) @adapter.delete(namespace_key(".split.#{name}")) end |
#set_change_number(since) ⇒ Object
64 65 66 |
# File 'lib/splitclient-rb/cache/repositories/splits_repository.rb', line 64 def set_change_number(since) @adapter.set_string(namespace_key('.splits.till'), since) end |
#set_segment_names(names) ⇒ Object
72 73 74 75 76 77 78 |
# File 'lib/splitclient-rb/cache/repositories/splits_repository.rb', line 72 def set_segment_names(names) return if names.nil? || names.empty? names.each do |name| @adapter.add_to_set(namespace_key('.segments.registered'), name) end end |
#split_names ⇒ Object
Return an array of Split Names excluding control keys like splits.till
59 60 61 62 |
# File 'lib/splitclient-rb/cache/repositories/splits_repository.rb', line 59 def split_names @adapter.find_strings_by_prefix(namespace_key('.split.')) .map { |split| split.gsub(namespace_key('.split.'), '') } end |
#splits ⇒ Object
48 49 50 51 52 53 54 55 56 |
# File 'lib/splitclient-rb/cache/repositories/splits_repository.rb', line 48 def splits splits_hash = {} split_names.each do |name| splits_hash[name] = get_split(name) end splits_hash end |