Fix Lobby

Signed-off-by: Chaoscaot <max@maxsp.de>
This commit is contained in:
2025-12-01 00:21:12 +01:00
parent 3944c011b0
commit d3fecf763c
@@ -34,6 +34,7 @@ import org.jetbrains.exposed.v1.dao.flushCache
import org.jetbrains.exposed.v1.javatime.CurrentTimestamp
import org.jetbrains.exposed.v1.javatime.timestamp
import org.jetbrains.exposed.v1.jdbc.select
import org.jetbrains.exposed.v1.jdbc.upsert
object LeaderboardTable : CompositeIdTable("Leaderboard") {
val userId = reference("UserId", SteamwarUserTable)
@@ -41,6 +42,8 @@ object LeaderboardTable : CompositeIdTable("Leaderboard") {
val time = long("Time")
val updatedAt = timestamp("UpdatedAt").defaultExpression(CurrentTimestamp)
val bestTime = bool("BestTime")
override val primaryKey = PrimaryKey(userId, name)
}
class Leaderboard(id: EntityID<CompositeID>) : CompositeEntity(id) {
@@ -71,20 +74,14 @@ class Leaderboard(id: EntityID<CompositeID>) : CompositeEntity(id) {
@JvmStatic
fun upsert(userId: Int, name: String, time: Long, bestTime: Boolean) = useDb {
findById(CompositeID {
LeaderboardTable.upsert(
onUpdateExclude = listOf(LeaderboardTable.updatedAt, LeaderboardTable.userId, LeaderboardTable.name),
where = { (LeaderboardTable.userId eq userId) and (LeaderboardTable.name eq name) }
) {
it[LeaderboardTable.userId] = userId
it[LeaderboardTable.name] = name
})?.also {
it.time = time
it.bestTime = bestTime
} ?: new(
CompositeID {
it[LeaderboardTable.userId] = userId
it[LeaderboardTable.name] = name
}
) {
this.time = time
this.bestTime = bestTime
it[LeaderboardTable.time] = time
it[LeaderboardTable.bestTime] = bestTime
}
}
}