Improve Performance

Signed-off-by: Chaoscaot <max@maxsp.de>
This commit is contained in:
2025-12-02 21:34:35 +01:00
parent 0a7a753c48
commit a089d42d9a
8 changed files with 45 additions and 60 deletions
@@ -48,6 +48,7 @@ import java.time.Instant
fun Route.configureAuditLog() {
route("/auditlog") {
install(SWPermissionCheck) {
mustAuth = true
permission = UserPerm.MODERATION
}
@@ -55,13 +56,13 @@ fun Route.configureAuditLog() {
val text = call.request.queryParameters["fullText"]
val actionText = call.request.queryParameters["actionText"]
val serverText = call.request.queryParameters["server"]
val actor = call.request.queryParameters.getAll("actor")?.toSet()
val actor = call.request.queryParameters.getAll("actor")?.map { it.toInt() }?.toSet()
val actionType =
call.request.queryParameters.getAll("actionType")?.map { AuditLog.Type.valueOf(it) }?.toSet()
val timeGreater = call.request.queryParameters["timeGreater"]?.let { Instant.ofEpochMilli(it.toLong()) }
val timeLess = call.request.queryParameters["timeLess"]?.let { Instant.ofEpochMilli(it.toLong()) }
val serverOwner = call.request.queryParameters.getAll("serverOwner")?.toSet()
val serverOwner = call.request.queryParameters.getAll("serverOwner")?.map { it.toInt() }?.toSet()
val velocity = call.request.queryParameters["velocity"]?.toBoolean()
val page = call.request.queryParameters["page"]?.toIntOrNull() ?: 0
@@ -96,11 +97,11 @@ data class PagedAuditLog(val rows: Long, val entries: List<AuditLogEntry>) {
actionText: String? = null,
serverText: String? = null,
fullText: String? = null,
actor: Set<String>? = null,
actor: Set<Int>? = null,
actionType: Set<AuditLog.Type>? = null,
timeGreater: Instant? = null,
timeLess: Instant? = null,
serverOwner: Set<String>? = null,
serverOwner: Set<Int>? = null,
velocity: Boolean? = null,
page: Int = 0,
limit: Int = 100,
@@ -139,7 +140,7 @@ data class PagedAuditLog(val rows: Long, val entries: List<AuditLogEntry>) {
query.andWhere { (AuditLogTable.actionText like "%$it%") or (AuditLogTable.server like "%$it%") }
}
actor?.let { query.andWhere { actorTable[SteamwarUserTable.uuid] inList actor } }
actor?.let { query.andWhere { AuditLogTable.actor inList actor } }
actionType?.let { query.andWhere { AuditLogTable.action inList actionType } }
@@ -147,7 +148,7 @@ data class PagedAuditLog(val rows: Long, val entries: List<AuditLogEntry>) {
timeLess?.let { query.andWhere { AuditLogTable.time less timeLess } }
serverOwner?.let { query.andWhere { serverOwnerTable[SteamwarUserTable.uuid] inList serverOwner } }
serverOwner?.let { query.andWhere { AuditLogTable.serverOwner inList serverOwner } }
if (velocity == true) query.andWhere { AuditLogTable.serverOwner.isNull() }