Skip to content

Commit 79dce00

Browse files
authored
Merge pull request #2099 from Titonatos/Fix/#2083-Filtering-tasks-by-tags-does-not-work
Fix bug #2083 Filtering by tags doesn't work
2 parents 784dd76 + ab48085 commit 79dce00

File tree

2 files changed

+13
-4
lines changed

2 files changed

+13
-4
lines changed

services/app/apps/codebattle/lib/codebattle/task.ex

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -199,11 +199,19 @@ defmodule Codebattle.Task do
199199
!result
200200
end
201201

202-
@spec get_task_by_tags_for_user(User.t(), list(String.t())) :: t() | nil
203-
def get_task_by_tags_for_user(user, tags) do
204-
__MODULE__
202+
@spec get_task_by_tags_for_user(User.t(), list(String.t()), String.t() | nil) :: t() | nil
203+
def get_task_by_tags_for_user(user, tags, level \\ nil) do
204+
query = __MODULE__
205205
|> filter_visibility(user)
206206
|> where([t], fragment("? @> ?", t.tags, ^tags))
207+
208+
query = if level do
209+
query |> where([t], t.level == ^level)
210+
else
211+
query
212+
end
213+
214+
query
207215
|> order_by(fragment("RANDOM()"))
208216
|> limit(1)
209217
|> Repo.one()

services/app/apps/codebattle/lib/codebattle_web/channels/lobby_channel.ex

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,8 @@ defmodule CodebattleWeb.LobbyChannel do
124124
end
125125

126126
defp maybe_add_task(params, %{"task_tags" => task_tags}, user) when length(task_tags) > 0 do
127-
case Codebattle.Task.get_task_by_tags_for_user(user, task_tags) do
127+
level = Map.get(params, :level)
128+
case Codebattle.Task.get_task_by_tags_for_user(user, task_tags, level) do
128129
nil -> params
129130
task -> Map.put(params, :task, task)
130131
end

0 commit comments

Comments
 (0)