From 4a758dd15200b121aa27ee2b01f78fed176bc51b Mon Sep 17 00:00:00 2001 From: Andrew Westberg Date: Wed, 17 Jun 2026 20:53:32 +0000 Subject: [PATCH 1/2] feat(chain): add transaction info query --- .../database/repository/LedgerRepository.kt | 2 + .../repository/LedgerRepositoryImpl.kt | 116 ++++++- .../database/repository/TransactionInfo.kt | 14 + .../QueryTransactionInfoRepositoryTest.kt | 286 ++++++++++++++++++ .../src/main/proto/newm_chain.proto | 18 ++ .../io/newm/chain/grpc/NewmChainService.kt | 29 ++ .../grpc/QueryTransactionInfoServiceTest.kt | 91 ++++++ 7 files changed, 555 insertions(+), 1 deletion(-) create mode 100644 newm-chain-db/src/main/kotlin/io/newm/chain/database/repository/TransactionInfo.kt create mode 100644 newm-chain-db/src/test/kotlin/io/newm/chain/database/repository/QueryTransactionInfoRepositoryTest.kt create mode 100644 newm-chain/src/test/kotlin/io/newm/chain/grpc/QueryTransactionInfoServiceTest.kt diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/repository/LedgerRepository.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/repository/LedgerRepository.kt index 0266240d..0ec1aa73 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/repository/LedgerRepository.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/repository/LedgerRepository.kt @@ -67,6 +67,8 @@ interface LedgerRepository { currentEpoch: Long ): Long + fun queryTransactionInfo(txId: String): TransactionInfo? + fun queryAdaHandle(adaHandleName: String): String? fun siblingHashCount(hash: String): Long diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/repository/LedgerRepositoryImpl.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/repository/LedgerRepositoryImpl.kt index 7dbf123f..2cda9fa6 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/repository/LedgerRepositoryImpl.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/repository/LedgerRepositoryImpl.kt @@ -51,6 +51,7 @@ import java.time.Instant import kotlin.math.max import kotlinx.coroutines.runBlocking import kotlinx.coroutines.sync.Mutex +import org.jetbrains.exposed.sql.ResultRow import kotlinx.coroutines.sync.withLock import org.jetbrains.exposed.sql.LongColumnType import org.jetbrains.exposed.sql.SortOrder @@ -222,6 +223,119 @@ class LedgerRepositoryImpl : LedgerRepository { }.toHashSet() } + override fun queryTransactionInfo(txId: String): TransactionInfo? = + transaction { + warnLongQueriesDuration = 1000L + + val createdRows = + LedgerUtxosTable + .innerJoin(LedgerTable, { ledgerId }, { LedgerTable.id }) + .selectAll() + .where { LedgerUtxosTable.txId eq txId } + .orderBy(LedgerUtxosTable.txIx, SortOrder.ASC) + .toList() + + val spentRows = + LedgerUtxosTable + .innerJoin(LedgerTable, { ledgerId }, { LedgerTable.id }) + .selectAll() + .where { LedgerUtxosTable.transactionSpent eq txId } + .orderBy(LedgerUtxosTable.txId, SortOrder.ASC) + .toList() + + if (createdRows.isEmpty() && spentRows.isEmpty()) { + return@transaction null + } + + val blockNumber = validateTransactionInfoBlockNumber(txId, createdRows, spentRows) + val slotNumber = + ChainTable + .select(ChainTable.slotNumber) + .where { ChainTable.blockNumber eq blockNumber } + .firstOrNull() + ?.let { row -> row[ChainTable.slotNumber] } + ?: throw TransactionInfoIntegrityException( + "Unable to resolve slot number for txId=$txId at block=$blockNumber" + ) + + TransactionInfo( + blockNumber = blockNumber, + slotNumber = slotNumber, + spentUtxos = spentRows.map { row -> row.toRepositoryUtxo() }, + createdUtxos = createdRows.map { row -> row.toRepositoryUtxo() }, + ) + } + + private fun validateTransactionInfoBlockNumber( + txId: String, + createdRows: List, + spentRows: List, + ): Long { + val createdBlocks = createdRows.map { row -> row[LedgerUtxosTable.blockCreated] }.distinct() + if (createdBlocks.size > 1) { + throw TransactionInfoIntegrityException( + "Created UTXOs for txId=$txId span multiple blocks: $createdBlocks" + ) + } + + val spentBlocks = + spentRows + .map { row -> + row[LedgerUtxosTable.blockSpent] + ?: throw TransactionInfoIntegrityException( + "Spent UTXO row for txId=$txId is missing block_spent" + ) + }.distinct() + if (spentBlocks.size > 1) { + throw TransactionInfoIntegrityException( + "Spent UTXOs for txId=$txId span multiple blocks: $spentBlocks" + ) + } + + val createdBlock = createdBlocks.singleOrNull() + val spentBlock = spentBlocks.singleOrNull() + if ((createdBlock != null) && (spentBlock != null) && (createdBlock != spentBlock)) { + throw TransactionInfoIntegrityException( + "Created and spent UTXOs disagree on block for txId=$txId: created=$createdBlock spent=$spentBlock" + ) + } + + return (createdBlock ?: spentBlock) + ?: throw TransactionInfoIntegrityException("Unable to infer block number for txId=$txId") + } + + private fun ResultRow.toRepositoryUtxo(): Utxo { + val ledgerUtxoId = this[LedgerUtxosTable.id].value + val nativeAssets = + LedgerUtxoAssetsTable + .innerJoin( + LedgerAssetsTable, + { ledgerAssetId }, + { LedgerAssetsTable.id }, + { LedgerUtxoAssetsTable.ledgerUtxoId eq ledgerUtxoId }, + ).selectAll() + .map { naRow -> + NativeAsset( + policy = naRow[LedgerAssetsTable.policy], + name = naRow[LedgerAssetsTable.name], + amount = BigInteger(naRow[LedgerUtxoAssetsTable.amount]), + ) + } + + return Utxo( + address = this[LedgerTable.address], + hash = this[LedgerUtxosTable.txId], + ix = this[LedgerUtxosTable.txIx].toLong(), + lovelace = BigInteger(this[LedgerUtxosTable.lovelace]), + nativeAssets = nativeAssets, + datumHash = this[LedgerUtxosTable.datumHash], + datum = this[LedgerUtxosTable.datum], + isInlineDatum = this[LedgerUtxosTable.isInlineDatum], + scriptRef = this[LedgerUtxosTable.scriptRef], + scriptRefVersion = this[LedgerUtxosTable.scriptRefVersion], + ) + } + override fun queryUtxoByNativeAsset( name: String, policy: String @@ -1587,4 +1701,4 @@ class LedgerRepositoryImpl : LedgerRepository { private val CIP68_USER_TOKEN_REGEX = Regex("^00(0de14|14df1|1bc28)0.*$") // (222)TokenName, (333)TokenName, (444)TokenName } -} +} \ No newline at end of file diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/repository/TransactionInfo.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/repository/TransactionInfo.kt new file mode 100644 index 00000000..4bb6900f --- /dev/null +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/repository/TransactionInfo.kt @@ -0,0 +1,14 @@ +package io.newm.chain.database.repository + +import io.newm.chain.model.Utxo + +data class TransactionInfo( + val blockNumber: Long, + val slotNumber: Long, + val spentUtxos: List, + val createdUtxos: List, +) + +class TransactionInfoIntegrityException( + message: String, +) : RuntimeException(message) diff --git a/newm-chain-db/src/test/kotlin/io/newm/chain/database/repository/QueryTransactionInfoRepositoryTest.kt b/newm-chain-db/src/test/kotlin/io/newm/chain/database/repository/QueryTransactionInfoRepositoryTest.kt new file mode 100644 index 00000000..709ad0a5 --- /dev/null +++ b/newm-chain-db/src/test/kotlin/io/newm/chain/database/repository/QueryTransactionInfoRepositoryTest.kt @@ -0,0 +1,286 @@ +package io.newm.chain.database.repository + +import com.google.common.truth.Truth.assertThat +import com.zaxxer.hikari.HikariDataSource +import io.newm.chain.database.table.ChainTable +import io.newm.chain.database.table.LedgerAssetsTable +import io.newm.chain.database.table.LedgerTable +import io.newm.chain.database.table.LedgerUtxoAssetsTable +import io.newm.chain.database.table.LedgerUtxosTable +import java.util.UUID +import org.jetbrains.exposed.sql.Database +import org.jetbrains.exposed.sql.SchemaUtils +import org.jetbrains.exposed.sql.insert +import org.jetbrains.exposed.sql.insertAndGetId +import org.jetbrains.exposed.sql.transactions.transaction +import org.junit.jupiter.api.AfterAll +import org.junit.jupiter.api.BeforeAll +import org.junit.jupiter.api.BeforeEach +import org.junit.jupiter.api.Test +import org.junit.jupiter.api.TestInstance +import org.junit.jupiter.api.assertThrows +import org.testcontainers.containers.PostgreSQLContainer + +@TestInstance(TestInstance.Lifecycle.PER_CLASS) +class QueryTransactionInfoRepositoryTest { + private val repository = LedgerRepositoryImpl() + private val container = + PostgreSQLContainer("postgres:12").apply { + withDatabaseName("newm-chain-db") + withUsername("tester") + withPassword("newm1234") + } + + private lateinit var hikariDataSource: HikariDataSource + + @BeforeAll + fun beforeAll() { + container.start() + hikariDataSource = HikariDataSource().apply { + driverClassName = container.driverClassName + jdbcUrl = container.jdbcUrl + username = container.username + password = container.password + } + Database.connect(hikariDataSource) + transaction { + SchemaUtils.create( + ChainTable, + LedgerTable, + LedgerAssetsTable, + LedgerUtxosTable, + LedgerUtxoAssetsTable, + ) + } + } + + @AfterAll + fun afterAll() { + hikariDataSource.close() + container.stop() + } + + @BeforeEach + fun beforeEach() { + transaction { + exec( + "TRUNCATE ${listOf(LedgerUtxoAssetsTable, LedgerUtxosTable, LedgerAssetsTable, LedgerTable, ChainTable).joinToString(", ") { it.tableName }} RESTART IDENTITY CASCADE" + ) + } + } + + @Test + fun `queryTransactionInfo returns block slot spent and created utxos`() { + insertChainBlock(blockNumber = 100L, slotNumber = 1000L) + insertLedgerUtxo( + address = "addr_test_source1", + txId = "source-1", + txIx = 0, + lovelace = "1000", + blockCreated = 90L, + blockSpent = 100L, + transactionSpent = "target-tx", + ) + insertLedgerUtxo( + address = "addr_test_source2", + txId = "source-2", + txIx = 1, + lovelace = "2000", + blockCreated = 91L, + blockSpent = 100L, + transactionSpent = "target-tx", + ) + insertLedgerUtxo( + address = "addr_test_dest1", + txId = "target-tx", + txIx = 0, + lovelace = "2500", + blockCreated = 100L, + ) + insertLedgerUtxo( + address = "addr_test_dest2", + txId = "target-tx", + txIx = 1, + lovelace = "500", + blockCreated = 100L, + ) + + val result = repository.queryTransactionInfo("target-tx") + + assertThat(result).isNotNull() + assertThat(result!!.blockNumber).isEqualTo(100L) + assertThat(result.slotNumber).isEqualTo(1000L) + assertThat(result.spentUtxos.map { utxo -> utxo.hash to utxo.ix }) + .containsExactly("source-1" to 0L, "source-2" to 1L) + assertThat(result.createdUtxos.map { utxo -> utxo.hash to utxo.ix }) + .containsExactly("target-tx" to 0L, "target-tx" to 1L) + } + + @Test + fun `queryTransactionInfo returns null when no retained rows exist`() { + assertThat(repository.queryTransactionInfo("missing-tx")).isNull() + } + + @Test + fun `queryTransactionInfo fails when created utxos span multiple blocks`() { + insertChainBlock(blockNumber = 100L, slotNumber = 1000L) + insertChainBlock(blockNumber = 101L, slotNumber = 1001L) + insertLedgerUtxo( + address = "addr_test_dest1", + txId = "target-tx", + txIx = 0, + lovelace = "2500", + blockCreated = 100L, + ) + insertLedgerUtxo( + address = "addr_test_dest2", + txId = "target-tx", + txIx = 1, + lovelace = "500", + blockCreated = 101L, + ) + + assertThrows { + repository.queryTransactionInfo("target-tx") + } + } + + @Test + fun `queryTransactionInfo fails when spent utxos span multiple blocks`() { + insertChainBlock(blockNumber = 100L, slotNumber = 1000L) + insertChainBlock(blockNumber = 101L, slotNumber = 1001L) + insertLedgerUtxo( + address = "addr_test_source1", + txId = "source-1", + txIx = 0, + lovelace = "1000", + blockCreated = 90L, + blockSpent = 100L, + transactionSpent = "target-tx", + ) + insertLedgerUtxo( + address = "addr_test_source2", + txId = "source-2", + txIx = 1, + lovelace = "2000", + blockCreated = 91L, + blockSpent = 101L, + transactionSpent = "target-tx", + ) + + assertThrows { + repository.queryTransactionInfo("target-tx") + } + } + + @Test + fun `queryTransactionInfo fails when created and spent utxos disagree on block`() { + insertChainBlock(blockNumber = 100L, slotNumber = 1000L) + insertChainBlock(blockNumber = 101L, slotNumber = 1001L) + insertLedgerUtxo( + address = "addr_test_source1", + txId = "source-1", + txIx = 0, + lovelace = "1000", + blockCreated = 90L, + blockSpent = 101L, + transactionSpent = "target-tx", + ) + insertLedgerUtxo( + address = "addr_test_dest1", + txId = "target-tx", + txIx = 0, + lovelace = "2500", + blockCreated = 100L, + ) + + assertThrows { + repository.queryTransactionInfo("target-tx") + } + } + + @Test + fun `queryTransactionInfo fails when chain block is missing`() { + insertLedgerUtxo( + address = "addr_test_dest1", + txId = "target-tx", + txIx = 0, + lovelace = "2500", + blockCreated = 100L, + ) + + assertThrows { + repository.queryTransactionInfo("target-tx") + } + } + + private fun insertChainBlock( + blockNumber: Long, + slotNumber: Long, + ) { + transaction { + ChainTable.insert { row -> + row[ChainTable.blockNumber] = blockNumber + row[ChainTable.slotNumber] = slotNumber + row[ChainTable.hash] = UUID.randomUUID().toString() + row[ChainTable.prevHash] = UUID.randomUUID().toString() + row[ChainTable.poolId] = "pool1" + row[ChainTable.etaV] = "eta" + row[ChainTable.nodeVkey] = "node-vkey" + row[ChainTable.nodeVrfVkey] = "node-vrf" + row[ChainTable.blockVrf0] = "block-vrf-0" + row[ChainTable.blockVrf1] = "block-vrf-1" + row[ChainTable.etaVrf0] = "eta-vrf-0" + row[ChainTable.etaVrf1] = "eta-vrf-1" + row[ChainTable.leaderVrf0] = "leader-vrf-0" + row[ChainTable.leaderVrf1] = "leader-vrf-1" + row[ChainTable.blockSize] = 1 + row[ChainTable.blockBodyHash] = "body-hash" + row[ChainTable.poolOpcert] = "opcert" + row[ChainTable.sequenceNumber] = 1 + row[ChainTable.kesPeriod] = 1 + row[ChainTable.sigmaSignature] = "sigma" + row[ChainTable.protocolMajorVersion] = 8 + row[ChainTable.protocolMinorVersion] = 0 + } + } + } + + private fun insertLedgerUtxo( + address: String, + txId: String, + txIx: Int, + lovelace: String, + blockCreated: Long, + blockSpent: Long? = null, + transactionSpent: String? = null, + ) { + transaction { + val ledgerId = + LedgerTable + .insertAndGetId { row -> + row[LedgerTable.address] = address + row[LedgerTable.stakeAddress] = null + row[LedgerTable.addressType] = "00" + }.value + + LedgerUtxosTable.insert { row -> + row[LedgerUtxosTable.ledgerId] = ledgerId + row[LedgerUtxosTable.txId] = txId + row[LedgerUtxosTable.txIx] = txIx + row[LedgerUtxosTable.datumHash] = null + row[LedgerUtxosTable.datum] = null + row[LedgerUtxosTable.isInlineDatum] = null + row[LedgerUtxosTable.scriptRef] = null + row[LedgerUtxosTable.scriptRefVersion] = null + row[LedgerUtxosTable.lovelace] = lovelace + row[LedgerUtxosTable.blockCreated] = blockCreated + row[LedgerUtxosTable.blockSpent] = blockSpent + row[LedgerUtxosTable.transactionSpent] = transactionSpent + row[LedgerUtxosTable.cbor] = null + row[LedgerUtxosTable.paymentCred] = null + row[LedgerUtxosTable.stakeCred] = null + } + } + } +} diff --git a/newm-chain-grpc/src/main/proto/newm_chain.proto b/newm-chain-grpc/src/main/proto/newm_chain.proto index ecf8830f..7ce8cd48 100644 --- a/newm-chain-grpc/src/main/proto/newm_chain.proto +++ b/newm-chain-grpc/src/main/proto/newm_chain.proto @@ -7,6 +7,7 @@ package newmchain; service NewmChain { rpc SubmitTransaction (SubmitTransactionRequest) returns (SubmitTransactionResponse); + rpc QueryTransactionInfo (QueryTransactionInfoRequest) returns (QueryTransactionInfoResponse); rpc QueryCurrentEpoch (QueryCurrentEpochRequest) returns (QueryCurrentEpochResponse); rpc QueryTip (QueryTipRequest) returns (QueryTipResponse); rpc QueryUtxos (QueryUtxosRequest) returns (QueryUtxosResponse); @@ -47,6 +48,23 @@ message SubmitTransactionResponse { string tx_id = 2; } +// Returns retained ledger-derived details for a confirmed on-chain transaction. +// +// This is intended for recent transactions that are still present in ledger-derived storage. +// A response with found = false means no retained ledger-derived rows were found for the +// transaction id. It does not guarantee the transaction never existed on-chain. +message QueryTransactionInfoRequest { + string tx_id = 1; +} + +message QueryTransactionInfoResponse { + bool found = 1; + uint64 block_number = 2; + uint64 slot_number = 3; + repeated Utxo spent_utxos = 4; + repeated Utxo created_utxos = 5; +} + message QueryCurrentEpochRequest {} message QueryCurrentEpochResponse { diff --git a/newm-chain/src/main/kotlin/io/newm/chain/grpc/NewmChainService.kt b/newm-chain/src/main/kotlin/io/newm/chain/grpc/NewmChainService.kt index f3727ec1..9d241119 100644 --- a/newm-chain/src/main/kotlin/io/newm/chain/grpc/NewmChainService.kt +++ b/newm-chain/src/main/kotlin/io/newm/chain/grpc/NewmChainService.kt @@ -12,6 +12,7 @@ import io.github.oshai.kotlinlogging.KotlinLogging import io.newm.chain.cardano.address.Address import io.newm.chain.cardano.address.AddressCredential import io.newm.chain.cardano.address.BIP32PublicKey +import io.newm.chain.database.repository.TransactionInfoIntegrityException import io.newm.chain.cardano.toLedgerAssetMetadataItem import io.newm.chain.database.repository.ChainRepository import io.newm.chain.database.repository.LedgerRepository @@ -42,6 +43,7 @@ import io.newm.txbuilder.ktx.cborHexToPlutusData import io.newm.txbuilder.ktx.verify import io.newm.txbuilder.ktx.withMinUtxo import io.sentry.Sentry +import io.grpc.Status import java.util.UUID import java.util.concurrent.ConcurrentHashMap import kotlin.experimental.and @@ -214,6 +216,33 @@ class NewmChainService : NewmChainGrpcKt.NewmChainCoroutineImplBase() { } } + override suspend fun queryTransactionInfo(request: QueryTransactionInfoRequest): QueryTransactionInfoResponse { + try { + return ledgerRepository.queryTransactionInfo(request.txId)?.let { transactionInfo -> + queryTransactionInfoResponse { + found = true + blockNumber = transactionInfo.blockNumber + slotNumber = transactionInfo.slotNumber + spentUtxos.addAll(transactionInfo.spentUtxos.map { utxo -> utxo.toRpcUtxo() }) + createdUtxos.addAll(transactionInfo.createdUtxos.map { utxo -> utxo.toRpcUtxo() }) + } + } ?: queryTransactionInfoResponse { + found = false + } + } catch (e: TransactionInfoIntegrityException) { + Sentry.addBreadcrumb(request.toString(), "NewmChainService") + log.error(e) { "queryTransactionInfo integrity error!" } + throw Status.INTERNAL + .withDescription(e.message ?: "queryTransactionInfo integrity error") + .withCause(e) + .asRuntimeException() + } catch (e: Throwable) { + Sentry.addBreadcrumb(request.toString(), "NewmChainService") + log.error(e) { "queryTransactionInfo error!" } + throw e + } + } + override suspend fun queryTip(request: QueryTipRequest): QueryTipResponse { try { return chainRepository.getTipInfo()?.let { tip -> diff --git a/newm-chain/src/test/kotlin/io/newm/chain/grpc/QueryTransactionInfoServiceTest.kt b/newm-chain/src/test/kotlin/io/newm/chain/grpc/QueryTransactionInfoServiceTest.kt new file mode 100644 index 00000000..54c2b3ab --- /dev/null +++ b/newm-chain/src/test/kotlin/io/newm/chain/grpc/QueryTransactionInfoServiceTest.kt @@ -0,0 +1,91 @@ +package io.newm.chain.grpc + +import com.google.common.truth.Truth.assertThat +import io.grpc.Status +import io.grpc.StatusRuntimeException +import io.mockk.every +import io.mockk.mockk +import io.newm.chain.database.repository.ChainRepository +import io.newm.chain.database.repository.LedgerRepository +import io.newm.chain.database.repository.TransactionInfoIntegrityException +import io.newm.chain.ledger.SubmittedTransactionCache +import io.newm.kogmios.protocols.model.Block +import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.runBlocking +import org.junit.jupiter.api.Test +import org.koin.core.context.startKoin +import org.koin.core.context.stopKoin +import org.koin.core.qualifier.named +import org.koin.dsl.module +import org.junit.jupiter.api.assertThrows + +class QueryTransactionInfoServiceTest { + @Test + fun `queryTransactionInfo returns found false when repository returns null`() = + runBlocking { + val ledgerRepository = mockk() + every { ledgerRepository.queryTransactionInfo("missing-tx") } returns null + + val response = withService(ledgerRepository) { service -> + service.queryTransactionInfo( + queryTransactionInfoRequest { + txId = "missing-tx" + } + ) + } + + assertThat(response.found).isFalse() + assertThat(response.blockNumber).isEqualTo(0L) + assertThat(response.slotNumber).isEqualTo(0L) + assertThat(response.spentUtxosCount).isEqualTo(0) + assertThat(response.createdUtxosCount).isEqualTo(0) + } + + @Test + fun `queryTransactionInfo maps integrity failures to grpc internal`() = + runBlocking { + val ledgerRepository = mockk() + every { ledgerRepository.queryTransactionInfo("bad-tx") } throws TransactionInfoIntegrityException("broken") + + val exception = + withService(ledgerRepository) { service -> + assertThrows { + runBlocking { + service.queryTransactionInfo( + queryTransactionInfoRequest { + txId = "bad-tx" + } + ) + } + } + } + + assertThat(exception.status.code).isEqualTo(Status.Code.INTERNAL) + assertThat(exception.status.description).isEqualTo("broken") + } + + private suspend fun withService( + ledgerRepository: LedgerRepository, + block: suspend (NewmChainService) -> T, + ): T { + stopKoin() + startKoin { + modules( + module { + single { mockk(relaxed = true) } + single { ledgerRepository } + single { mockk(relaxed = true) } + single { mockk(relaxed = true) } + single { mockk(relaxed = true) } + single(qualifier = named("confirmedBlockFlow")) { mockk>(relaxed = true) } + } + ) + } + + return try { + block(NewmChainService()) + } finally { + stopKoin() + } + } +} From 67ebe8b409d056184af761707fbf517f60a19d09 Mon Sep 17 00:00:00 2001 From: Andrew Westberg Date: Wed, 17 Jun 2026 21:16:46 +0000 Subject: [PATCH 2/2] chore(build): upgrade exposed and refresh dependencies --- build.gradle.kts | 2 +- buildSrc/src/main/kotlin/Dependencies.kt | 4 +- buildSrc/src/main/kotlin/Versions.kt | 62 +++++++------- gradle.properties | 3 +- gradle/wrapper/gradle-wrapper.jar | Bin 45633 -> 46175 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- .../V10__AlterLedgerAssetMetadata.kt | 2 +- .../migration/V11__CreateLedgerUtxoHistory.kt | 2 +- .../V12__AlterNativeAssetLogAddressTxLog.kt | 2 +- .../V13__CreateMonitoredAddressChain.kt | 2 +- .../database/migration/V14__CleanupIndexes.kt | 2 +- .../database/migration/V15__CleanupIndexes.kt | 2 +- .../migration/V16__AlterLedgerUtxos.kt | 2 +- .../migration/V17__AlterLedgerUtxos.kt | 2 +- .../database/migration/V1__InitialCreation.kt | 2 +- .../V2__CreateLedgerAssetMetadata.kt | 2 +- .../migration/V3__AlterLedgerUtxos.kt | 2 +- .../database/migration/V4__CreateUsers.kt | 2 +- .../migration/V5__AlterLedgerUtxos.kt | 2 +- .../migration/V6__CreateAddressTxLog.kt | 2 +- .../chain/database/migration/V7__DropKeys.kt | 2 +- .../migration/V8__AlterLedgerAssets.kt | 2 +- .../migration/V9__CreateNativeAssetLog.kt | 2 +- .../repository/ChainRepositoryImpl.kt | 24 +++--- .../repository/LedgerRepositoryImpl.kt | 81 ++++++++++-------- .../repository/UsersRepositoryImpl.kt | 9 +- .../chain/database/table/AddressTxLogTable.kt | 4 +- .../newm/chain/database/table/ChainTable.kt | 4 +- .../table/LedgerAssetMetadataTable.kt | 4 +- .../chain/database/table/LedgerAssetsTable.kt | 4 +- .../newm/chain/database/table/LedgerTable.kt | 4 +- .../database/table/LedgerUtxoAssetsTable.kt | 4 +- .../database/table/LedgerUtxosHistoryTable.kt | 4 +- .../chain/database/table/LedgerUtxosTable.kt | 4 +- .../table/MonitoredAddressChainTable.kt | 4 +- .../table/NativeAssetMonitorLogTable.kt | 4 +- .../table/PaymentStakeAddressTable.kt | 4 +- .../database/table/RawTransactionsTable.kt | 4 +- .../database/table/StakeDelegationsTable.kt | 4 +- .../database/table/StakeRegistrationsTable.kt | 4 +- .../database/table/TransactionLogTable.kt | 4 +- .../newm/chain/database/table/UsersTable.kt | 4 +- .../QueryTransactionInfoRepositoryTest.kt | 20 ++--- newm-chain-grpc/build.gradle.kts | 20 ++++- .../main/kotlin/io/newm/chain/Application.kt | 2 +- .../io/newm/chain/daemon/BlockDaemon.kt | 14 +-- .../newm/chain/daemon/MonitorAddressDaemon.kt | 19 ++-- .../io/newm/chain/database/DatabaseInit.kt | 4 +- .../twofactor/database/TwoFactorAuthEntity.kt | 14 +-- .../twofactor/database/TwoFactorAuthTable.kt | 6 +- .../repo/TwoFactorAuthRepositoryImpl.kt | 2 +- .../server/config/database/ConfigEntity.kt | 6 +- .../server/config/database/ConfigTable.kt | 6 +- .../config/repo/ConfigRepositoryImpl.kt | 2 +- .../io/newm/server/database/DatabaseInit.kt | 4 +- .../database/migration/V10__CreateKeys.kt | 2 +- .../database/migration/V11__SongsUpdates.kt | 2 +- .../database/migration/V12__UsersUpdates.kt | 2 +- .../database/migration/V13__CreateConfig.kt | 2 +- .../migration/V14__CreateCollaborations.kt | 2 +- .../database/migration/V15__SongsUpdates.kt | 2 +- .../database/migration/V16__SongsUpdates.kt | 2 +- .../migration/V17__CollaborationsUpdates.kt | 2 +- .../database/migration/V18__ConfigUpdates.kt | 2 +- .../migration/V19__CollaborationsUpdates.kt | 2 +- .../database/migration/V1__InitialCreation.kt | 2 +- .../database/migration/V20__SongsUpdates.kt | 2 +- .../migration/V21__CollaborationsUpdates.kt | 2 +- .../migration/V22__CreateQuartzScheduler.kt | 2 +- .../database/migration/V23__ConfigUpdates.kt | 2 +- .../database/migration/V24__UsersUpdates.kt | 2 +- .../database/migration/V25__SongsUpdates.kt | 2 +- .../database/migration/V26__SongsUpdates.kt | 2 +- .../database/migration/V27__ConfigUpdates.kt | 2 +- .../database/migration/V28__UsersUpdates.kt | 2 +- .../database/migration/V29__UsersUpdates.kt | 2 +- .../database/migration/V2__SongsUpdates.kt | 2 +- .../database/migration/V30__SongsUpdates.kt | 2 +- .../database/migration/V31__ConfigUpdates.kt | 2 +- .../database/migration/V32__SongsUpdates.kt | 2 +- .../database/migration/V33__SongsUpdates.kt | 2 +- .../database/migration/V34__SongsUpdates.kt | 2 +- .../database/migration/V35__SongsUpdates.kt | 2 +- .../database/migration/V36__SongsUpdates.kt | 2 +- .../database/migration/V37__UsersUpdates.kt | 2 +- .../database/migration/V38__SongsUpdates.kt | 2 +- .../database/migration/V39__ConfigUpdates.kt | 2 +- .../database/migration/V3__SongsUpdates.kt | 2 +- .../database/migration/V40__SongsUpdates.kt | 2 +- .../migration/V41__CreateSongReceipts.kt | 2 +- .../database/migration/V42__UsersUpdates.kt | 2 +- .../database/migration/V43__UsersUpdates.kt | 2 +- .../database/migration/V44__CascadeFixes.kt | 2 +- .../database/migration/V45__CreateEarnings.kt | 2 +- .../database/migration/V46__SongsUpdates.kt | 2 +- .../migration/V47__CollaborationsUpdates.kt | 2 +- .../migration/V48__CreateSongErrorHistory.kt | 2 +- .../database/migration/V49__SongsUpdates.kt | 2 +- .../database/migration/V4__SongsUpdates.kt | 2 +- .../migration/V50__CreateWalletConnections.kt | 2 +- .../V51__WalletConnectionsUpdates.kt | 2 +- .../migration/V52__CreateMarketplace.kt | 2 +- .../database/migration/V53__CreateReleases.kt | 2 +- .../migration/V54__MarketplaceUpdates.kt | 2 +- .../database/migration/V55__ConfigUpdates.kt | 2 +- .../V56__UserSongMarketplaceUpdates.kt | 2 +- .../database/migration/V57__ConfigUpdates.kt | 2 +- .../migration/V58__ReleasesUpdates.kt | 2 +- .../migration/V59__MarketplaceUpdates.kt | 2 +- .../database/migration/V5__SongsUpdates.kt | 2 +- .../migration/V60__EarningsUpdates.kt | 2 +- .../V61__CreateScriptAddressWhitelist.kt | 2 +- .../database/migration/V62__ConfigUpdates.kt | 2 +- .../database/migration/V63__UsersUpdates.kt | 2 +- .../database/migration/V64__ConfigUpdates.kt | 2 +- .../database/migration/V65__JwtsDrop.kt | 2 +- .../migration/V66__MarketplaceUpdates.kt | 2 +- .../migration/V67__SongsReleasesUpdates.kt | 2 +- .../V68__CreateMintingStatusHistory.kt | 2 +- .../migration/V69__MarketplaceUpdates.kt | 2 +- .../database/migration/V6__UsersUpdates.kt | 2 +- .../migration/V70__MarketplaceUpdates.kt | 2 +- .../migration/V71__MarketplaceUpdates.kt | 2 +- .../migration/V72__CreateSongSmartLinks.kt | 2 +- .../database/migration/V73__UsersUpdates.kt | 2 +- .../database/migration/V74__UsersUpdates.kt | 2 +- .../database/migration/V75__ConfigUpdates.kt | 2 +- .../migration/V76__CollaborationsUpdates.kt | 2 +- .../database/migration/V77__ConfigUpdates.kt | 2 +- .../migration/V78__ReleasesUpdates.kt | 2 +- .../database/migration/V79__ConfigUpdates.kt | 2 +- .../database/migration/V7__UsersUpdates.kt | 2 +- .../database/migration/V80__ConfigUpdates.kt | 2 +- .../database/migration/V81__ConfigUpdates.kt | 2 +- .../database/migration/V82__UsersUpdates.kt | 2 +- .../database/migration/V83__ConfigUpdates.kt | 2 +- .../database/migration/V84__ConfigUpdates.kt | 2 +- .../V85__WalletConnectionsUpdates.kt | 2 +- .../database/migration/V8__SongsUpdates.kt | 2 +- .../database/migration/V9__UsersUpdates.kt | 2 +- .../features/cardano/database/KeyEntity.kt | 20 ++--- .../features/cardano/database/KeyTable.kt | 8 +- .../database/ScriptAddressWhitelistEntity.kt | 6 +- .../database/ScriptAddressWhitelistTable.kt | 4 +- .../cardano/repo/CardanoRepositoryImpl.kt | 7 +- .../database/CollaborationEntity.kt | 45 +++++----- .../database/CollaborationTable.kt | 12 +-- .../model/CollaborationFilters.kt | 2 +- .../model/CollaboratorFilters.kt | 2 +- .../repo/CollaborationRepositoryImpl.kt | 6 +- .../earnings/daemon/MonitorClaimOrderJob.kt | 4 +- .../earnings/database/ClaimOrderEntity.kt | 6 +- .../earnings/database/ClaimOrdersTable.kt | 12 +-- .../earnings/database/EarningEntity.kt | 6 +- .../earnings/database/EarningsTable.kt | 12 +-- .../earnings/repo/EarningsRepositoryImpl.kt | 18 ++-- .../ethereum/repo/EthereumRepositoryImpl.kt | 4 +- .../idenfy/repo/IdenfyRepositoryImpl.kt | 2 +- .../database/MarketplaceArtistEntity.kt | 28 +++--- .../database/MarketplaceBookmarkEntity.kt | 6 +- .../database/MarketplaceBookmarkTable.kt | 6 +- .../database/MarketplacePendingOrderEntity.kt | 10 +-- .../database/MarketplacePendingOrderTable.kt | 12 +-- .../database/MarketplacePendingSaleEntity.kt | 10 +-- .../database/MarketplacePendingSaleTable.kt | 8 +- .../database/MarketplacePurchaseEntity.kt | 6 +- .../database/MarketplacePurchaseTable.kt | 10 +-- .../database/MarketplaceSaleEntity.kt | 37 ++++---- .../database/MarketplaceSaleOwnerEntity.kt | 9 +- .../database/MarketplaceSaleOwnerTable.kt | 8 +- .../database/MarketplaceSaleTable.kt | 10 +-- .../marketplace/model/ArtistFilters.kt | 2 +- .../features/marketplace/model/SaleFilters.kt | 2 +- .../repo/MarketplaceRepositoryImpl.kt | 8 +- .../database/MintingStatusHistoryTable.kt | 12 +-- .../MintingStatusTransactionEntity.kt | 6 +- .../minting/repo/MintingRepositoryImpl.kt | 4 +- .../playlist/database/PlaylistEntity.kt | 30 +++---- .../playlist/database/PlaylistTable.kt | 12 +-- .../database/SongsInPlaylistsTable.kt | 8 +- .../playlist/model/PlaylistFilters.kt | 2 +- .../playlist/repo/PlaylistRepositoryImpl.kt | 4 +- .../repo/ReferralHeroRepositoryImpl.kt | 2 +- .../repo/OutletReleaseRepositoryImpl.kt | 2 +- .../features/scheduler/ReferralHeroSyncJob.kt | 2 +- .../newm/server/features/song/SongRoutes.kt | 2 +- .../features/song/database/ReleaseEntity.kt | 36 ++++---- .../features/song/database/ReleaseTable.kt | 14 +-- .../features/song/database/SongEntity.kt | 39 +++++---- .../song/database/SongErrorHistoryTable.kt | 12 +-- .../song/database/SongReceiptEntity.kt | 6 +- .../song/database/SongReceiptTable.kt | 12 +-- .../song/database/SongSmartLinkEntity.kt | 7 +- .../song/database/SongSmartLinkTable.kt | 12 +-- .../features/song/database/SongTable.kt | 12 +-- .../server/features/song/model/SongFilters.kt | 2 +- .../features/song/repo/SongRepositoryImpl.kt | 24 +++--- .../features/user/database/UserEntity.kt | 26 +++--- .../features/user/database/UserTable.kt | 8 +- .../server/features/user/model/UserFilters.kt | 2 +- .../features/user/repo/UserRepositoryImpl.kt | 8 +- .../WalletConnectionChallengeEntity.kt | 10 +-- .../WalletConnectionChallengeTable.kt | 8 +- .../database/WalletConnectionEntity.kt | 18 ++-- .../database/WalletConnectionTable.kt | 12 +-- .../repo/WalletConnectionRepositoryImpl.kt | 8 +- .../io/newm/server/ktx/ApplicationCallExt.kt | 2 +- .../io/newm/server/security/KeyParser.kt | 4 +- .../server/statuspages/StatusPagesInstall.kt | 4 +- .../io/newm/server/BaseApplicationTests.kt | 8 +- .../test/kotlin/io/newm/server/TestContext.kt | 4 +- .../features/cardano/CardanoRoutesTests.kt | 10 +-- .../CollaborationRoutesTests.kt | 10 +-- .../EvearaDistributionRepositoryTest.kt | 4 +- .../features/earnings/EarningsRoutesTests.kt | 4 +- .../features/idenfy/IdenfyRoutesTests.kt | 2 +- .../marketplace/MarketplaceRoutesTests.kt | 10 +-- .../minting/repo/MintingRepositoryTest.kt | 4 +- .../features/playlist/PlaylistRoutesTests.kt | 15 ++-- .../server/features/song/SongRoutesTests.kt | 10 +-- .../server/features/user/UserRoutesTests.kt | 4 +- .../WalletConnectionRoutesTest.kt | 6 +- .../io/newm/shared/exposed/ExposedArrays.kt | 32 +++---- .../io/newm/shared/ktx/EntityClassExt.kt | 9 +- .../kotlin/io/newm/shared/ktx/TableExt.kt | 18 ++-- 225 files changed, 744 insertions(+), 700 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 215c75a1..aa6ee06b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -20,7 +20,7 @@ plugins { allprojects { group = "io.newm.server" - version = "0.13.2-SNAPSHOT" + version = "0.14.0-SNAPSHOT" } subprojects { diff --git a/buildSrc/src/main/kotlin/Dependencies.kt b/buildSrc/src/main/kotlin/Dependencies.kt index 3902b6ec..ccdef5f5 100644 --- a/buildSrc/src/main/kotlin/Dependencies.kt +++ b/buildSrc/src/main/kotlin/Dependencies.kt @@ -319,8 +319,8 @@ object Dependencies { private const val VERSION = Versions.TEST_CONTAINERS const val CORE = "org.testcontainers:testcontainers:$VERSION" - const val JUINT = "org.testcontainers:junit-jupiter:$VERSION" - const val POSTGRESQL = "org.testcontainers:postgresql:$VERSION" + const val JUINT = "org.testcontainers:testcontainers-junit-jupiter:$VERSION" + const val POSTGRESQL = "org.testcontainers:testcontainers-postgresql:$VERSION" } object Typesafe { diff --git a/buildSrc/src/main/kotlin/Versions.kt b/buildSrc/src/main/kotlin/Versions.kt index e43eb771..53a9723e 100644 --- a/buildSrc/src/main/kotlin/Versions.kt +++ b/buildSrc/src/main/kotlin/Versions.kt @@ -1,51 +1,51 @@ object Versions { - const val APACHE_COMMONS_CODEC = "1.20.0" + const val APACHE_COMMONS_CODEC = "1.22.0" const val APACHE_COMMONS_EMAIL = "1.6.0" - const val APACHE_COMMONS_NET = "3.11.1" - const val APACHE_COMMONS_NUMBERS = "1.2" + const val APACHE_COMMONS_NET = "3.13.0" + const val APACHE_COMMONS_NUMBERS = "1.3" const val APACHE_CURATORS = "5.9.0" - const val APACHE_TIKA = "3.2.3" - const val AWS = "2.40.16" - const val AYZA = "10.0.2" - const val BOUNCY_CASTLE = "1.83" - const val CAFFEINE = "3.2.3" + const val APACHE_TIKA = "3.3.1" + const val AWS = "2.46.12" + const val AYZA = "10.0.5" + const val BOUNCY_CASTLE = "1.84" + const val CAFFEINE = "3.2.4" const val CBOR = "0.4.1-NEWM" const val CLOUDINARY = "1.39.0" - const val COROUTINES = "1.10.2" - const val EXPOSED = "0.61.0" - const val FLYWAYDB = "11.20.0" + const val COROUTINES = "1.11.0" + const val EXPOSED = "1.3.0" + const val FLYWAYDB = "12.8.1" const val GOOGLE_TRUTH = "1.4.5" - const val GRPC = "1.78.0" + const val GRPC = "1.82.0" const val GRPC_KOTLIN = "1.5.0" - const val HIKARICP = "7.0.2" + const val HIKARICP = "7.1.0" const val I2P_CRYPTO = "0.3.0" const val JBCRYPT = "0.10.2" - const val JSOUP = "1.21.2" - const val JUNIT = "6.0.1" + const val JSOUP = "1.22.2" + const val JUNIT = "6.1.0" const val J_AUDIO_TAGGER = "3.0.1" const val KOIN = "4.1.0-Beta8" - const val KOIN_TEST = "4.1.1" + const val KOIN_TEST = "4.2.2" const val KOGMIOS = "2.7.1" - const val KOTLINX_SERIALIZATION = "1.9.0" - const val KOTLIN_LOGGING = "7.0.13" - const val KOTLIN_PLUGIN = "2.3.0" + const val KOTLINX_SERIALIZATION = "1.11.0" + const val KOTLIN_LOGGING = "8.0.4" + const val KOTLIN_PLUGIN = "2.4.0" const val KTLINT = "1.8.0" const val KTLINT_PLUGIN = "12.1.1" - const val KTOR = "3.4.0" + const val KTOR = "3.5.0" const val KTOR_FLYWAY = "3.3.0" - const val LOGBACK = "1.5.23" - const val MAVEN_PUBLISH = "0.35.0" - const val MOCKK = "1.14.7" - const val POSTGRESQL = "42.7.8" - const val PROTOBUF = "4.33.2" - const val PROTOBUF_PLUGIN = "0.9.5" + const val LOGBACK = "1.5.34" + const val MAVEN_PUBLISH = "0.36.0" + const val MOCKK = "1.14.11" + const val POSTGRESQL = "42.7.11" + const val PROTOBUF = "4.35.1" + const val PROTOBUF_PLUGIN = "0.10.0" const val QR_CODE_KOTLIN = "4.5.0" const val QUARTZ = "2.5.2" - const val SENTRY = "8.29.0" + const val SENTRY = "8.44.0" const val SHADOW_PLUGIN = "9.2.1" - const val SPRING_SECURITY = "6.5.6" - const val SWAGGER = "1.0.59" - const val TEST_CONTAINERS = "1.21.4" - const val TYPESAFE = "1.4.5" + const val SPRING_SECURITY = "7.1.0" + const val SWAGGER = "1.0.62" + const val TEST_CONTAINERS = "2.0.5" + const val TYPESAFE = "1.4.9" const val VERSIONS_PLUGIN = "0.53.0" } diff --git a/gradle.properties b/gradle.properties index baa80e9d..f464980b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,6 @@ kotlin.code.style=official org.gradle.parallel=false org.gradle.caching=true -org.gradle.configureondemand=true org.gradle.daemon=true org.gradle.unsafe.configuration-cache=true @@ -19,4 +18,4 @@ org.gradle.jvmargs=-Dfile.encoding=UTF-8 \ kotlin.incremental=true kotlin.incremental.js=true kotlin.caching.enabled=true -kotlin.parallel.tasks.in.project=true \ No newline at end of file +kotlin.parallel.tasks.in.project=true diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index f8e1ee3125fe0768e9a76ee977ac089eb657005e..61285a659d17295f1de7c53e24fdf13ad755c379 100644 GIT binary patch delta 37058 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 NNswbwE82Y!{{uvZmpcFe delta 36446 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 JWd7DQ`9Hc?h(rJY diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 37f78a6a..5dd3c012 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.3.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.5.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V10__AlterLedgerAssetMetadata.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V10__AlterLedgerAssetMetadata.kt index 02d414ff..7c037b42 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V10__AlterLedgerAssetMetadata.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V10__AlterLedgerAssetMetadata.kt @@ -2,7 +2,7 @@ package io.newm.chain.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V10__AlterLedgerAssetMetadata : BaseJavaMigration() { diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V11__CreateLedgerUtxoHistory.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V11__CreateLedgerUtxoHistory.kt index 784ff474..91f8bfb8 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V11__CreateLedgerUtxoHistory.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V11__CreateLedgerUtxoHistory.kt @@ -2,7 +2,7 @@ package io.newm.chain.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V11__CreateLedgerUtxoHistory : BaseJavaMigration() { diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V12__AlterNativeAssetLogAddressTxLog.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V12__AlterNativeAssetLogAddressTxLog.kt index 99c071e4..35429b1f 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V12__AlterNativeAssetLogAddressTxLog.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V12__AlterNativeAssetLogAddressTxLog.kt @@ -2,7 +2,7 @@ package io.newm.chain.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V12__AlterNativeAssetLogAddressTxLog : BaseJavaMigration() { diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V13__CreateMonitoredAddressChain.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V13__CreateMonitoredAddressChain.kt index 259704e8..3c594c5b 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V13__CreateMonitoredAddressChain.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V13__CreateMonitoredAddressChain.kt @@ -2,7 +2,7 @@ package io.newm.chain.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V13__CreateMonitoredAddressChain : BaseJavaMigration() { diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V14__CleanupIndexes.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V14__CleanupIndexes.kt index 40b8015b..8e7bd5eb 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V14__CleanupIndexes.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V14__CleanupIndexes.kt @@ -2,7 +2,7 @@ package io.newm.chain.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V14__CleanupIndexes : BaseJavaMigration() { diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V15__CleanupIndexes.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V15__CleanupIndexes.kt index 200d4b4e..7694f396 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V15__CleanupIndexes.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V15__CleanupIndexes.kt @@ -2,7 +2,7 @@ package io.newm.chain.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V15__CleanupIndexes : BaseJavaMigration() { diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V16__AlterLedgerUtxos.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V16__AlterLedgerUtxos.kt index 50eea77b..44b00b58 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V16__AlterLedgerUtxos.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V16__AlterLedgerUtxos.kt @@ -2,7 +2,7 @@ package io.newm.chain.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V16__AlterLedgerUtxos : BaseJavaMigration() { diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V17__AlterLedgerUtxos.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V17__AlterLedgerUtxos.kt index feed1235..7d1c7032 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V17__AlterLedgerUtxos.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V17__AlterLedgerUtxos.kt @@ -2,7 +2,7 @@ package io.newm.chain.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V17__AlterLedgerUtxos : BaseJavaMigration() { diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V1__InitialCreation.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V1__InitialCreation.kt index 71ee90c9..208f5987 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V1__InitialCreation.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V1__InitialCreation.kt @@ -2,7 +2,7 @@ package io.newm.chain.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V1__InitialCreation : BaseJavaMigration() { diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V2__CreateLedgerAssetMetadata.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V2__CreateLedgerAssetMetadata.kt index 3dd8605b..3a7926a5 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V2__CreateLedgerAssetMetadata.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V2__CreateLedgerAssetMetadata.kt @@ -2,7 +2,7 @@ package io.newm.chain.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V2__CreateLedgerAssetMetadata : BaseJavaMigration() { diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V3__AlterLedgerUtxos.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V3__AlterLedgerUtxos.kt index 130777fc..dc6bfa54 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V3__AlterLedgerUtxos.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V3__AlterLedgerUtxos.kt @@ -2,7 +2,7 @@ package io.newm.chain.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V3__AlterLedgerUtxos : BaseJavaMigration() { diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V4__CreateUsers.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V4__CreateUsers.kt index f29b70c0..1d0d6d06 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V4__CreateUsers.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V4__CreateUsers.kt @@ -2,7 +2,7 @@ package io.newm.chain.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V4__CreateUsers : BaseJavaMigration() { diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V5__AlterLedgerUtxos.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V5__AlterLedgerUtxos.kt index fdfcf0b0..48cef8aa 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V5__AlterLedgerUtxos.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V5__AlterLedgerUtxos.kt @@ -2,7 +2,7 @@ package io.newm.chain.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V5__AlterLedgerUtxos : BaseJavaMigration() { diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V6__CreateAddressTxLog.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V6__CreateAddressTxLog.kt index 540f34dc..dbb55aba 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V6__CreateAddressTxLog.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V6__CreateAddressTxLog.kt @@ -2,7 +2,7 @@ package io.newm.chain.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V6__CreateAddressTxLog : BaseJavaMigration() { diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V7__DropKeys.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V7__DropKeys.kt index 5e0386df..f9d62661 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V7__DropKeys.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V7__DropKeys.kt @@ -2,7 +2,7 @@ package io.newm.chain.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V7__DropKeys : BaseJavaMigration() { diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V8__AlterLedgerAssets.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V8__AlterLedgerAssets.kt index 61ab65a6..9328a376 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V8__AlterLedgerAssets.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V8__AlterLedgerAssets.kt @@ -2,7 +2,7 @@ package io.newm.chain.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V8__AlterLedgerAssets : BaseJavaMigration() { diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V9__CreateNativeAssetLog.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V9__CreateNativeAssetLog.kt index 62dae15c..577928fb 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V9__CreateNativeAssetLog.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/migration/V9__CreateNativeAssetLog.kt @@ -2,7 +2,7 @@ package io.newm.chain.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V9__CreateNativeAssetLog : BaseJavaMigration() { diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/repository/ChainRepositoryImpl.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/repository/ChainRepositoryImpl.kt index 5db1478b..49468672 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/repository/ChainRepositoryImpl.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/repository/ChainRepositoryImpl.kt @@ -12,17 +12,19 @@ import io.newm.chain.util.hexToByteArray import io.newm.chain.util.toHexString import io.newm.kogmios.protocols.model.PointDetail import io.newm.kogmios.protocols.model.Tip -import org.jetbrains.exposed.sql.SortOrder -import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq -import org.jetbrains.exposed.sql.SqlExpressionBuilder.greater -import org.jetbrains.exposed.sql.SqlExpressionBuilder.greaterEq -import org.jetbrains.exposed.sql.SqlExpressionBuilder.less -import org.jetbrains.exposed.sql.and -import org.jetbrains.exposed.sql.batchInsert -import org.jetbrains.exposed.sql.deleteWhere -import org.jetbrains.exposed.sql.insertAndGetId -import org.jetbrains.exposed.sql.max -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.core.SortOrder +import org.jetbrains.exposed.v1.core.and +import org.jetbrains.exposed.v1.core.eq +import org.jetbrains.exposed.v1.core.eqSubQuery +import org.jetbrains.exposed.v1.core.greater +import org.jetbrains.exposed.v1.core.greaterEq +import org.jetbrains.exposed.v1.core.less +import org.jetbrains.exposed.v1.core.max +import org.jetbrains.exposed.v1.jdbc.batchInsert +import org.jetbrains.exposed.v1.jdbc.deleteWhere +import org.jetbrains.exposed.v1.jdbc.insertAndGetId +import org.jetbrains.exposed.v1.jdbc.select +import org.jetbrains.exposed.v1.jdbc.transactions.transaction import org.slf4j.Logger import org.slf4j.LoggerFactory diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/repository/LedgerRepositoryImpl.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/repository/LedgerRepositoryImpl.kt index 2cda9fa6..6a2eaf9c 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/repository/LedgerRepositoryImpl.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/repository/LedgerRepositoryImpl.kt @@ -51,30 +51,36 @@ import java.time.Instant import kotlin.math.max import kotlinx.coroutines.runBlocking import kotlinx.coroutines.sync.Mutex -import org.jetbrains.exposed.sql.ResultRow import kotlinx.coroutines.sync.withLock -import org.jetbrains.exposed.sql.LongColumnType -import org.jetbrains.exposed.sql.SortOrder -import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq -import org.jetbrains.exposed.sql.SqlExpressionBuilder.greaterEq -import org.jetbrains.exposed.sql.SqlExpressionBuilder.inList -import org.jetbrains.exposed.sql.SqlExpressionBuilder.isNull -import org.jetbrains.exposed.sql.SqlExpressionBuilder.less -import org.jetbrains.exposed.sql.and -import org.jetbrains.exposed.sql.batchInsert -import org.jetbrains.exposed.sql.castTo -import org.jetbrains.exposed.sql.count -import org.jetbrains.exposed.sql.deleteWhere -import org.jetbrains.exposed.sql.innerJoin -import org.jetbrains.exposed.sql.insert -import org.jetbrains.exposed.sql.insertAndGetId -import org.jetbrains.exposed.sql.max -import org.jetbrains.exposed.sql.or -import org.jetbrains.exposed.sql.selectAll -import org.jetbrains.exposed.sql.sum -import org.jetbrains.exposed.sql.transactions.transaction -import org.jetbrains.exposed.sql.update -import org.jetbrains.exposed.sql.transactions.TransactionManager +import org.jetbrains.exposed.v1.core.LongColumnType +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.castTo +import org.jetbrains.exposed.v1.core.count +import org.jetbrains.exposed.v1.core.eq +import org.jetbrains.exposed.v1.core.greater +import org.jetbrains.exposed.v1.core.greaterEq +import org.jetbrains.exposed.v1.core.inList +import org.jetbrains.exposed.v1.core.innerJoin +import org.jetbrains.exposed.v1.core.isNotNull +import org.jetbrains.exposed.v1.core.isNull +import org.jetbrains.exposed.v1.core.less +import org.jetbrains.exposed.v1.core.lessEq +import org.jetbrains.exposed.v1.core.like +import org.jetbrains.exposed.v1.core.max +import org.jetbrains.exposed.v1.core.or +import org.jetbrains.exposed.v1.core.regexp +import org.jetbrains.exposed.v1.core.sum +import org.jetbrains.exposed.v1.jdbc.batchInsert +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.transactions.TransactionManager +import org.jetbrains.exposed.v1.jdbc.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.update import org.slf4j.LoggerFactory class LedgerRepositoryImpl : LedgerRepository { @@ -278,14 +284,15 @@ class LedgerRepositoryImpl : LedgerRepository { ) } - val spentBlocks = + val spentBlockNumbers = spentRows .map { row -> row[LedgerUtxosTable.blockSpent] ?: throw TransactionInfoIntegrityException( "Spent UTXO row for txId=$txId is missing block_spent" ) - }.distinct() + } + val spentBlocks = spentBlockNumbers.distinct() if (spentBlocks.size > 1) { throw TransactionInfoIntegrityException( "Spent UTXOs for txId=$txId span multiple blocks: $spentBlocks" @@ -301,7 +308,9 @@ class LedgerRepositoryImpl : LedgerRepository { } return (createdBlock ?: spentBlock) - ?: throw TransactionInfoIntegrityException("Unable to infer block number for txId=$txId") + ?: throw TransactionInfoIntegrityException( + "Unable to infer block number for txId=$txId" + ) } private fun ResultRow.toRepositoryUtxo(): Utxo { @@ -312,7 +321,7 @@ class LedgerRepositoryImpl : LedgerRepository { LedgerAssetsTable, { ledgerAssetId }, { LedgerAssetsTable.id }, - { LedgerUtxoAssetsTable.ledgerUtxoId eq ledgerUtxoId }, + { LedgerUtxoAssetsTable.ledgerUtxoId eq ledgerUtxoId } ).selectAll() .map { naRow -> NativeAsset( @@ -1051,15 +1060,19 @@ class LedgerRepositoryImpl : LedgerRepository { val statement = connection.prepareStatement(sql.toString(), false) try { var paramIndex = 1 - statement.set(paramIndex++, blockNumber) + statement.set(paramIndex++, blockNumber, LedgerUtxosTable.blockSpent.columnType) batch.forEach { spentUtxo -> - statement.set(paramIndex++, spentUtxo.hash) - statement.set(paramIndex++, spentUtxo.ix.toInt()) - statement.set(paramIndex++, spentUtxo.transactionSpent) + statement.set(paramIndex++, spentUtxo.hash, LedgerUtxosTable.txId.columnType) + statement.set(paramIndex++, spentUtxo.ix.toInt(), LedgerUtxosTable.txIx.columnType) + statement.set( + paramIndex++, + spentUtxo.transactionSpent, + LedgerUtxosTable.transactionSpent.columnType + ) } batch.forEach { spentUtxo -> - statement.set(paramIndex++, spentUtxo.hash) - statement.set(paramIndex++, spentUtxo.ix.toInt()) + statement.set(paramIndex++, spentUtxo.hash, LedgerUtxosTable.txId.columnType) + statement.set(paramIndex++, spentUtxo.ix.toInt(), LedgerUtxosTable.txIx.columnType) } statement.executeUpdate() } finally { @@ -1701,4 +1714,4 @@ class LedgerRepositoryImpl : LedgerRepository { private val CIP68_USER_TOKEN_REGEX = Regex("^00(0de14|14df1|1bc28)0.*$") // (222)TokenName, (333)TokenName, (444)TokenName } -} \ No newline at end of file +} diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/repository/UsersRepositoryImpl.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/repository/UsersRepositoryImpl.kt index 53f3fd7b..346730a2 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/repository/UsersRepositoryImpl.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/repository/UsersRepositoryImpl.kt @@ -3,10 +3,11 @@ package io.newm.chain.database.repository import com.github.benmanes.caffeine.cache.Caffeine import io.newm.chain.database.entity.User import io.newm.chain.database.table.UsersTable -import org.jetbrains.exposed.sql.insertAndGetId -import org.jetbrains.exposed.sql.selectAll -import org.jetbrains.exposed.sql.transactions.transaction -import org.jetbrains.exposed.sql.update +import org.jetbrains.exposed.v1.core.eq +import org.jetbrains.exposed.v1.jdbc.insertAndGetId +import org.jetbrains.exposed.v1.jdbc.selectAll +import org.jetbrains.exposed.v1.jdbc.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.update import java.time.Duration class UsersRepositoryImpl : UsersRepository { diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/AddressTxLogTable.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/AddressTxLogTable.kt index d4227913..2a5c6378 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/AddressTxLogTable.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/AddressTxLogTable.kt @@ -1,7 +1,7 @@ package io.newm.chain.database.table -import org.jetbrains.exposed.dao.id.LongIdTable -import org.jetbrains.exposed.sql.Column +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.dao.id.LongIdTable object AddressTxLogTable : LongIdTable(name = "address_tx_log") { val address: Column = text("address") diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/ChainTable.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/ChainTable.kt index fafc1a2e..d7a4d2e9 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/ChainTable.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/ChainTable.kt @@ -1,7 +1,7 @@ package io.newm.chain.database.table -import org.jetbrains.exposed.dao.id.LongIdTable -import org.jetbrains.exposed.sql.Column +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.dao.id.LongIdTable object ChainTable : LongIdTable(name = "chain") { val blockNumber: Column = long("block_number").index() diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/LedgerAssetMetadataTable.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/LedgerAssetMetadataTable.kt index b254a435..4488992f 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/LedgerAssetMetadataTable.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/LedgerAssetMetadataTable.kt @@ -1,7 +1,7 @@ package io.newm.chain.database.table -import org.jetbrains.exposed.dao.id.LongIdTable -import org.jetbrains.exposed.sql.Column +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.dao.id.LongIdTable object LedgerAssetMetadataTable : LongIdTable(name = "ledger_asset_metadata") { // fk to the ledger_assets table containing policyid/name diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/LedgerAssetsTable.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/LedgerAssetsTable.kt index 7c5dec5c..50964ff4 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/LedgerAssetsTable.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/LedgerAssetsTable.kt @@ -1,7 +1,7 @@ package io.newm.chain.database.table -import org.jetbrains.exposed.dao.id.LongIdTable -import org.jetbrains.exposed.sql.Column +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.dao.id.LongIdTable object LedgerAssetsTable : LongIdTable(name = "ledger_assets") { // policy id for this asset diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/LedgerTable.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/LedgerTable.kt index bcb72bb6..0179f6df 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/LedgerTable.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/LedgerTable.kt @@ -1,7 +1,7 @@ package io.newm.chain.database.table -import org.jetbrains.exposed.dao.id.LongIdTable -import org.jetbrains.exposed.sql.Column +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.dao.id.LongIdTable object LedgerTable : LongIdTable(name = "ledger") { // Address that holds utxos on the ledger diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/LedgerUtxoAssetsTable.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/LedgerUtxoAssetsTable.kt index 2cfaa93e..e61aaba7 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/LedgerUtxoAssetsTable.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/LedgerUtxoAssetsTable.kt @@ -1,7 +1,7 @@ package io.newm.chain.database.table -import org.jetbrains.exposed.dao.id.LongIdTable -import org.jetbrains.exposed.sql.Column +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.dao.id.LongIdTable object LedgerUtxoAssetsTable : LongIdTable(name = "ledger_utxo_assets") { val ledgerUtxoId: Column = long("ledger_utxo_id").references(LedgerUtxosTable.id) diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/LedgerUtxosHistoryTable.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/LedgerUtxosHistoryTable.kt index bf48070c..cb531837 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/LedgerUtxosHistoryTable.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/LedgerUtxosHistoryTable.kt @@ -1,7 +1,7 @@ package io.newm.chain.database.table -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 LedgerUtxosHistoryTable : Table(name = "ledger_utxos_history") { // credential diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/LedgerUtxosTable.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/LedgerUtxosTable.kt index 9e44ab0a..9e545f46 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/LedgerUtxosTable.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/LedgerUtxosTable.kt @@ -1,7 +1,7 @@ package io.newm.chain.database.table -import org.jetbrains.exposed.dao.id.LongIdTable -import org.jetbrains.exposed.sql.Column +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.dao.id.LongIdTable object LedgerUtxosTable : LongIdTable(name = "ledger_utxos") { // foreign key to the ledger table diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/MonitoredAddressChainTable.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/MonitoredAddressChainTable.kt index 7358f77c..5bcd4aa2 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/MonitoredAddressChainTable.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/MonitoredAddressChainTable.kt @@ -1,7 +1,7 @@ package io.newm.chain.database.table -import org.jetbrains.exposed.dao.id.LongIdTable -import org.jetbrains.exposed.sql.Column +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.dao.id.LongIdTable object MonitoredAddressChainTable : LongIdTable(name = "monitored_address_chain") { // the address diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/NativeAssetMonitorLogTable.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/NativeAssetMonitorLogTable.kt index 55840292..cd2a3b3f 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/NativeAssetMonitorLogTable.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/NativeAssetMonitorLogTable.kt @@ -1,7 +1,7 @@ package io.newm.chain.database.table -import org.jetbrains.exposed.dao.id.LongIdTable -import org.jetbrains.exposed.sql.Column +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.dao.id.LongIdTable object NativeAssetMonitorLogTable : LongIdTable(name = "native_asset_log") { val monitorNativeAssetsResponseBytes: Column = binary("monitor_native_assets_response") diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/PaymentStakeAddressTable.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/PaymentStakeAddressTable.kt index 7fdfd672..4163164f 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/PaymentStakeAddressTable.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/PaymentStakeAddressTable.kt @@ -1,7 +1,7 @@ package io.newm.chain.database.table -import org.jetbrains.exposed.dao.id.LongIdTable -import org.jetbrains.exposed.sql.Column +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.dao.id.LongIdTable object PaymentStakeAddressTable : LongIdTable(name = "payment_stake_addresses") { val receivingAddress: Column = text("receiving_address") diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/RawTransactionsTable.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/RawTransactionsTable.kt index aae819e3..99d54592 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/RawTransactionsTable.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/RawTransactionsTable.kt @@ -1,7 +1,7 @@ package io.newm.chain.database.table -import org.jetbrains.exposed.dao.id.LongIdTable -import org.jetbrains.exposed.sql.Column +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.dao.id.LongIdTable object RawTransactionsTable : LongIdTable(name = "raw_transactions") { // the block number diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/StakeDelegationsTable.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/StakeDelegationsTable.kt index 9d88eceb..0fcac9f9 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/StakeDelegationsTable.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/StakeDelegationsTable.kt @@ -1,7 +1,7 @@ package io.newm.chain.database.table -import org.jetbrains.exposed.dao.id.LongIdTable -import org.jetbrains.exposed.sql.Column +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.dao.id.LongIdTable object StakeDelegationsTable : LongIdTable(name = "stake_delegations") { // the block in which this delegation/deregistration occurred diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/StakeRegistrationsTable.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/StakeRegistrationsTable.kt index 1685a3d8..8570ec83 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/StakeRegistrationsTable.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/StakeRegistrationsTable.kt @@ -1,7 +1,7 @@ package io.newm.chain.database.table -import org.jetbrains.exposed.dao.id.LongIdTable -import org.jetbrains.exposed.sql.Column +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.dao.id.LongIdTable object StakeRegistrationsTable : LongIdTable(name = "stake_registrations") { // the user's stake address diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/TransactionLogTable.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/TransactionLogTable.kt index 75228255..24fc9425 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/TransactionLogTable.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/TransactionLogTable.kt @@ -1,7 +1,7 @@ package io.newm.chain.database.table -import org.jetbrains.exposed.dao.id.LongIdTable -import org.jetbrains.exposed.sql.Column +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.dao.id.LongIdTable object TransactionLogTable : LongIdTable(name = "transaction_log") { val transactionId: Column = text("transaction_id") diff --git a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/UsersTable.kt b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/UsersTable.kt index b1db7619..9bb8275c 100644 --- a/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/UsersTable.kt +++ b/newm-chain-db/src/main/kotlin/io/newm/chain/database/table/UsersTable.kt @@ -1,7 +1,7 @@ package io.newm.chain.database.table -import org.jetbrains.exposed.dao.id.LongIdTable -import org.jetbrains.exposed.sql.Column +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.dao.id.LongIdTable object UsersTable : LongIdTable(name = "api_users") { val name: Column = text("name") diff --git a/newm-chain-db/src/test/kotlin/io/newm/chain/database/repository/QueryTransactionInfoRepositoryTest.kt b/newm-chain-db/src/test/kotlin/io/newm/chain/database/repository/QueryTransactionInfoRepositoryTest.kt index 709ad0a5..787780b5 100644 --- a/newm-chain-db/src/test/kotlin/io/newm/chain/database/repository/QueryTransactionInfoRepositoryTest.kt +++ b/newm-chain-db/src/test/kotlin/io/newm/chain/database/repository/QueryTransactionInfoRepositoryTest.kt @@ -2,17 +2,12 @@ package io.newm.chain.database.repository import com.google.common.truth.Truth.assertThat import com.zaxxer.hikari.HikariDataSource -import io.newm.chain.database.table.ChainTable -import io.newm.chain.database.table.LedgerAssetsTable -import io.newm.chain.database.table.LedgerTable -import io.newm.chain.database.table.LedgerUtxoAssetsTable -import io.newm.chain.database.table.LedgerUtxosTable import java.util.UUID -import org.jetbrains.exposed.sql.Database -import org.jetbrains.exposed.sql.SchemaUtils -import org.jetbrains.exposed.sql.insert -import org.jetbrains.exposed.sql.insertAndGetId -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.Database +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.transactions.transaction import org.junit.jupiter.api.AfterAll import org.junit.jupiter.api.BeforeAll import org.junit.jupiter.api.BeforeEach @@ -20,6 +15,11 @@ import org.junit.jupiter.api.Test import org.junit.jupiter.api.TestInstance import org.junit.jupiter.api.assertThrows import org.testcontainers.containers.PostgreSQLContainer +import io.newm.chain.database.table.ChainTable +import io.newm.chain.database.table.LedgerAssetsTable +import io.newm.chain.database.table.LedgerTable +import io.newm.chain.database.table.LedgerUtxoAssetsTable +import io.newm.chain.database.table.LedgerUtxosTable @TestInstance(TestInstance.Lifecycle.PER_CLASS) class QueryTransactionInfoRepositoryTest { diff --git a/newm-chain-grpc/build.gradle.kts b/newm-chain-grpc/build.gradle.kts index 65213258..3dee4bfe 100644 --- a/newm-chain-grpc/build.gradle.kts +++ b/newm-chain-grpc/build.gradle.kts @@ -17,6 +17,22 @@ plugins { java.sourceCompatibility = JavaVersion.VERSION_21 java.targetCompatibility = JavaVersion.VERSION_21 +val protocArtifactClassifier = + when (val osName = System.getProperty("os.name").lowercase()) { + in listOf("linux") -> "linux" + + in listOf("mac os x", "darwin") -> "osx" + + else -> when { + osName.startsWith("windows") -> "windows" + else -> error("Unsupported OS for protoc artifacts: $osName") + } + } + "-" + when (val osArch = System.getProperty("os.arch").lowercase()) { + "x86_64", "amd64" -> "x86_64" + "aarch64", "arm64" -> "aarch_64" + else -> error("Unsupported architecture for protoc artifacts: $osArch") + } + ktlint { version.set(Dependencies.KtLint.VERSION) filter { @@ -55,11 +71,11 @@ dependencies { protobuf { protoc { - artifact = Dependencies.Protobuf.PROTOC + artifact = "${Dependencies.Protobuf.PROTOC}:$protocArtifactClassifier@exe" } plugins { id("grpc") { - artifact = Dependencies.Grpc.GRPC + artifact = "${Dependencies.Grpc.GRPC}:$protocArtifactClassifier@exe" } id("grpckt") { artifact = Dependencies.GrpcKotlin.GRPCKT diff --git a/newm-chain/src/main/kotlin/io/newm/chain/Application.kt b/newm-chain/src/main/kotlin/io/newm/chain/Application.kt index 07816472..2da6d664 100644 --- a/newm-chain/src/main/kotlin/io/newm/chain/Application.kt +++ b/newm-chain/src/main/kotlin/io/newm/chain/Application.kt @@ -14,7 +14,7 @@ import io.newm.shared.daemon.initializeDaemons import kotlin.system.exitProcess import kotlinx.coroutines.delay import kotlinx.coroutines.launch -import org.jetbrains.exposed.sql.exposedLogger +import org.jetbrains.exposed.v1.core.exposedLogger import org.slf4j.LoggerFactory private var createJwtUser: String = "" diff --git a/newm-chain/src/main/kotlin/io/newm/chain/daemon/BlockDaemon.kt b/newm-chain/src/main/kotlin/io/newm/chain/daemon/BlockDaemon.kt index 6bca2fb9..40d7a43e 100644 --- a/newm-chain/src/main/kotlin/io/newm/chain/daemon/BlockDaemon.kt +++ b/newm-chain/src/main/kotlin/io/newm/chain/daemon/BlockDaemon.kt @@ -68,10 +68,10 @@ import kotlinx.coroutines.delay import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import org.jetbrains.exposed.sql.SqlExpressionBuilder.greaterEq -import org.jetbrains.exposed.sql.batchInsert -import org.jetbrains.exposed.sql.deleteWhere -import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction +import org.jetbrains.exposed.v1.core.greaterEq +import org.jetbrains.exposed.v1.jdbc.batchInsert +import org.jetbrains.exposed.v1.jdbc.deleteWhere +import org.jetbrains.exposed.v1.jdbc.transactions.suspendTransaction class BlockDaemon( private val environment: ApplicationEnvironment, @@ -337,7 +337,7 @@ class BlockDaemon( var createTime = 0L var pruneTime = 0L measureTimeMillis { - newSuspendedTransaction { + suspendTransaction { warnLongQueriesDuration = 1000L val firstBlock = blocksToCommit.first().block as BlockPraos val lastBlock = blocksToCommit.last().block as BlockPraos @@ -731,8 +731,8 @@ class BlockDaemon( ) // Update the db for native asset changes - NativeAssetMonitorLogTable.batchInsert(batch, shouldReturnGeneratedValues = false) { - this[NativeAssetMonitorLogTable.monitorNativeAssetsResponseBytes] = it + NativeAssetMonitorLogTable.batchInsert(data = batch, shouldReturnGeneratedValues = false) { responseBytes -> + this[NativeAssetMonitorLogTable.monitorNativeAssetsResponseBytes] = responseBytes this[NativeAssetMonitorLogTable.blockNumber] = block.height } } diff --git a/newm-chain/src/main/kotlin/io/newm/chain/daemon/MonitorAddressDaemon.kt b/newm-chain/src/main/kotlin/io/newm/chain/daemon/MonitorAddressDaemon.kt index da25b250..92218f7c 100644 --- a/newm-chain/src/main/kotlin/io/newm/chain/daemon/MonitorAddressDaemon.kt +++ b/newm-chain/src/main/kotlin/io/newm/chain/daemon/MonitorAddressDaemon.kt @@ -51,12 +51,12 @@ import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.flow.takeWhile import kotlinx.coroutines.launch import kotlinx.coroutines.withContext -import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq -import org.jetbrains.exposed.sql.SqlExpressionBuilder.greaterEq -import org.jetbrains.exposed.sql.and -import org.jetbrains.exposed.sql.batchInsert -import org.jetbrains.exposed.sql.deleteWhere -import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction +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.jdbc.batchInsert +import org.jetbrains.exposed.v1.jdbc.deleteWhere +import org.jetbrains.exposed.v1.jdbc.transactions.suspendTransaction class MonitorAddressDaemon( private val environment: ApplicationEnvironment, @@ -230,7 +230,7 @@ class MonitorAddressDaemon( val firstBlock = blocksToCommit.first() val latestBlock = blocksToCommit.last() measureTimeMillis { - newSuspendedTransaction { + suspendTransaction { warnLongQueriesDuration = 1000L rollbackTime += measureTimeMillis { @@ -443,9 +443,10 @@ class MonitorAddressDaemon( } AddressTxLogTable.batchInsert( - batch, + data = batch, shouldReturnGeneratedValues = false - ) { (monitorAddress, monitorAddressResponse) -> + ) { entry -> + val (monitorAddress, monitorAddressResponse) = entry this[AddressTxLogTable.blockNumber] = block.height this[AddressTxLogTable.address] = monitorAddress this[AddressTxLogTable.txId] = monitorAddressResponse.txId diff --git a/newm-chain/src/main/kotlin/io/newm/chain/database/DatabaseInit.kt b/newm-chain/src/main/kotlin/io/newm/chain/database/DatabaseInit.kt index 201775a3..f6df159c 100644 --- a/newm-chain/src/main/kotlin/io/newm/chain/database/DatabaseInit.kt +++ b/newm-chain/src/main/kotlin/io/newm/chain/database/DatabaseInit.kt @@ -11,8 +11,8 @@ import io.ktor.server.application.install import io.newm.chain.util.config.Config import io.newm.shared.ktx.getConfigString import java.util.Properties -import org.jetbrains.exposed.sql.Database -import org.jetbrains.exposed.sql.DatabaseConfig +import org.jetbrains.exposed.v1.core.DatabaseConfig +import org.jetbrains.exposed.v1.jdbc.Database fun Application.initializeDatabase() { Config.shelleyGenesisHash = environment.getConfigString("database.shelleyGenesisHash") diff --git a/newm-server/src/main/kotlin/io/newm/server/auth/twofactor/database/TwoFactorAuthEntity.kt b/newm-server/src/main/kotlin/io/newm/server/auth/twofactor/database/TwoFactorAuthEntity.kt index 5b91f281..748f98d8 100644 --- a/newm-server/src/main/kotlin/io/newm/server/auth/twofactor/database/TwoFactorAuthEntity.kt +++ b/newm-server/src/main/kotlin/io/newm/server/auth/twofactor/database/TwoFactorAuthEntity.kt @@ -1,12 +1,12 @@ package io.newm.server.auth.twofactor.database -import org.jetbrains.exposed.dao.Entity -import org.jetbrains.exposed.dao.EntityClass -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq -import org.jetbrains.exposed.sql.SqlExpressionBuilder.lessEq -import org.jetbrains.exposed.sql.deleteWhere -import org.jetbrains.exposed.sql.lowerCase +import org.jetbrains.exposed.v1.dao.Entity +import org.jetbrains.exposed.v1.dao.EntityClass +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.eq +import org.jetbrains.exposed.v1.core.lessEq +import org.jetbrains.exposed.v1.jdbc.deleteWhere +import org.jetbrains.exposed.v1.core.lowerCase import java.time.LocalDateTime class TwoFactorAuthEntity( diff --git a/newm-server/src/main/kotlin/io/newm/server/auth/twofactor/database/TwoFactorAuthTable.kt b/newm-server/src/main/kotlin/io/newm/server/auth/twofactor/database/TwoFactorAuthTable.kt index 8e286135..205cca8a 100644 --- a/newm-server/src/main/kotlin/io/newm/server/auth/twofactor/database/TwoFactorAuthTable.kt +++ b/newm-server/src/main/kotlin/io/newm/server/auth/twofactor/database/TwoFactorAuthTable.kt @@ -1,8 +1,8 @@ package io.newm.server.auth.twofactor.database -import org.jetbrains.exposed.dao.id.LongIdTable -import org.jetbrains.exposed.sql.Column -import org.jetbrains.exposed.sql.javatime.datetime +import org.jetbrains.exposed.v1.core.dao.id.LongIdTable +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.javatime.datetime import java.time.LocalDateTime object TwoFactorAuthTable : LongIdTable(name = "two_factor_auth") { diff --git a/newm-server/src/main/kotlin/io/newm/server/auth/twofactor/repo/TwoFactorAuthRepositoryImpl.kt b/newm-server/src/main/kotlin/io/newm/server/auth/twofactor/repo/TwoFactorAuthRepositoryImpl.kt index 60873827..967b5f88 100644 --- a/newm-server/src/main/kotlin/io/newm/server/auth/twofactor/repo/TwoFactorAuthRepositoryImpl.kt +++ b/newm-server/src/main/kotlin/io/newm/server/auth/twofactor/repo/TwoFactorAuthRepositoryImpl.kt @@ -12,7 +12,7 @@ import io.newm.shared.ktx.getString import io.newm.shared.ktx.nextDigitCode import io.newm.shared.ktx.toHash import io.newm.shared.ktx.verify -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction import java.security.SecureRandom import java.time.LocalDateTime diff --git a/newm-server/src/main/kotlin/io/newm/server/config/database/ConfigEntity.kt b/newm-server/src/main/kotlin/io/newm/server/config/database/ConfigEntity.kt index 003149e9..e87f250b 100644 --- a/newm-server/src/main/kotlin/io/newm/server/config/database/ConfigEntity.kt +++ b/newm-server/src/main/kotlin/io/newm/server/config/database/ConfigEntity.kt @@ -1,8 +1,8 @@ package io.newm.server.config.database -import org.jetbrains.exposed.dao.Entity -import org.jetbrains.exposed.dao.EntityClass -import org.jetbrains.exposed.dao.id.EntityID +import org.jetbrains.exposed.v1.dao.Entity +import org.jetbrains.exposed.v1.dao.EntityClass +import org.jetbrains.exposed.v1.core.dao.id.EntityID class ConfigEntity( id: EntityID diff --git a/newm-server/src/main/kotlin/io/newm/server/config/database/ConfigTable.kt b/newm-server/src/main/kotlin/io/newm/server/config/database/ConfigTable.kt index 04439ba1..5c9dd387 100644 --- a/newm-server/src/main/kotlin/io/newm/server/config/database/ConfigTable.kt +++ b/newm-server/src/main/kotlin/io/newm/server/config/database/ConfigTable.kt @@ -1,8 +1,8 @@ package io.newm.server.config.database -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.dao.id.IdTable -import org.jetbrains.exposed.sql.Column +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.dao.id.IdTable +import org.jetbrains.exposed.v1.core.Column object ConfigTable : IdTable(name = "config") { override val id: Column> = text("id").entityId() diff --git a/newm-server/src/main/kotlin/io/newm/server/config/repo/ConfigRepositoryImpl.kt b/newm-server/src/main/kotlin/io/newm/server/config/repo/ConfigRepositoryImpl.kt index 29c38183..d99e37cf 100644 --- a/newm-server/src/main/kotlin/io/newm/server/config/repo/ConfigRepositoryImpl.kt +++ b/newm-server/src/main/kotlin/io/newm/server/config/repo/ConfigRepositoryImpl.kt @@ -10,7 +10,7 @@ import java.time.Duration import kotlinx.coroutines.runBlocking import kotlinx.serialization.json.Json import org.apache.commons.net.util.SubnetUtils -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction internal class ConfigRepositoryImpl : ConfigRepository { private val log by lazy { KotlinLogging.logger { } } diff --git a/newm-server/src/main/kotlin/io/newm/server/database/DatabaseInit.kt b/newm-server/src/main/kotlin/io/newm/server/database/DatabaseInit.kt index a82a441e..cd92a270 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/DatabaseInit.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/DatabaseInit.kt @@ -8,8 +8,8 @@ import com.zaxxer.hikari.HikariDataSource import io.ktor.server.application.Application import io.ktor.server.application.install import io.newm.shared.koin.inject -import org.jetbrains.exposed.sql.Database -import org.jetbrains.exposed.sql.DatabaseConfig +import org.jetbrains.exposed.v1.jdbc.Database +import org.jetbrains.exposed.v1.core.DatabaseConfig fun Application.initializeDatabase() { val hikariDataSource: HikariDataSource by inject() diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V10__CreateKeys.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V10__CreateKeys.kt index 443e25f7..b7099f96 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V10__CreateKeys.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V10__CreateKeys.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V10__CreateKeys : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V11__SongsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V11__SongsUpdates.kt index 14abee36..1ade83f7 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V11__SongsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V11__SongsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V11__SongsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V12__UsersUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V12__UsersUpdates.kt index 4bd47e70..12e4cc58 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V12__UsersUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V12__UsersUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V12__UsersUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V13__CreateConfig.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V13__CreateConfig.kt index bd7cf84f..236e7a22 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V13__CreateConfig.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V13__CreateConfig.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V13__CreateConfig : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V14__CreateCollaborations.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V14__CreateCollaborations.kt index 7874e591..33a37db1 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V14__CreateCollaborations.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V14__CreateCollaborations.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V14__CreateCollaborations : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V15__SongsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V15__SongsUpdates.kt index 327553e3..89503413 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V15__SongsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V15__SongsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V15__SongsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V16__SongsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V16__SongsUpdates.kt index 902d1627..4b8f86dd 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V16__SongsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V16__SongsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V16__SongsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V17__CollaborationsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V17__CollaborationsUpdates.kt index ffee3678..9b3dca2f 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V17__CollaborationsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V17__CollaborationsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V17__CollaborationsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V18__ConfigUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V18__ConfigUpdates.kt index 548ce130..becd3692 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V18__ConfigUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V18__ConfigUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V18__ConfigUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V19__CollaborationsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V19__CollaborationsUpdates.kt index c5963dce..b2972bfc 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V19__CollaborationsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V19__CollaborationsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V19__CollaborationsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V1__InitialCreation.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V1__InitialCreation.kt index d6fe8628..60e09b84 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V1__InitialCreation.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V1__InitialCreation.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V1__InitialCreation : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V20__SongsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V20__SongsUpdates.kt index 8ea0c030..68b47f62 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V20__SongsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V20__SongsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V20__SongsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V21__CollaborationsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V21__CollaborationsUpdates.kt index 2b32fb0c..1661533e 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V21__CollaborationsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V21__CollaborationsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V21__CollaborationsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V22__CreateQuartzScheduler.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V22__CreateQuartzScheduler.kt index 918ac2ba..b7df869c 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V22__CreateQuartzScheduler.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V22__CreateQuartzScheduler.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V22__CreateQuartzScheduler : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V23__ConfigUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V23__ConfigUpdates.kt index cf888398..f3260b4c 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V23__ConfigUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V23__ConfigUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V23__ConfigUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V24__UsersUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V24__UsersUpdates.kt index 7664be62..b5b321f0 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V24__UsersUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V24__UsersUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V24__UsersUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V25__SongsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V25__SongsUpdates.kt index c9dc786f..2f087e4d 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V25__SongsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V25__SongsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V25__SongsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V26__SongsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V26__SongsUpdates.kt index f51ffbf8..fd963829 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V26__SongsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V26__SongsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V26__SongsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V27__ConfigUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V27__ConfigUpdates.kt index 48456971..2547d252 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V27__ConfigUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V27__ConfigUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V27__ConfigUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V28__UsersUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V28__UsersUpdates.kt index 229abbc3..9f0dd063 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V28__UsersUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V28__UsersUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V28__UsersUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V29__UsersUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V29__UsersUpdates.kt index 97b28fe5..6c303bfd 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V29__UsersUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V29__UsersUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V29__UsersUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V2__SongsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V2__SongsUpdates.kt index dda7b778..58b4dbff 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V2__SongsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V2__SongsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V2__SongsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V30__SongsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V30__SongsUpdates.kt index 9647c85e..d5a442ea 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V30__SongsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V30__SongsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V30__SongsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V31__ConfigUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V31__ConfigUpdates.kt index fb9280df..b64fe3a6 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V31__ConfigUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V31__ConfigUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V31__ConfigUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V32__SongsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V32__SongsUpdates.kt index 399e62c2..d258dcfc 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V32__SongsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V32__SongsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V32__SongsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V33__SongsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V33__SongsUpdates.kt index 3402809f..71a092a4 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V33__SongsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V33__SongsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V33__SongsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V34__SongsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V34__SongsUpdates.kt index 83b2407d..e1ffbb8a 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V34__SongsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V34__SongsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V34__SongsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V35__SongsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V35__SongsUpdates.kt index 790641d5..2b2ed0da 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V35__SongsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V35__SongsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V35__SongsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V36__SongsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V36__SongsUpdates.kt index e1f59eeb..14457aaa 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V36__SongsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V36__SongsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V36__SongsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V37__UsersUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V37__UsersUpdates.kt index 020ed071..d92e2542 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V37__UsersUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V37__UsersUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V37__UsersUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V38__SongsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V38__SongsUpdates.kt index caf6f61a..d2a71a43 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V38__SongsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V38__SongsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V38__SongsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V39__ConfigUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V39__ConfigUpdates.kt index c4aa43c0..49c13c6c 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V39__ConfigUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V39__ConfigUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V39__ConfigUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V3__SongsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V3__SongsUpdates.kt index ae23d141..c0965775 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V3__SongsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V3__SongsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V3__SongsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V40__SongsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V40__SongsUpdates.kt index c8d1a8c0..71760d97 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V40__SongsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V40__SongsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V40__SongsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V41__CreateSongReceipts.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V41__CreateSongReceipts.kt index ad55796b..ad66fbd5 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V41__CreateSongReceipts.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V41__CreateSongReceipts.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V41__CreateSongReceipts : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V42__UsersUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V42__UsersUpdates.kt index fb531c23..03e95bde 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V42__UsersUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V42__UsersUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V42__UsersUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V43__UsersUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V43__UsersUpdates.kt index d4275a64..dca8492a 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V43__UsersUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V43__UsersUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V43__UsersUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V44__CascadeFixes.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V44__CascadeFixes.kt index bf6b9e6f..a619dcf7 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V44__CascadeFixes.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V44__CascadeFixes.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V44__CascadeFixes : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V45__CreateEarnings.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V45__CreateEarnings.kt index b7c97d63..063641d1 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V45__CreateEarnings.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V45__CreateEarnings.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V45__CreateEarnings : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V46__SongsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V46__SongsUpdates.kt index 8b41c4f0..3f4a441d 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V46__SongsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V46__SongsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V46__SongsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V47__CollaborationsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V47__CollaborationsUpdates.kt index 71f3a9aa..2753cfb9 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V47__CollaborationsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V47__CollaborationsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V47__CollaborationsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V48__CreateSongErrorHistory.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V48__CreateSongErrorHistory.kt index fb62f9c0..d6dd6469 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V48__CreateSongErrorHistory.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V48__CreateSongErrorHistory.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V48__CreateSongErrorHistory : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V49__SongsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V49__SongsUpdates.kt index 96204868..da4cbf28 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V49__SongsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V49__SongsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V49__SongsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V4__SongsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V4__SongsUpdates.kt index 7ad7c991..bd6380a5 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V4__SongsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V4__SongsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V4__SongsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V50__CreateWalletConnections.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V50__CreateWalletConnections.kt index 522d57d4..c708580c 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V50__CreateWalletConnections.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V50__CreateWalletConnections.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V50__CreateWalletConnections : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V51__WalletConnectionsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V51__WalletConnectionsUpdates.kt index e5b5a3e6..0caa10b5 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V51__WalletConnectionsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V51__WalletConnectionsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V51__WalletConnectionsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V52__CreateMarketplace.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V52__CreateMarketplace.kt index d243a442..6bc02a9d 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V52__CreateMarketplace.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V52__CreateMarketplace.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V52__CreateMarketplace : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V53__CreateReleases.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V53__CreateReleases.kt index f36764b0..7c78ef00 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V53__CreateReleases.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V53__CreateReleases.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction class V53__CreateReleases : BaseJavaMigration() { override fun migrate(context: Context?) { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V54__MarketplaceUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V54__MarketplaceUpdates.kt index 982fa459..6588af7a 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V54__MarketplaceUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V54__MarketplaceUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V54__MarketplaceUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V55__ConfigUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V55__ConfigUpdates.kt index 8217b1e8..e432d660 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V55__ConfigUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V55__ConfigUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V55__ConfigUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V56__UserSongMarketplaceUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V56__UserSongMarketplaceUpdates.kt index 85572c50..4c952913 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V56__UserSongMarketplaceUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V56__UserSongMarketplaceUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V56__UserSongMarketplaceUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V57__ConfigUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V57__ConfigUpdates.kt index b82f0896..3d8ef505 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V57__ConfigUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V57__ConfigUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V57__ConfigUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V58__ReleasesUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V58__ReleasesUpdates.kt index 812b8591..5e300629 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V58__ReleasesUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V58__ReleasesUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V58__ReleasesUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V59__MarketplaceUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V59__MarketplaceUpdates.kt index d633bc53..f6846ab1 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V59__MarketplaceUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V59__MarketplaceUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V59__MarketplaceUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V5__SongsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V5__SongsUpdates.kt index faf72962..71ebc38e 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V5__SongsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V5__SongsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V5__SongsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V60__EarningsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V60__EarningsUpdates.kt index f24d91bc..5c2f4bdb 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V60__EarningsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V60__EarningsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V60__EarningsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V61__CreateScriptAddressWhitelist.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V61__CreateScriptAddressWhitelist.kt index 3a4ce217..17b55d4c 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V61__CreateScriptAddressWhitelist.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V61__CreateScriptAddressWhitelist.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V61__CreateScriptAddressWhitelist : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V62__ConfigUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V62__ConfigUpdates.kt index b06e1404..344d7cf7 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V62__ConfigUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V62__ConfigUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V62__ConfigUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V63__UsersUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V63__UsersUpdates.kt index b736ff18..5954c8b7 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V63__UsersUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V63__UsersUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V63__UsersUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V64__ConfigUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V64__ConfigUpdates.kt index 90187c4f..3a8416cb 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V64__ConfigUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V64__ConfigUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V64__ConfigUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V65__JwtsDrop.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V65__JwtsDrop.kt index 4c28a83b..5e9d1d40 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V65__JwtsDrop.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V65__JwtsDrop.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V65__JwtsDrop : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V66__MarketplaceUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V66__MarketplaceUpdates.kt index b4941c76..396b5f05 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V66__MarketplaceUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V66__MarketplaceUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V66__MarketplaceUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V67__SongsReleasesUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V67__SongsReleasesUpdates.kt index 9ad61647..caee9646 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V67__SongsReleasesUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V67__SongsReleasesUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V67__SongsReleasesUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V68__CreateMintingStatusHistory.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V68__CreateMintingStatusHistory.kt index 5e305d0a..8da6dc5b 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V68__CreateMintingStatusHistory.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V68__CreateMintingStatusHistory.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V68__CreateMintingStatusHistory : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V69__MarketplaceUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V69__MarketplaceUpdates.kt index 6c591531..d15e2a93 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V69__MarketplaceUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V69__MarketplaceUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V69__MarketplaceUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V6__UsersUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V6__UsersUpdates.kt index e5f869b8..5fde2946 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V6__UsersUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V6__UsersUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V6__UsersUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V70__MarketplaceUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V70__MarketplaceUpdates.kt index b8d8e899..f2b6411a 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V70__MarketplaceUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V70__MarketplaceUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V70__MarketplaceUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V71__MarketplaceUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V71__MarketplaceUpdates.kt index 30ece1cf..534c82c8 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V71__MarketplaceUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V71__MarketplaceUpdates.kt @@ -4,7 +4,7 @@ import io.newm.chain.util.extractStakeKeyHex import io.newm.server.features.marketplace.database.MarketplaceSaleEntity import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V71__MarketplaceUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V72__CreateSongSmartLinks.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V72__CreateSongSmartLinks.kt index 844941e0..b86e7ddb 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V72__CreateSongSmartLinks.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V72__CreateSongSmartLinks.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V72__CreateSongSmartLinks : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V73__UsersUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V73__UsersUpdates.kt index f570b0da..24bb7d0d 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V73__UsersUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V73__UsersUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V73__UsersUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V74__UsersUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V74__UsersUpdates.kt index 7fa580b6..e47f0de9 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V74__UsersUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V74__UsersUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V74__UsersUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V75__ConfigUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V75__ConfigUpdates.kt index a64ab9fc..317dded3 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V75__ConfigUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V75__ConfigUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V75__ConfigUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V76__CollaborationsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V76__CollaborationsUpdates.kt index 54e14440..cd541701 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V76__CollaborationsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V76__CollaborationsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V76__CollaborationsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V77__ConfigUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V77__ConfigUpdates.kt index b535ca53..cc77409e 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V77__ConfigUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V77__ConfigUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V77__ConfigUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V78__ReleasesUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V78__ReleasesUpdates.kt index eabe6984..3f3e4040 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V78__ReleasesUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V78__ReleasesUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V78__ReleasesUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V79__ConfigUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V79__ConfigUpdates.kt index e1fc4cd9..64854ce8 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V79__ConfigUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V79__ConfigUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V79__ConfigUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V7__UsersUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V7__UsersUpdates.kt index 454a287d..fcf84a23 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V7__UsersUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V7__UsersUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V7__UsersUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V80__ConfigUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V80__ConfigUpdates.kt index 93276213..4597222a 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V80__ConfigUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V80__ConfigUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V80__ConfigUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V81__ConfigUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V81__ConfigUpdates.kt index 5e0b7104..1dffa353 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V81__ConfigUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V81__ConfigUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V81__ConfigUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V82__UsersUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V82__UsersUpdates.kt index c8f0e0ac..37264578 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V82__UsersUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V82__UsersUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V82__UsersUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V83__ConfigUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V83__ConfigUpdates.kt index 1860a7d4..50af5445 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V83__ConfigUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V83__ConfigUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V83__ConfigUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V84__ConfigUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V84__ConfigUpdates.kt index 0d683c77..dfc83255 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V84__ConfigUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V84__ConfigUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V84__ConfigUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V85__WalletConnectionsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V85__WalletConnectionsUpdates.kt index 65911763..c8ed4ed5 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V85__WalletConnectionsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V85__WalletConnectionsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V85__WalletConnectionsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V8__SongsUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V8__SongsUpdates.kt index 95e00641..50c8f72e 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V8__SongsUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V8__SongsUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V8__SongsUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/database/migration/V9__UsersUpdates.kt b/newm-server/src/main/kotlin/io/newm/server/database/migration/V9__UsersUpdates.kt index eba17ab1..d192160e 100644 --- a/newm-server/src/main/kotlin/io/newm/server/database/migration/V9__UsersUpdates.kt +++ b/newm-server/src/main/kotlin/io/newm/server/database/migration/V9__UsersUpdates.kt @@ -2,7 +2,7 @@ package io.newm.server.database.migration import org.flywaydb.core.api.migration.BaseJavaMigration import org.flywaydb.core.api.migration.Context -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction @Suppress("unused") class V9__UsersUpdates : BaseJavaMigration() { diff --git a/newm-server/src/main/kotlin/io/newm/server/features/cardano/database/KeyEntity.kt b/newm-server/src/main/kotlin/io/newm/server/features/cardano/database/KeyEntity.kt index fcea92c8..8735f002 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/cardano/database/KeyEntity.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/cardano/database/KeyEntity.kt @@ -3,16 +3,16 @@ package io.newm.server.features.cardano.database import io.newm.chain.util.hexToByteArray import io.newm.server.features.cardano.model.Key import io.newm.server.features.cardano.model.KeyFilters -import org.jetbrains.exposed.dao.UUIDEntity -import org.jetbrains.exposed.dao.UUIDEntityClass -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.AndOp -import org.jetbrains.exposed.sql.Op -import org.jetbrains.exposed.sql.SizedIterable -import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq -import org.jetbrains.exposed.sql.SqlExpressionBuilder.greater -import org.jetbrains.exposed.sql.SqlExpressionBuilder.inList -import org.jetbrains.exposed.sql.SqlExpressionBuilder.less +import org.jetbrains.exposed.v1.dao.java.UUIDEntity +import org.jetbrains.exposed.v1.dao.java.UUIDEntityClass +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.AndOp +import org.jetbrains.exposed.v1.core.Op +import org.jetbrains.exposed.v1.jdbc.SizedIterable +import org.jetbrains.exposed.v1.core.eq +import org.jetbrains.exposed.v1.core.greater +import org.jetbrains.exposed.v1.core.inList +import org.jetbrains.exposed.v1.core.less import java.time.LocalDateTime import java.util.* diff --git a/newm-server/src/main/kotlin/io/newm/server/features/cardano/database/KeyTable.kt b/newm-server/src/main/kotlin/io/newm/server/features/cardano/database/KeyTable.kt index a2eb257d..38f42814 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/cardano/database/KeyTable.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/cardano/database/KeyTable.kt @@ -1,9 +1,9 @@ package io.newm.server.features.cardano.database -import org.jetbrains.exposed.dao.id.UUIDTable -import org.jetbrains.exposed.sql.Column -import org.jetbrains.exposed.sql.javatime.CurrentDateTime -import org.jetbrains.exposed.sql.javatime.datetime +import org.jetbrains.exposed.v1.core.dao.id.java.UUIDTable +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.javatime.CurrentDateTime +import org.jetbrains.exposed.v1.javatime.datetime import java.time.LocalDateTime object KeyTable : UUIDTable(name = "keys") { diff --git a/newm-server/src/main/kotlin/io/newm/server/features/cardano/database/ScriptAddressWhitelistEntity.kt b/newm-server/src/main/kotlin/io/newm/server/features/cardano/database/ScriptAddressWhitelistEntity.kt index ef8ff28b..4bff3aab 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/cardano/database/ScriptAddressWhitelistEntity.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/cardano/database/ScriptAddressWhitelistEntity.kt @@ -1,9 +1,9 @@ package io.newm.server.features.cardano.database import java.util.UUID -import org.jetbrains.exposed.dao.UUIDEntity -import org.jetbrains.exposed.dao.UUIDEntityClass -import org.jetbrains.exposed.dao.id.EntityID +import org.jetbrains.exposed.v1.dao.java.UUIDEntity +import org.jetbrains.exposed.v1.dao.java.UUIDEntityClass +import org.jetbrains.exposed.v1.core.dao.id.EntityID class ScriptAddressWhitelistEntity( id: EntityID diff --git a/newm-server/src/main/kotlin/io/newm/server/features/cardano/database/ScriptAddressWhitelistTable.kt b/newm-server/src/main/kotlin/io/newm/server/features/cardano/database/ScriptAddressWhitelistTable.kt index c98d3672..a8fd9e5a 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/cardano/database/ScriptAddressWhitelistTable.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/cardano/database/ScriptAddressWhitelistTable.kt @@ -1,7 +1,7 @@ package io.newm.server.features.cardano.database -import org.jetbrains.exposed.dao.id.UUIDTable -import org.jetbrains.exposed.sql.Column +import org.jetbrains.exposed.v1.core.dao.id.java.UUIDTable +import org.jetbrains.exposed.v1.core.Column object ScriptAddressWhitelistTable : UUIDTable(name = "script_address_whitelist") { // scriptAddress that is allowed to pull earnings. We prevent anything sitting in some smart contracts from pulling diff --git a/newm-server/src/main/kotlin/io/newm/server/features/cardano/repo/CardanoRepositoryImpl.kt b/newm-server/src/main/kotlin/io/newm/server/features/cardano/repo/CardanoRepositoryImpl.kt index e7994081..c14eef8a 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/cardano/repo/CardanoRepositoryImpl.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/cardano/repo/CardanoRepositoryImpl.kt @@ -95,8 +95,9 @@ import io.newm.txbuilder.ktx.toNativeAssetMap import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock -import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.core.eq +import org.jetbrains.exposed.v1.jdbc.transactions.suspendTransaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction import org.springframework.security.crypto.encrypt.BytesEncryptor import org.springframework.security.crypto.encrypt.Encryptors import software.amazon.awssdk.core.SdkBytes @@ -651,7 +652,7 @@ internal class CardanoRepositoryImpl( userId: UserId, getAssetsByAddress: suspend (String) -> List ): List = - newSuspendedTransaction { + suspendTransaction { WalletConnectionEntity.getAllByUserIdAndWalletChain(userId, WalletChain.Cardano).toList() }.map { connection -> connection.id.value to getAssetsByAddress(connection.address) diff --git a/newm-server/src/main/kotlin/io/newm/server/features/collaboration/database/CollaborationEntity.kt b/newm-server/src/main/kotlin/io/newm/server/features/collaboration/database/CollaborationEntity.kt index cb3dc81d..8a027c4a 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/collaboration/database/CollaborationEntity.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/collaboration/database/CollaborationEntity.kt @@ -10,28 +10,29 @@ import io.newm.server.features.user.database.UserTable import io.newm.server.typealiases.SongId import io.newm.server.typealiases.UserId import io.newm.shared.ktx.exists -import org.jetbrains.exposed.dao.UUIDEntity -import org.jetbrains.exposed.dao.UUIDEntityClass -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.AndOp -import org.jetbrains.exposed.sql.Op -import org.jetbrains.exposed.sql.SizedIterable -import org.jetbrains.exposed.sql.SortOrder -import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq -import org.jetbrains.exposed.sql.SqlExpressionBuilder.greater -import org.jetbrains.exposed.sql.SqlExpressionBuilder.inList -import org.jetbrains.exposed.sql.SqlExpressionBuilder.less -import org.jetbrains.exposed.sql.SqlExpressionBuilder.like -import org.jetbrains.exposed.sql.SqlExpressionBuilder.neq -import org.jetbrains.exposed.sql.SqlExpressionBuilder.notInList -import org.jetbrains.exposed.sql.and -import org.jetbrains.exposed.sql.count -import org.jetbrains.exposed.sql.innerJoin -import org.jetbrains.exposed.sql.leftJoin -import org.jetbrains.exposed.sql.lowerCase -import org.jetbrains.exposed.sql.mapLazy -import org.jetbrains.exposed.sql.or -import org.jetbrains.exposed.sql.selectAll +import org.jetbrains.exposed.v1.dao.java.UUIDEntity +import org.jetbrains.exposed.v1.dao.java.UUIDEntityClass +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.AndOp +import org.jetbrains.exposed.v1.core.Op +import org.jetbrains.exposed.v1.jdbc.SizedIterable +import org.jetbrains.exposed.v1.core.SortOrder +import org.jetbrains.exposed.v1.core.eq +import org.jetbrains.exposed.v1.core.greater +import org.jetbrains.exposed.v1.core.inList +import org.jetbrains.exposed.v1.core.less +import org.jetbrains.exposed.v1.core.like +import org.jetbrains.exposed.v1.core.neq +import org.jetbrains.exposed.v1.core.notInList +import org.jetbrains.exposed.v1.core.and +import org.jetbrains.exposed.v1.core.count +import org.jetbrains.exposed.v1.core.innerJoin +import org.jetbrains.exposed.v1.core.leftJoin +import org.jetbrains.exposed.v1.core.lowerCase +import org.jetbrains.exposed.v1.jdbc.mapLazy +import org.jetbrains.exposed.v1.core.or +import org.jetbrains.exposed.v1.jdbc.select +import org.jetbrains.exposed.v1.jdbc.selectAll import java.time.LocalDateTime import java.util.UUID diff --git a/newm-server/src/main/kotlin/io/newm/server/features/collaboration/database/CollaborationTable.kt b/newm-server/src/main/kotlin/io/newm/server/features/collaboration/database/CollaborationTable.kt index d6f790e6..120768df 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/collaboration/database/CollaborationTable.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/collaboration/database/CollaborationTable.kt @@ -4,12 +4,12 @@ import io.newm.server.features.collaboration.model.CollaborationStatus import io.newm.server.features.song.database.SongTable import io.newm.server.typealiases.SongId import io.newm.shared.exposed.textArray -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.dao.id.UUIDTable -import org.jetbrains.exposed.sql.Column -import org.jetbrains.exposed.sql.ReferenceOption -import org.jetbrains.exposed.sql.javatime.CurrentDateTime -import org.jetbrains.exposed.sql.javatime.datetime +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.dao.id.java.UUIDTable +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.ReferenceOption +import org.jetbrains.exposed.v1.javatime.CurrentDateTime +import org.jetbrains.exposed.v1.javatime.datetime import java.time.LocalDateTime object CollaborationTable : UUIDTable(name = "collaborations") { diff --git a/newm-server/src/main/kotlin/io/newm/server/features/collaboration/model/CollaborationFilters.kt b/newm-server/src/main/kotlin/io/newm/server/features/collaboration/model/CollaborationFilters.kt index f028f7f4..abf38c01 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/collaboration/model/CollaborationFilters.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/collaboration/model/CollaborationFilters.kt @@ -9,7 +9,7 @@ import io.newm.server.ktx.songIds import io.newm.server.ktx.sortOrder import io.newm.server.model.FilterCriteria import io.newm.server.model.toFilterCriteria -import org.jetbrains.exposed.sql.SortOrder +import org.jetbrains.exposed.v1.core.SortOrder import java.time.LocalDateTime import java.util.UUID diff --git a/newm-server/src/main/kotlin/io/newm/server/features/collaboration/model/CollaboratorFilters.kt b/newm-server/src/main/kotlin/io/newm/server/features/collaboration/model/CollaboratorFilters.kt index f5c091f9..972d6468 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/collaboration/model/CollaboratorFilters.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/collaboration/model/CollaboratorFilters.kt @@ -6,7 +6,7 @@ import io.newm.server.ktx.phrase import io.newm.server.ktx.songIds import io.newm.server.ktx.sortOrder import io.newm.server.model.FilterCriteria -import org.jetbrains.exposed.sql.SortOrder +import org.jetbrains.exposed.v1.core.SortOrder import java.util.UUID data class CollaboratorFilters( diff --git a/newm-server/src/main/kotlin/io/newm/server/features/collaboration/repo/CollaborationRepositoryImpl.kt b/newm-server/src/main/kotlin/io/newm/server/features/collaboration/repo/CollaborationRepositoryImpl.kt index 41770af5..cb536318 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/collaboration/repo/CollaborationRepositoryImpl.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/collaboration/repo/CollaborationRepositoryImpl.kt @@ -24,9 +24,9 @@ import io.newm.shared.exception.HttpForbiddenException import io.newm.shared.exception.HttpUnprocessableEntityException import io.newm.shared.ktx.getConfigString import io.newm.shared.ktx.millisToMinutesSecondsString -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.Transaction -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.Transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction import java.util.UUID internal class CollaborationRepositoryImpl( diff --git a/newm-server/src/main/kotlin/io/newm/server/features/earnings/daemon/MonitorClaimOrderJob.kt b/newm-server/src/main/kotlin/io/newm/server/features/earnings/daemon/MonitorClaimOrderJob.kt index 146aa72f..d74f292b 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/earnings/daemon/MonitorClaimOrderJob.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/earnings/daemon/MonitorClaimOrderJob.kt @@ -33,7 +33,7 @@ import java.time.ZoneOffset import kotlin.time.Duration.Companion.minutes import kotlinx.coroutines.delay import kotlinx.coroutines.runBlocking -import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction +import org.jetbrains.exposed.v1.jdbc.transactions.suspendTransaction import org.quartz.Job import org.quartz.JobExecutionContext import org.quartz.JobExecutionException @@ -211,7 +211,7 @@ class MonitorClaimOrderJob : Job { val submitTransactionResponse = cardanoRepository.submitTransaction(transactionBuilderResponse.transactionCbor) if (submitTransactionResponse.result == "MsgAcceptTx") { - newSuspendedTransaction { + suspendTransaction { earningsRepository.claimed( claimOrderId = claimOrder.id!!, earningsIds = claimOrder.earningsIds diff --git a/newm-server/src/main/kotlin/io/newm/server/features/earnings/database/ClaimOrderEntity.kt b/newm-server/src/main/kotlin/io/newm/server/features/earnings/database/ClaimOrderEntity.kt index 3c625f0c..3a9877b9 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/earnings/database/ClaimOrderEntity.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/earnings/database/ClaimOrderEntity.kt @@ -3,9 +3,9 @@ package io.newm.server.features.earnings.database import io.newm.server.features.earnings.model.ClaimOrder import io.newm.server.features.earnings.model.ClaimOrderStatus import java.util.UUID -import org.jetbrains.exposed.dao.UUIDEntity -import org.jetbrains.exposed.dao.UUIDEntityClass -import org.jetbrains.exposed.dao.id.EntityID +import org.jetbrains.exposed.v1.dao.java.UUIDEntity +import org.jetbrains.exposed.v1.dao.java.UUIDEntityClass +import org.jetbrains.exposed.v1.core.dao.id.EntityID class ClaimOrderEntity( id: EntityID diff --git a/newm-server/src/main/kotlin/io/newm/server/features/earnings/database/ClaimOrdersTable.kt b/newm-server/src/main/kotlin/io/newm/server/features/earnings/database/ClaimOrdersTable.kt index 660a9f93..516a937b 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/earnings/database/ClaimOrdersTable.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/earnings/database/ClaimOrdersTable.kt @@ -4,12 +4,12 @@ import io.newm.server.features.cardano.database.KeyTable import io.newm.shared.exposed.uuidArray import java.time.LocalDateTime import java.util.UUID -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.dao.id.UUIDTable -import org.jetbrains.exposed.sql.Column -import org.jetbrains.exposed.sql.ReferenceOption -import org.jetbrains.exposed.sql.javatime.CurrentDateTime -import org.jetbrains.exposed.sql.javatime.datetime +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.dao.id.java.UUIDTable +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.ReferenceOption +import org.jetbrains.exposed.v1.javatime.CurrentDateTime +import org.jetbrains.exposed.v1.javatime.datetime object ClaimOrdersTable : UUIDTable(name = "claim_orders") { // The user's stake address diff --git a/newm-server/src/main/kotlin/io/newm/server/features/earnings/database/EarningEntity.kt b/newm-server/src/main/kotlin/io/newm/server/features/earnings/database/EarningEntity.kt index 05aaf769..37ba79ed 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/earnings/database/EarningEntity.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/earnings/database/EarningEntity.kt @@ -3,9 +3,9 @@ package io.newm.server.features.earnings.database import io.newm.server.features.earnings.model.Earning import io.newm.server.features.song.database.SongEntity import io.newm.server.typealiases.SongId -import org.jetbrains.exposed.dao.UUIDEntity -import org.jetbrains.exposed.dao.UUIDEntityClass -import org.jetbrains.exposed.dao.id.EntityID +import org.jetbrains.exposed.v1.dao.java.UUIDEntity +import org.jetbrains.exposed.v1.dao.java.UUIDEntityClass +import org.jetbrains.exposed.v1.core.dao.id.EntityID import java.time.LocalDateTime import java.util.UUID diff --git a/newm-server/src/main/kotlin/io/newm/server/features/earnings/database/EarningsTable.kt b/newm-server/src/main/kotlin/io/newm/server/features/earnings/database/EarningsTable.kt index 6739eedc..e067050f 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/earnings/database/EarningsTable.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/earnings/database/EarningsTable.kt @@ -2,12 +2,12 @@ package io.newm.server.features.earnings.database import io.newm.server.features.song.database.SongTable import io.newm.server.typealiases.SongId -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.dao.id.UUIDTable -import org.jetbrains.exposed.sql.Column -import org.jetbrains.exposed.sql.ReferenceOption -import org.jetbrains.exposed.sql.javatime.CurrentDateTime -import org.jetbrains.exposed.sql.javatime.datetime +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.dao.id.java.UUIDTable +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.ReferenceOption +import org.jetbrains.exposed.v1.javatime.CurrentDateTime +import org.jetbrains.exposed.v1.javatime.datetime import java.time.LocalDateTime import java.util.UUID diff --git a/newm-server/src/main/kotlin/io/newm/server/features/earnings/repo/EarningsRepositoryImpl.kt b/newm-server/src/main/kotlin/io/newm/server/features/earnings/repo/EarningsRepositoryImpl.kt index a8221e04..aa54255b 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/earnings/repo/EarningsRepositoryImpl.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/earnings/repo/EarningsRepositoryImpl.kt @@ -25,14 +25,14 @@ import io.newm.shared.koin.inject import io.newm.shared.ktx.toDate import io.newm.shared.ktx.toHexString import org.apache.curator.framework.recipes.locks.InterProcessMutex -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.SortOrder -import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq -import org.jetbrains.exposed.sql.SqlExpressionBuilder.inList -import org.jetbrains.exposed.sql.and -import org.jetbrains.exposed.sql.batchInsert -import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.SortOrder +import org.jetbrains.exposed.v1.core.eq +import org.jetbrains.exposed.v1.core.inList +import org.jetbrains.exposed.v1.core.and +import org.jetbrains.exposed.v1.jdbc.batchInsert +import org.jetbrains.exposed.v1.jdbc.transactions.suspendTransaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction import org.koin.core.parameter.parametersOf import org.quartz.JobBuilder.newJob import org.quartz.JobKey @@ -226,7 +226,7 @@ class EarningsRepositoryImpl( private suspend fun createClaimOrderInternal(claimOrderRequest: ClaimOrderRequest): ClaimOrder? { val claimOrder = - newSuspendedTransaction { + suspendTransaction { val stakeAddress = claimOrderRequest.walletAddress.extractStakeAddress(cardanoRepository.isMainnet()) // check for existing open claim record first getActiveClaimOrderByStakeAddress(stakeAddress) ?: run { diff --git a/newm-server/src/main/kotlin/io/newm/server/features/ethereum/repo/EthereumRepositoryImpl.kt b/newm-server/src/main/kotlin/io/newm/server/features/ethereum/repo/EthereumRepositoryImpl.kt index 8e5216ae..a81dfdfb 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/ethereum/repo/EthereumRepositoryImpl.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/ethereum/repo/EthereumRepositoryImpl.kt @@ -17,7 +17,7 @@ import io.newm.server.ktx.checkedBody import io.newm.server.ktx.getSecureConfigString import io.newm.server.typealiases.UserId import io.newm.shared.ktx.getConfigString -import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction +import org.jetbrains.exposed.v1.jdbc.transactions.suspendTransaction internal class EthereumRepositoryImpl( private val client: HttpClient, @@ -28,7 +28,7 @@ internal class EthereumRepositoryImpl( override suspend fun getWalletNftSongs(userId: UserId): List { logger.debug { "getWalletNftSongs: userId = $userId" } - val connections = newSuspendedTransaction { + val connections = suspendTransaction { WalletConnectionEntity.getAllByUserIdAndWalletChain(userId, WalletChain.Ethereum).toList() } val apiUrl = environment.getConfigString("alchemy.apiUrl") diff --git a/newm-server/src/main/kotlin/io/newm/server/features/idenfy/repo/IdenfyRepositoryImpl.kt b/newm-server/src/main/kotlin/io/newm/server/features/idenfy/repo/IdenfyRepositoryImpl.kt index f98bd6ab..a567d35f 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/idenfy/repo/IdenfyRepositoryImpl.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/idenfy/repo/IdenfyRepositoryImpl.kt @@ -15,7 +15,7 @@ import io.newm.server.ktx.checkedBody import io.newm.server.ktx.getSecureString import io.newm.server.typealiases.UserId import io.newm.shared.ktx.* -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction import java.util.* class IdenfyRepositoryImpl( diff --git a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceArtistEntity.kt b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceArtistEntity.kt index bad33474..28460ed7 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceArtistEntity.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceArtistEntity.kt @@ -7,19 +7,21 @@ import io.newm.server.features.song.model.MintingStatus import io.newm.server.features.user.database.UserEntity import io.newm.server.features.user.database.UserTable import io.newm.server.typealiases.UserId -import org.jetbrains.exposed.dao.UUIDEntityClass -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.AndOp -import org.jetbrains.exposed.sql.Op -import org.jetbrains.exposed.sql.SizedIterable -import org.jetbrains.exposed.sql.SortOrder -import org.jetbrains.exposed.sql.SqlExpressionBuilder.greater -import org.jetbrains.exposed.sql.SqlExpressionBuilder.inList -import org.jetbrains.exposed.sql.SqlExpressionBuilder.less -import org.jetbrains.exposed.sql.SqlExpressionBuilder.notInList -import org.jetbrains.exposed.sql.and -import org.jetbrains.exposed.sql.innerJoin -import org.jetbrains.exposed.sql.mapLazy +import org.jetbrains.exposed.v1.dao.java.UUIDEntityClass +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.AndOp +import org.jetbrains.exposed.v1.core.Op +import org.jetbrains.exposed.v1.jdbc.SizedIterable +import org.jetbrains.exposed.v1.core.SortOrder +import org.jetbrains.exposed.v1.core.eq +import org.jetbrains.exposed.v1.core.greater +import org.jetbrains.exposed.v1.core.inList +import org.jetbrains.exposed.v1.core.less +import org.jetbrains.exposed.v1.core.notInList +import org.jetbrains.exposed.v1.core.and +import org.jetbrains.exposed.v1.core.innerJoin +import org.jetbrains.exposed.v1.jdbc.mapLazy +import org.jetbrains.exposed.v1.jdbc.select class MarketplaceArtistEntity( id: EntityID diff --git a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceBookmarkEntity.kt b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceBookmarkEntity.kt index 6a9656b3..b9bef5df 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceBookmarkEntity.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceBookmarkEntity.kt @@ -2,9 +2,9 @@ package io.newm.server.features.marketplace.database import io.newm.chain.grpc.MonitorAddressResponse import io.newm.server.typealiases.BookmarkId -import org.jetbrains.exposed.dao.Entity -import org.jetbrains.exposed.dao.EntityClass -import org.jetbrains.exposed.dao.id.EntityID +import org.jetbrains.exposed.v1.dao.Entity +import org.jetbrains.exposed.v1.dao.EntityClass +import org.jetbrains.exposed.v1.core.dao.id.EntityID class MarketplaceBookmarkEntity( id: EntityID diff --git a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceBookmarkTable.kt b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceBookmarkTable.kt index de0d686d..c04d12ab 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceBookmarkTable.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceBookmarkTable.kt @@ -1,9 +1,9 @@ package io.newm.server.features.marketplace.database import io.newm.server.typealiases.BookmarkId -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.dao.id.IdTable -import org.jetbrains.exposed.sql.Column +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.dao.id.IdTable +import org.jetbrains.exposed.v1.core.Column object MarketplaceBookmarkTable : IdTable(name = "marketplace_bookmarks") { override val id: Column> = text("id").entityId() diff --git a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplacePendingOrderEntity.kt b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplacePendingOrderEntity.kt index 6900b6ab..0225bd4e 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplacePendingOrderEntity.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplacePendingOrderEntity.kt @@ -2,11 +2,11 @@ package io.newm.server.features.marketplace.database import io.newm.server.typealiases.PendingOrderId import io.newm.server.typealiases.SaleId -import org.jetbrains.exposed.dao.UUIDEntity -import org.jetbrains.exposed.dao.UUIDEntityClass -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.SqlExpressionBuilder.lessEq -import org.jetbrains.exposed.sql.deleteWhere +import org.jetbrains.exposed.v1.dao.java.UUIDEntity +import org.jetbrains.exposed.v1.dao.java.UUIDEntityClass +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.lessEq +import org.jetbrains.exposed.v1.jdbc.deleteWhere import java.time.LocalDateTime class MarketplacePendingOrderEntity( diff --git a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplacePendingOrderTable.kt b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplacePendingOrderTable.kt index 9781bf68..82c39e30 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplacePendingOrderTable.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplacePendingOrderTable.kt @@ -1,12 +1,12 @@ package io.newm.server.features.marketplace.database import io.newm.server.typealiases.SaleId -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.dao.id.UUIDTable -import org.jetbrains.exposed.sql.Column -import org.jetbrains.exposed.sql.ReferenceOption -import org.jetbrains.exposed.sql.javatime.CurrentDateTime -import org.jetbrains.exposed.sql.javatime.datetime +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.dao.id.java.UUIDTable +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.ReferenceOption +import org.jetbrains.exposed.v1.javatime.CurrentDateTime +import org.jetbrains.exposed.v1.javatime.datetime import java.time.LocalDateTime object MarketplacePendingOrderTable : UUIDTable(name = "marketplace_pending_orders") { diff --git a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplacePendingSaleEntity.kt b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplacePendingSaleEntity.kt index 037ff602..83d30d5c 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplacePendingSaleEntity.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplacePendingSaleEntity.kt @@ -1,11 +1,11 @@ package io.newm.server.features.marketplace.database import io.newm.server.typealiases.PendingSaleId -import org.jetbrains.exposed.dao.UUIDEntity -import org.jetbrains.exposed.dao.UUIDEntityClass -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.SqlExpressionBuilder.lessEq -import org.jetbrains.exposed.sql.deleteWhere +import org.jetbrains.exposed.v1.dao.java.UUIDEntity +import org.jetbrains.exposed.v1.dao.java.UUIDEntityClass +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.lessEq +import org.jetbrains.exposed.v1.jdbc.deleteWhere import java.time.LocalDateTime class MarketplacePendingSaleEntity( diff --git a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplacePendingSaleTable.kt b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplacePendingSaleTable.kt index 1adf12fb..71e61768 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplacePendingSaleTable.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplacePendingSaleTable.kt @@ -1,9 +1,9 @@ package io.newm.server.features.marketplace.database -import org.jetbrains.exposed.dao.id.UUIDTable -import org.jetbrains.exposed.sql.Column -import org.jetbrains.exposed.sql.javatime.CurrentDateTime -import org.jetbrains.exposed.sql.javatime.datetime +import org.jetbrains.exposed.v1.core.dao.id.java.UUIDTable +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.javatime.CurrentDateTime +import org.jetbrains.exposed.v1.javatime.datetime import java.time.LocalDateTime object MarketplacePendingSaleTable : UUIDTable(name = "marketplace_pending_sales") { diff --git a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplacePurchaseEntity.kt b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplacePurchaseEntity.kt index 1f645700..6a1cc740 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplacePurchaseEntity.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplacePurchaseEntity.kt @@ -2,9 +2,9 @@ package io.newm.server.features.marketplace.database import io.newm.server.typealiases.PurchaseId import io.newm.server.typealiases.SaleId -import org.jetbrains.exposed.dao.UUIDEntity -import org.jetbrains.exposed.dao.UUIDEntityClass -import org.jetbrains.exposed.dao.id.EntityID +import org.jetbrains.exposed.v1.dao.java.UUIDEntity +import org.jetbrains.exposed.v1.dao.java.UUIDEntityClass +import org.jetbrains.exposed.v1.core.dao.id.EntityID import java.time.LocalDateTime class MarketplacePurchaseEntity( diff --git a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplacePurchaseTable.kt b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplacePurchaseTable.kt index c61c64e8..666f36be 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplacePurchaseTable.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplacePurchaseTable.kt @@ -1,11 +1,11 @@ package io.newm.server.features.marketplace.database import io.newm.server.typealiases.SaleId -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.dao.id.UUIDTable -import org.jetbrains.exposed.sql.Column -import org.jetbrains.exposed.sql.ReferenceOption -import org.jetbrains.exposed.sql.javatime.datetime +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.dao.id.java.UUIDTable +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.ReferenceOption +import org.jetbrains.exposed.v1.javatime.datetime import java.time.LocalDateTime object MarketplacePurchaseTable : UUIDTable(name = "marketplace_purchases") { diff --git a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceSaleEntity.kt b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceSaleEntity.kt index dabaa7ff..752a1f86 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceSaleEntity.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceSaleEntity.kt @@ -22,24 +22,25 @@ import io.newm.server.typealiases.SaleId import io.newm.shared.exposed.notOverlaps import io.newm.shared.exposed.overlaps import io.newm.shared.koin.inject -import org.jetbrains.exposed.dao.UUIDEntity -import org.jetbrains.exposed.dao.UUIDEntityClass -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.AndOp -import org.jetbrains.exposed.sql.Op -import org.jetbrains.exposed.sql.SizedIterable -import org.jetbrains.exposed.sql.SortOrder -import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq -import org.jetbrains.exposed.sql.SqlExpressionBuilder.greater -import org.jetbrains.exposed.sql.SqlExpressionBuilder.inList -import org.jetbrains.exposed.sql.SqlExpressionBuilder.less -import org.jetbrains.exposed.sql.SqlExpressionBuilder.like -import org.jetbrains.exposed.sql.SqlExpressionBuilder.notInList -import org.jetbrains.exposed.sql.and -import org.jetbrains.exposed.sql.innerJoin -import org.jetbrains.exposed.sql.lowerCase -import org.jetbrains.exposed.sql.mapLazy -import org.jetbrains.exposed.sql.or +import org.jetbrains.exposed.v1.dao.java.UUIDEntity +import org.jetbrains.exposed.v1.dao.java.UUIDEntityClass +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.AndOp +import org.jetbrains.exposed.v1.core.Op +import org.jetbrains.exposed.v1.jdbc.SizedIterable +import org.jetbrains.exposed.v1.core.SortOrder +import org.jetbrains.exposed.v1.core.eq +import org.jetbrains.exposed.v1.core.greater +import org.jetbrains.exposed.v1.core.inList +import org.jetbrains.exposed.v1.core.less +import org.jetbrains.exposed.v1.core.like +import org.jetbrains.exposed.v1.core.notInList +import org.jetbrains.exposed.v1.core.and +import org.jetbrains.exposed.v1.core.innerJoin +import org.jetbrains.exposed.v1.core.lowerCase +import org.jetbrains.exposed.v1.jdbc.mapLazy +import org.jetbrains.exposed.v1.core.or +import org.jetbrains.exposed.v1.jdbc.select import java.time.LocalDateTime import java.util.UUID diff --git a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceSaleOwnerEntity.kt b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceSaleOwnerEntity.kt index 89c7bab6..7d4d3504 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceSaleOwnerEntity.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceSaleOwnerEntity.kt @@ -1,9 +1,10 @@ package io.newm.server.features.marketplace.database -import org.jetbrains.exposed.dao.UUIDEntity -import org.jetbrains.exposed.dao.UUIDEntityClass -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.and +import org.jetbrains.exposed.v1.dao.java.UUIDEntity +import org.jetbrains.exposed.v1.dao.java.UUIDEntityClass +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.and +import org.jetbrains.exposed.v1.core.eq import java.time.LocalDateTime import java.util.UUID diff --git a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceSaleOwnerTable.kt b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceSaleOwnerTable.kt index 6124c7ad..55dd9f65 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceSaleOwnerTable.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceSaleOwnerTable.kt @@ -1,9 +1,9 @@ package io.newm.server.features.marketplace.database -import org.jetbrains.exposed.dao.id.UUIDTable -import org.jetbrains.exposed.sql.Column -import org.jetbrains.exposed.sql.javatime.CurrentDateTime -import org.jetbrains.exposed.sql.javatime.datetime +import org.jetbrains.exposed.v1.core.dao.id.java.UUIDTable +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.javatime.CurrentDateTime +import org.jetbrains.exposed.v1.javatime.datetime import java.time.LocalDateTime object MarketplaceSaleOwnerTable : UUIDTable(name = "marketplace_sale_owners") { diff --git a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceSaleTable.kt b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceSaleTable.kt index 8a932ab6..522de642 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceSaleTable.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/database/MarketplaceSaleTable.kt @@ -3,11 +3,11 @@ package io.newm.server.features.marketplace.database import io.newm.server.features.marketplace.model.SaleStatus import io.newm.server.features.song.database.SongTable import io.newm.server.typealiases.SongId -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.dao.id.UUIDTable -import org.jetbrains.exposed.sql.Column -import org.jetbrains.exposed.sql.ReferenceOption -import org.jetbrains.exposed.sql.javatime.datetime +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.dao.id.java.UUIDTable +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.ReferenceOption +import org.jetbrains.exposed.v1.javatime.datetime import java.time.LocalDateTime object MarketplaceSaleTable : UUIDTable(name = "marketplace_sales") { diff --git a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/model/ArtistFilters.kt b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/model/ArtistFilters.kt index 7a6d44a0..c06f799a 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/model/ArtistFilters.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/model/ArtistFilters.kt @@ -8,7 +8,7 @@ import io.newm.server.ktx.olderThan import io.newm.server.ktx.sortOrder import io.newm.server.model.FilterCriteria import io.newm.server.typealiases.UserId -import org.jetbrains.exposed.sql.SortOrder +import org.jetbrains.exposed.v1.core.SortOrder import java.time.LocalDateTime data class ArtistFilters( diff --git a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/model/SaleFilters.kt b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/model/SaleFilters.kt index a49ab8fb..7671b273 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/model/SaleFilters.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/model/SaleFilters.kt @@ -16,7 +16,7 @@ import io.newm.server.model.toFilterCriteria import io.newm.server.typealiases.SaleId import io.newm.server.typealiases.SongId import io.newm.server.typealiases.UserId -import org.jetbrains.exposed.sql.SortOrder +import org.jetbrains.exposed.v1.core.SortOrder import java.time.LocalDateTime data class SaleFilters( diff --git a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/repo/MarketplaceRepositoryImpl.kt b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/repo/MarketplaceRepositoryImpl.kt index 058bf6af..88b5dab7 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/marketplace/repo/MarketplaceRepositoryImpl.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/marketplace/repo/MarketplaceRepositoryImpl.kt @@ -92,9 +92,11 @@ import io.newm.txbuilder.ktx.sortByHashAndIx import io.newm.txbuilder.ktx.toNativeAssetCborMap import java.math.BigInteger import java.util.UUID -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.and -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.and +import org.jetbrains.exposed.v1.core.eq +import org.jetbrains.exposed.v1.jdbc.select +import org.jetbrains.exposed.v1.jdbc.transactions.transaction private const val SALE_TIP_KEY = "saleTip" private const val QUEUE_TIP_KEY = "queueTip" diff --git a/newm-server/src/main/kotlin/io/newm/server/features/minting/database/MintingStatusHistoryTable.kt b/newm-server/src/main/kotlin/io/newm/server/features/minting/database/MintingStatusHistoryTable.kt index 69c1cfad..7ff50cf7 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/minting/database/MintingStatusHistoryTable.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/minting/database/MintingStatusHistoryTable.kt @@ -3,12 +3,12 @@ package io.newm.server.features.minting.database import io.newm.server.features.song.database.SongTable import io.newm.server.features.walletconnection.database.WalletConnectionTable.nullable import io.newm.server.typealiases.SongId -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.dao.id.UUIDTable -import org.jetbrains.exposed.sql.Column -import org.jetbrains.exposed.sql.ReferenceOption -import org.jetbrains.exposed.sql.javatime.CurrentDateTime -import org.jetbrains.exposed.sql.javatime.datetime +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.dao.id.java.UUIDTable +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.ReferenceOption +import org.jetbrains.exposed.v1.javatime.CurrentDateTime +import org.jetbrains.exposed.v1.javatime.datetime import java.time.LocalDateTime object MintingStatusHistoryTable : UUIDTable(name = "minting_status_history") { diff --git a/newm-server/src/main/kotlin/io/newm/server/features/minting/database/MintingStatusTransactionEntity.kt b/newm-server/src/main/kotlin/io/newm/server/features/minting/database/MintingStatusTransactionEntity.kt index 310b5914..030c592a 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/minting/database/MintingStatusTransactionEntity.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/minting/database/MintingStatusTransactionEntity.kt @@ -2,9 +2,9 @@ package io.newm.server.features.minting.database import io.newm.server.features.minting.model.MintingStatusTransactionModel import io.newm.server.typealiases.SongId -import org.jetbrains.exposed.dao.UUIDEntity -import org.jetbrains.exposed.dao.UUIDEntityClass -import org.jetbrains.exposed.dao.id.EntityID +import org.jetbrains.exposed.v1.dao.java.UUIDEntity +import org.jetbrains.exposed.v1.dao.java.UUIDEntityClass +import org.jetbrains.exposed.v1.core.dao.id.EntityID import java.time.LocalDateTime import java.util.UUID diff --git a/newm-server/src/main/kotlin/io/newm/server/features/minting/repo/MintingRepositoryImpl.kt b/newm-server/src/main/kotlin/io/newm/server/features/minting/repo/MintingRepositoryImpl.kt index 083380e3..70b3a97c 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/minting/repo/MintingRepositoryImpl.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/minting/repo/MintingRepositoryImpl.kt @@ -61,8 +61,8 @@ import io.newm.txbuilder.ktx.toPlutusData import java.math.BigDecimal import kotlin.time.Duration.Companion.milliseconds import kotlin.time.Duration.Companion.seconds -import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.core.eq +import org.jetbrains.exposed.v1.jdbc.transactions.transaction import org.koin.core.parameter.parametersOf import org.slf4j.Logger diff --git a/newm-server/src/main/kotlin/io/newm/server/features/playlist/database/PlaylistEntity.kt b/newm-server/src/main/kotlin/io/newm/server/features/playlist/database/PlaylistEntity.kt index 9755defb..b92fed4c 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/playlist/database/PlaylistEntity.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/playlist/database/PlaylistEntity.kt @@ -5,21 +5,21 @@ import io.newm.server.features.playlist.model.PlaylistFilters import io.newm.server.features.song.database.SongEntity import io.newm.server.typealiases.SongId import io.newm.server.typealiases.UserId -import org.jetbrains.exposed.dao.UUIDEntity -import org.jetbrains.exposed.dao.UUIDEntityClass -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.AndOp -import org.jetbrains.exposed.sql.Op -import org.jetbrains.exposed.sql.SizedIterable -import org.jetbrains.exposed.sql.SortOrder -import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq -import org.jetbrains.exposed.sql.SqlExpressionBuilder.greater -import org.jetbrains.exposed.sql.SqlExpressionBuilder.inList -import org.jetbrains.exposed.sql.SqlExpressionBuilder.less -import org.jetbrains.exposed.sql.SqlExpressionBuilder.notInList -import org.jetbrains.exposed.sql.and -import org.jetbrains.exposed.sql.deleteWhere -import org.jetbrains.exposed.sql.insert +import org.jetbrains.exposed.v1.dao.java.UUIDEntity +import org.jetbrains.exposed.v1.dao.java.UUIDEntityClass +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.AndOp +import org.jetbrains.exposed.v1.core.Op +import org.jetbrains.exposed.v1.jdbc.SizedIterable +import org.jetbrains.exposed.v1.core.SortOrder +import org.jetbrains.exposed.v1.core.eq +import org.jetbrains.exposed.v1.core.greater +import org.jetbrains.exposed.v1.core.inList +import org.jetbrains.exposed.v1.core.less +import org.jetbrains.exposed.v1.core.notInList +import org.jetbrains.exposed.v1.core.and +import org.jetbrains.exposed.v1.jdbc.deleteWhere +import org.jetbrains.exposed.v1.jdbc.insert import java.time.LocalDateTime import java.util.UUID diff --git a/newm-server/src/main/kotlin/io/newm/server/features/playlist/database/PlaylistTable.kt b/newm-server/src/main/kotlin/io/newm/server/features/playlist/database/PlaylistTable.kt index 9172e8d9..1e9df779 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/playlist/database/PlaylistTable.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/playlist/database/PlaylistTable.kt @@ -2,12 +2,12 @@ package io.newm.server.features.playlist.database import io.newm.server.features.user.database.UserTable import io.newm.server.typealiases.UserId -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.dao.id.UUIDTable -import org.jetbrains.exposed.sql.Column -import org.jetbrains.exposed.sql.ReferenceOption -import org.jetbrains.exposed.sql.javatime.CurrentDateTime -import org.jetbrains.exposed.sql.javatime.datetime +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.dao.id.java.UUIDTable +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.ReferenceOption +import org.jetbrains.exposed.v1.javatime.CurrentDateTime +import org.jetbrains.exposed.v1.javatime.datetime import java.time.LocalDateTime object PlaylistTable : UUIDTable(name = "playlists") { diff --git a/newm-server/src/main/kotlin/io/newm/server/features/playlist/database/SongsInPlaylistsTable.kt b/newm-server/src/main/kotlin/io/newm/server/features/playlist/database/SongsInPlaylistsTable.kt index e82d3581..ab580891 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/playlist/database/SongsInPlaylistsTable.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/playlist/database/SongsInPlaylistsTable.kt @@ -1,10 +1,10 @@ package io.newm.server.features.playlist.database import io.newm.server.features.song.database.SongTable -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.Column -import org.jetbrains.exposed.sql.ReferenceOption -import org.jetbrains.exposed.sql.Table +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.ReferenceOption +import org.jetbrains.exposed.v1.core.Table import java.util.UUID object SongsInPlaylistsTable : Table(name = "songs_in_playlists") { diff --git a/newm-server/src/main/kotlin/io/newm/server/features/playlist/model/PlaylistFilters.kt b/newm-server/src/main/kotlin/io/newm/server/features/playlist/model/PlaylistFilters.kt index 579126fa..d278f5bb 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/playlist/model/PlaylistFilters.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/playlist/model/PlaylistFilters.kt @@ -7,7 +7,7 @@ import io.newm.server.ktx.olderThan import io.newm.server.ktx.ownerIds import io.newm.server.ktx.sortOrder import io.newm.server.model.FilterCriteria -import org.jetbrains.exposed.sql.SortOrder +import org.jetbrains.exposed.v1.core.SortOrder import java.time.LocalDateTime import java.util.UUID diff --git a/newm-server/src/main/kotlin/io/newm/server/features/playlist/repo/PlaylistRepositoryImpl.kt b/newm-server/src/main/kotlin/io/newm/server/features/playlist/repo/PlaylistRepositoryImpl.kt index 7e16dd0a..912fa924 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/playlist/repo/PlaylistRepositoryImpl.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/playlist/repo/PlaylistRepositoryImpl.kt @@ -13,8 +13,8 @@ import io.newm.server.typealiases.UserId import io.newm.shared.exception.HttpForbiddenException import io.newm.shared.exception.HttpUnprocessableEntityException import java.util.UUID -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.jdbc.transactions.transaction internal class PlaylistRepositoryImpl : PlaylistRepository { private val logger = KotlinLogging.logger {} diff --git a/newm-server/src/main/kotlin/io/newm/server/features/referralhero/repo/ReferralHeroRepositoryImpl.kt b/newm-server/src/main/kotlin/io/newm/server/features/referralhero/repo/ReferralHeroRepositoryImpl.kt index b4e11169..0d91237e 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/referralhero/repo/ReferralHeroRepositoryImpl.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/referralhero/repo/ReferralHeroRepositoryImpl.kt @@ -24,7 +24,7 @@ import io.newm.server.ktx.checkedBody import io.newm.server.ktx.getSecureConfigString import io.newm.shared.ktx.coLazy import io.newm.shared.ktx.getConfigString -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction import java.time.LocalDateTime class ReferralHeroRepositoryImpl( diff --git a/newm-server/src/main/kotlin/io/newm/server/features/release/repo/OutletReleaseRepositoryImpl.kt b/newm-server/src/main/kotlin/io/newm/server/features/release/repo/OutletReleaseRepositoryImpl.kt index 7c7035b0..d62482f7 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/release/repo/OutletReleaseRepositoryImpl.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/release/repo/OutletReleaseRepositoryImpl.kt @@ -20,7 +20,7 @@ import io.newm.server.features.release.model.SpotifySearchResponse import io.newm.server.features.song.database.SongEntity import io.newm.server.ktx.checkedBody import io.newm.server.typealiases.SongId -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction private const val SPOTIFY_SEARCH_API_URL = "https://api.spotify.com/v1/search" private const val SPOTIFY_PLAYLIST_API_URL = "https://api.spotify.com/v1/playlists/" diff --git a/newm-server/src/main/kotlin/io/newm/server/features/scheduler/ReferralHeroSyncJob.kt b/newm-server/src/main/kotlin/io/newm/server/features/scheduler/ReferralHeroSyncJob.kt index e96e0c4d..054b76c1 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/scheduler/ReferralHeroSyncJob.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/scheduler/ReferralHeroSyncJob.kt @@ -7,7 +7,7 @@ import io.newm.server.features.referralhero.repo.ReferralHeroRepository import io.newm.server.features.user.database.UserEntity import io.newm.shared.koin.inject import kotlinx.coroutines.runBlocking -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction import org.quartz.DisallowConcurrentExecution import org.quartz.Job import org.quartz.JobExecutionContext diff --git a/newm-server/src/main/kotlin/io/newm/server/features/song/SongRoutes.kt b/newm-server/src/main/kotlin/io/newm/server/features/song/SongRoutes.kt index c3778536..7437ca9c 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/song/SongRoutes.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/song/SongRoutes.kt @@ -34,7 +34,7 @@ import io.newm.shared.ktx.patch import io.newm.shared.ktx.post import io.newm.shared.ktx.put import io.newm.shared.ktx.toLocalDateTime -import org.jetbrains.exposed.sql.SortOrder +import org.jetbrains.exposed.v1.core.SortOrder private const val SONGS_PATH = "v1/songs" diff --git a/newm-server/src/main/kotlin/io/newm/server/features/song/database/ReleaseEntity.kt b/newm-server/src/main/kotlin/io/newm/server/features/song/database/ReleaseEntity.kt index 62ef5c55..b5781810 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/song/database/ReleaseEntity.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/song/database/ReleaseEntity.kt @@ -8,24 +8,24 @@ import io.newm.server.features.user.database.UserTable import io.newm.server.typealiases.ReleaseId import io.newm.server.typealiases.UserId import io.newm.shared.ktx.exists -import org.jetbrains.exposed.dao.UUIDEntity -import org.jetbrains.exposed.dao.UUIDEntityClass -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.AndOp -import org.jetbrains.exposed.sql.Op -import org.jetbrains.exposed.sql.SizedIterable -import org.jetbrains.exposed.sql.SortOrder -import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq -import org.jetbrains.exposed.sql.SqlExpressionBuilder.greater -import org.jetbrains.exposed.sql.SqlExpressionBuilder.inList -import org.jetbrains.exposed.sql.SqlExpressionBuilder.less -import org.jetbrains.exposed.sql.SqlExpressionBuilder.like -import org.jetbrains.exposed.sql.SqlExpressionBuilder.notInList -import org.jetbrains.exposed.sql.and -import org.jetbrains.exposed.sql.innerJoin -import org.jetbrains.exposed.sql.lowerCase -import org.jetbrains.exposed.sql.or -import org.jetbrains.exposed.sql.selectAll +import org.jetbrains.exposed.v1.dao.java.UUIDEntity +import org.jetbrains.exposed.v1.dao.java.UUIDEntityClass +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.AndOp +import org.jetbrains.exposed.v1.core.Op +import org.jetbrains.exposed.v1.jdbc.SizedIterable +import org.jetbrains.exposed.v1.core.SortOrder +import org.jetbrains.exposed.v1.core.eq +import org.jetbrains.exposed.v1.core.greater +import org.jetbrains.exposed.v1.core.inList +import org.jetbrains.exposed.v1.core.less +import org.jetbrains.exposed.v1.core.like +import org.jetbrains.exposed.v1.core.notInList +import org.jetbrains.exposed.v1.core.and +import org.jetbrains.exposed.v1.core.innerJoin +import org.jetbrains.exposed.v1.core.lowerCase +import org.jetbrains.exposed.v1.core.or +import org.jetbrains.exposed.v1.jdbc.selectAll import java.time.LocalDate import java.time.LocalDateTime diff --git a/newm-server/src/main/kotlin/io/newm/server/features/song/database/ReleaseTable.kt b/newm-server/src/main/kotlin/io/newm/server/features/song/database/ReleaseTable.kt index 1f31c084..a2b9c066 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/song/database/ReleaseTable.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/song/database/ReleaseTable.kt @@ -6,13 +6,13 @@ import io.newm.server.features.user.database.UserTable import io.newm.server.typealiases.UserId import java.time.LocalDate import java.time.LocalDateTime -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.dao.id.UUIDTable -import org.jetbrains.exposed.sql.Column -import org.jetbrains.exposed.sql.ReferenceOption -import org.jetbrains.exposed.sql.javatime.CurrentDateTime -import org.jetbrains.exposed.sql.javatime.date -import org.jetbrains.exposed.sql.javatime.datetime +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.dao.id.java.UUIDTable +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.ReferenceOption +import org.jetbrains.exposed.v1.javatime.CurrentDateTime +import org.jetbrains.exposed.v1.javatime.date +import org.jetbrains.exposed.v1.javatime.datetime object ReleaseTable : UUIDTable(name = "releases") { val archived: Column = bool("archived").default(false) diff --git a/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongEntity.kt b/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongEntity.kt index 97666064..2e06b96a 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongEntity.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongEntity.kt @@ -15,25 +15,26 @@ import io.newm.shared.exposed.overlaps import io.newm.shared.ktx.exists import java.time.LocalDateTime import java.util.UUID -import org.jetbrains.exposed.dao.UUIDEntity -import org.jetbrains.exposed.dao.UUIDEntityClass -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.AndOp -import org.jetbrains.exposed.sql.Op -import org.jetbrains.exposed.sql.SizedCollection -import org.jetbrains.exposed.sql.SizedIterable -import org.jetbrains.exposed.sql.SortOrder -import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq -import org.jetbrains.exposed.sql.SqlExpressionBuilder.greater -import org.jetbrains.exposed.sql.SqlExpressionBuilder.inList -import org.jetbrains.exposed.sql.SqlExpressionBuilder.less -import org.jetbrains.exposed.sql.SqlExpressionBuilder.like -import org.jetbrains.exposed.sql.SqlExpressionBuilder.notInList -import org.jetbrains.exposed.sql.and -import org.jetbrains.exposed.sql.innerJoin -import org.jetbrains.exposed.sql.lowerCase -import org.jetbrains.exposed.sql.or -import org.jetbrains.exposed.sql.selectAll +import org.jetbrains.exposed.v1.dao.java.UUIDEntity +import org.jetbrains.exposed.v1.dao.java.UUIDEntityClass +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.AndOp +import org.jetbrains.exposed.v1.core.Op +import org.jetbrains.exposed.v1.jdbc.SizedCollection +import org.jetbrains.exposed.v1.jdbc.SizedIterable +import org.jetbrains.exposed.v1.core.SortOrder +import org.jetbrains.exposed.v1.core.eq +import org.jetbrains.exposed.v1.core.greater +import org.jetbrains.exposed.v1.core.inList +import org.jetbrains.exposed.v1.core.less +import org.jetbrains.exposed.v1.core.like +import org.jetbrains.exposed.v1.core.notInList +import org.jetbrains.exposed.v1.core.and +import org.jetbrains.exposed.v1.core.innerJoin +import org.jetbrains.exposed.v1.core.lowerCase +import org.jetbrains.exposed.v1.core.or +import org.jetbrains.exposed.v1.jdbc.select +import org.jetbrains.exposed.v1.jdbc.selectAll class SongEntity( id: EntityID diff --git a/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongErrorHistoryTable.kt b/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongErrorHistoryTable.kt index e3dcc626..bd9a4676 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongErrorHistoryTable.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongErrorHistoryTable.kt @@ -1,11 +1,11 @@ package io.newm.server.features.song.database -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.dao.id.UUIDTable -import org.jetbrains.exposed.sql.Column -import org.jetbrains.exposed.sql.ReferenceOption -import org.jetbrains.exposed.sql.javatime.CurrentDateTime -import org.jetbrains.exposed.sql.javatime.datetime +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.dao.id.java.UUIDTable +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.ReferenceOption +import org.jetbrains.exposed.v1.javatime.CurrentDateTime +import org.jetbrains.exposed.v1.javatime.datetime import java.time.LocalDateTime import java.util.UUID diff --git a/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongReceiptEntity.kt b/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongReceiptEntity.kt index 8c0c81cb..2420c555 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongReceiptEntity.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongReceiptEntity.kt @@ -3,9 +3,9 @@ package io.newm.server.features.song.database import io.newm.server.features.song.model.SongReceipt import java.time.LocalDateTime import java.util.UUID -import org.jetbrains.exposed.dao.UUIDEntity -import org.jetbrains.exposed.dao.UUIDEntityClass -import org.jetbrains.exposed.dao.id.EntityID +import org.jetbrains.exposed.v1.dao.java.UUIDEntity +import org.jetbrains.exposed.v1.dao.java.UUIDEntityClass +import org.jetbrains.exposed.v1.core.dao.id.EntityID class SongReceiptEntity( id: EntityID diff --git a/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongReceiptTable.kt b/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongReceiptTable.kt index e6ba21f4..a5308ca9 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongReceiptTable.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongReceiptTable.kt @@ -1,12 +1,12 @@ package io.newm.server.features.song.database import io.newm.server.typealiases.SongId -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.dao.id.UUIDTable -import org.jetbrains.exposed.sql.Column -import org.jetbrains.exposed.sql.ReferenceOption -import org.jetbrains.exposed.sql.javatime.CurrentDateTime -import org.jetbrains.exposed.sql.javatime.datetime +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.dao.id.java.UUIDTable +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.ReferenceOption +import org.jetbrains.exposed.v1.javatime.CurrentDateTime +import org.jetbrains.exposed.v1.javatime.datetime import java.time.LocalDateTime object SongReceiptTable : UUIDTable(name = "song_receipts") { diff --git a/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongSmartLinkEntity.kt b/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongSmartLinkEntity.kt index 65f940a7..ae750592 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongSmartLinkEntity.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongSmartLinkEntity.kt @@ -2,9 +2,10 @@ package io.newm.server.features.song.database import io.newm.server.features.song.model.SongSmartLink import io.newm.server.typealiases.SongId -import org.jetbrains.exposed.dao.UUIDEntity -import org.jetbrains.exposed.dao.UUIDEntityClass -import org.jetbrains.exposed.dao.id.EntityID +import org.jetbrains.exposed.v1.dao.java.UUIDEntity +import org.jetbrains.exposed.v1.dao.java.UUIDEntityClass +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.eq import java.time.LocalDateTime import java.util.UUID diff --git a/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongSmartLinkTable.kt b/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongSmartLinkTable.kt index ac63067f..7120eda5 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongSmartLinkTable.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongSmartLinkTable.kt @@ -1,12 +1,12 @@ package io.newm.server.features.song.database import io.newm.server.typealiases.SongId -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.dao.id.UUIDTable -import org.jetbrains.exposed.sql.Column -import org.jetbrains.exposed.sql.ReferenceOption -import org.jetbrains.exposed.sql.javatime.CurrentDateTime -import org.jetbrains.exposed.sql.javatime.datetime +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.dao.id.java.UUIDTable +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.ReferenceOption +import org.jetbrains.exposed.v1.javatime.CurrentDateTime +import org.jetbrains.exposed.v1.javatime.datetime import java.time.LocalDateTime object SongSmartLinkTable : UUIDTable(name = "song_smart_links") { diff --git a/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongTable.kt b/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongTable.kt index d6aa5580..e23ffa5b 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongTable.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/song/database/SongTable.kt @@ -7,12 +7,12 @@ import io.newm.server.features.song.model.MintingStatus import io.newm.server.features.user.database.UserTable import io.newm.server.typealiases.UserId import io.newm.shared.exposed.textArray -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.dao.id.UUIDTable -import org.jetbrains.exposed.sql.Column -import org.jetbrains.exposed.sql.ReferenceOption -import org.jetbrains.exposed.sql.javatime.CurrentDateTime -import org.jetbrains.exposed.sql.javatime.datetime +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.dao.id.java.UUIDTable +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.ReferenceOption +import org.jetbrains.exposed.v1.javatime.CurrentDateTime +import org.jetbrains.exposed.v1.javatime.datetime import java.time.LocalDateTime import java.util.UUID diff --git a/newm-server/src/main/kotlin/io/newm/server/features/song/model/SongFilters.kt b/newm-server/src/main/kotlin/io/newm/server/features/song/model/SongFilters.kt index 2be53c4f..5acd949c 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/song/model/SongFilters.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/song/model/SongFilters.kt @@ -14,7 +14,7 @@ import io.newm.server.ktx.sortedBy import io.newm.server.model.FilterCriteria import io.newm.server.model.toFilterCriteria import io.newm.server.model.toStringFilterCriteria -import org.jetbrains.exposed.sql.SortOrder +import org.jetbrains.exposed.v1.core.SortOrder import java.time.LocalDateTime import java.util.UUID diff --git a/newm-server/src/main/kotlin/io/newm/server/features/song/repo/SongRepositoryImpl.kt b/newm-server/src/main/kotlin/io/newm/server/features/song/repo/SongRepositoryImpl.kt index ef7f9354..03781842 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/song/repo/SongRepositoryImpl.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/song/repo/SongRepositoryImpl.kt @@ -103,15 +103,17 @@ import kotlinx.serialization.json.Json import org.apache.tika.Tika import org.jaudiotagger.audio.AudioFileIO import org.jetbrains.annotations.VisibleForTesting -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.CustomFunction -import org.jetbrains.exposed.sql.Expression -import org.jetbrains.exposed.sql.and -import org.jetbrains.exposed.sql.insert -import org.jetbrains.exposed.sql.selectAll -import org.jetbrains.exposed.sql.stringLiteral -import org.jetbrains.exposed.sql.TextColumnType -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.CustomFunction +import org.jetbrains.exposed.v1.core.Expression +import org.jetbrains.exposed.v1.core.and +import org.jetbrains.exposed.v1.core.eq +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.core.stringLiteral +import org.jetbrains.exposed.v1.core.TextColumnType +import org.jetbrains.exposed.v1.jdbc.transactions.transaction import software.amazon.awssdk.services.s3.S3Client import software.amazon.awssdk.services.s3.model.DeleteObjectRequest import software.amazon.awssdk.services.s3.model.PutObjectRequest @@ -1272,9 +1274,7 @@ internal class SongRepositoryImpl( sendMintingNotification("released", songId) } - else -> { - Unit - } + else -> {} } } diff --git a/newm-server/src/main/kotlin/io/newm/server/features/user/database/UserEntity.kt b/newm-server/src/main/kotlin/io/newm/server/features/user/database/UserEntity.kt index 9dc6f195..5ed73c9a 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/user/database/UserEntity.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/user/database/UserEntity.kt @@ -8,18 +8,20 @@ import io.newm.server.features.user.model.UserVerificationStatus import io.newm.server.model.ClientPlatform import io.newm.server.typealiases.UserId import io.newm.shared.ktx.exists -import org.jetbrains.exposed.dao.UUIDEntity -import org.jetbrains.exposed.dao.UUIDEntityClass -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.AndOp -import org.jetbrains.exposed.sql.Op -import org.jetbrains.exposed.sql.SizedIterable -import org.jetbrains.exposed.sql.SortOrder -import org.jetbrains.exposed.sql.SqlExpressionBuilder.greater -import org.jetbrains.exposed.sql.SqlExpressionBuilder.inList -import org.jetbrains.exposed.sql.SqlExpressionBuilder.less -import org.jetbrains.exposed.sql.SqlExpressionBuilder.notInList -import org.jetbrains.exposed.sql.lowerCase +import org.jetbrains.exposed.v1.dao.java.UUIDEntity +import org.jetbrains.exposed.v1.dao.java.UUIDEntityClass +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.AndOp +import org.jetbrains.exposed.v1.core.Op +import org.jetbrains.exposed.v1.jdbc.SizedIterable +import org.jetbrains.exposed.v1.core.SortOrder +import org.jetbrains.exposed.v1.core.eq +import org.jetbrains.exposed.v1.core.greater +import org.jetbrains.exposed.v1.core.inList +import org.jetbrains.exposed.v1.core.isNullOrEmpty +import org.jetbrains.exposed.v1.core.less +import org.jetbrains.exposed.v1.core.notInList +import org.jetbrains.exposed.v1.core.lowerCase import java.time.LocalDateTime open class UserEntity( diff --git a/newm-server/src/main/kotlin/io/newm/server/features/user/database/UserTable.kt b/newm-server/src/main/kotlin/io/newm/server/features/user/database/UserTable.kt index 7b0a63a9..46d73779 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/user/database/UserTable.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/user/database/UserTable.kt @@ -4,10 +4,10 @@ import io.newm.server.auth.oauth.model.OAuthType import io.newm.server.features.referralhero.model.ReferralStatus import io.newm.server.features.user.model.UserVerificationStatus import io.newm.server.model.ClientPlatform -import org.jetbrains.exposed.dao.id.UUIDTable -import org.jetbrains.exposed.sql.Column -import org.jetbrains.exposed.sql.javatime.CurrentDateTime -import org.jetbrains.exposed.sql.javatime.datetime +import org.jetbrains.exposed.v1.core.dao.id.java.UUIDTable +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.javatime.CurrentDateTime +import org.jetbrains.exposed.v1.javatime.datetime import java.time.LocalDateTime object UserTable : UUIDTable(name = "users") { diff --git a/newm-server/src/main/kotlin/io/newm/server/features/user/model/UserFilters.kt b/newm-server/src/main/kotlin/io/newm/server/features/user/model/UserFilters.kt index d5221021..9bbc5ee5 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/user/model/UserFilters.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/user/model/UserFilters.kt @@ -8,7 +8,7 @@ import io.newm.server.ktx.olderThan import io.newm.server.ktx.roles import io.newm.server.ktx.sortOrder import io.newm.server.model.FilterCriteria -import org.jetbrains.exposed.sql.SortOrder +import org.jetbrains.exposed.v1.core.SortOrder import java.time.LocalDateTime import java.util.UUID diff --git a/newm-server/src/main/kotlin/io/newm/server/features/user/repo/UserRepositoryImpl.kt b/newm-server/src/main/kotlin/io/newm/server/features/user/repo/UserRepositoryImpl.kt index 3deee8bb..cac8af03 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/user/repo/UserRepositoryImpl.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/user/repo/UserRepositoryImpl.kt @@ -43,8 +43,8 @@ import io.newm.shared.ktx.isValidPassword import io.newm.shared.ktx.orNull import kotlinx.coroutines.coroutineScope import kotlinx.coroutines.launch -import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.suspendTransaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction import java.time.LocalDateTime internal class UserRepositoryImpl( @@ -170,7 +170,7 @@ internal class UserRepositoryImpl( if (user.isEmailVerified != true) { throw HttpUnauthorizedException("Unverified email: $email") } - return newSuspendedTransaction { + return suspendTransaction { val entity = UserEntity.getByEmail(email) ?: let { val referralHeroSubscriber = getOrCreateReferralHeroSubscriber(email, referrer) UserEntity.new { @@ -245,7 +245,7 @@ internal class UserRepositoryImpl( val email = user.email?.asValidEmail()?.asVerifiedEmail(user.authCode) val passwordHash = user.newPassword?.asValidPassword(user.confirmPassword)?.toHash() - val userEntity = newSuspendedTransaction { + val userEntity = suspendTransaction { val entity = UserEntity[userId] user.firstName?.let { entity.checkNameModifiable(it, entity.firstName) diff --git a/newm-server/src/main/kotlin/io/newm/server/features/walletconnection/database/WalletConnectionChallengeEntity.kt b/newm-server/src/main/kotlin/io/newm/server/features/walletconnection/database/WalletConnectionChallengeEntity.kt index 185be25d..18fee8d9 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/walletconnection/database/WalletConnectionChallengeEntity.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/walletconnection/database/WalletConnectionChallengeEntity.kt @@ -1,11 +1,11 @@ package io.newm.server.features.walletconnection.database import io.newm.server.features.walletconnection.model.ChallengeMethod -import org.jetbrains.exposed.dao.UUIDEntity -import org.jetbrains.exposed.dao.UUIDEntityClass -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.SqlExpressionBuilder.lessEq -import org.jetbrains.exposed.sql.deleteWhere +import org.jetbrains.exposed.v1.dao.java.UUIDEntity +import org.jetbrains.exposed.v1.dao.java.UUIDEntityClass +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.lessEq +import org.jetbrains.exposed.v1.jdbc.deleteWhere import java.time.LocalDateTime import java.util.UUID diff --git a/newm-server/src/main/kotlin/io/newm/server/features/walletconnection/database/WalletConnectionChallengeTable.kt b/newm-server/src/main/kotlin/io/newm/server/features/walletconnection/database/WalletConnectionChallengeTable.kt index 410ae7e9..d01ce41b 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/walletconnection/database/WalletConnectionChallengeTable.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/walletconnection/database/WalletConnectionChallengeTable.kt @@ -1,10 +1,10 @@ package io.newm.server.features.walletconnection.database import io.newm.server.features.walletconnection.model.ChallengeMethod -import org.jetbrains.exposed.dao.id.UUIDTable -import org.jetbrains.exposed.sql.Column -import org.jetbrains.exposed.sql.javatime.CurrentDateTime -import org.jetbrains.exposed.sql.javatime.datetime +import org.jetbrains.exposed.v1.core.dao.id.java.UUIDTable +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.javatime.CurrentDateTime +import org.jetbrains.exposed.v1.javatime.datetime import java.time.LocalDateTime object WalletConnectionChallengeTable : UUIDTable(name = "wallet_connection_challenges") { diff --git a/newm-server/src/main/kotlin/io/newm/server/features/walletconnection/database/WalletConnectionEntity.kt b/newm-server/src/main/kotlin/io/newm/server/features/walletconnection/database/WalletConnectionEntity.kt index aff13769..60bb0c1f 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/walletconnection/database/WalletConnectionEntity.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/walletconnection/database/WalletConnectionEntity.kt @@ -3,15 +3,15 @@ package io.newm.server.features.walletconnection.database import io.newm.server.features.walletconnection.model.WalletChain import io.newm.server.features.walletconnection.model.WalletConnection import io.newm.server.typealiases.UserId -import org.jetbrains.exposed.dao.UUIDEntity -import org.jetbrains.exposed.dao.UUIDEntityClass -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.SizedIterable -import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq -import org.jetbrains.exposed.sql.SqlExpressionBuilder.lessEq -import org.jetbrains.exposed.sql.SqlExpressionBuilder.neq -import org.jetbrains.exposed.sql.and -import org.jetbrains.exposed.sql.deleteWhere +import org.jetbrains.exposed.v1.dao.java.UUIDEntity +import org.jetbrains.exposed.v1.dao.java.UUIDEntityClass +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.jdbc.SizedIterable +import org.jetbrains.exposed.v1.core.eq +import org.jetbrains.exposed.v1.core.lessEq +import org.jetbrains.exposed.v1.core.neq +import org.jetbrains.exposed.v1.core.and +import org.jetbrains.exposed.v1.jdbc.deleteWhere import java.time.LocalDateTime import java.util.UUID diff --git a/newm-server/src/main/kotlin/io/newm/server/features/walletconnection/database/WalletConnectionTable.kt b/newm-server/src/main/kotlin/io/newm/server/features/walletconnection/database/WalletConnectionTable.kt index 6724bef9..f0735250 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/walletconnection/database/WalletConnectionTable.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/walletconnection/database/WalletConnectionTable.kt @@ -3,12 +3,12 @@ package io.newm.server.features.walletconnection.database import io.newm.server.features.user.database.UserTable import io.newm.server.features.walletconnection.model.WalletChain import io.newm.server.typealiases.UserId -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.dao.id.UUIDTable -import org.jetbrains.exposed.sql.Column -import org.jetbrains.exposed.sql.ReferenceOption -import org.jetbrains.exposed.sql.javatime.CurrentDateTime -import org.jetbrains.exposed.sql.javatime.datetime +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.dao.id.java.UUIDTable +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.ReferenceOption +import org.jetbrains.exposed.v1.javatime.CurrentDateTime +import org.jetbrains.exposed.v1.javatime.datetime import java.time.LocalDateTime object WalletConnectionTable : UUIDTable(name = "wallet_connections") { diff --git a/newm-server/src/main/kotlin/io/newm/server/features/walletconnection/repo/WalletConnectionRepositoryImpl.kt b/newm-server/src/main/kotlin/io/newm/server/features/walletconnection/repo/WalletConnectionRepositoryImpl.kt index 08e27233..fe5eeb92 100644 --- a/newm-server/src/main/kotlin/io/newm/server/features/walletconnection/repo/WalletConnectionRepositoryImpl.kt +++ b/newm-server/src/main/kotlin/io/newm/server/features/walletconnection/repo/WalletConnectionRepositoryImpl.kt @@ -28,9 +28,9 @@ import io.newm.shared.exception.HttpForbiddenException import io.newm.shared.exception.HttpNotFoundException import io.newm.shared.ktx.existsHavingId import io.newm.shared.ktx.getConfigLong -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.jdbc.transactions.suspendTransaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction import qrcode.QRCode import qrcode.color.Colors import java.util.UUID @@ -234,7 +234,7 @@ internal class WalletConnectionRepositoryImpl( ) { logger.debug { "updateUserConnection: connectionId = $connectionId, userId = $userId, request = $request" } - newSuspendedTransaction { + suspendTransaction { with(WalletConnectionEntity[connectionId]) { if (this.userId?.value != userId) throw HttpForbiddenException("User doesn't own connection") this.name = request.name diff --git a/newm-server/src/main/kotlin/io/newm/server/ktx/ApplicationCallExt.kt b/newm-server/src/main/kotlin/io/newm/server/ktx/ApplicationCallExt.kt index 335a9416..4ac4131f 100644 --- a/newm-server/src/main/kotlin/io/newm/server/ktx/ApplicationCallExt.kt +++ b/newm-server/src/main/kotlin/io/newm/server/ktx/ApplicationCallExt.kt @@ -27,7 +27,7 @@ import io.newm.shared.ktx.orZero import io.newm.shared.ktx.toHexString import io.newm.shared.ktx.toLocalDateTime import io.newm.shared.ktx.toUUID -import org.jetbrains.exposed.sql.SortOrder +import org.jetbrains.exposed.v1.core.SortOrder import java.nio.ByteBuffer import java.security.Key import java.time.LocalDateTime diff --git a/newm-server/src/main/kotlin/io/newm/server/security/KeyParser.kt b/newm-server/src/main/kotlin/io/newm/server/security/KeyParser.kt index 71e12c39..3f9e0803 100644 --- a/newm-server/src/main/kotlin/io/newm/server/security/KeyParser.kt +++ b/newm-server/src/main/kotlin/io/newm/server/security/KeyParser.kt @@ -1,6 +1,6 @@ package io.newm.server.security -import io.ktor.util.decodeBase64Bytes +import java.util.Base64 object KeyParser { fun parse(key: String): ByteArray { @@ -10,7 +10,7 @@ object KeyParser { .replace(headerFooterRegexPattern, "") .replace(whitespaceRegexPattern, "") - return base64Key.decodeBase64Bytes() + return Base64.getDecoder().decode(base64Key) } private val headerFooterRegexPattern = Regex("-----.*?-----") diff --git a/newm-server/src/main/kotlin/io/newm/server/statuspages/StatusPagesInstall.kt b/newm-server/src/main/kotlin/io/newm/server/statuspages/StatusPagesInstall.kt index 32037e90..bbbe0092 100644 --- a/newm-server/src/main/kotlin/io/newm/server/statuspages/StatusPagesInstall.kt +++ b/newm-server/src/main/kotlin/io/newm/server/statuspages/StatusPagesInstall.kt @@ -10,8 +10,8 @@ import io.ktor.server.plugins.statuspages.StatusPages import io.ktor.server.response.respond import io.newm.server.logging.captureToSentry import io.newm.shared.exception.HttpStatusException -import org.jetbrains.exposed.dao.exceptions.EntityNotFoundException -import org.jetbrains.exposed.exceptions.ExposedSQLException +import org.jetbrains.exposed.v1.dao.exceptions.EntityNotFoundException +import org.jetbrains.exposed.v1.exceptions.ExposedSQLException fun Application.installStatusPages() { install(StatusPages) { diff --git a/newm-server/src/test/kotlin/io/newm/server/BaseApplicationTests.kt b/newm-server/src/test/kotlin/io/newm/server/BaseApplicationTests.kt index 4ac12c6f..86ba9131 100644 --- a/newm-server/src/test/kotlin/io/newm/server/BaseApplicationTests.kt +++ b/newm-server/src/test/kotlin/io/newm/server/BaseApplicationTests.kt @@ -59,10 +59,10 @@ import io.newm.shared.serialization.UUIDSerializer import kotlinx.coroutines.runBlocking import kotlinx.serialization.json.Json import kotlinx.serialization.modules.SerializersModule -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.Database -import org.jetbrains.exposed.sql.SchemaUtils -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.jdbc.Database +import org.jetbrains.exposed.v1.jdbc.SchemaUtils +import org.jetbrains.exposed.v1.jdbc.transactions.transaction import org.junit.jupiter.api.AfterAll import org.junit.jupiter.api.BeforeAll import org.junit.jupiter.api.TestInstance diff --git a/newm-server/src/test/kotlin/io/newm/server/TestContext.kt b/newm-server/src/test/kotlin/io/newm/server/TestContext.kt index b45e93a5..0ebb11cf 100644 --- a/newm-server/src/test/kotlin/io/newm/server/TestContext.kt +++ b/newm-server/src/test/kotlin/io/newm/server/TestContext.kt @@ -1,9 +1,9 @@ package io.newm.server -import org.testcontainers.containers.PostgreSQLContainer +import org.testcontainers.postgresql.PostgreSQLContainer object TestContext { - val container = PostgreSQLContainer("postgres:12").apply { + val container = PostgreSQLContainer("postgres:12").apply { withDatabaseName("newm-db") withUsername("tester") withPassword("newm1234") diff --git a/newm-server/src/test/kotlin/io/newm/server/features/cardano/CardanoRoutesTests.kt b/newm-server/src/test/kotlin/io/newm/server/features/cardano/CardanoRoutesTests.kt index 1ee9f963..eb7e745c 100644 --- a/newm-server/src/test/kotlin/io/newm/server/features/cardano/CardanoRoutesTests.kt +++ b/newm-server/src/test/kotlin/io/newm/server/features/cardano/CardanoRoutesTests.kt @@ -17,11 +17,11 @@ import io.newm.server.features.user.database.UserEntity import io.newm.server.features.user.database.UserTable import io.newm.server.typealiases.UserId import kotlinx.coroutines.runBlocking -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.SqlExpressionBuilder.neq -import org.jetbrains.exposed.sql.deleteAll -import org.jetbrains.exposed.sql.deleteWhere -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.neq +import org.jetbrains.exposed.v1.jdbc.deleteAll +import org.jetbrains.exposed.v1.jdbc.deleteWhere +import org.jetbrains.exposed.v1.jdbc.transactions.transaction import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import java.time.LocalDate diff --git a/newm-server/src/test/kotlin/io/newm/server/features/collaborations/CollaborationRoutesTests.kt b/newm-server/src/test/kotlin/io/newm/server/features/collaborations/CollaborationRoutesTests.kt index 67637ead..9b960315 100644 --- a/newm-server/src/test/kotlin/io/newm/server/features/collaborations/CollaborationRoutesTests.kt +++ b/newm-server/src/test/kotlin/io/newm/server/features/collaborations/CollaborationRoutesTests.kt @@ -30,11 +30,11 @@ import io.newm.server.features.user.database.UserTable import io.newm.server.typealiases.UserId import io.newm.shared.ktx.existsHavingId import kotlinx.coroutines.runBlocking -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.SqlExpressionBuilder.neq -import org.jetbrains.exposed.sql.deleteAll -import org.jetbrains.exposed.sql.deleteWhere -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.neq +import org.jetbrains.exposed.v1.jdbc.deleteAll +import org.jetbrains.exposed.v1.jdbc.deleteWhere +import org.jetbrains.exposed.v1.jdbc.transactions.transaction import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import java.time.LocalDateTime diff --git a/newm-server/src/test/kotlin/io/newm/server/features/distribution/eveara/EvearaDistributionRepositoryTest.kt b/newm-server/src/test/kotlin/io/newm/server/features/distribution/eveara/EvearaDistributionRepositoryTest.kt index 9a8d249a..19f439f0 100644 --- a/newm-server/src/test/kotlin/io/newm/server/features/distribution/eveara/EvearaDistributionRepositoryTest.kt +++ b/newm-server/src/test/kotlin/io/newm/server/features/distribution/eveara/EvearaDistributionRepositoryTest.kt @@ -33,8 +33,8 @@ import io.newm.server.typealiases.SongId import io.newm.shared.koin.inject import io.newm.shared.ktx.info import kotlinx.coroutines.runBlocking -import org.jetbrains.exposed.sql.deleteAll -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.deleteAll +import org.jetbrains.exposed.v1.jdbc.transactions.transaction import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.Test diff --git a/newm-server/src/test/kotlin/io/newm/server/features/earnings/EarningsRoutesTests.kt b/newm-server/src/test/kotlin/io/newm/server/features/earnings/EarningsRoutesTests.kt index e7e7e9ab..c1f6c5ec 100644 --- a/newm-server/src/test/kotlin/io/newm/server/features/earnings/EarningsRoutesTests.kt +++ b/newm-server/src/test/kotlin/io/newm/server/features/earnings/EarningsRoutesTests.kt @@ -16,8 +16,8 @@ import io.newm.server.features.song.model.Song import io.newm.server.features.user.database.UserTable import io.newm.server.features.user.model.User import kotlinx.coroutines.runBlocking -import org.jetbrains.exposed.sql.deleteAll -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.deleteAll +import org.jetbrains.exposed.v1.jdbc.transactions.transaction import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.Test diff --git a/newm-server/src/test/kotlin/io/newm/server/features/idenfy/IdenfyRoutesTests.kt b/newm-server/src/test/kotlin/io/newm/server/features/idenfy/IdenfyRoutesTests.kt index 06e41c42..78a75db1 100644 --- a/newm-server/src/test/kotlin/io/newm/server/features/idenfy/IdenfyRoutesTests.kt +++ b/newm-server/src/test/kotlin/io/newm/server/features/idenfy/IdenfyRoutesTests.kt @@ -22,7 +22,7 @@ import java.security.Key import javax.crypto.Mac import kotlinx.coroutines.runBlocking import kotlinx.serialization.json.Json -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.transactions.transaction import org.junit.jupiter.api.Test class IdenfyRoutesTests : BaseApplicationTests() { diff --git a/newm-server/src/test/kotlin/io/newm/server/features/marketplace/MarketplaceRoutesTests.kt b/newm-server/src/test/kotlin/io/newm/server/features/marketplace/MarketplaceRoutesTests.kt index 4a5fba90..f5f847ec 100644 --- a/newm-server/src/test/kotlin/io/newm/server/features/marketplace/MarketplaceRoutesTests.kt +++ b/newm-server/src/test/kotlin/io/newm/server/features/marketplace/MarketplaceRoutesTests.kt @@ -37,11 +37,11 @@ import io.newm.server.features.song.model.SongSmartLink import io.newm.server.features.user.database.UserEntity import io.newm.server.features.user.database.UserTable import kotlinx.coroutines.runBlocking -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.SqlExpressionBuilder.neq -import org.jetbrains.exposed.sql.deleteAll -import org.jetbrains.exposed.sql.deleteWhere -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.neq +import org.jetbrains.exposed.v1.jdbc.deleteAll +import org.jetbrains.exposed.v1.jdbc.deleteWhere +import org.jetbrains.exposed.v1.jdbc.transactions.transaction import org.junit.jupiter.api.BeforeAll import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test diff --git a/newm-server/src/test/kotlin/io/newm/server/features/minting/repo/MintingRepositoryTest.kt b/newm-server/src/test/kotlin/io/newm/server/features/minting/repo/MintingRepositoryTest.kt index 922cf530..0dec0f94 100644 --- a/newm-server/src/test/kotlin/io/newm/server/features/minting/repo/MintingRepositoryTest.kt +++ b/newm-server/src/test/kotlin/io/newm/server/features/minting/repo/MintingRepositoryTest.kt @@ -33,8 +33,8 @@ import io.newm.server.typealiases.SongId import io.newm.shared.ktx.toHexString import io.newm.txbuilder.ktx.toCborObject import kotlinx.coroutines.runBlocking -import org.jetbrains.exposed.sql.deleteAll -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.deleteAll +import org.jetbrains.exposed.v1.jdbc.transactions.transaction import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Disabled import org.junit.jupiter.api.Test diff --git a/newm-server/src/test/kotlin/io/newm/server/features/playlist/PlaylistRoutesTests.kt b/newm-server/src/test/kotlin/io/newm/server/features/playlist/PlaylistRoutesTests.kt index 2138d777..6ec062b5 100644 --- a/newm-server/src/test/kotlin/io/newm/server/features/playlist/PlaylistRoutesTests.kt +++ b/newm-server/src/test/kotlin/io/newm/server/features/playlist/PlaylistRoutesTests.kt @@ -31,13 +31,14 @@ import io.newm.server.typealiases.UserId import io.newm.shared.ktx.exists import io.newm.shared.ktx.existsHavingId import kotlinx.coroutines.runBlocking -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.SqlExpressionBuilder.neq -import org.jetbrains.exposed.sql.and -import org.jetbrains.exposed.sql.deleteAll -import org.jetbrains.exposed.sql.deleteWhere -import org.jetbrains.exposed.sql.insert -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.core.and +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.eq +import org.jetbrains.exposed.v1.core.neq +import org.jetbrains.exposed.v1.jdbc.deleteAll +import org.jetbrains.exposed.v1.jdbc.deleteWhere +import org.jetbrains.exposed.v1.jdbc.insert +import org.jetbrains.exposed.v1.jdbc.transactions.transaction import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import java.time.LocalDateTime diff --git a/newm-server/src/test/kotlin/io/newm/server/features/song/SongRoutesTests.kt b/newm-server/src/test/kotlin/io/newm/server/features/song/SongRoutesTests.kt index c42feabf..2547823c 100644 --- a/newm-server/src/test/kotlin/io/newm/server/features/song/SongRoutesTests.kt +++ b/newm-server/src/test/kotlin/io/newm/server/features/song/SongRoutesTests.kt @@ -51,11 +51,11 @@ import java.time.LocalDate import java.time.LocalDateTime import java.util.UUID import kotlinx.coroutines.runBlocking -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.SqlExpressionBuilder.neq -import org.jetbrains.exposed.sql.deleteAll -import org.jetbrains.exposed.sql.deleteWhere -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.core.neq +import org.jetbrains.exposed.v1.jdbc.deleteAll +import org.jetbrains.exposed.v1.jdbc.deleteWhere +import org.jetbrains.exposed.v1.jdbc.transactions.transaction import org.junit.jupiter.api.BeforeAll import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test diff --git a/newm-server/src/test/kotlin/io/newm/server/features/user/UserRoutesTests.kt b/newm-server/src/test/kotlin/io/newm/server/features/user/UserRoutesTests.kt index 03f402f7..0762b5cc 100644 --- a/newm-server/src/test/kotlin/io/newm/server/features/user/UserRoutesTests.kt +++ b/newm-server/src/test/kotlin/io/newm/server/features/user/UserRoutesTests.kt @@ -38,8 +38,8 @@ import io.newm.shared.ktx.existsHavingId import io.newm.shared.ktx.getConfigString import io.newm.shared.ktx.toHash import kotlinx.coroutines.runBlocking -import org.jetbrains.exposed.sql.deleteAll -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.jdbc.deleteAll +import org.jetbrains.exposed.v1.jdbc.transactions.transaction import org.junit.jupiter.api.BeforeAll import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test diff --git a/newm-server/src/test/kotlin/io/newm/server/features/walletconnection/WalletConnectionRoutesTest.kt b/newm-server/src/test/kotlin/io/newm/server/features/walletconnection/WalletConnectionRoutesTest.kt index 4624b6df..fc793911 100644 --- a/newm-server/src/test/kotlin/io/newm/server/features/walletconnection/WalletConnectionRoutesTest.kt +++ b/newm-server/src/test/kotlin/io/newm/server/features/walletconnection/WalletConnectionRoutesTest.kt @@ -42,9 +42,9 @@ import io.newm.shared.ktx.toHexString import io.newm.shared.ktx.toTempFile import kotlinx.coroutines.runBlocking import org.apache.tika.Tika -import org.jetbrains.exposed.dao.id.EntityID -import org.jetbrains.exposed.sql.deleteAll -import org.jetbrains.exposed.sql.transactions.transaction +import org.jetbrains.exposed.v1.core.dao.id.EntityID +import org.jetbrains.exposed.v1.jdbc.deleteAll +import org.jetbrains.exposed.v1.jdbc.transactions.transaction import org.junit.jupiter.api.BeforeAll import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test diff --git a/newm-shared/src/main/kotlin/io/newm/shared/exposed/ExposedArrays.kt b/newm-shared/src/main/kotlin/io/newm/shared/exposed/ExposedArrays.kt index a083cbf6..f23a7662 100644 --- a/newm-shared/src/main/kotlin/io/newm/shared/exposed/ExposedArrays.kt +++ b/newm-shared/src/main/kotlin/io/newm/shared/exposed/ExposedArrays.kt @@ -1,22 +1,22 @@ package io.newm.shared.exposed import java.util.UUID -import org.jetbrains.exposed.sql.Column -import org.jetbrains.exposed.sql.ComparisonOp -import org.jetbrains.exposed.sql.CustomFunction -import org.jetbrains.exposed.sql.DoubleColumnType -import org.jetbrains.exposed.sql.EqOp -import org.jetbrains.exposed.sql.ExpressionWithColumnType -import org.jetbrains.exposed.sql.FloatColumnType -import org.jetbrains.exposed.sql.IntegerColumnType -import org.jetbrains.exposed.sql.LongColumnType -import org.jetbrains.exposed.sql.NotOp -import org.jetbrains.exposed.sql.Op -import org.jetbrains.exposed.sql.QueryParameter -import org.jetbrains.exposed.sql.SqlExpressionBuilder.asLiteral -import org.jetbrains.exposed.sql.Table -import org.jetbrains.exposed.sql.TextColumnType -import org.jetbrains.exposed.sql.UUIDColumnType +import org.jetbrains.exposed.v1.core.Column +import org.jetbrains.exposed.v1.core.ComparisonOp +import org.jetbrains.exposed.v1.core.CustomFunction +import org.jetbrains.exposed.v1.core.DoubleColumnType +import org.jetbrains.exposed.v1.core.EqOp +import org.jetbrains.exposed.v1.core.ExpressionWithColumnType +import org.jetbrains.exposed.v1.core.FloatColumnType +import org.jetbrains.exposed.v1.core.IntegerColumnType +import org.jetbrains.exposed.v1.core.LongColumnType +import org.jetbrains.exposed.v1.core.NotOp +import org.jetbrains.exposed.v1.core.Op +import org.jetbrains.exposed.v1.core.QueryParameter +import org.jetbrains.exposed.v1.core.Table +import org.jetbrains.exposed.v1.core.TextColumnType +import org.jetbrains.exposed.v1.core.asLiteral +import org.jetbrains.exposed.v1.core.java.UUIDColumnType // // Exposed support for arrays diff --git a/newm-shared/src/main/kotlin/io/newm/shared/ktx/EntityClassExt.kt b/newm-shared/src/main/kotlin/io/newm/shared/ktx/EntityClassExt.kt index 4bc197c7..6269865b 100644 --- a/newm-shared/src/main/kotlin/io/newm/shared/ktx/EntityClassExt.kt +++ b/newm-shared/src/main/kotlin/io/newm/shared/ktx/EntityClassExt.kt @@ -1,10 +1,9 @@ package io.newm.shared.ktx -import org.jetbrains.exposed.dao.Entity -import org.jetbrains.exposed.dao.EntityClass -import org.jetbrains.exposed.sql.Op -import org.jetbrains.exposed.sql.SqlExpressionBuilder +import org.jetbrains.exposed.v1.core.Op +import org.jetbrains.exposed.v1.dao.Entity +import org.jetbrains.exposed.v1.dao.EntityClass -fun , T : Entity> EntityClass.exists(op: SqlExpressionBuilder.() -> Op): Boolean = table.exists(op) +fun , T : Entity> EntityClass.exists(op: () -> Op): Boolean = table.exists(op) fun , T : Entity> EntityClass.existsHavingId(id: ID): Boolean = table.existsHavingId(id) diff --git a/newm-shared/src/main/kotlin/io/newm/shared/ktx/TableExt.kt b/newm-shared/src/main/kotlin/io/newm/shared/ktx/TableExt.kt index 1eb92f22..9173db25 100644 --- a/newm-shared/src/main/kotlin/io/newm/shared/ktx/TableExt.kt +++ b/newm-shared/src/main/kotlin/io/newm/shared/ktx/TableExt.kt @@ -1,18 +1,18 @@ package io.newm.shared.ktx -import org.jetbrains.exposed.dao.id.IdTable -import org.jetbrains.exposed.sql.Op -import org.jetbrains.exposed.sql.ResultRow -import org.jetbrains.exposed.sql.SqlExpressionBuilder -import org.jetbrains.exposed.sql.Table -import org.jetbrains.exposed.sql.selectAll +import org.jetbrains.exposed.v1.core.Op +import org.jetbrains.exposed.v1.core.ResultRow +import org.jetbrains.exposed.v1.core.Table +import org.jetbrains.exposed.v1.core.dao.id.IdTable +import org.jetbrains.exposed.v1.core.eq +import org.jetbrains.exposed.v1.jdbc.selectAll -fun Table.firstOrNull(where: SqlExpressionBuilder.() -> Op): ResultRow? = selectAll().where(where).limit(1).firstOrNull() +fun Table.firstOrNull(where: () -> Op): ResultRow? = selectAll().where(where).limit(1).firstOrNull() -fun Table.exists(where: SqlExpressionBuilder.() -> Op): Boolean = firstOrNull(where) != null +fun Table.exists(where: () -> Op): Boolean = firstOrNull(where) != null fun > IdTable.firstHavingIdOrNull(id: T): ResultRow? = this.firstOrNull { this@firstHavingIdOrNull.id eq id } fun > IdTable.existsHavingId(id: T): Boolean = exists { this@existsHavingId.id eq id } -fun > IdTable.getId(where: SqlExpressionBuilder.() -> Op): T? = firstOrNull(where)?.get(id)?.value +fun > IdTable.getId(where: () -> Op): T? = firstOrNull(where)?.get(id)?.value