Class: ActiveRecord::Turntable::Sequencer
- Inherits:
-
Object
- Object
- ActiveRecord::Turntable::Sequencer
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
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
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_value ⇒ Object
49
50
51
|
# File 'lib/active_record/turntable/sequencer.rb', line 49
def current_sequence_value
raise NotImplementedError
end
|
#next_sequence_value ⇒ Object
45
46
47
|
# File 'lib/active_record/turntable/sequencer.rb', line 45
def next_sequence_value
raise NotImplementedError
end
|