refactor leaderboard endpoint
This commit is contained in:
parent
7bc80ed779
commit
c6b256d1ba
|
@ -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 =>
|
||||
|
|
|
@ -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 {
|
||||
|
|
Loading…
Reference in a new issue