update multiple elos at end game wip

This commit is contained in:
Thibault Duplessis 2013-07-21 11:34:24 +02:00
parent 0cb0b37c5a
commit ed2b4417be
2 changed files with 11 additions and 4 deletions

View file

@ -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)
}

View file

@ -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)