Module: ActiveRecord::Sharding::Sequencer::ClassMethods
- Defined in:
- lib/active_record/sharding/sequencer.rb
Instance Method Summary collapse
- #current_sequence_id ⇒ Object
- #execute_sql(last_insert_id_args) ⇒ Object
- #next_sequence_id ⇒ Object
- #use_sequencer(name) ⇒ Object
Instance Method Details
#current_sequence_id ⇒ Object
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_id ⇒ Object
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 |