only feature swiss tournaments of open teams - closes #10009

pull/10033/head
Thibault Duplessis 2021-10-25 19:29:17 +02:00
parent 96d25a4d49
commit 0f34a5d681
1 changed files with 26 additions and 10 deletions

View File

@ -64,15 +64,31 @@ final class SwissFeature(
private def cacheCompute(startsAtRange: Bdoc): Fu[List[Swiss]] =
colls.swiss
.find(
$doc(
"featurable" -> true,
"settings.i" $lte 600, // hits the partial index
"startsAt" -> startsAtRange,
"garbage" $ne true
.aggregateList(5) { framework =>
import framework._
Match(
$doc(
"featurable" -> true,
"settings.i" $lte 600, // hits the partial index
"startsAt" -> startsAtRange,
"garbage" $ne true
)
) -> List(
PipelineOperator(
$lookup.pipeline(
from = "team",
as = "team",
local = "teamId",
foreign = "_id",
pipe = List(
$doc("$match" -> $doc("open" -> true, "password" $exists false)),
$doc("$project" -> $id(true))
)
)
),
UnwindField("team"),
Sort(Descending("nbPlayers"))
)
)
.sort($sort desc "nbPlayers")
.cursor[Swiss]()
.list(5)
}
.map { _.flatMap(_.asOpt[Swiss]) }
}