Class: Railbox::Mutators::TransactionalOutboxMutator

Inherits:
Object
  • Object
show all
Defined in:
lib/railbox/mutators/transactional_outbox_mutator.rb

Class Method Summary collapse

Class Method Details

.create(attributes) ⇒ Object



6
7
8
# File 'lib/railbox/mutators/transactional_outbox_mutator.rb', line 6

def create(attributes)
  TransactionalOutbox.create!(attributes)
end

.update(record, attributes) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/railbox/mutators/transactional_outbox_mutator.rb', line 10

def update(record, attributes)
  record.assign_attributes(attributes)

  if record.status == 'in_progress'
    record.attempts += 1

    if record.attempts >= Railbox.configuration.max_attempts
      record.status = 'failed'
    else
      record.retry_at = (Railbox.configuration.retry_strategy[record.attempts - 1] || Railbox.configuration.retry_strategy.last).from_now
    end
  end

  record.save!
  record
end