class DbCharmer::Sharding::Method::Range

Attributes

ranges[RW]

Public Class Methods

new(config) click to toggle source
# File lib/db_charmer/sharding/method/range.rb, line 7
def initialize(config)
  @ranges = config[:ranges] ? config[:ranges].clone : raise(ArgumentError, "No :ranges defined!")
end

Public Instance Methods

shard_connections() click to toggle source
# File lib/db_charmer/sharding/method/range.rb, line 27
def shard_connections
  ranges.values.uniq
end
shard_for_key(key) click to toggle source
# File lib/db_charmer/sharding/method/range.rb, line 11
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
support_default_shard?() click to toggle source
# File lib/db_charmer/sharding/method/range.rb, line 23
def support_default_shard?
  ranges.has_key?(:default)
end