File tree Expand file tree Collapse file tree 2 files changed +13
-4
lines changed
services/app/apps/codebattle/lib Expand file tree Collapse file tree 2 files changed +13
-4
lines changed Original file line number Diff line number Diff 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 ( )
Original file line number Diff line number Diff 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
You can’t perform that action at this time.
0 commit comments