1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
package cat.freya.khs.db
import java.nio.ByteBuffer
import java.util.UUID
import org.jetbrains.exposed.v1.core.ResultRow
import org.jetbrains.exposed.v1.core.Table
// tables introduced in version 1.7.0
// pre 1.7.x tables are NOT SUPPORTED
object LegacyNames : Table("hs_names") {
val uuid = binary("uuid", 16)
val name = varchar("name", 48).nullable()
override val primaryKey = PrimaryKey(uuid, name)
}
object LegacyPlayers : Table("hs_data") {
val uuid = binary("uuid", 16)
val hiderWins = integer("hider_wins").nullable()
val seekerWins = integer("seeker_wins").nullable()
val hiderGames = integer("hider_games").nullable()
val seekerGames = integer("seeker_games").nullable()
val hiderKills = integer("hider_kills").nullable()
val seekerKills = integer("seeker_kills").nullable()
val hiderDeaths = integer("hider_deaths").nullable()
val seekerDeaths = integer("seeker_deaths").nullable()
}
fun ResultRow.toLegacyPlayer(): Player {
val uuidBuffer = ByteBuffer.wrap(this[LegacyPlayers.uuid])
val uuidHigh = uuidBuffer.long
val uuidLow = uuidBuffer.long
val uuid = UUID(uuidHigh, uuidLow)
val hiderGames = this[LegacyPlayers.hiderGames] ?: 0
val seekerGames = this[LegacyPlayers.seekerGames] ?: 0
val hiderWins = this[LegacyPlayers.hiderWins] ?: 0
val seekerWins = this[LegacyPlayers.seekerWins] ?: 0
val hiderLosses = hiderGames - hiderWins
val seekerLosses = seekerGames - seekerWins
val hiderKills = this[LegacyPlayers.hiderKills] ?: 0
val seekerKills = this[LegacyPlayers.seekerKills] ?: 0
val hiderDeaths = this[LegacyPlayers.hiderDeaths] ?: 0
val seekerDeaths = this[LegacyPlayers.seekerDeaths] ?: 0
return Player(
uuid,
name = this[LegacyNames.name],
seekerWins = maxOf(seekerWins, 0).toUInt(),
hiderWins = maxOf(hiderWins, 0).toUInt(),
hiderLosses = maxOf(hiderLosses, 0).toUInt(),
seekerLosses = maxOf(seekerLosses, 0).toUInt(),
seekerKills = maxOf(seekerKills, 0).toUInt(),
hiderKills = maxOf(hiderKills, 0).toUInt(),
seekerDeaths = maxOf(seekerDeaths, 0).toUInt(),
hiderDeaths = maxOf(hiderDeaths, 0).toUInt(),
)
}
|