Class: Resque::Mcp::Tools::ListFailures

Inherits:
Base
  • Object
show all
Defined in:
lib/resque/mcp/tools/list_failures.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:, offset: 0, limit: 20, class_name: nil, queue: nil) ⇒ Object



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
49
50
51
52
# File 'lib/resque/mcp/tools/list_failures.rb', line 24

def self.call(server_context:, offset: 0, limit: 20, class_name: nil, queue: nil, **)
  clamped = clamp_limit(limit)
  result = adapter(server_context).failures(
    offset: offset, limit: clamped, class_name: class_name, queue: queue
  )
  failures = result[:records].map do |record|
    {
      index: record.index,
      failed_at: record.failed_at,
      queue: record.queue,
      class: record.job.class_name,
      args_preview: args_preview(record.job),
      exception: record.exception,
      error: truncated_error(record.error),
      retried_at: record.retried_at
    }
  end
  success_response({
    failures: failures,
    page: page_envelope(
      total: result[:total], offset: offset, limit: clamped,
      returned: failures.size, requested_limit: limit,
      has_more: result[:has_more], next_offset: result[:next_offset],
      total_note: result[:total_note]
    )
  }, server_context)
rescue Adapter::FailureQueueRequiredError, ArgumentError => e
  error_response(e.message)
end