Refactor EventFights and Fight classes to improve player initialization and retrieval

Signed-off-by: Chaoscaot <max@maxsp.de>
This commit is contained in:
2025-11-14 23:14:13 +01:00
parent 8b4f864f99
commit 8d705e7a84
3 changed files with 10 additions and 4 deletions
+1 -1
View File
@@ -141,7 +141,7 @@ class Fight(id: EntityID<Int>) : IntEntity(id) {
lateinit var bluePlayers: List<FightPlayer>
lateinit var redPlayers: List<FightPlayer>
private fun initPlayers(fightPlayers: List<FightPlayer>) {
fun initPlayers(fightPlayers: List<FightPlayer>) {
val blue = mutableListOf<FightPlayer>()
val red = mutableListOf<FightPlayer>()
@@ -23,6 +23,7 @@ import de.steamwar.sql.internal.useDb
import org.jetbrains.exposed.v1.core.dao.id.CompositeID
import org.jetbrains.exposed.v1.core.dao.id.CompositeIdTable
import org.jetbrains.exposed.v1.core.dao.id.EntityID
import org.jetbrains.exposed.v1.core.eq
import org.jetbrains.exposed.v1.core.inList
import org.jetbrains.exposed.v1.dao.CompositeEntity
import org.jetbrains.exposed.v1.dao.CompositeEntityClass
@@ -67,6 +68,11 @@ class FightPlayer(id: EntityID<CompositeID>) : CompositeEntity(id) {
fun batchGet(fightIds: List<Int>) = useDb {
find { FightPlayerTable.fightId inList fightIds.toList() }.toList()
}
@JvmStatic
fun getFight(fightId: Int) = useDb {
find { FightPlayerTable.fightId eq fightId }.toList()
}
}
val fightID by FightPlayerTable.fightId.transform({ EntityID(it, FightTable) }, { it.value })
@@ -78,7 +78,7 @@ data class FightData(
val bluePlayers: List<ResponseUser>,
val redPlayers: List<ResponseUser>,
) {
constructor(fight: Fight) : this(
constructor(fight: Fight, players: List<FightPlayer> = FightPlayer.getFight(fight.fightID)) : this(
fight.id.value,
fight.gameMode,
fight.server,
@@ -90,8 +90,8 @@ data class FightData(
fight.redSchem?.let { SchematicNode.getSchematicNode(it.value)?.name },
fight.winner.name,
fight.winCondition,
fight.bluePlayers.map { ResponseUser.get(it.userID) },
fight.redPlayers.map { ResponseUser.get(it.userID) },
players.filter { it.team == 1 }.map { ResponseUser.get(it.userID) },
players.filter { it.team == 2 }.map { ResponseUser.get(it.userID) },
)
}