Class: TransactionalOutbox::Database::Adapters::Null

Inherits:
Base
  • Object
show all
Defined in:
lib/transactional_outbox/database/adapters/null.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from InstanceMethods

#initialize

Class Method Details

.clear_storeObject



9
# File 'lib/transactional_outbox/database/adapters/null.rb', line 9

def clear_store = @dataset = {}

.datasetObject



8
# File 'lib/transactional_outbox/database/adapters/null.rb', line 8

def dataset = @dataset ||= {}

Instance Method Details

#delete_events(ids) ⇒ Object



32
33
34
35
36
# File 'lib/transactional_outbox/database/adapters/null.rb', line 32

def delete_events(ids)
  ids.each { |id| dataset.delete(id) }

  true
end

#fetch_events(queue_name, batch_size) ⇒ Object



22
23
24
# File 'lib/transactional_outbox/database/adapters/null.rb', line 22

def fetch_events(queue_name, batch_size)
  dataset.values.select { |row| row[:queue] == queue_name }.then { claimable_scope(_1) }.first(batch_size)
end

#fetch_queuesObject



26
# File 'lib/transactional_outbox/database/adapters/null.rb', line 26

def fetch_queues = dataset.values.then { claimable_scope(_1) }.map { |row| row[:queue] }.uniq

#insert_events(rows) ⇒ Object



14
15
16
17
18
19
20
# File 'lib/transactional_outbox/database/adapters/null.rb', line 14

def insert_events(rows)
  rows.each do |row|
    dataset[row[:id]] = row.merge(
      status: TransactionalOutbox::EVENT_NEW_STATUS, processing_started_at: current_time
    )
  end
end

#move_to_processing(ids) ⇒ Object



28
29
30
# File 'lib/transactional_outbox/database/adapters/null.rb', line 28

def move_to_processing(ids)
  ids.each { |id| dataset[id]&.merge!(status: TransactionalOutbox::EVENT_PROCESSING_STATUS) }
end

#transaction(*_options, &block) ⇒ Object



12
# File 'lib/transactional_outbox/database/adapters/null.rb', line 12

def transaction(*_options, &block) = block.call