@@ -75,6 +75,7 @@ def scheduled?
7575 def filter_jobs ( relation )
7676 relation = relation . where ( 'class_name LIKE ?' , "%#{ params [ :class_name ] } %" ) if params [ :class_name ] . present?
7777 relation = relation . where ( 'queue_name LIKE ?' , "%#{ params [ :queue_name ] } %" ) if params [ :queue_name ] . present?
78+ relation = filter_by_arguments ( relation ) if params [ :arguments ] . present?
7879
7980 if params [ :status ] . present?
8081 case params [ :status ]
@@ -98,8 +99,13 @@ def filter_jobs(relation)
9899 relation
99100 end
100101
102+ def filter_by_arguments ( relation )
103+ # Use ILIKE for case-insensitive search in PostgreSQL
104+ relation . where ( 'arguments::text ILIKE ?' , "%#{ params [ :arguments ] } %" )
105+ end
106+
101107 def filter_ready_jobs ( relation )
102- return relation unless params [ :class_name ] . present? || params [ :queue_name ] . present?
108+ return relation unless params [ :class_name ] . present? || params [ :queue_name ] . present? || params [ :arguments ] . present?
103109
104110 if params [ :class_name ] . present?
105111 job_ids = SolidQueue ::Job . where ( 'class_name LIKE ?' , "%#{ params [ :class_name ] } %" ) . pluck ( :id )
@@ -108,11 +114,17 @@ def filter_ready_jobs(relation)
108114
109115 relation = relation . where ( 'queue_name LIKE ?' , "%#{ params [ :queue_name ] } %" ) if params [ :queue_name ] . present?
110116
117+ # Add arguments filtering
118+ if params [ :arguments ] . present?
119+ job_ids = SolidQueue ::Job . where ( 'arguments::text ILIKE ?' , "%#{ params [ :arguments ] } %" ) . pluck ( :id )
120+ relation = relation . where ( job_id : job_ids )
121+ end
122+
111123 relation
112124 end
113125
114126 def filter_scheduled_jobs ( relation )
115- return relation unless params [ :class_name ] . present? || params [ :queue_name ] . present?
127+ return relation unless params [ :class_name ] . present? || params [ :queue_name ] . present? || params [ :arguments ] . present?
116128
117129 if params [ :class_name ] . present?
118130 job_ids = SolidQueue ::Job . where ( 'class_name LIKE ?' , "%#{ params [ :class_name ] } %" ) . pluck ( :id )
@@ -121,21 +133,32 @@ def filter_scheduled_jobs(relation)
121133
122134 relation = relation . where ( 'queue_name LIKE ?' , "%#{ params [ :queue_name ] } %" ) if params [ :queue_name ] . present?
123135
136+ # Add arguments filtering
137+ if params [ :arguments ] . present?
138+ job_ids = SolidQueue ::Job . where ( 'arguments::text ILIKE ?' , "%#{ params [ :arguments ] } %" ) . pluck ( :id )
139+ relation = relation . where ( job_id : job_ids )
140+ end
141+
124142 relation
125143 end
126144
127145 def filter_recurring_jobs ( relation )
128- return relation unless params [ :class_name ] . present? || params [ :queue_name ] . present?
146+ return relation unless params [ :class_name ] . present? || params [ :queue_name ] . present? || params [ :arguments ] . present?
129147
130148 relation = relation . where ( 'class_name LIKE ?' , "%#{ params [ :class_name ] } %" ) if params [ :class_name ] . present?
131-
132149 relation = relation . where ( 'queue_name LIKE ?' , "%#{ params [ :queue_name ] } %" ) if params [ :queue_name ] . present?
133150
151+ # Add arguments filtering if the model has arguments column
152+ if params [ :arguments ] . present? && relation . column_names . include? ( 'arguments' )
153+ relation = relation . where ( 'arguments::text ILIKE ?' ,
154+ "%#{ params [ :arguments ] } %" )
155+ end
156+
134157 relation
135158 end
136159
137160 def filter_failed_jobs ( relation )
138- return relation unless params [ :class_name ] . present? || params [ :queue_name ] . present?
161+ return relation unless params [ :class_name ] . present? || params [ :queue_name ] . present? || params [ :arguments ] . present?
139162
140163 if params [ :class_name ] . present?
141164 job_ids = SolidQueue ::Job . where ( 'class_name LIKE ?' , "%#{ params [ :class_name ] } %" ) . pluck ( :id )
@@ -153,13 +176,20 @@ def filter_failed_jobs(relation)
153176 end
154177 end
155178
179+ # Add arguments filtering
180+ if params [ :arguments ] . present?
181+ job_ids = SolidQueue ::Job . where ( 'arguments::text ILIKE ?' , "%#{ params [ :arguments ] } %" ) . pluck ( :id )
182+ relation = relation . where ( job_id : job_ids )
183+ end
184+
156185 relation
157186 end
158187
159188 def filter_params
160189 {
161190 class_name : params [ :class_name ] ,
162191 queue_name : params [ :queue_name ] ,
192+ arguments : params [ :arguments ] ,
163193 status : params [ :status ]
164194 }
165195 end
0 commit comments