Skip to content

Commit affd4d1

Browse files
committed
unique ids when generating tournament pairings
1 parent 2687455 commit affd4d1

File tree

2 files changed

+19
-18
lines changed

2 files changed

+19
-18
lines changed

modules/tournament/src/main/Pairing.scala

+17-14
Original file line numberDiff line numberDiff line change
@@ -60,22 +60,25 @@ private[tournament] object Pairing {
6060

6161
case class LastOpponents(hash: Map[User.ID, User.ID]) extends AnyVal
6262

63-
def apply(tourId: Tournament.ID, u1: User.ID, u2: User.ID): Pairing = new Pairing(
64-
id = IdGenerator.uncheckedGame,
65-
tourId = tourId,
66-
status = chess.Status.Created,
67-
user1 = u1,
68-
user2 = u2,
69-
winner = none,
70-
turns = none,
71-
berserk1 = false,
72-
berserk2 = false
73-
)
63+
private def make(tourId: Tournament.ID, u1: User.ID, u2: User.ID): Fu[Pairing] =
64+
fuccess(IdGenerator.uncheckedGame) dmap { id =>
65+
new Pairing(
66+
id = id,
67+
tourId = tourId,
68+
status = chess.Status.Created,
69+
user1 = u1,
70+
user2 = u2,
71+
winner = none,
72+
turns = none,
73+
berserk1 = false,
74+
berserk2 = false
75+
)
76+
}
7477

7578
case class Prep(tourId: Tournament.ID, user1: User.ID, user2: User.ID) {
76-
def toPairing(firstGetsWhite: Boolean) =
77-
if (firstGetsWhite) Pairing(tourId, user1, user2)
78-
else Pairing(tourId, user2, user1)
79+
def toPairing(firstGetsWhite: Boolean): Fu[Pairing] =
80+
if (firstGetsWhite) Pairing.make(tourId, user1, user2)
81+
else Pairing.make(tourId, user2, user1)
7982
}
8083

8184
def prep(tour: Tournament, ps: (Player, Player)) = Pairing.Prep(tour.id, ps._1.userId, ps._2.userId)

modules/tournament/src/main/arena/PairingSystem.scala

+2-4
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,9 @@ private[tournament] object PairingSystem extends AbstractPairingSystem {
6464

6565
private def prepsToPairings(preps: List[Pairing.Prep]): Fu[List[Pairing]] =
6666
if (preps.size < 50) preps.map { prep =>
67-
UserRepo.firstGetsWhite(prep.user1.some, prep.user2.some) map prep.toPairing
67+
UserRepo.firstGetsWhite(prep.user1.some, prep.user2.some) flatMap prep.toPairing
6868
}.sequenceFu
69-
else fuccess {
70-
preps.map(_ toPairing Random.nextBoolean)
71-
}
69+
else preps.map(_ toPairing Random.nextBoolean).sequenceFu
7270

7371
private def naivePairings(tour: Tournament, players: RankedPlayers): List[Pairing.Prep] =
7472
players grouped 2 collect {

0 commit comments

Comments
 (0)