From 22ed7e23dad151aaa49ae7e75172bb63b2451477 Mon Sep 17 00:00:00 2001 From: Chaoscaot Date: Thu, 25 Dec 2025 20:51:57 +0100 Subject: [PATCH] Add DB Indexes for future local Development deployments Signed-off-by: Chaoscaot --- CommonCore/SQL/src/de/steamwar/sql/AuditLog.kt | 10 +++++----- .../SQL/src/de/steamwar/sql/BannedUserIPs.kt | 6 +++--- .../SQL/src/de/steamwar/sql/BauweltMember.kt | 4 ++-- .../SQL/src/de/steamwar/sql/CheckedSchematic.kt | 17 +++++++++++------ CommonCore/SQL/src/de/steamwar/sql/Event.kt | 4 ++-- .../SQL/src/de/steamwar/sql/EventFight.kt | 12 ++++++------ .../SQL/src/de/steamwar/sql/EventGroup.kt | 4 ++++ .../SQL/src/de/steamwar/sql/EventRelation.kt | 2 +- CommonCore/SQL/src/de/steamwar/sql/Fight.kt | 10 +++++----- .../SQL/src/de/steamwar/sql/FightPlayer.kt | 2 +- .../SQL/src/de/steamwar/sql/IgnoreSystem.kt | 4 ++-- CommonCore/SQL/src/de/steamwar/sql/NodeData.kt | 2 +- .../SQL/src/de/steamwar/sql/NodeDownload.kt | 5 +++-- .../SQL/src/de/steamwar/sql/NodeMember.kt | 7 ++++--- .../SQL/src/de/steamwar/sql/PersonalKit.kt | 1 + .../SQL/src/de/steamwar/sql/Punishment.kt | 6 +++++- CommonCore/SQL/src/de/steamwar/sql/Referee.kt | 2 +- .../SQL/src/de/steamwar/sql/SchematicNode.kt | 10 +++++++--- CommonCore/SQL/src/de/steamwar/sql/Script.kt | 6 +++++- CommonCore/SQL/src/de/steamwar/sql/Session.kt | 2 +- .../SQL/src/de/steamwar/sql/SteamwarUser.kt | 8 ++++---- CommonCore/SQL/src/de/steamwar/sql/Team.kt | 4 ++-- .../SQL/src/de/steamwar/sql/TeamTeilnahme.kt | 4 ++-- CommonCore/SQL/src/de/steamwar/sql/Token.kt | 6 +++--- CommonCore/SQL/src/de/steamwar/sql/UserPerm.kt | 2 +- .../de/steamwar/sql/internal/KotlinDatabase.kt | 2 +- 26 files changed, 83 insertions(+), 59 deletions(-) diff --git a/CommonCore/SQL/src/de/steamwar/sql/AuditLog.kt b/CommonCore/SQL/src/de/steamwar/sql/AuditLog.kt index 7ab0c8c4..26f7f27f 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/AuditLog.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/AuditLog.kt @@ -28,11 +28,11 @@ import org.jetbrains.exposed.v1.javatime.timestamp import java.time.Instant object AuditLogTable: IntIdTable("AuditLog", "AuditLogId") { - val time = timestamp("Time") - val server = varchar("ServerName", 255) - val serverOwner = reference("ServerOwner", SteamwarUserTable).nullable() - val actor = reference("Actor", SteamwarUserTable) - val action = enumerationByName("ActionType", 255, AuditLog.Type::class) + val time = timestamp("Time").index() + val server = varchar("ServerName", 255).index() + val serverOwner = reference("ServerOwner", SteamwarUserTable).nullable().index() + val actor = reference("Actor", SteamwarUserTable).index() + val action = enumerationByName("ActionType", 255, AuditLog.Type::class).index() val actionText = text("ActionText") } diff --git a/CommonCore/SQL/src/de/steamwar/sql/BannedUserIPs.kt b/CommonCore/SQL/src/de/steamwar/sql/BannedUserIPs.kt index 495238ad..a3c3bae3 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/BannedUserIPs.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/BannedUserIPs.kt @@ -33,9 +33,9 @@ import java.sql.Timestamp import java.time.Instant object BannedUserIPsTable: CompositeIdTable("BannedUserIPs") { - val userId = reference("UserID", SteamwarUserTable) - val timestamp = timestamp("Timestamp") - val ip = varchar("IP", 45) + val userId = reference("UserID", SteamwarUserTable).index() + val timestamp = timestamp("Timestamp").index() + val ip = varchar("IP", 45).index() override val primaryKey = PrimaryKey(userId, ip) } diff --git a/CommonCore/SQL/src/de/steamwar/sql/BauweltMember.kt b/CommonCore/SQL/src/de/steamwar/sql/BauweltMember.kt index 66e3bb8b..b1d36e98 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/BauweltMember.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/BauweltMember.kt @@ -32,8 +32,8 @@ import org.jetbrains.exposed.v1.jdbc.insertIgnore import java.util.* object BauweltMemberTable: CompositeIdTable("BauweltMember") { - val bauweltId = reference("BauweltID", SteamwarUserTable) - val memberId = reference("MemberID", SteamwarUserTable) + val bauweltId = reference("BauweltID", SteamwarUserTable).index() + val memberId = reference("MemberID", SteamwarUserTable).index() val build = bool("Build") val worldEdit = bool("WorldEdit") val world = bool("World") diff --git a/CommonCore/SQL/src/de/steamwar/sql/CheckedSchematic.kt b/CommonCore/SQL/src/de/steamwar/sql/CheckedSchematic.kt index 3e51d24e..7d2753f6 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/CheckedSchematic.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/CheckedSchematic.kt @@ -20,6 +20,7 @@ package de.steamwar.sql import de.steamwar.sql.internal.useDb +import org.jetbrains.exposed.v1.core.ReferenceOption import org.jetbrains.exposed.v1.core.SortOrder import org.jetbrains.exposed.v1.core.and import org.jetbrains.exposed.v1.core.dao.id.CompositeID @@ -34,19 +35,23 @@ import org.jetbrains.exposed.v1.jdbc.insertIgnore import java.sql.Timestamp object CheckedSchematicTable: CompositeIdTable("CheckedSchematic") { - val nodeId = optReference("NodeId", SchematicNodeTable) - val nodeOwner = reference("NodeOwner", SteamwarUserTable) - val nodeName = varchar("NodeName", 64).entityId() - val validator = reference("Validator", SteamwarUserTable) - val startTime = timestamp("StartTime").entityId() + val nodeId = optReference("NodeId", SchematicNodeTable, onDelete = ReferenceOption.SET_NULL, onUpdate = ReferenceOption.SET_NULL).index() + val nodeOwner = reference("NodeOwner", SteamwarUserTable).index() + val nodeName = varchar("NodeName", 64).entityId().index() + val validator = reference("Validator", SteamwarUserTable).index() + val startTime = timestamp("StartTime").entityId().index() val endTime = timestamp("EndTime") val declineReason = text("DeclineReason") - val seen = bool("Seen") + val seen = bool("Seen").index() val nodeType = varchar("NodeType", 16) init { addIdColumn(nodeOwner) addIdColumn(nodeName) + + index(false, nodeOwner, endTime) + index(false, startTime, endTime, nodeName) + index(false, seen, nodeOwner, startTime) } } diff --git a/CommonCore/SQL/src/de/steamwar/sql/Event.kt b/CommonCore/SQL/src/de/steamwar/sql/Event.kt index ffc08b8d..385f0e11 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/Event.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/Event.kt @@ -36,8 +36,8 @@ import java.time.Instant object EventTable : IntIdTable("Event", "EventId") { val name = varchar("EventName", 100).uniqueIndex() val deadline = timestamp("Deadline") - val start = timestamp("Start") - val end = timestamp("End") + val start = timestamp("Start").index() + val end = timestamp("End").index() val maxPlayers = integer("MaximumTeamMembers") val schemType = varchar("SchemType", 16).nullable() val publicsOnly = bool("PublicSchemsOnly") diff --git a/CommonCore/SQL/src/de/steamwar/sql/EventFight.kt b/CommonCore/SQL/src/de/steamwar/sql/EventFight.kt index f4c60248..324088e3 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/EventFight.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/EventFight.kt @@ -33,17 +33,17 @@ import java.time.Instant import java.util.* object EventFightTable : IntIdTable("EventFight", "FightID") { - val eventId = reference("EventID", EventTable) - val startTime = timestamp("StartTime") + val eventId = reference("EventID", EventTable).index() + val startTime = timestamp("StartTime").index() val gamemode = text("Spielmodus") val map = text("Map") - val groupId = optReference("GroupId", EventGroupTable) - val teamBlue = reference("TeamBlue", TeamTable) - val teamRed = reference("TeamRed", TeamTable) + val groupId = optReference("GroupId", EventGroupTable).index() + val teamBlue = reference("TeamBlue", TeamTable).index() + val teamRed = reference("TeamRed", TeamTable).index() val spectatePort = integer("SpectatePort").nullable() val bestOf = integer("BestOf") val ergebnis = integer("Ergebnis") - val fight = optReference("Fight", FightTable) + val fight = optReference("Fight", FightTable).index() } class EventFight(id: EntityID) : IntEntity(id), Comparable { diff --git a/CommonCore/SQL/src/de/steamwar/sql/EventGroup.kt b/CommonCore/SQL/src/de/steamwar/sql/EventGroup.kt index 5db01dbf..75f55c30 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/EventGroup.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/EventGroup.kt @@ -34,6 +34,10 @@ object EventGroupTable : IntIdTable("EventGroup", "Id") { val pointsPerWin = integer("PointsPerWin").default(3) val pointsPerLoss = integer("PointsPerLoss").default(0) val pointsPerDraw = integer("PointsPerDraw").default(1) + + init { + uniqueIndex(event, name) + } } class EventGroup(id: EntityID) : IntEntity(id) { diff --git a/CommonCore/SQL/src/de/steamwar/sql/EventRelation.kt b/CommonCore/SQL/src/de/steamwar/sql/EventRelation.kt index 0ca7be22..b832b914 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/EventRelation.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/EventRelation.kt @@ -29,7 +29,7 @@ import org.jetbrains.exposed.v1.dao.IntEntityClass import org.jetbrains.exposed.v1.jdbc.select object EventRelationTable : IntIdTable("EventRelation") { - val fightId = reference("FightId", EventFightTable) + val fightId = reference("FightId", EventFightTable).index() val fightTeam = enumeration("FightTeam", EventRelation.FightTeam::class) val fromType = enumeration("FromType", EventRelation.FromType::class) val fromId = integer("FromId") diff --git a/CommonCore/SQL/src/de/steamwar/sql/Fight.kt b/CommonCore/SQL/src/de/steamwar/sql/Fight.kt index d64d7583..811d670d 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/Fight.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/Fight.kt @@ -34,14 +34,14 @@ import org.jetbrains.exposed.v1.jdbc.update import java.sql.Timestamp object FightTable : IntIdTable("Fight", "FightId") { - val gamemode = varchar("Gamemode", 30) + val gamemode = varchar("Gamemode", 30).index() val server = text("Server") val startTime = timestamp("StartTime") val duration = integer("Duration") - val blueLeader = reference("BlueLeader", SteamwarUserTable) - val redLeader = reference("RedLeader", SteamwarUserTable) - val blueSchem = optReference("BlueSchem", SchematicNodeTable, onDelete = ReferenceOption.SET_NULL) - val redSchem = optReference("RedSchem", SchematicNodeTable, onDelete = ReferenceOption.SET_NULL) + val blueLeader = reference("BlueLeader", SteamwarUserTable).index() + val redLeader = reference("RedLeader", SteamwarUserTable).index() + val blueSchem = optReference("BlueSchem", SchematicNodeTable, onDelete = ReferenceOption.SET_NULL).index() + val redSchem = optReference("RedSchem", SchematicNodeTable, onDelete = ReferenceOption.SET_NULL).index() val win = enumeration("Win", Fight.WinningTeam::class) val winCondition = varchar("WinCondition", 100) val replayAvailable = bool("ReplayAvailable") diff --git a/CommonCore/SQL/src/de/steamwar/sql/FightPlayer.kt b/CommonCore/SQL/src/de/steamwar/sql/FightPlayer.kt index d0238c96..c6779114 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/FightPlayer.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/FightPlayer.kt @@ -30,7 +30,7 @@ import org.jetbrains.exposed.v1.jdbc.insertIgnore object FightPlayerTable : CompositeIdTable("FightPlayer") { val fightId = reference("FightId", FightTable) - val userId = reference("UserId", SteamwarUserTable) + val userId = reference("UserId", SteamwarUserTable).index() val team = integer("Team") val kit = varchar("Kit", 64) val kills = integer("Kills") diff --git a/CommonCore/SQL/src/de/steamwar/sql/IgnoreSystem.kt b/CommonCore/SQL/src/de/steamwar/sql/IgnoreSystem.kt index 9df3a8cf..27daeabf 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/IgnoreSystem.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/IgnoreSystem.kt @@ -30,8 +30,8 @@ import org.jetbrains.exposed.v1.dao.CompositeEntityClass import java.util.* object IgnoreSystemTable: CompositeIdTable("IgnoredPlayers") { - val ignorer = reference("Ignorer", SteamwarUserTable) - val ignored = reference("Ignored", SteamwarUserTable) + val ignorer = reference("Ignorer", SteamwarUserTable).index() + val ignored = reference("Ignored", SteamwarUserTable).index() override val primaryKey = PrimaryKey(ignorer, ignored) diff --git a/CommonCore/SQL/src/de/steamwar/sql/NodeData.kt b/CommonCore/SQL/src/de/steamwar/sql/NodeData.kt index 69552ac0..f9d47793 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/NodeData.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/NodeData.kt @@ -35,7 +35,7 @@ import java.io.InputStream import java.util.zip.GZIPInputStream object NodeDataTable: CompositeIdTable("NodeData") { - val nodeId = reference("NodeId", SchematicNodeTable) + val nodeId = reference("NodeId", SchematicNodeTable).index() val createdAt = timestamp("CreatedAt").defaultExpression(CurrentTimestamp).entityId() val nodeFormat = enumeration("NodeFormat", NodeData.SchematicFormat::class) val schemData = blob("SchemData") diff --git a/CommonCore/SQL/src/de/steamwar/sql/NodeDownload.kt b/CommonCore/SQL/src/de/steamwar/sql/NodeDownload.kt index 62de6038..fc992c65 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/NodeDownload.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/NodeDownload.kt @@ -20,6 +20,7 @@ package de.steamwar.sql import de.steamwar.sql.internal.useDb +import org.jetbrains.exposed.v1.core.ReferenceOption import org.jetbrains.exposed.v1.core.dao.id.EntityID import org.jetbrains.exposed.v1.core.dao.id.IdTable import org.jetbrains.exposed.v1.core.eq @@ -32,8 +33,8 @@ import java.sql.Timestamp import java.time.Instant object NodeDownloadTable: IdTable("NodeDownload") { - override val id = reference("NodeId", SchematicNodeTable).uniqueIndex() - val link = varchar("Link", 255) + override val id = reference("NodeId", SchematicNodeTable, onDelete = ReferenceOption.CASCADE).uniqueIndex() + val link = varchar("Link", 255).uniqueIndex() val timestamp = timestamp("Timestamp").defaultExpression(CurrentTimestamp) } diff --git a/CommonCore/SQL/src/de/steamwar/sql/NodeMember.kt b/CommonCore/SQL/src/de/steamwar/sql/NodeMember.kt index cf6d951e..0adaecb5 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/NodeMember.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/NodeMember.kt @@ -20,6 +20,7 @@ package de.steamwar.sql import de.steamwar.sql.internal.useDb +import org.jetbrains.exposed.v1.core.ReferenceOption import org.jetbrains.exposed.v1.core.and import org.jetbrains.exposed.v1.core.dao.id.CompositeID import org.jetbrains.exposed.v1.core.dao.id.CompositeIdTable @@ -32,9 +33,9 @@ import java.util.* import kotlin.jvm.optionals.getOrNull object NodeMemberTable : CompositeIdTable("NodeMember") { - val node = reference("NodeId", SchematicNodeTable) - val userId = reference("UserId", SteamwarUserTable) - val parentNode = optReference("ParentId", SchematicNodeTable) + val node = reference("NodeId", SchematicNodeTable, onDelete = ReferenceOption.CASCADE, onUpdate = ReferenceOption.CASCADE).index() + val userId = reference("UserId", SteamwarUserTable).index() + val parentNode = optReference("ParentId", SchematicNodeTable).index() override val primaryKey = PrimaryKey(node, userId) diff --git a/CommonCore/SQL/src/de/steamwar/sql/PersonalKit.kt b/CommonCore/SQL/src/de/steamwar/sql/PersonalKit.kt index 55d38a6a..8dfb93c6 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/PersonalKit.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/PersonalKit.kt @@ -41,6 +41,7 @@ object PersonalKitTable: CompositeIdTable("PersonalKit") { init { addIdColumn(userId) + index(false, userId, gamemode) } } diff --git a/CommonCore/SQL/src/de/steamwar/sql/Punishment.kt b/CommonCore/SQL/src/de/steamwar/sql/Punishment.kt index d2ad06ba..631269df 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/Punishment.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/Punishment.kt @@ -34,12 +34,16 @@ import java.util.function.Consumer object PunishmentTable : IntIdTable("Punishments", "PunishmentId") { val userId = reference("UserId", SteamwarUserTable) - val punisher = reference("Punisher", SteamwarUserTable) + val punisher = reference("Punisher", SteamwarUserTable).index() val type = enumerationByName("Type", 32, Punishment.PunishmentType::class) val startTime = timestamp("StartTime") val endTime = timestamp("EndTime") val perma = bool("Perma") val reason = text("Reason") + + init { + index(false, userId, type) + } } class Punishment(id: EntityID) : IntEntity(id) { diff --git a/CommonCore/SQL/src/de/steamwar/sql/Referee.kt b/CommonCore/SQL/src/de/steamwar/sql/Referee.kt index 594b12cd..dc2c00b1 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/Referee.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/Referee.kt @@ -30,7 +30,7 @@ import org.jetbrains.exposed.v1.dao.CompositeEntityClass object RefereeTable: CompositeIdTable("Referee") { val eventId = reference("EventId", EventTable) - val userId = reference("UserId", SteamwarUserTable) + val userId = reference("UserId", SteamwarUserTable).index() override val primaryKey = PrimaryKey(eventId, userId) diff --git a/CommonCore/SQL/src/de/steamwar/sql/SchematicNode.kt b/CommonCore/SQL/src/de/steamwar/sql/SchematicNode.kt index 8cc0363f..73ac3cb8 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/SchematicNode.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/SchematicNode.kt @@ -34,13 +34,17 @@ import java.util.* import java.util.function.Consumer object SchematicNodeTable : IntIdTable("SchematicNode", "NodeId") { - val owner = reference("NodeOwner", SteamwarUserTable) + val owner = reference("NodeOwner", SteamwarUserTable).index() val name = varchar("NodeName", 64) - val parent = optReference("ParentNode", SchematicNodeTable) + val parent = optReference("ParentNode", SchematicNodeTable).index() val lastUpdate = timestamp("LastUpdate").defaultExpression(CurrentTimestamp) val item = text("NodeItem") - val type = varchar("NodeType", 16).nullable() + val type = varchar("NodeType", 16).nullable().index() val config = integer("Config") + + init { + uniqueIndex(parent, owner, name) + } } class SchematicNode(id: EntityID) : IntEntity(id) { diff --git a/CommonCore/SQL/src/de/steamwar/sql/Script.kt b/CommonCore/SQL/src/de/steamwar/sql/Script.kt index 9344db62..12bda03a 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/Script.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/Script.kt @@ -28,9 +28,13 @@ import org.jetbrains.exposed.v1.dao.IntEntity import org.jetbrains.exposed.v1.dao.IntEntityClass object ScriptTable: IntIdTable("Script") { - val userId = reference("UserId", SteamwarUserTable) + val userId = reference("UserId", SteamwarUserTable).index() val name = varchar("Name", 64) val code = text("Code") + + init { + uniqueIndex(userId, name) + } } class Script(id: EntityID) : IntEntity(id) { diff --git a/CommonCore/SQL/src/de/steamwar/sql/Session.kt b/CommonCore/SQL/src/de/steamwar/sql/Session.kt index 14a30237..f52b1db9 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/Session.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/Session.kt @@ -28,7 +28,7 @@ import org.jetbrains.exposed.v1.jdbc.insert import java.sql.Timestamp object SessionTable: Table("Session") { - val userId = reference("UserId", SteamwarUserTable) + val userId = reference("UserId", SteamwarUserTable).index() val startTime = timestamp("StartTime") val endTime = timestamp("EndTime").defaultExpression(CurrentTimestamp) } diff --git a/CommonCore/SQL/src/de/steamwar/sql/SteamwarUser.kt b/CommonCore/SQL/src/de/steamwar/sql/SteamwarUser.kt index fdd8204c..fc238237 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/SteamwarUser.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/SteamwarUser.kt @@ -37,15 +37,15 @@ import javax.crypto.SecretKeyFactory import javax.crypto.spec.PBEKeySpec object SteamwarUserTable : IntIdTable("UserData", "id") { - val uuid = varchar("UUID", 36) - val username = varchar("UserName", 32) - val team = reference("Team", TeamTable) + val uuid = varchar("UUID", 36).uniqueIndex() + val username = varchar("UserName", 32).index() + val team = reference("Team", TeamTable).index() val leader = bool("Leader") val locale = varchar("Locale", 16).nullable() val manualLocale = bool("ManualLocale") val bedrock = bool("Bedrock") val password = text("Password").nullable() - val discordId = long("DiscordId").nullable() + val discordId = long("DiscordId").nullable().uniqueIndex() } class SteamwarUser(id: EntityID): IntEntity(id) { diff --git a/CommonCore/SQL/src/de/steamwar/sql/Team.kt b/CommonCore/SQL/src/de/steamwar/sql/Team.kt index fa5a1433..c6d63759 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/Team.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/Team.kt @@ -28,9 +28,9 @@ import org.jetbrains.exposed.v1.dao.IntEntityClass import org.jetbrains.exposed.v1.jdbc.select object TeamTable : IntIdTable("Team", "TeamID") { - val kuerzel = varchar("TeamKuerzel", 10) + val kuerzel = varchar("TeamKuerzel", 10).index() val color = char("TeamColor", 1).default("8") - val name = varchar("TeamName", 16) + val name = varchar("TeamName", 16).index() val deleted = bool("TeamDeleted").default(false) val address = text("Address").nullable() val port = ushort("Port").default(25565u) diff --git a/CommonCore/SQL/src/de/steamwar/sql/TeamTeilnahme.kt b/CommonCore/SQL/src/de/steamwar/sql/TeamTeilnahme.kt index 1fd92e3c..bc09bde3 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/TeamTeilnahme.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/TeamTeilnahme.kt @@ -32,8 +32,8 @@ import org.jetbrains.exposed.v1.jdbc.deleteWhere import org.jetbrains.exposed.v1.jdbc.insertIgnore object TeamTeilnahmeTable : CompositeIdTable("TeamTeilnahme") { - val teamId = reference("teamId", TeamTable) - val eventId = reference("eventId", EventTable) + val teamId = reference("teamId", TeamTable).index() + val eventId = reference("eventId", EventTable).index() val placement = integer("Placement").nullable() override val primaryKey = PrimaryKey(teamId, eventId) diff --git a/CommonCore/SQL/src/de/steamwar/sql/Token.kt b/CommonCore/SQL/src/de/steamwar/sql/Token.kt index d63dab5b..2380f502 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/Token.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/Token.kt @@ -33,10 +33,10 @@ import java.sql.Timestamp import java.util.* object TokenTable: IntIdTable("Token") { - val name = varchar("Name", 64) - val owner = reference("Owner", SteamwarUserTable) + val name = varchar("Name", 64).uniqueIndex() + val owner = reference("Owner", SteamwarUserTable).index() val created = timestamp("Created").defaultExpression(CurrentTimestamp) - val hash = varchar("Hash", 88) + val hash = varchar("Hash", 88).uniqueIndex() } class Token(id: EntityID): IntEntity(id) { diff --git a/CommonCore/SQL/src/de/steamwar/sql/UserPerm.kt b/CommonCore/SQL/src/de/steamwar/sql/UserPerm.kt index 5766453f..04af15ac 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/UserPerm.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/UserPerm.kt @@ -28,7 +28,7 @@ import org.jetbrains.exposed.v1.jdbc.insert import org.jetbrains.exposed.v1.jdbc.selectAll object UserPermTable: Table("UserPerm") { - val user = reference("User", SteamwarUserTable.id) + val user = reference("User", SteamwarUserTable.id).index() val perm = enumerationByName("Perm", 32, UserPerm::class) override val primaryKey = PrimaryKey(user, perm) diff --git a/CommonCore/SQL/src/de/steamwar/sql/internal/KotlinDatabase.kt b/CommonCore/SQL/src/de/steamwar/sql/internal/KotlinDatabase.kt index 97ecdead..34c7b1f8 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/internal/KotlinDatabase.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/internal/KotlinDatabase.kt @@ -67,7 +67,7 @@ object KotlinDatabase { } } -fun useDb(statement: JdbcTransaction.() -> T): T { +fun useDb(statement: JdbcTransaction.() -> T): T { KotlinDatabase.ensureConnected() return TransactionManager.currentOrNull()?.statement() ?: transaction(KotlinDatabase.db) { statement()