refactor leaderboard endpoint

This commit is contained in:
Thibault Duplessis 2018-04-07 21:58:19 +02:00
parent 7bc80ed779
commit c6b256d1ba
2 changed files with 14 additions and 21 deletions

View file

@ -181,26 +181,21 @@ object User extends LilaController {
def list = Open { implicit ctx =>
val nb = 10
for {
leaderboards <- env.cached.leaderboards
nbAllTime env.cached topNbGame nb
nbDay fuccess(Nil)
// Env.game.cached activePlayerUidsDay nb map {
// _ flatMap { pair =>
// env lightUser pair.userId map { UserModel.LightCount(_, pair.nb) }
// }
// }
tourneyWinners Env.tournament.winners.all.map(_.top)
online env.cached.getTop50Online
_ <- Env.user.lightUserApi preloadMany tourneyWinners.map(_.userId)
res <- negotiate(
html = fuccess(Ok(html.user.list(
env.cached.leaderboards flatMap { leaderboards =>
negotiate(
html = for {
nbAllTime env.cached topNbGame nb
nbDay fuccess(Nil)
tourneyWinners Env.tournament.winners.all.map(_.top)
online env.cached.getTop50Online
_ <- Env.user.lightUserApi preloadMany tourneyWinners.map(_.userId)
} yield Ok(html.user.list(
tourneyWinners = tourneyWinners,
online = online,
leaderboards = leaderboards,
nbDay = nbDay,
nbAllTime = nbAllTime
))),
)),
api = _ => fuccess {
implicit val lpWrites = OWrites[UserModel.LightPerf](env.jsonView.lightPerfIsOnline)
Ok(Json.obj(
@ -208,6 +203,7 @@ object User extends LilaController {
"blitz" -> leaderboards.blitz,
"rapid" -> leaderboards.rapid,
"classical" -> leaderboards.classical,
"ultraBullet" -> leaderboards.ultraBullet,
"crazyhouse" -> leaderboards.crazyhouse,
"chess960" -> leaderboards.chess960,
"kingOfTheHill" -> leaderboards.kingOfTheHill,
@ -219,7 +215,7 @@ object User extends LilaController {
))
}
)
} yield res
}
}
def top200(perfKey: String) = Open { implicit ctx =>

View file

@ -41,11 +41,8 @@ final class JsonView(isOnline: User.ID => Boolean) {
})
.add("patron" -> u.isPatron)
def lightPerfIsOnline(lp: LightPerf) = {
val json = lightPerfWrites.writes(lp)
if (isOnline(lp.user.id)) json ++ Json.obj("online" -> true)
else json
}
def lightPerfIsOnline(lp: LightPerf) =
lightPerfWrites.writes(lp).add("online", isOnline(lp.user.id))
}
object JsonView {