Class: SolidQueueTui::Data::JobsQuery
- Inherits:
-
Object
- Object
- SolidQueueTui::Data::JobsQuery
- Defined in:
- lib/solid_queue_tui/data/jobs_query.rb
Defined Under Namespace
Classes: Job
Class Method Summary collapse
- .count(status:, filter: nil, queue: nil) ⇒ Object
- .fetch(status:, filter: nil, queue: nil, limit: 100, offset: 0) ⇒ Object
- .fetch_blocked(filter: nil, queue: nil, limit: 100, offset: 0) ⇒ Object
- .fetch_claimed(filter: nil, queue: nil, limit: 100, offset: 0) ⇒ Object
- .fetch_finished(filter: nil, queue: nil, limit: 100, offset: 0) ⇒ Object
- .fetch_scheduled(filter: nil, queue: nil, limit: 100, offset: 0) ⇒ Object
Class Method Details
.count(status:, filter: nil, queue: nil) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/solid_queue_tui/data/jobs_query.rb', line 26 def self.count(status:, filter: nil, queue: nil) case status when "claimed" then count_scope(SolidQueue::ClaimedExecution.joins(:job), filter: filter, queue: queue) when "blocked" then count_scope(SolidQueue::BlockedExecution.joins(:job), filter: filter, queue: queue) when "scheduled" then count_scope(SolidQueue::ScheduledExecution.joins(:job), filter: filter, queue: queue) when "completed" then count_finished(filter: filter, queue: queue) else 0 end rescue => e 0 end |
.fetch(status:, filter: nil, queue: nil, limit: 100, offset: 0) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/solid_queue_tui/data/jobs_query.rb', line 14 def self.fetch(status:, filter: nil, queue: nil, limit: 100, offset: 0) case status when "claimed" then fetch_claimed(filter: filter, queue: queue, limit: limit, offset: offset) when "blocked" then fetch_blocked(filter: filter, queue: queue, limit: limit, offset: offset) when "scheduled" then fetch_scheduled(filter: filter, queue: queue, limit: limit, offset: offset) when "completed" then fetch_finished(filter: filter, queue: queue, limit: limit, offset: offset) else [] end rescue => e [] end |
.fetch_blocked(filter: nil, queue: nil, limit: 100, offset: 0) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/solid_queue_tui/data/jobs_query.rb', line 61 def self.fetch_blocked(filter: nil, queue: nil, limit: 100, offset: 0) scope = SolidQueue::BlockedExecution.joins(:job) scope = scope.merge(SolidQueue::Job.where(queue_name: queue)) if queue scope = apply_class_name_filter(scope, filter) scope = scope.order(job_id: :asc).offset(offset).limit(limit) scope.includes(:job).map do |be| job = be.job Job.new( id: job.id, queue_name: job.queue_name, class_name: job.class_name, priority: job.priority, status: "blocked", active_job_id: job.active_job_id, concurrency_key: job.concurrency_key, created_at: be.created_at, expires_at: be.expires_at ) end end |
.fetch_claimed(filter: nil, queue: nil, limit: 100, offset: 0) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/solid_queue_tui/data/jobs_query.rb', line 38 def self.fetch_claimed(filter: nil, queue: nil, limit: 100, offset: 0) scope = SolidQueue::ClaimedExecution.joins(:job) scope = scope.merge(SolidQueue::Job.where(queue_name: queue)) if queue scope = apply_class_name_filter(scope, filter) scope = scope.order(job_id: :asc).offset(offset).limit(limit) scope.includes(:job).map do |ce| job = ce.job Job.new( id: job.id, queue_name: job.queue_name, class_name: job.class_name, priority: job.priority, status: "claimed", active_job_id: job.active_job_id, concurrency_key: job.concurrency_key, created_at: job.created_at, worker_id: ce.process_id, started_at: ce.created_at ) end end |
.fetch_finished(filter: nil, queue: nil, limit: 100, offset: 0) ⇒ Object
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/solid_queue_tui/data/jobs_query.rb', line 105 def self.fetch_finished(filter: nil, queue: nil, limit: 100, offset: 0) scope = SolidQueue::Job.finished scope = scope.where(queue_name: queue) if queue scope = scope.where("class_name LIKE ?", "%#{filter}%") if filter.present? scope = scope.order(finished_at: :desc).offset(offset).limit(limit) scope.map do |job| Job.new( id: job.id, queue_name: job.queue_name, class_name: job.class_name, priority: job.priority, status: "completed", active_job_id: job.active_job_id, arguments: job.arguments, finished_at: job.finished_at, created_at: job.created_at ) end end |
.fetch_scheduled(filter: nil, queue: nil, limit: 100, offset: 0) ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/solid_queue_tui/data/jobs_query.rb', line 83 def self.fetch_scheduled(filter: nil, queue: nil, limit: 100, offset: 0) scope = SolidQueue::ScheduledExecution.joins(:job) scope = scope.merge(SolidQueue::Job.where(queue_name: queue)) if queue scope = apply_class_name_filter(scope, filter) scope = scope.order(scheduled_at: :asc, priority: :asc).offset(offset).limit(limit) scope.includes(:job).map do |se| job = se.job Job.new( id: job.id, queue_name: job.queue_name, class_name: job.class_name, priority: job.priority, status: "scheduled", active_job_id: job.active_job_id, arguments: job.arguments, scheduled_at: se.scheduled_at, created_at: job.created_at ) end end |