Skip to content

Commit a540eab

Browse files
authored
add search (#6)
1 parent 422ed95 commit a540eab

File tree

3 files changed

+49
-2
lines changed

3 files changed

+49
-2
lines changed

lib/obanalyze/dashboard.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ defmodule Obanalyze.Dashboard do
2626
2727
<.live_nav_bar id="oban_states" page={@page} nav_param="job_state" style={:bar} extra_params={["nav"]}>
2828
<:item :for={nav_item <- @nav_items} name={nav_item.name} label={nav_item.label} method="navigate">
29-
<.live_table id="oban_jobs" limit={per_page_limits()} dom_id={"oban-jobs-#{nav_item.name}"} page={@page} row_attrs={&row_attrs/1} row_fetcher={&row_fetcher(&1, &2, nav_item.name)} default_sort_by={@default_sort_by} title="" search={false}>
29+
<.live_table id="oban_jobs" limit={per_page_limits()} dom_id={"oban-jobs-#{nav_item.name}"} page={@page} row_attrs={&row_attrs/1} row_fetcher={&row_fetcher(&1, &2, nav_item.name)} default_sort_by={@default_sort_by} title="" search={true}>
3030
<:col field={:id} sortable={:desc} />
3131
<:col :let={job} field={:worker} sortable={:desc}>
3232
<p class="font-weight-bold"><%= job.worker %></p>

lib/obanalyze/oban_jobs.ex

+12-1
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,22 @@ defmodule Obanalyze.ObanJobs do
4444
{jobs, total_jobs}
4545
end
4646

47-
defp jobs_query(%{sort_by: sort_by, sort_dir: sort_dir, limit: limit}, job_state) do
47+
defp jobs_query(%{sort_by: sort_by, sort_dir: sort_dir, limit: limit} = params, job_state) do
4848
Oban.Job
4949
|> limit(^limit)
5050
|> where([job], job.state == ^job_state)
5151
|> order_by({^sort_dir, ^sort_by})
52+
|> filter(params[:search])
53+
end
54+
55+
defp filter(query, nil), do: query
56+
57+
defp filter(query, term) do
58+
like = "%#{term}%"
59+
60+
from oj in query,
61+
where: like(oj.worker, ^like),
62+
or_where: like(oj.args, ^like)
5263
end
5364

5465
defp jobs_count_query(job_state) do

test/obanalyze/dashboard_test.exs

+36
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,42 @@ defmodule Obanalyze.DashboardTest do
111111
assert_patched(live, "/dashboard/obanalyze?")
112112
end
113113

114+
test "search" do
115+
_json_job =
116+
job_fixture(%{foo: "json"},
117+
state: "executing",
118+
worker: "JsonWorker",
119+
attempted_at: DateTime.utc_now()
120+
)
121+
122+
_yaml_job =
123+
job_fixture(%{foo: "yaml"},
124+
state: "executing",
125+
worker: "YamlWorker",
126+
attempted_at: DateTime.utc_now()
127+
)
128+
129+
{:ok, _live, rendered} = live(build_conn(), "/dashboard/obanalyze?search=JsonWorker")
130+
131+
assert rendered |> :binary.matches("<td class=\"oban-jobs-executing-worker\"") |> length() ==
132+
1
133+
134+
{:ok, _live, rendered} = live(build_conn(), "/dashboard/obanalyze?search=YamlWorker")
135+
136+
assert rendered |> :binary.matches("<td class=\"oban-jobs-executing-worker\"") |> length() ==
137+
1
138+
139+
{:ok, _live, rendered} = live(build_conn(), "/dashboard/obanalyze?search=foo")
140+
141+
assert rendered |> :binary.matches("<td class=\"oban-jobs-executing-worker\"") |> length() ==
142+
2
143+
144+
{:ok, _live, rendered} = live(build_conn(), "/dashboard/obanalyze?search=nothing")
145+
146+
assert rendered |> :binary.matches("<td class=\"oban-jobs-executing-worker\"") |> length() ==
147+
0
148+
end
149+
114150
defp job_fixture(args, opts) do
115151
opts = Keyword.put_new(opts, :worker, "FakeWorker")
116152
{:ok, job} = Oban.Job.new(args, opts) |> Oban.insert()

0 commit comments

Comments
 (0)