Sha256: 61b2865e62ffc819cb94d2bca3ad44bddef426dde3c96a44b2322cc5af21a864
Contents?: true
Size: 1.69 KB
Versions: 17
Compression:
Stored size: 1.69 KB
Contents
# frozen_string_literal: true module GoodJob class BaseFilter DEFAULT_LIMIT = 25 EMPTY = '[none]' attr_accessor :params, :base_query def initialize(params, base_query = nil) @params = params @base_query = base_query || default_base_query end def records after_scheduled_at = params[:after_scheduled_at].present? ? Time.zone.parse(params[:after_scheduled_at]) : nil filtered_query.display_all( after_scheduled_at: after_scheduled_at, after_id: params[:after_id] ).limit(params.fetch(:limit, DEFAULT_LIMIT)) end def last @_last ||= records.last end def queues base_query.group(:queue_name).count .sort_by { |name, _count| name.to_s || EMPTY } .to_h end def job_classes filtered_query(params.slice(:queue_name)).unscope(:select) .group("serialized_params->>'job_class'").count .sort_by { |name, _count| name.to_s } .to_h end def states raise NotImplementedError end def to_params(override = {}) { job_class: params[:job_class], limit: params[:limit], queue_name: params[:queue_name], query: params[:query], state: params[:state], cron_key: params[:cron_key], }.merge(override).delete_if { |_, v| v.blank? } end def filtered_query(filtered_params = params) raise NotImplementedError end def filtered_count filtered_query.count end private def default_base_query raise NotImplementedError end end end
Version data entries
17 entries across 17 versions & 1 rubygems