Module: QueueClassicAdmin::JobCommon::ClassMethods

Defined in:
app/models/queue_classic_admin/job_common.rb

Constant Summary collapse

KNOWN_COLUMN =
["id", "q_name", "method", "args", "locked_at", "created_at", "not_before", "locked_by", 'scheduled_at'].freeze
SEARCHABLE_COLUMNS =
[ :method, :args ].freeze

Instance Method Summary collapse

Instance Method Details

#args_is_json?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'app/models/queue_classic_admin/job_common.rb', line 32

def args_is_json?
  self.column_types["args"].type == :json
end

#extra_columnsObject



13
14
15
# File 'app/models/queue_classic_admin/job_common.rb', line 13

def extra_columns
  columns.map(&:name) - KNOWN_COLUMN
end

#queue_countsObject



9
10
11
# File 'app/models/queue_classic_admin/job_common.rb', line 9

def queue_counts
  group(:q_name).count
end

#search(query) ⇒ Object



21
22
23
24
25
26
27
28
29
30
# File 'app/models/queue_classic_admin/job_common.rb', line 21

def search(query)
  sql = searchable_columns.map do |field|
    unless field == :args && args_is_json?
      "#{field} LIKE :query"
    end
  end.reject(&:nil?).join(" OR ")

  wildcard_query = ["%", query, "%"].join
  relation.where(sql, query: wildcard_query)
end

#searchable_columnsObject



17
18
19
# File 'app/models/queue_classic_admin/job_common.rb', line 17

def searchable_columns
  @searchable_columns ||= SEARCHABLE_COLUMNS.dup
end