diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5b6fb558..8e9295ee 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,7 +19,7 @@ jobs: steps: - name: Checkout Repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: fetch-tags: true fetch-depth: 0 @@ -51,14 +51,14 @@ jobs: echo "DISCORD_ARTIFACT_PATH=$(gradle :imperium-discord:getArtifactPath -q)" >> $GITHUB_ENV - name: Upload Mindustry artifact to Actions - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: imperium-mindustry path: "${{ env.MINDUSTRY_ARTIFACT_PATH }}" if-no-files-found: error - name: Upload Discord artifacts to Actions - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: imperium-discord path: "${{ env.DISCORD_ARTIFACT_PATH }}" @@ -70,6 +70,6 @@ jobs: - name: Commit Formatted Code if: ${{ github.event_name != 'pull_request' }} - uses: stefanzweifel/git-auto-commit-action@v6 + uses: stefanzweifel/git-auto-commit-action@v7 with: commit_message: "style: Format code" diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 3ffe1c75..fb38116e 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -11,7 +11,7 @@ jobs: version: "${{ steps.setup.outputs.version }}" steps: - name: Checkout Repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: fetch-tags: true fetch-depth: 0 @@ -57,7 +57,7 @@ jobs: run: gradle incrementVersionFile - name: Commit Incremented Version - uses: stefanzweifel/git-auto-commit-action@v6 + uses: stefanzweifel/git-auto-commit-action@v7 with: branch: "${{ github.event.release.target_commitish }}" commit_message: "chore: Increment version" @@ -69,7 +69,7 @@ jobs: needs: [ github ] steps: - name: Checkout Repository - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: ref: "refs/tags/v${{ needs.github.outputs.version }}" fetch-tags: true diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d6c351f3..ba7c245d 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -16,12 +16,12 @@ hoplite = "2.9.0" slf4j = "2.0.17" slf4md = "1.2.0" sql4md = "1.2.0" -jsoup = "1.21.2" +jsoup = "1.22.1" okhttp = "5.3.2" classgraph = "4.8.184" logback = "1.5.32" hikari = "7.0.2" -exposed = "0.61.0" +exposed = "1.1.1" h2 = "2.4.240" mariadb = "3.5.7" caffeine = "3.2.3" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 2e111328..dbc3ce4a 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.0-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/AccountManager.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/AccountManager.kt index bf5dc74b..e20d2c08 100644 --- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/AccountManager.kt +++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/AccountManager.kt @@ -23,18 +23,20 @@ import kotlin.time.toJavaDuration import kotlin.time.toKotlinDuration import kotlinx.coroutines.runBlocking import kotlinx.serialization.Serializable -import org.jetbrains.exposed.sql.ResultRow -import org.jetbrains.exposed.sql.SchemaUtils -import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq -import org.jetbrains.exposed.sql.SqlExpressionBuilder.inList -import org.jetbrains.exposed.sql.SqlExpressionBuilder.less -import org.jetbrains.exposed.sql.SqlExpressionBuilder.plus -import org.jetbrains.exposed.sql.and -import org.jetbrains.exposed.sql.deleteWhere -import org.jetbrains.exposed.sql.insert -import org.jetbrains.exposed.sql.selectAll -import org.jetbrains.exposed.sql.update -import org.jetbrains.exposed.sql.upsert +import org.jetbrains.exposed.v1.core.ResultRow +import org.jetbrains.exposed.v1.core.and +import org.jetbrains.exposed.v1.core.eq +import org.jetbrains.exposed.v1.core.greaterEq +import org.jetbrains.exposed.v1.core.inList +import org.jetbrains.exposed.v1.core.less +import org.jetbrains.exposed.v1.core.plus +import org.jetbrains.exposed.v1.jdbc.SchemaUtils +import org.jetbrains.exposed.v1.jdbc.deleteWhere +import org.jetbrains.exposed.v1.jdbc.insert +import org.jetbrains.exposed.v1.jdbc.select +import org.jetbrains.exposed.v1.jdbc.selectAll +import org.jetbrains.exposed.v1.jdbc.update +import org.jetbrains.exposed.v1.jdbc.upsert interface AccountManager { diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/AccountTable.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/AccountTable.kt index a39877d3..20b11707 100644 --- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/AccountTable.kt +++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/account/AccountTable.kt @@ -2,12 +2,12 @@ package com.xpdustry.imperium.common.account import java.time.Duration -import org.jetbrains.exposed.dao.id.IntIdTable -import org.jetbrains.exposed.sql.ReferenceOption -import org.jetbrains.exposed.sql.Table -import org.jetbrains.exposed.sql.javatime.CurrentTimestamp -import org.jetbrains.exposed.sql.javatime.duration -import org.jetbrains.exposed.sql.javatime.timestamp +import org.jetbrains.exposed.v1.core.ReferenceOption +import org.jetbrains.exposed.v1.core.Table +import org.jetbrains.exposed.v1.core.dao.id.IntIdTable +import org.jetbrains.exposed.v1.javatime.CurrentTimestamp +import org.jetbrains.exposed.v1.javatime.duration +import org.jetbrains.exposed.v1.javatime.timestamp object AccountTable : IntIdTable("account") { val username = varchar("username", 32).uniqueIndex() diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MindustryMapManager.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MindustryMapManager.kt index 02eee64a..48d9c375 100644 --- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MindustryMapManager.kt +++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MindustryMapManager.kt @@ -12,23 +12,24 @@ import kotlin.math.roundToInt import kotlin.time.Duration import kotlin.time.toJavaDuration import kotlin.time.toKotlinDuration -import kotlinx.coroutines.selects.select -import org.jetbrains.exposed.sql.ColumnSet -import org.jetbrains.exposed.sql.ResultRow -import org.jetbrains.exposed.sql.SchemaUtils -import org.jetbrains.exposed.sql.SortOrder -import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq -import org.jetbrains.exposed.sql.and -import org.jetbrains.exposed.sql.avg -import org.jetbrains.exposed.sql.batchUpsert -import org.jetbrains.exposed.sql.deleteWhere -import org.jetbrains.exposed.sql.insert -import org.jetbrains.exposed.sql.insertAndGetId -import org.jetbrains.exposed.sql.selectAll -import org.jetbrains.exposed.sql.statements.api.ExposedBlob -import org.jetbrains.exposed.sql.sum -import org.jetbrains.exposed.sql.update -import org.jetbrains.exposed.sql.upsert +import org.jetbrains.exposed.v1.core.ColumnSet +import org.jetbrains.exposed.v1.core.ResultRow +import org.jetbrains.exposed.v1.core.SortOrder +import org.jetbrains.exposed.v1.core.and +import org.jetbrains.exposed.v1.core.avg +import org.jetbrains.exposed.v1.core.eq +import org.jetbrains.exposed.v1.core.like +import org.jetbrains.exposed.v1.core.statements.api.ExposedBlob +import org.jetbrains.exposed.v1.core.sum +import org.jetbrains.exposed.v1.jdbc.SchemaUtils +import org.jetbrains.exposed.v1.jdbc.batchUpsert +import org.jetbrains.exposed.v1.jdbc.deleteWhere +import org.jetbrains.exposed.v1.jdbc.insert +import org.jetbrains.exposed.v1.jdbc.insertAndGetId +import org.jetbrains.exposed.v1.jdbc.select +import org.jetbrains.exposed.v1.jdbc.selectAll +import org.jetbrains.exposed.v1.jdbc.update +import org.jetbrains.exposed.v1.jdbc.upsert interface MindustryMapManager { diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MindustryMapTable.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MindustryMapTable.kt index 3cf9e1be..bd73a84d 100644 --- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MindustryMapTable.kt +++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/content/MindustryMapTable.kt @@ -4,12 +4,12 @@ package com.xpdustry.imperium.common.content import com.xpdustry.imperium.common.misc.mediumblob import com.xpdustry.imperium.common.user.UserTable import java.time.Duration -import org.jetbrains.exposed.dao.id.IntIdTable -import org.jetbrains.exposed.sql.ReferenceOption -import org.jetbrains.exposed.sql.Table -import org.jetbrains.exposed.sql.javatime.CurrentTimestamp -import org.jetbrains.exposed.sql.javatime.duration -import org.jetbrains.exposed.sql.javatime.timestamp +import org.jetbrains.exposed.v1.core.ReferenceOption +import org.jetbrains.exposed.v1.core.Table +import org.jetbrains.exposed.v1.core.dao.id.IntIdTable +import org.jetbrains.exposed.v1.javatime.CurrentTimestamp +import org.jetbrains.exposed.v1.javatime.duration +import org.jetbrains.exposed.v1.javatime.timestamp object MindustryMapTable : IntIdTable("mindustry_map") { val name = varchar("name", 64) diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/database/SQLProvider.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/database/SQLProvider.kt index 75a0b5ec..42c900c6 100644 --- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/database/SQLProvider.kt +++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/database/SQLProvider.kt @@ -11,10 +11,11 @@ import kotlin.io.path.absolutePathString import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.runBlocking -import org.jetbrains.exposed.sql.Database -import org.jetbrains.exposed.sql.transactions.TransactionManager -import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction -import org.jetbrains.exposed.sql.transactions.transaction +import kotlinx.coroutines.withContext +import org.jetbrains.exposed.v1.jdbc.Database +import org.jetbrains.exposed.v1.jdbc.transactions.TransactionManager +import org.jetbrains.exposed.v1.jdbc.transactions.suspendTransaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction interface SQLProvider { fun newTransaction(block: () -> T): T @@ -67,5 +68,5 @@ class SimpleSQLProvider(private val config: DatabaseConfig, private val director override fun newTransaction(block: () -> T): T = transaction { block() } override suspend fun newSuspendTransaction(block: suspend () -> T): T = - newSuspendedTransaction(scope.coroutineContext, database) { block() } + withContext(scope.coroutineContext) { suspendTransaction(database) { block() } } } diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/ExposedExtensions.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/ExposedExtensions.kt index 273b9e58..ab6d279d 100644 --- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/ExposedExtensions.kt +++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/misc/ExposedExtensions.kt @@ -1,17 +1,16 @@ // SPDX-License-Identifier: GPL-3.0-only package com.xpdustry.imperium.common.misc -import org.jetbrains.exposed.sql.BlobColumnType -import org.jetbrains.exposed.sql.Column -import org.jetbrains.exposed.sql.FieldSet -import org.jetbrains.exposed.sql.IColumnType -import org.jetbrains.exposed.sql.Op -import org.jetbrains.exposed.sql.SqlExpressionBuilder -import org.jetbrains.exposed.sql.Table -import org.jetbrains.exposed.sql.selectAll -import org.jetbrains.exposed.sql.statements.api.ExposedBlob +import org.jetbrains.exposed.v1.core.BlobColumnType +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.FieldSet +import org.jetbrains.exposed.v1.core.IColumnType +import org.jetbrains.exposed.v1.core.Op +import org.jetbrains.exposed.v1.core.Table +import org.jetbrains.exposed.v1.core.statements.api.ExposedBlob +import org.jetbrains.exposed.v1.jdbc.selectAll -fun FieldSet.exists(where: SqlExpressionBuilder.() -> Op): Boolean = !selectAll().where(where).empty() +fun FieldSet.exists(where: () -> Op): Boolean = !selectAll().where(where).empty() fun Table.mediumblob(name: String): Column = registerColumn(name, MediumBlobColumnType()) diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/AddressWhitelist.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/AddressWhitelist.kt index 05cc7321..5436559f 100644 --- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/AddressWhitelist.kt +++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/AddressWhitelist.kt @@ -5,10 +5,11 @@ import com.xpdustry.imperium.common.application.ImperiumApplication import com.xpdustry.imperium.common.database.SQLProvider import com.xpdustry.imperium.common.misc.exists import java.net.InetAddress -import org.jetbrains.exposed.sql.SchemaUtils -import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq -import org.jetbrains.exposed.sql.deleteWhere -import org.jetbrains.exposed.sql.upsert +import org.jetbrains.exposed.v1.core.eq +import org.jetbrains.exposed.v1.jdbc.SchemaUtils +import org.jetbrains.exposed.v1.jdbc.deleteWhere +import org.jetbrains.exposed.v1.jdbc.select +import org.jetbrains.exposed.v1.jdbc.upsert interface AddressWhitelist { suspend fun addAddress(address: InetAddress, reason: String) diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/AddressWhitelistTable.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/AddressWhitelistTable.kt index e0e64fd6..11ed45ed 100644 --- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/AddressWhitelistTable.kt +++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/AddressWhitelistTable.kt @@ -1,8 +1,8 @@ // SPDX-License-Identifier: GPL-3.0-only package com.xpdustry.imperium.common.security -import org.jetbrains.exposed.sql.Column -import org.jetbrains.exposed.sql.Table +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.Table object AddressWhitelistTable : Table("address_whitelist") { val address: Column = binary("address", 16) diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/PunishmentManager.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/PunishmentManager.kt index f5f5ee95..35aece09 100644 --- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/PunishmentManager.kt +++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/PunishmentManager.kt @@ -14,14 +14,15 @@ import kotlin.time.Duration import kotlin.time.toJavaDuration import kotlin.time.toKotlinDuration import kotlinx.serialization.Serializable -import org.jetbrains.exposed.sql.JoinType -import org.jetbrains.exposed.sql.Op -import org.jetbrains.exposed.sql.ResultRow -import org.jetbrains.exposed.sql.SchemaUtils -import org.jetbrains.exposed.sql.insertAndGetId -import org.jetbrains.exposed.sql.or -import org.jetbrains.exposed.sql.selectAll -import org.jetbrains.exposed.sql.update +import org.jetbrains.exposed.v1.core.JoinType +import org.jetbrains.exposed.v1.core.ResultRow +import org.jetbrains.exposed.v1.core.eq +import org.jetbrains.exposed.v1.core.or +import org.jetbrains.exposed.v1.jdbc.SchemaUtils +import org.jetbrains.exposed.v1.jdbc.insertAndGetId +import org.jetbrains.exposed.v1.jdbc.select +import org.jetbrains.exposed.v1.jdbc.selectAll +import org.jetbrains.exposed.v1.jdbc.update interface PunishmentManager { @@ -82,10 +83,8 @@ class SimplePunishmentManager( override suspend fun findAllByIdentity(identity: Identity.Mindustry): List = provider.newSuspendTransaction { - var query = Op.build { UserAddressTable.address eq identity.address.address } - users.findByUuid(identity.uuid)?.id?.let { id -> - query = query.or(Op.build { (PunishmentTable.target eq id) }) - } + var query = UserAddressTable.address eq identity.address.address + users.findByUuid(identity.uuid)?.id?.let { id -> query = query or (PunishmentTable.target eq id) } PunishmentTable.join( UserAddressTable, JoinType.LEFT, diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/PunishmentTable.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/PunishmentTable.kt index 52e61c0b..054cf47a 100644 --- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/PunishmentTable.kt +++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/security/PunishmentTable.kt @@ -2,11 +2,11 @@ package com.xpdustry.imperium.common.security import com.xpdustry.imperium.common.user.UserTable -import org.jetbrains.exposed.dao.id.IntIdTable -import org.jetbrains.exposed.sql.ReferenceOption -import org.jetbrains.exposed.sql.javatime.CurrentTimestamp -import org.jetbrains.exposed.sql.javatime.duration -import org.jetbrains.exposed.sql.javatime.timestamp +import org.jetbrains.exposed.v1.core.ReferenceOption +import org.jetbrains.exposed.v1.core.dao.id.IntIdTable +import org.jetbrains.exposed.v1.javatime.CurrentTimestamp +import org.jetbrains.exposed.v1.javatime.duration +import org.jetbrains.exposed.v1.javatime.timestamp object PunishmentTable : IntIdTable("punishment") { val target = reference("target", UserTable, onDelete = ReferenceOption.CASCADE) diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/user/UserManager.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/user/UserManager.kt index b606bf41..d9bc195f 100644 --- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/user/UserManager.kt +++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/user/UserManager.kt @@ -14,15 +14,18 @@ import java.net.InetAddress import java.time.Instant import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock -import org.jetbrains.exposed.sql.ResultRow -import org.jetbrains.exposed.sql.SchemaUtils -import org.jetbrains.exposed.sql.SqlExpressionBuilder.plus -import org.jetbrains.exposed.sql.insert -import org.jetbrains.exposed.sql.insertAndGetId -import org.jetbrains.exposed.sql.insertIgnore -import org.jetbrains.exposed.sql.selectAll -import org.jetbrains.exposed.sql.update -import org.jetbrains.exposed.sql.upsert +import org.jetbrains.exposed.v1.core.ResultRow +import org.jetbrains.exposed.v1.core.eq +import org.jetbrains.exposed.v1.core.like +import org.jetbrains.exposed.v1.core.plus +import org.jetbrains.exposed.v1.jdbc.SchemaUtils +import org.jetbrains.exposed.v1.jdbc.insert +import org.jetbrains.exposed.v1.jdbc.insertAndGetId +import org.jetbrains.exposed.v1.jdbc.insertIgnore +import org.jetbrains.exposed.v1.jdbc.select +import org.jetbrains.exposed.v1.jdbc.selectAll +import org.jetbrains.exposed.v1.jdbc.update +import org.jetbrains.exposed.v1.jdbc.upsert interface UserManager { diff --git a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/user/UserTable.kt b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/user/UserTable.kt index d7df580a..b80f5c98 100644 --- a/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/user/UserTable.kt +++ b/imperium-common/src/main/kotlin/com/xpdustry/imperium/common/user/UserTable.kt @@ -1,11 +1,11 @@ // SPDX-License-Identifier: GPL-3.0-only package com.xpdustry.imperium.common.user -import org.jetbrains.exposed.dao.id.IntIdTable -import org.jetbrains.exposed.sql.ReferenceOption -import org.jetbrains.exposed.sql.Table -import org.jetbrains.exposed.sql.javatime.CurrentTimestamp -import org.jetbrains.exposed.sql.javatime.timestamp +import org.jetbrains.exposed.v1.core.ReferenceOption +import org.jetbrains.exposed.v1.core.Table +import org.jetbrains.exposed.v1.core.dao.id.IntIdTable +import org.jetbrains.exposed.v1.javatime.CurrentTimestamp +import org.jetbrains.exposed.v1.javatime.timestamp object UserTable : IntIdTable("user") { val uuid = long("uuid").uniqueIndex()