Class: Asyncapi::Client::UpdateJob

Inherits:
Object
  • Object
show all
Defined in:
app/services/asyncapi/client/update_job.rb

Class Method Summary collapse

Class Method Details

.execute(job:, params:) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'app/services/asyncapi/client/update_job.rb', line 4

def self.execute(job:, params:)
  sanitized_params = params.reject { |key, value| key.to_sym == :status }
  job.assign_attributes(sanitized_params)
  status = params[:status]

  if may_transition?(job, to: status)
    transition(job, to: status)
    if job.status_changed? && job.save
      ActiveRecord::Base.after_transaction do
        JobStatusWorker.perform_async(job.id)
      end
    else
      job.save
    end
  elsif !may_transition?(job, to: status) && job.status == status
    job.save
  end
end