Refactor event group management and routing system

This commit is contained in:
2025-05-08 17:32:12 +02:00
parent c633694222
commit e3179c69aa
11 changed files with 385 additions and 170 deletions
@@ -20,12 +20,7 @@
package de.steamwar.routes
import de.steamwar.ResponseError
import de.steamwar.data.Groups
import de.steamwar.plugins.SWPermissionCheck
import de.steamwar.sql.EventFight
import de.steamwar.sql.SteamwarUser
import de.steamwar.sql.Team
import de.steamwar.sql.UserPerm
import de.steamwar.sql.*
import io.ktor.http.*
import io.ktor.server.application.*
import io.ktor.server.request.*
@@ -45,7 +40,7 @@ data class ResponseEventFight(
val start: Long,
val ergebnis: Int,
val spectatePort: Int?,
val group: String?
val group: ResponseGroups?
) {
constructor(eventFight: EventFight) : this(
eventFight.fightID,
@@ -56,7 +51,7 @@ data class ResponseEventFight(
eventFight.startTime.time,
eventFight.ergebnis,
eventFight.spectatePort,
Groups.getGroup(eventFight.fightID)?.name
eventFight.group.orElse(null)?.let { ResponseGroups(it) }
)
}
@@ -72,7 +67,7 @@ data class UpdateEventFight(
val start: Long? = null,
val spielmodus: String? = null,
val map: String? = null,
val group: String? = null,
val group: Int? = null,
val spectatePort: Int? = null
)
@@ -85,14 +80,14 @@ data class CreateEventFight(
val redTeam: Int,
val start: Long,
val spectatePort: Int? = null,
val group: String? = null
val group: Int? = null
)
fun Route.configureEventFightRoutes() {
route("/fights") {
install(SWPermissionCheck) {
allowMethod(HttpMethod.Get)
permission = UserPerm.MODERATION
get {
val event = call.receiveEvent() ?: return@get
call.respond(EventFight.getEvent(event.eventID).map { ResponseEventFight(it) })
}
post {
val fight = call.receiveNullable<CreateEventFight>()
@@ -100,6 +95,7 @@ fun Route.configureEventFightRoutes() {
call.respond(HttpStatusCode.BadRequest, ResponseError("Invalid body"))
return@post
}
val eventFight = EventFight.create(
fight.event,
Timestamp.from(Instant.ofEpochMilli(fight.start)),
@@ -110,9 +106,7 @@ fun Route.configureEventFightRoutes() {
fight.spectatePort
)
if (fight.group != null) {
if (fight.group != "null") {
Groups.setGroup(eventFight.fightID, fight.group)
}
eventFight.groupId = fight.group
}
call.respond(HttpStatusCode.Created, ResponseEventFight(eventFight))
}
@@ -133,10 +127,10 @@ fun Route.configureEventFightRoutes() {
val spectatePort = updateFight.spectatePort ?: fight.spectatePort
if (updateFight.group != null) {
if (updateFight.group == "null") {
Groups.resetGroup(fight.fightID, true)
if (updateFight.group == -1) {
fight.groupId = null
} else {
Groups.setGroup(fight.fightID, updateFight.group)
fight.groupId = updateFight.group
}
}
fight.update(start, spielmodus, map, teamBlue, teamRed, spectatePort)