Class: MixedGauge::ShardRepository

Inherits:
Object
  • Object
show all
Defined in:
lib/mixed_gauge/shard_repository.rb

Overview

Manages generated AR models

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(cluster_config, base_class) ⇒ ShardRepository

Returns a new instance of ShardRepository.

Parameters:

  • cluster_config (ClusterConfig)
  • base_class (Class)

    A AR Model



8
9
10
11
12
13
14
15
# File 'lib/mixed_gauge/shard_repository.rb', line 8

def initialize(cluster_config, base_class)
  @base_class = base_class

  shards = cluster_config.connection_registry.map do |slot_range, connection_name|
    [connection_name, generate_model_for_shard(connection_name, slot_range)]
  end
  @shards = Hash[shards]
end

Instance Attribute Details

#base_classObject (readonly)

Returns the value of attribute base_class.



4
5
6
# File 'lib/mixed_gauge/shard_repository.rb', line 4

def base_class
  @base_class
end

Instance Method Details

#allArray<Class>

Returns:

  • (Array<Class>)


30
31
32
# File 'lib/mixed_gauge/shard_repository.rb', line 30

def all
  @shards.values
end

#fetch(connection_name) ⇒ Class

Returns A model class for this shard.

Parameters:

  • connection_name (Symbol)

Returns:

  • (Class)

    A model class for this shard



19
20
21
# File 'lib/mixed_gauge/shard_repository.rb', line 19

def fetch(connection_name)
  @shards.fetch(connection_name)
end

#fetch_by_slots(assigned_slots) ⇒ Class?

Returns A AR model class.

Parameters:

  • slots (Range)

Returns:

  • (Class, nil)

    A AR model class.



25
26
27
# File 'lib/mixed_gauge/shard_repository.rb', line 25

def fetch_by_slots(assigned_slots)
  @shards.find { |_, model| model.assigned_slots == assigned_slots }[1]
end