Module: CleverSequence::InMemoryBackend

Defined in:
lib/demo_mode/clever_sequence/in_memory_backend.rb

Class Method Summary collapse

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_stateObject



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_adjustmentObject



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