Skip to content

Commit 5f1012d

Browse files
committed
Improve dashboard performance when searching for job ID
Because there are no indices for full-text search, searching for a job ID takes an inordinate amount of time. This commit examines the search query and if the only item is a UUID, it specifically searches for a job matching that ID. Fixes bensheldon#1618
1 parent 51d90b4 commit 5f1012d

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

app/filters/good_job/jobs_filter.rb

+8-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,14 @@ def filtered_query(filter_params = params)
2525

2626
query = query.job_class(filter_params[:job_class]) if filter_params[:job_class].present?
2727
query = query.where(queue_name: filter_params[:queue_name]) if filter_params[:queue_name].present?
28-
query = query.search_text(filter_params[:query]) if filter_params[:query].present?
28+
query = case filter_params[:query].presence
29+
when /\A[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}\z/i
30+
query.where(active_job_id: filter_params[:query])
31+
when nil
32+
query # no query parameter were specified
33+
else
34+
query.search_text(filter_params[:query])
35+
end
2936
query = query.where(cron_key: filter_params[:cron_key]) if filter_params[:cron_key].present?
3037
query = query.where(finished_at: finished_since(filter_params[:finished_since])..) if filter_params[:finished_since].present?
3138

0 commit comments

Comments
 (0)