Sha256: 0a2f63ba8e772274b9b1257b3953681ad295702cec623431ec11e4b7b63ee5ca

Contents?: true

Size: 814 Bytes

Versions: 29

Compression:

Stored size: 814 Bytes

Contents

module DbCharmer
  module Sharding
    module Method
      class Range
        attr_accessor :ranges

        def initialize(config)
          @ranges = config[:ranges] ? config[:ranges].clone : raise(ArgumentError, "No :ranges defined!")
        end

        def shard_for_key(key)
          return ranges[:default] if key == :default

          ranges.each do |range, shard|
            next if range == :default
            return shard if range.member?(key.to_i)
          end

          return ranges[:default] if ranges[:default]
          raise ArgumentError, "Invalid key value, no shards found for this key!"
        end

        def support_default_shard?
          ranges.has_key?(:default)
        end

        def shard_connections
          ranges.values.uniq
        end
      end
    end
  end
end

Version data entries

29 entries across 29 versions & 2 rubygems

Version Path
db-charmer-1.9.1 lib/db_charmer/sharding/method/range.rb
db-charmer-1.9.0 lib/db_charmer/sharding/method/range.rb
db-charmer-1.8.4 lib/db_charmer/sharding/method/range.rb
db-charmer-1.8.3 lib/db_charmer/sharding/method/range.rb
db-charmer-1.8.2 lib/db_charmer/sharding/method/range.rb
db-charmer-1.8.1 lib/db_charmer/sharding/method/range.rb
db-charmer-1.8.0 lib/db_charmer/sharding/method/range.rb
db-charmer-1.8.0.pre1 lib/db_charmer/sharding/method/range.rb
yam-db-charmer-1.7.4.14 lib/db_charmer/sharding/method/range.rb
yam-db-charmer-1.7.4.13 lib/db_charmer/sharding/method/range.rb
yam-db-charmer-1.7.4.10 lib/db_charmer/sharding/method/range.rb
yam-db-charmer-1.7.4.9 lib/db_charmer/sharding/method/range.rb
yam-db-charmer-1.7.4.8 lib/db_charmer/sharding/method/range.rb
yam-db-charmer-1.7.4.0 lib/db_charmer/sharding/method/range.rb
yam-db-charmer-1.7.01 lib/db_charmer/sharding/method/range.rb
db-charmer-1.7.1 lib/db_charmer/sharding/method/range.rb
db-charmer-1.7.0 lib/db_charmer/sharding/method/range.rb
db-charmer-1.7.0.pre7 lib/db_charmer/sharding/method/range.rb
db-charmer-1.7.0.pre6 lib/db_charmer/sharding/method/range.rb
db-charmer-1.7.0.pre5 lib/db_charmer/sharding/method/range.rb