Update player points when game ends

This commit is contained in:
Christoph Hagen
2022-10-18 11:40:08 +02:00
parent df97271987
commit 3c4d1f0e29
5 changed files with 29 additions and 8 deletions

View File

@ -1,4 +1,5 @@
import Foundation
import Fluent
final class FinishedTable: AbstractTable<FinishedPlayer> {
@ -137,4 +138,22 @@ final class FinishedTable: AbstractTable<FinishedPlayer> {
override func cardStackPosition(ofPlayerAt index: Int) -> Int {
(4 + index - indexOfTrickStarter) % 4
}
func updatePlayerPoints(in database: Database) async throws {
let points = cost
let winnerNames = winners.map { $0.name }
for player in allPlayers {
guard let user = try await User.query(on: database).filter(\.$name == player.name).first() else {
continue
}
if winnerNames.contains(player.name) {
user.points += points
player.totalPoints += points
} else {
user.points -= points
player.totalPoints -= points
}
try await user.save(on: database)
}
}
}