Module: CleverSequence::InMemoryBackend
- Defined in:
- lib/demo_mode/clever_sequence/in_memory_backend.rb
Class Method Summary collapse
- .nextval(klass, attribute, block) ⇒ Object
- .reset! ⇒ Object
- .sequence_state ⇒ Object
- .starting_value(klass, attribute, block) ⇒ Object
- .with_sequence_adjustment ⇒ Object
Class Method Details
.nextval(klass, attribute, block) ⇒ Object
6 7 8 9 |
# File 'lib/demo_mode/clever_sequence/in_memory_backend.rb', line 6 def nextval(klass, attribute, block) key = [klass.name, attribute.to_s] sequence_state[key] = current_value(klass, attribute, block, key) + 1 end |
.reset! ⇒ Object
11 12 13 |
# File 'lib/demo_mode/clever_sequence/in_memory_backend.rb', line 11 def reset! @sequence_state = {} end |
.sequence_state ⇒ Object
32 33 34 |
# File 'lib/demo_mode/clever_sequence/in_memory_backend.rb', line 32 def sequence_state @sequence_state ||= {} end |
.starting_value(klass, attribute, block) ⇒ Object
15 16 17 18 19 20 21 22 23 |
# File 'lib/demo_mode/clever_sequence/in_memory_backend.rb', line 15 def starting_value(klass, attribute, block) column_name = resolve_column_name(klass, attribute) if column_exists?(klass, column_name) LowerBoundFinder.new(klass, column_name, block).lower_bound else 0 end end |
.with_sequence_adjustment ⇒ Object
25 26 27 28 29 30 |
# File 'lib/demo_mode/clever_sequence/in_memory_backend.rb', line 25 def with_sequence_adjustment(**) # No-op for InMemoryBackend. After reset!, nextval already # recalculates from the database via starting_value/LowerBoundFinder, # which finds the correct lower bound past existing data. yield end |