Sha256: 75fac73e32c673c49999f6681dc19244195afd422cd26922b6afc19fbc4ab274
Contents?: true
Size: 1.5 KB
Versions: 2
Compression:
Stored size: 1.5 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 job_classes base_query.group("serialized_params->>'job_class'").count .sort_by { |name, _count| name.to_s } .to_h end def queues base_query.group(:queue_name).count .sort_by { |name, _count| name.to_s || EMPTY } .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], }.merge(override).delete_if { |_, v| v.blank? } end def filtered_query raise NotImplementedError end # def filtered_query_count delegate :count, to: :filtered_query, prefix: true private def default_base_query raise NotImplementedError end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
good_job-2.14.1 | engine/app/filters/good_job/base_filter.rb |
good_job-2.14.0 | engine/app/filters/good_job/base_filter.rb |