Class: PatientHttp::SolidQueue::TaskHandler

Inherits:
TaskHandler
  • Object
show all
Defined in:
lib/patient_http/solid_queue/task_handler.rb

Overview

Active Job implementation of TaskHandler.

Handles task lifecycle operations using Active Job for job management:

  • Completion and error callbacks are triggered via CallbackJob
  • Large payloads are stored via ExternalStorage before enqueuing
  • Job retry uses ActiveJob::Base.deserialize

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(active_job_data) ⇒ TaskHandler

Returns a new instance of TaskHandler.



14
15
16
# File 'lib/patient_http/solid_queue/task_handler.rb', line 14

def initialize(active_job_data)
  @active_job_data = active_job_data
end

Instance Attribute Details

#active_job_dataObject (readonly)

Returns the value of attribute active_job_data.



12
13
14
# File 'lib/patient_http/solid_queue/task_handler.rb', line 12

def active_job_data
  @active_job_data
end

Instance Method Details

#job_idObject



34
35
36
# File 'lib/patient_http/solid_queue/task_handler.rb', line 34

def job_id
  @active_job_data["job_id"]
end

#on_complete(response, callback) ⇒ Object



18
19
20
21
22
# File 'lib/patient_http/solid_queue/task_handler.rb', line 18

def on_complete(response, callback)
  data = store_if_needed(response.as_json)
  CallbackJob.perform_later(data, "response", callback)
  delete_stored_request_payload
end

#on_error(error, callback) ⇒ Object



24
25
26
27
28
# File 'lib/patient_http/solid_queue/task_handler.rb', line 24

def on_error(error, callback)
  data = store_if_needed(error.as_json)
  CallbackJob.perform_later(data, "error", callback)
  delete_stored_request_payload
end

#retryObject



30
31
32
# File 'lib/patient_http/solid_queue/task_handler.rb', line 30

def retry
  ActiveJob::Base.deserialize(@active_job_data).tap { |j| j.executions = 0 }.enqueue
end

#worker_classObject



38
39
40
# File 'lib/patient_http/solid_queue/task_handler.rb', line 38

def worker_class
  PatientHttp::ClassHelper.resolve_class_name(@active_job_data["job_class"])
end