Skip to content

Commit e1b63e0

Browse files
committed
added arguments in all tabs
1 parent 63c651e commit e1b63e0

7 files changed

Lines changed: 73 additions & 6 deletions

File tree

app/controllers/solid_queue_monitor/base_controller.rb

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

app/controllers/solid_queue_monitor/in_progress_jobs_controller.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,18 @@ def index
1515
private
1616

1717
def filter_in_progress_jobs(relation)
18-
return relation if params[:class_name].blank?
18+
return relation if params[:class_name].blank? && params[:arguments].blank?
1919

2020
if params[:class_name].present?
2121
job_ids = SolidQueue::Job.where('class_name LIKE ?', "%#{params[:class_name]}%").pluck(:id)
2222
relation = relation.where(job_id: job_ids)
2323
end
2424

25+
if params[:arguments].present?
26+
job_ids = SolidQueue::Job.where('arguments::text ILIKE ?', "%#{params[:arguments]}%").pluck(:id)
27+
relation = relation.where(job_id: job_ids)
28+
end
29+
2530
relation
2631
end
2732
end

app/presenters/solid_queue_monitor/failed_jobs_presenter.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@ def generate_filter_form
3333
<input type="text" name="queue_name" id="queue_name" value="#{@filters[:queue_name]}" placeholder="Filter by queue">
3434
</div>
3535
36+
<div class="filter-group">
37+
<label for="arguments">Arguments:</label>
38+
<input type="text" name="arguments" id="arguments" value="#{@filters[:arguments]}" placeholder="Filter by arguments">
39+
</div>
40+
3641
<div class="filter-actions">
3742
<button type="submit" class="filter-button">Apply Filters</button>
3843
<a href="#{failed_jobs_path}" class="reset-button">Reset</a>
@@ -58,6 +63,7 @@ def generate_table
5863
<th>Job</th>
5964
<th>Queue</th>
6065
<th>Error</th>
66+
<th>Arguments</th>
6167
<th>Actions</th>
6268
</tr>
6369
</thead>
@@ -263,6 +269,7 @@ def generate_row(failed_execution)
263269
<pre class="error-backtrace">#{error[:backtrace]}</pre>
264270
</details>
265271
</td>
272+
<td>#{format_arguments(job.arguments)}</td>
266273
<td class="actions-cell">
267274
<div class="job-actions">
268275
<a href="javascript:void(0)"#{' '}

app/presenters/solid_queue_monitor/in_progress_jobs_presenter.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,11 @@ def generate_filter_form
2727
<input type="text" name="class_name" id="class_name" value="#{@filters[:class_name]}" placeholder="Filter by class name">
2828
</div>
2929
30+
<div class="filter-group">
31+
<label for="arguments">Arguments:</label>
32+
<input type="text" name="arguments" id="arguments" value="#{@filters[:arguments]}" placeholder="Filter by arguments">
33+
</div>
34+
3035
<div class="filter-actions">
3136
<button type="submit" class="filter-button">Apply Filters</button>
3237
<a href="#{in_progress_jobs_path}" class="reset-button">Reset</a>
@@ -43,6 +48,8 @@ def generate_table
4348
<thead>
4449
<tr>
4550
<th>Job</th>
51+
<th>Queue</th>
52+
<th>Arguments</th>
4653
<th>Started At</th>
4754
<th>Process ID</th>
4855
</tr>
@@ -65,6 +72,7 @@ def generate_row(execution)
6572
<span class="job-timestamp">Queued at: #{format_datetime(job.created_at)}</span>
6673
</div>
6774
</td>
75+
<td>#{format_arguments(job.arguments)}</td>
6876
<td>#{format_datetime(execution.created_at)}</td>
6977
<td>#{execution.process_id}</td>
7078
</tr>

app/presenters/solid_queue_monitor/jobs_presenter.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ def generate_filter_form
4141
<input type="text" name="queue_name" id="queue_name" value="#{@filters[:queue_name]}" placeholder="Filter by queue">
4242
</div>
4343
44+
<div class="filter-group">
45+
<label for="arguments">Arguments:</label>
46+
<input type="text" name="arguments" id="arguments" value="#{@filters[:arguments]}" placeholder="Filter by arguments">
47+
</div>
48+
4449
<div class="filter-group">
4550
<label for="status">Status:</label>
4651
<select name="status" id="status">
@@ -70,6 +75,7 @@ def generate_table
7075
<th>ID</th>
7176
<th>Job</th>
7277
<th>Queue</th>
78+
<th>Arguments</th>
7379
<th>Status</th>
7480
<th>Created At</th>
7581
<th>Actions</th>
@@ -92,6 +98,7 @@ def generate_row(job)
9298
<td>#{job.id}</td>
9399
<td>#{job.class_name}</td>
94100
<td>#{job.queue_name}</td>
101+
<td>#{format_arguments(job.arguments)}</td>
95102
<td><span class='status-badge status-#{status}'>#{status}</span></td>
96103
<td>#{format_datetime(job.created_at)}</td>
97104
HTML

app/presenters/solid_queue_monitor/ready_jobs_presenter.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ def generate_filter_form
3030
<input type="text" name="queue_name" id="queue_name" value="#{@filters[:queue_name]}" placeholder="Filter by queue">
3131
</div>
3232
33+
<div class="filter-group">
34+
<label for="arguments">Arguments:</label>
35+
<input type="text" name="arguments" id="arguments" value="#{@filters[:arguments]}" placeholder="Filter by arguments">
36+
</div>
37+
3338
<div class="filter-actions">
3439
<button type="submit" class="filter-button">Apply Filters</button>
3540
<a href="#{ready_jobs_path}" class="reset-button">Reset</a>

app/presenters/solid_queue_monitor/scheduled_jobs_presenter.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ def generate_filter_form
3232
<input type="text" name="queue_name" id="queue_name" value="#{@filters[:queue_name]}" placeholder="Filter by queue">
3333
</div>
3434
35+
<div class="filter-group">
36+
<label for="arguments">Arguments:</label>
37+
<input type="text" name="arguments" id="arguments" value="#{@filters[:arguments]}" placeholder="Filter by arguments">
38+
</div>
39+
3540
<div class="filter-actions">
3641
<button type="submit" class="filter-button">Apply Filters</button>
3742
<a href="#{scheduled_jobs_path}" class="reset-button">Reset</a>

0 commit comments

Comments
 (0)