Class: ActiveRecord::Turntable::Sequencer

Inherits:
Object
  • Object
show all
Extended by:
ActiveSupport::Autoload
Defined in:
lib/active_record/turntable/sequencer.rb,
lib/active_record/turntable/sequencer/api.rb,
lib/active_record/turntable/sequencer/mysql.rb,
lib/active_record/turntable/sequencer/barrage.rb

Direct Known Subclasses

Api, Barrage, Mysql

Defined Under Namespace

Classes: Api, Barrage, Mysql

Constant Summary collapse

@@sequence_types =
{
  :api => Api,
  :mysql => Mysql,
  :barrage => Barrage
}
@@sequences =
{}
@@tables =
{}

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.build(klass, sequence_name = nil, cluster_name = nil) ⇒ Object



26
27
28
29
30
31
# File 'lib/active_record/turntable/sequencer.rb', line 26

def self.build(klass, sequence_name = nil, cluster_name = nil)
  sequence_name ||= current_cluster_config_for(cluster_name || klass)["seq"].keys.first
  seq_config = current_cluster_config_for(cluster_name || klass)["seq"][sequence_name]
  seq_type = (seq_config["seq_type"] ? seq_config["seq_type"].to_sym : :mysql)
  @@tables[klass.table_name] ||= (@@sequences[sequence_name(klass.table_name, klass.primary_key)] ||= @@sequence_types[seq_type].new(klass, seq_config))
end

.has_sequencer?(table_name) ⇒ Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/active_record/turntable/sequencer.rb', line 33

def self.has_sequencer?(table_name)
  !!@@tables[table_name]
end

.sequence_name(table_name, pk) ⇒ Object



37
38
39
# File 'lib/active_record/turntable/sequencer.rb', line 37

def self.sequence_name(table_name, pk)
  "#{table_name}_#{pk || 'id'}_seq"
end

.table_name(seq_name) ⇒ Object



41
42
43
# File 'lib/active_record/turntable/sequencer.rb', line 41

def self.table_name(seq_name)
  seq_name.split('_').first
end

Instance Method Details

#current_sequence_valueObject

Raises:

  • (NotImplementedError)


49
50
51
# File 'lib/active_record/turntable/sequencer.rb', line 49

def current_sequence_value
  raise NotImplementedError
end

#next_sequence_valueObject

Raises:

  • (NotImplementedError)


45
46
47
# File 'lib/active_record/turntable/sequencer.rb', line 45

def next_sequence_value
  raise NotImplementedError
end