Class: SolidQueueTui::Actions::DispatchScheduledJob

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

Class Method Summary collapse

Class Method Details

.call(job_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
32
# File 'lib/solid_queue_tui/actions/dispatch_scheduled_job.rb', line 6

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

  row = conn.select_one(
    "SELECT se.id, se.job_id, j.queue_name, j.priority " \
      "FROM solid_queue_scheduled_executions se " \
      "JOIN solid_queue_jobs j ON j.id = se.job_id " \
      "WHERE j.id = #{conn.quote(job_id.to_i)}"
  )
  return false unless row

  conn.transaction do
    conn.execute(
      "INSERT INTO solid_queue_ready_executions (job_id, queue_name, priority, created_at) " \
        "VALUES (#{conn.quote(row['job_id'])}, #{conn.quote(row['queue_name'])}, " \
        "#{conn.quote(row['priority'])}, #{conn.quote(Time.now.utc.iso8601)})"
    )

    conn.execute(
      "DELETE FROM solid_queue_scheduled_executions WHERE id = #{conn.quote(row['id'])}"
    )
  end

  true
rescue => e
  false
end