lib/splitclient-rb/cache/repositories/flag_sets/memory_repository.rb



require 'concurrent'

module SplitIoClient
  module Cache
    module Repositories
      class MemoryFlagSetsRepository
        def initialize(flag_sets = [])
          @sets_feature_flag_map = {}
          flag_sets.each{ |flag_set| @sets_feature_flag_map[flag_set] = Set[] }
        end

        def flag_set_exist?(flag_set)
          @sets_feature_flag_map.key?(flag_set)
        end

        def get_flag_sets(flag_sets)
          to_return = Array.new
          flag_sets.each { |flag_set| to_return.concat(@sets_feature_flag_map[flag_set].to_a)}
          to_return.uniq
        end

        def add_flag_set(flag_set)
          @sets_feature_flag_map[flag_set] = Set[] if !flag_set_exist?(flag_set)
        end

        def remove_flag_set(flag_set)
          @sets_feature_flag_map.delete(flag_set) if flag_set_exist?(flag_set)
        end

        def add_feature_flag_to_flag_set(flag_set, feature_flag)
          @sets_feature_flag_map[flag_set].add(feature_flag) if flag_set_exist?(flag_set)
        end

        def remove_feature_flag_from_flag_set(flag_set, feature_flag)
          @sets_feature_flag_map[flag_set].delete(feature_flag) if flag_set_exist?(flag_set)
        end
      end
    end
  end
end