diff --git a/surf-cloud-standalone/src/main/kotlin/dev/slne/surf/cloud/standalone/GenerateExposedMigrationScript.kt b/surf-cloud-standalone/src/main/kotlin/dev/slne/surf/cloud/standalone/GenerateExposedMigrationScript.kt index 2778e9f7..9c37dcba 100644 --- a/surf-cloud-standalone/src/main/kotlin/dev/slne/surf/cloud/standalone/GenerateExposedMigrationScript.kt +++ b/surf-cloud-standalone/src/main/kotlin/dev/slne/surf/cloud/standalone/GenerateExposedMigrationScript.kt @@ -16,6 +16,6 @@ fun main() { MutePunishmentNoteTable, WarnPunishmentNoteTable, WhitelistTable, - scriptName = "V7__add_whitelist_table", + scriptName = "V8__change_tables_add_cloud_player_references", ) } \ No newline at end of file diff --git a/surf-cloud-standalone/src/main/kotlin/dev/slne/surf/cloud/standalone/player/db/exposed/CloudPlayerTables.kt b/surf-cloud-standalone/src/main/kotlin/dev/slne/surf/cloud/standalone/player/db/exposed/CloudPlayerTables.kt index d7171d2d..756d27dc 100644 --- a/surf-cloud-standalone/src/main/kotlin/dev/slne/surf/cloud/standalone/player/db/exposed/CloudPlayerTables.kt +++ b/surf-cloud-standalone/src/main/kotlin/dev/slne/surf/cloud/standalone/player/db/exposed/CloudPlayerTables.kt @@ -7,7 +7,7 @@ import dev.slne.surf.cloud.api.server.exposed.table.AuditableLongIdTable import org.jetbrains.exposed.sql.ReferenceOption import java.net.Inet4Address -object CloudPlayerTable : AuditableLongIdTable("cloud_player") { +object CloudPlayerTable : AuditableLongIdTable("cloud_players") { val uuid = nativeUuid("uuid").uniqueIndex() val lastServer = char("last_server", 255).nullable() val lastSeen = zonedDateTime("last_seen").nullable() @@ -19,7 +19,7 @@ object CloudPlayerTable : AuditableLongIdTable("cloud_player") { .nullable() } -object CloudPlayerNameHistoryTable : AuditableLongIdTable("cloud_player_name_history") { +object CloudPlayerNameHistoryTable : AuditableLongIdTable("cloud_player_name_histories") { val name = char("name", 16) val player = reference( "cloud_player_id", diff --git a/surf-cloud-standalone/src/main/kotlin/dev/slne/surf/cloud/standalone/player/db/exposed/punishment/table/AbstractPunishmentTable.kt b/surf-cloud-standalone/src/main/kotlin/dev/slne/surf/cloud/standalone/player/db/exposed/punishment/table/AbstractPunishmentTable.kt index 5590eff4..56d55f91 100644 --- a/surf-cloud-standalone/src/main/kotlin/dev/slne/surf/cloud/standalone/player/db/exposed/punishment/table/AbstractPunishmentTable.kt +++ b/surf-cloud-standalone/src/main/kotlin/dev/slne/surf/cloud/standalone/player/db/exposed/punishment/table/AbstractPunishmentTable.kt @@ -5,11 +5,23 @@ import dev.slne.surf.cloud.api.server.exposed.table.AuditableLongIdTable abstract class AbstractPunishmentTable(name: String) : AuditableLongIdTable(name) { val punishmentId = char("punishment_id", 8).uniqueIndex() - val punishedUuid = nativeUuid("punished_uuid") - val issuerUuid = nativeUuid("issuer_uuid").nullable() + val parentPunishment = reference( + "parent_punishment_id", + this, + onDelete = ReferenceOption.CASCADE, + onUpdate = ReferenceOption.CASCADE + ).nullable() + val punishedPlayer = reference( + "cloud_player_id", + CloudPlayerTable, + onDelete = ReferenceOption.CASCADE, + onUpdate = ReferenceOption.CASCADE + ) + val issuerPlayer = reference( + "issuer_id", + CloudPlayerTable, + onDelete = ReferenceOption.SET_NULL, + onUpdate = ReferenceOption.SET_NULL + ).nullable() val reason = largeText("reason").nullable() - - init { - index("idx_punished_uuid", false, punishedUuid) - } } \ No newline at end of file diff --git a/surf-cloud-standalone/src/main/kotlin/dev/slne/surf/cloud/standalone/player/db/exposed/punishment/table/AbstractUnpunishableExpirablePunishmentTable.kt b/surf-cloud-standalone/src/main/kotlin/dev/slne/surf/cloud/standalone/player/db/exposed/punishment/table/AbstractUnpunishableExpirablePunishmentTable.kt index f3120f33..defc5a6c 100644 --- a/surf-cloud-standalone/src/main/kotlin/dev/slne/surf/cloud/standalone/player/db/exposed/punishment/table/AbstractUnpunishableExpirablePunishmentTable.kt +++ b/surf-cloud-standalone/src/main/kotlin/dev/slne/surf/cloud/standalone/player/db/exposed/punishment/table/AbstractUnpunishableExpirablePunishmentTable.kt @@ -7,7 +7,12 @@ abstract class AbstractUnpunishableExpirablePunishmentTable(name: String) : AbstractPunishmentTable(name) { val unpunished = bool("unpunished").default(false) val unpunishedDate = zonedDateTime("unpunished_date").nullable().default(null) - val unpunisherUuid = nativeUuid("unpunisher_uuid").nullable().default(null) + val unpunisherPlayer = reference( + "unpunisher_id", + CloudPlayerTable, + onDelete = ReferenceOption.CASCADE, + onUpdate = ReferenceOption.CASCADE + ).nullable().default(null) val expirationDate = zonedDateTime("expiration_date").nullable().default(null) val permanent = bool("permanent").default(false) diff --git a/surf-cloud-standalone/src/main/kotlin/dev/slne/surf/cloud/standalone/player/db/exposed/whitelist/WhitelistTable.kt b/surf-cloud-standalone/src/main/kotlin/dev/slne/surf/cloud/standalone/player/db/exposed/whitelist/WhitelistTable.kt index 92267ac5..b49ba0c1 100644 --- a/surf-cloud-standalone/src/main/kotlin/dev/slne/surf/cloud/standalone/player/db/exposed/whitelist/WhitelistTable.kt +++ b/surf-cloud-standalone/src/main/kotlin/dev/slne/surf/cloud/standalone/player/db/exposed/whitelist/WhitelistTable.kt @@ -7,8 +7,7 @@ import org.jetbrains.exposed.sql.ReferenceOption import org.jetbrains.exposed.sql.and import org.jetbrains.exposed.sql.or -object WhitelistTable : AuditableLongIdTable("whitelist") { - val uuid = nativeUuid("uuid").index() +object WhitelistTable : AuditableLongIdTable("whitelists") { val blocked = bool("blocked").default(false) val group = varchar("group", 255).nullable() val serverName = varchar("server_name", 255).nullable() @@ -25,6 +24,6 @@ object WhitelistTable : AuditableLongIdTable("whitelist") { } uniqueIndex(uuid, group) - uniqueIndex(uuid, serverName,) + uniqueIndex(uuid, serverName) } } \ No newline at end of file