Module: ActiveRecord::Sharding::Sequencer::ClassMethods

Defined in:
lib/active_record/sharding/sequencer.rb

Instance Method Summary collapse

Instance Method Details

#current_sequence_idObject



22
23
24
# File 'lib/active_record/sharding/sequencer.rb', line 22

def current_sequence_id
  execute_sql "id"
end

#execute_sql(last_insert_id_args) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/active_record/sharding/sequencer.rb', line 30

def execute_sql(last_insert_id_args)
  connection = sequencer_repository.fetch(sequencer_name).connection
  connection.execute "UPDATE `#{sequencer_config.table_name}` SET id = LAST_INSERT_ID(#{last_insert_id_args})"
  res = connection.execute "SELECT LAST_INSERT_ID()"
  new_id = res.first.first.to_i
  new_id
end

#next_sequence_idObject



26
27
28
# File 'lib/active_record/sharding/sequencer.rb', line 26

def next_sequence_id
  execute_sql "id +1"
end

#use_sequencer(name) ⇒ Object



15
16
17
18
19
20
# File 'lib/active_record/sharding/sequencer.rb', line 15

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