lib/cache/repositories/splits_repository.rb in splitclient-rb-3.1.0.pre.rc5 vs lib/cache/repositories/splits_repository.rb in splitclient-rb-3.1.0.pre.rc6

- old
+ new

@@ -2,10 +2,12 @@ module SplitIoClient module Cache module Repositories class SplitsRepository < Repository + SPLITS_SLICE = 10 + def initialize(adapter) @adapter = adapter @adapter.set_string(namespace_key('split.till'), '-1') @adapter.initialize_map(namespace_key('segments.registered')) @@ -17,14 +19,31 @@ def remove_split(name) @adapter.delete(namespace_key("split.#{name}")) end + def get_splits(names, slice = SPLITS_SLICE) + splits = {} + + names.each_slice(slice) do |splits_slice| + splits.merge!( + @adapter + .multiple_strings(splits_slice.map { |name| namespace_key("split.#{name}") }) + .map { |name, data| [name.gsub(namespace_key('split.'), ''), data] }.to_h + ) + end + + splits.map do |name, data| + parsed_data = data ? JSON.parse(data, symbolize_names: true) : nil + [name.to_sym, parsed_data] + end.to_h + end + def get_split(name) split = @adapter.string(namespace_key("split.#{name}")) - JSON.parse(split, symbolize_names: true) + JSON.parse(split, symbolize_names: true) if split end def splits splits_hash = {} @@ -54,9 +73,13 @@ return if names.nil? || names.empty? names.each do |name| @adapter.add_to_set(namespace_key('segments.registered'), name) end + end + + def exists?(name) + @adapter.exists?(namespace_key("split.#{name}")) end end end end end