update multiple elos at end game wip
This commit is contained in:
parent
0cb0b37c5a
commit
ed2b4417be
|
@ -2,14 +2,15 @@ package lila.user
|
|||
|
||||
final class EloUpdater(floor: Int) {
|
||||
|
||||
def game(user: User, elo: Int, opponentElo: Int): Funit = math.max(elo, floor) |> { newElo ⇒
|
||||
UserRepo.setElo(user.id, newElo) >> HistoryRepo.addEntry(user.id, newElo, opponentElo.some)
|
||||
def game(user: User, elo: Int, speed: String, se: SpeedElo, opponentElo: Int): Funit = math.max(elo, floor) |> { newElo ⇒
|
||||
UserRepo.setElo(user.id, newElo, speed, se) >>
|
||||
HistoryRepo.addEntry(user.id, newElo, opponentElo.some)
|
||||
}
|
||||
|
||||
private def adjustTo = User.STARTING_ELO
|
||||
|
||||
def adjust(u: User) = (u.elo > adjustTo) ?? {
|
||||
UserRepo.setElo(u.id, adjustTo) >>
|
||||
UserRepo.setEloOnly(u.id, adjustTo) >>
|
||||
HistoryRepo.addEntry(u.id, adjustTo, none)
|
||||
}
|
||||
|
||||
|
|
|
@ -41,7 +41,13 @@ object UserRepo {
|
|||
|
||||
def rank(user: User) = $count(enabledQuery ++ Json.obj("elo" -> $gt(user.elo))) map (1+)
|
||||
|
||||
def setElo(id: ID, elo: Int): Funit = $update($select(id), $set("elo" -> elo))
|
||||
def setElo(id: ID, elo: Int, speed: String, se: SpeedElo): Funit = $update($select(id), $set(
|
||||
"elo" -> elo,
|
||||
"speedElos.%s".format(speed) -> se.nb,
|
||||
"speedElos.%s.elo".format(speed) -> se.elo
|
||||
))
|
||||
|
||||
def setEloOnly(id: ID, elo: Int): Funit = $update($select(id), $set("elo" -> elo))
|
||||
|
||||
val enabledQuery = Json.obj("enabled" -> true)
|
||||
|
||||
|
|
Loading…
Reference in a new issue