class MarjAdapter

def query(*args, **kwargs)

query('123') # Returns the job with job_id '123' or nil if no such job exists
query(job_id: '123') # Returns the job with job_id '123' or nil if no such job exists
query(queue_name: 'foo') # Returns all jobs in the 'foo' queue
query(:due, job_class: Foo) # Returns jobs which are due to be executed with job_class Foo
query(job_class: Foo) # Returns all jobs with job_class Foo
query(:due, limit: 10) # Returns at most 10 jobs which are due to be executed
query(:due) # Returns jobs which are due to be executed
query(:all) # Returns all jobs
query # Returns all jobs
Example usage:

By default jobs are ordered by when they should be executed.

- If +:order+ is specified, the jobs are ordered by the given attribute.
- If +:limit+ is specified, the maximum number of jobs is limited.
- If only a job ID is specified, the corresponding job is returned.
- Symbol arguments are treated as +ActiveRecord+ scopes.
Queries enqueued jobs. Similar to +ActiveRecord.where+ with a few additional features:
def query(*args, **kwargs)
  args, kwargs = args.dup, kwargs.dup.symbolize_keys
  kwargs = kwargs.merge(job_id: kwargs.delete(:id)) if kwargs.key?(:id)
  kwargs[:job_id] = args.shift if args.size == 1 && args.first.is_a?(String) && args.first.match(JOB_ID_REGEX)
  if args.empty? && kwargs.size == 1 && kwargs.key?(:job_id)
    return record_class.find_by(job_id: kwargs[:job_id])&.to_job
  end
  symbol_args, args = args.partition { _1.is_a?(Symbol) }
  symbol_args.delete(:all)
  limit = kwargs.delete(:limit)
  relation = record_class.all
  relation = relation.order(kwargs.delete(:order)) if kwargs.key?(:order)
  relation = relation.where(*args, **kwargs) if args.any? || kwargs.any?
  relation = relation.limit(limit) if limit
  relation = relation.send(symbol_args.shift) while symbol_args.any?
  relation = relation.by_due_date if relation.is_a?(ActiveRecord::Relation) && relation.order_values.empty?
  if relation.is_a?(Enumerable)
    relation.map(&:to_job)
  elsif relation.is_a?(record_class)
    relation.to_job
  else
    relation
  end
end