Sha256: 350bba51d7a7b323cd022259e0569ee44f14ecf4eeb76403be03be2444bdb992

Contents?: true

Size: 1.37 KB

Versions: 3

Compression:

Stored size: 1.37 KB

Contents

module SplitIoClient
  module Cache
    module Repositories
      class SplitsRepository < Repository
        def initialize(adapter)
          @adapter = adapter

          @adapter[namespace_key('last_change')] = -1
          @adapter.initialize_map(namespace_key('splits'))
          @adapter.initialize_map(namespace_key('used_segment_names'))
        end

        def add_split(split)
          split_without_name = split.select { |k, _| k != :name }

          @adapter.add_to_map(namespace_key('splits'), split[:name], split_without_name)
        end

        def remove_split(name)
          @adapter.add_to_map(namespace_key('splits'), name, nil)
        end

        def get_split(name)
          @adapter.find_in_map(namespace_key('splits'), name)
        end

        def list_splits()
          @adapter[namespace_key('splits')]
        end

        def set_change_number(since)
          @adapter[namespace_key('last_change')] = since
        end

        def get_change_number
          @adapter[namespace_key('last_change')]
        end

        def set_segment_names(names)
          return if names.nil? || names.empty?

          names.each do |name|
            @adapter.add_to_map(namespace_key('used_segment_names'), name, 1)
          end
        end

        private

        def namespace_key(key)
          "splits_repository_#{key}"
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
splitclient-rb-3.0.3 lib/cache/repositories/splits_repository.rb
splitclient-rb-3.0.3.pre.rc2 lib/cache/repositories/splits_repository.rb
splitclient-rb-3.0.3.pre.rc1 lib/cache/repositories/splits_repository.rb