summaryrefslogtreewikicommitdiff
path: root/core/src/db/Player.kt
blob: 074045e6ae380f1bd4c4b550064eef9c8e97b9a7 (plain)
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
59
60
61
62
package cat.freya.khs.db

import java.util.UUID
import org.jetbrains.exposed.v1.core.ResultRow
import org.jetbrains.exposed.v1.core.Table
import org.jetbrains.exposed.v1.core.statements.UpdateBuilder

object Players : Table("hs_players") {
    val uuid = varchar("uuid", 36)
    val name = text("name").nullable()
    val seekerWins = integer("seeker_wins").default(0)
    val hiderWins = integer("hider_wins").default(0)
    val seekerLosses = integer("seeker_losses").default(0)
    val hiderLosses = integer("hider_losses").default(0)
    val seekerKills = integer("seeker_kills").default(0)
    val hiderKills = integer("hider_kills").default(0)
    val seekerDeaths = integer("seeker_deaths").default(0)
    val hiderDeaths = integer("hider_deaths").default(0)

    override val primaryKey = PrimaryKey(uuid)
}

data class Player(
    val uuid: UUID,
    var name: String? = null,
    var seekerWins: UInt = 0u,
    var hiderWins: UInt = 0u,
    var seekerLosses: UInt = 0u,
    var hiderLosses: UInt = 0u,
    var seekerKills: UInt = 0u,
    var hiderKills: UInt = 0u,
    var seekerDeaths: UInt = 0u,
    var hiderDeaths: UInt = 0u,
)

fun ResultRow.toPlayer(): Player {
    return Player(
        uuid = UUID.fromString(this[Players.uuid]),
        name = this[Players.name],
        seekerWins = this[Players.seekerWins].toUInt(),
        hiderWins = this[Players.hiderWins].toUInt(),
        seekerLosses = this[Players.seekerLosses].toUInt(),
        hiderLosses = this[Players.hiderLosses].toUInt(),
        seekerKills = this[Players.seekerKills].toUInt(),
        hiderKills = this[Players.hiderKills].toUInt(),
        seekerDeaths = this[Players.seekerDeaths].toUInt(),
        hiderDeaths = this[Players.hiderDeaths].toUInt(),
    )
}

fun UpdateBuilder<*>.fromPlayer(player: Player) {
    // this[Players.uuid] = player.uuid.toString()
    this[Players.name] = player.name
    this[Players.seekerWins] = player.seekerWins.toInt()
    this[Players.hiderWins] = player.hiderWins.toInt()
    this[Players.seekerLosses] = player.seekerLosses.toInt()
    this[Players.hiderLosses] = player.hiderLosses.toInt()
    this[Players.seekerKills] = player.seekerKills.toInt()
    this[Players.hiderKills] = player.hiderKills.toInt()
    this[Players.seekerDeaths] = player.seekerDeaths.toInt()
    this[Players.hiderDeaths] = player.hiderDeaths.toInt()
}