Sha256: 41f20ce855179483c11a9273f853f164bd1941c141624cf4439a80dc152f3642

Contents?: true

Size: 880 Bytes

Versions: 3

Compression:

Stored size: 880 Bytes

Contents

module ActiveRecord
  module ShardFor
    class ClusterConfig
      attr_reader :name, :connection_registry

      # @param [Symbol] name
      def initialize(name)
        @name = name
        @connection_registry = {}
      end

      # @param [Object] key sharding key object for connection
      # @param [Symbol] connection_name
      # @raise [RuntimeError] when duplicate entry of  key
      def register(key, connection_name)
        raise RuntimeError.new, "#{key} is registered" if connection_registry.key?(key)
        connection_registry[key] = connection_name
      end

      # @return [Array<Symbol>] An array of connection name
      def connections
        connection_registry.values
      end

      # @param [Object] key
      # @return [Symbol] registered connection name
      def fetch(key)
        connection_registry.fetch(key)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
activerecord-shard_for-0.1.2 lib/activerecord/shard_for/cluster_config.rb
activerecord-shard_for-0.1.1 lib/activerecord/shard_for/cluster_config.rb
activerecord-shard_for-0.1.0 lib/activerecord/shard_for/cluster_config.rb