Class: SolidQueueTui::Actions::DiscardJob

Inherits:
Object
  • Object
show all
Defined in:
lib/solid_queue_tui/actions/discard_job.rb

Class Method Summary collapse

Class Method Details

.call(failed_execution_id) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/solid_queue_tui/actions/discard_job.rb', line 6

def self.call(failed_execution_id)
  conn = ActiveRecord::Base.connection

  row = conn.select_one(
    "SELECT fe.id, fe.job_id FROM solid_queue_failed_executions fe " \
    "WHERE fe.id = #{conn.quote(failed_execution_id.to_i)}"
  )
  return false unless row

  conn.transaction do
    # Remove the failed execution
    conn.execute(
      "DELETE FROM solid_queue_failed_executions WHERE id = #{conn.quote(failed_execution_id.to_i)}"
    )

    # Mark the job as finished (discarded)
    conn.execute(
      "UPDATE solid_queue_jobs SET finished_at = #{conn.quote(Time.now.utc.iso8601)} " \
      "WHERE id = #{conn.quote(row['job_id'])}"
    )
  end

  true
rescue => e
  false
end