Class: SolidQueueTui::Data::QueuesQuery

Inherits:
Object
  • Object
show all
Defined in:
lib/solid_queue_tui/data/queues_query.rb

Defined Under Namespace

Classes: QueueInfo

Class Method Summary collapse

Class Method Details

.fetchObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/solid_queue_tui/data/queues_query.rb', line 11

def self.fetch
  conn = ActiveRecord::Base.connection

  queue_sizes = conn.select_rows(
    "SELECT queue_name, COUNT(*) FROM solid_queue_ready_executions GROUP BY queue_name ORDER BY queue_name"
  ).to_h { |name, count| [name, count.to_i] }

  all_queues = conn.select_values(
    "SELECT DISTINCT queue_name FROM solid_queue_jobs WHERE queue_name IS NOT NULL ORDER BY queue_name"
  )

  paused = conn.select_values("SELECT queue_name FROM solid_queue_pauses")

  all_queues.map do |name|
    QueueInfo.new(
      name: name,
      size: queue_sizes[name] || 0,
      paused: paused.include?(name)
    )
  end
rescue => e
  []
end