module ActiveRecord::Sharding::Sequencer::ClassMethods
Public Instance Methods
current_sequence_id()
click to toggle source
# File lib/active_record/sharding/sequencer.rb, line 29 def current_sequence_id execute_sql "id" end
execute_sql(last_insert_id_args)
click to toggle source
# File lib/active_record/sharding/sequencer.rb, line 40 def execute_sql(last_insert_id_args) sequencer_klass = sequencer_repository.fetch(sequencer_name) connection = sequencer_klass.connection connection.execute "UPDATE `#{sequencer_config.table_name}` SET id = LAST_INSERT_ID(#{last_insert_id_args})", sequencer_klass.name res = connection.execute "SELECT LAST_INSERT_ID()", sequencer_klass.name new_id = res.first.first.to_i new_id end
next_sequence_id(offset = 1)
click to toggle source
# File lib/active_record/sharding/sequencer.rb, line 33 def next_sequence_id(offset = 1) raise NegativeNumberOffsetError if offset < 1 sequence_id = execute_sql "id +#{offset}" raise ActiveRecord::Sharding::InvalidSequenceId if sequence_id.zero? sequence_id end
use_sequencer(name)
click to toggle source
# File lib/active_record/sharding/sequencer.rb, line 22 def use_sequencer(name) self.sequencer_name = name self.sequencer_config = ActiveRecord::Sharding.config.fetch_sequencer_config name self.sequencer_repository = ActiveRecord::Sharding::SequencerRepository.new sequencer_config, self self.abstract_class = true end