Class: Resque::Mcp::Tools::QueueStats

Inherits:
Base
  • Object
show all
Defined in:
lib/resque/mcp/tools/queue_stats.rb

Constant Summary

Constants inherited from Base

Base::ARGS_FULL_MAX, Base::ARGS_PREVIEW_MAX, Base::BACKTRACE_MAX_FRAMES, Base::ERROR_TRUNCATE_MAX, Base::LIMIT_MAX

Class Method Summary collapse

Class Method Details

.call(server_context:, queue: nil, include_jobs: false, offset: 0, limit: 20) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/resque/mcp/tools/queue_stats.rb', line 21

def self.call(server_context:, queue: nil, include_jobs: false, offset: 0, limit: 20, **)
  if queue.nil?
    return error_response("include_jobs requires queue") if include_jobs
    return success_response({queues: adapter(server_context).queues}, server_context)
  end

  unless include_jobs
    size = adapter(server_context).queue_size(queue)
    return success_response({queue: queue, size: size}, server_context)
  end

  clamped = clamp_limit(limit)
  result = adapter(server_context).peek(queue, offset: offset, limit: clamped)
  jobs = result[:jobs].map do |job|
    {class: job.class_name, args_preview: args_preview(job)}
  end
  success_response({
    queue: queue,
    size: result[:size],
    jobs: jobs,
    page: page_envelope(
      total: result[:size], offset: offset, limit: clamped,
      returned: jobs.size, requested_limit: limit
    )
  }, server_context)
rescue Adapter::UnknownQueueError => e
  error_response(e.message)
end