forked from SteamWar/SteamWar
@@ -34,6 +34,7 @@ import org.jetbrains.exposed.v1.dao.flushCache
|
|||||||
import org.jetbrains.exposed.v1.javatime.CurrentTimestamp
|
import org.jetbrains.exposed.v1.javatime.CurrentTimestamp
|
||||||
import org.jetbrains.exposed.v1.javatime.timestamp
|
import org.jetbrains.exposed.v1.javatime.timestamp
|
||||||
import org.jetbrains.exposed.v1.jdbc.select
|
import org.jetbrains.exposed.v1.jdbc.select
|
||||||
|
import org.jetbrains.exposed.v1.jdbc.upsert
|
||||||
|
|
||||||
object LeaderboardTable : CompositeIdTable("Leaderboard") {
|
object LeaderboardTable : CompositeIdTable("Leaderboard") {
|
||||||
val userId = reference("UserId", SteamwarUserTable)
|
val userId = reference("UserId", SteamwarUserTable)
|
||||||
@@ -41,6 +42,8 @@ object LeaderboardTable : CompositeIdTable("Leaderboard") {
|
|||||||
val time = long("Time")
|
val time = long("Time")
|
||||||
val updatedAt = timestamp("UpdatedAt").defaultExpression(CurrentTimestamp)
|
val updatedAt = timestamp("UpdatedAt").defaultExpression(CurrentTimestamp)
|
||||||
val bestTime = bool("BestTime")
|
val bestTime = bool("BestTime")
|
||||||
|
|
||||||
|
override val primaryKey = PrimaryKey(userId, name)
|
||||||
}
|
}
|
||||||
|
|
||||||
class Leaderboard(id: EntityID<CompositeID>) : CompositeEntity(id) {
|
class Leaderboard(id: EntityID<CompositeID>) : CompositeEntity(id) {
|
||||||
@@ -71,20 +74,14 @@ class Leaderboard(id: EntityID<CompositeID>) : CompositeEntity(id) {
|
|||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun upsert(userId: Int, name: String, time: Long, bestTime: Boolean) = useDb {
|
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.userId] = userId
|
||||||
it[LeaderboardTable.name] = name
|
it[LeaderboardTable.name] = name
|
||||||
})?.also {
|
it[LeaderboardTable.time] = time
|
||||||
it.time = time
|
it[LeaderboardTable.bestTime] = bestTime
|
||||||
it.bestTime = bestTime
|
|
||||||
} ?: new(
|
|
||||||
CompositeID {
|
|
||||||
it[LeaderboardTable.userId] = userId
|
|
||||||
it[LeaderboardTable.name] = name
|
|
||||||
}
|
|
||||||
) {
|
|
||||||
this.time = time
|
|
||||||
this.bestTime = bestTime
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user