Skip to content
This repository was archived by the owner on Jan 9, 2024. It is now read-only.

Commit 3a118d6

Browse files
committed
Updated IDs in models to be able to remove all the conversions
1 parent 3e287d8 commit 3a118d6

23 files changed

+93
-99
lines changed

build.gradle.kts

+6-5
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ dependencies {
8585

8686
// UUID
8787
implementation("app.softwork:kotlinx-uuid-core:0.0.22")
88+
implementation("app.softwork:kotlinx-uuid-exposed:0.0.22")
8889

8990
/* -- Security -- */
9091
// Bouncy Castle
@@ -106,11 +107,11 @@ dependencies {
106107
implementation("io.github.reactivecircus.cache4k:cache4k:0.11.0")
107108

108109
// DB
109-
implementation("org.jetbrains.exposed:exposed-core:0.44.0")
110-
implementation("org.jetbrains.exposed:exposed-jdbc:0.44.0")
111-
implementation("org.jetbrains.exposed:exposed-dao:0.44.0")
112-
implementation("org.jetbrains.exposed:exposed-java-time:0.44.0")
113-
implementation("org.jetbrains.exposed:exposed-json:0.44.0")
110+
implementation("org.jetbrains.exposed:exposed-core:0.44.1")
111+
implementation("org.jetbrains.exposed:exposed-jdbc:0.44.1")
112+
implementation("org.jetbrains.exposed:exposed-dao:0.44.1")
113+
implementation("org.jetbrains.exposed:exposed-java-time:0.44.1")
114+
implementation("org.jetbrains.exposed:exposed-json:0.44.1")
114115
implementation("org.xerial:sqlite-jdbc:3.42.0.0")
115116
implementation("org.postgresql:postgresql:42.6.0")
116117
// migration

src/main/kotlin/id/walt/db/Db.kt

+14-2
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ object Db {
6161
Accounts,
6262
Web3Wallets
6363
)
64-
SchemaUtils.create(
64+
/*SchemaUtils.create(
6565
Web3Wallets,
6666
Accounts,
6767
//AccountWeb3WalletMappings,
@@ -72,7 +72,19 @@ object Db {
7272
WalletDids,
7373
WalletOperationHistories,
7474
Issuers
75-
)
75+
)*/
76+
77+
SchemaUtils.create(Web3Wallets)
78+
SchemaUtils.create(Accounts)
79+
//AccountWeb3WalletMappings,
80+
SchemaUtils.create(Wallets)
81+
SchemaUtils.create(AccountWalletMappings)
82+
SchemaUtils.create(WalletCredentials)
83+
SchemaUtils.create(WalletKeys)
84+
SchemaUtils.create(WalletDids)
85+
SchemaUtils.create(WalletOperationHistories)
86+
SchemaUtils.create(Issuers)
87+
7688

7789
runBlocking {
7890
AccountsService.register(EmailAccountRequest("Max Mustermann", "[email protected]", "string"))

src/main/kotlin/id/walt/db/models/Accounts.kt

+5-6
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,17 @@ import kotlinx.datetime.Instant
44
import kotlinx.datetime.toKotlinInstant
55
import kotlinx.serialization.Serializable
66
import kotlinx.uuid.UUID
7-
import kotlinx.uuid.toKotlinUUID
8-
import org.jetbrains.exposed.dao.id.UUIDTable
7+
import kotlinx.uuid.exposed.KotlinxUUIDTable
98
import org.jetbrains.exposed.sql.ResultRow
109
import org.jetbrains.exposed.sql.javatime.timestamp
1110

12-
object Accounts : UUIDTable("accounts") {
11+
object Accounts : KotlinxUUIDTable("accounts") {
1312
val name = varchar("name", 128).nullable()
1413

1514
val email = varchar("email", 128).nullable().uniqueIndex()
1615
val password = varchar("password", 200).nullable()
1716

18-
// val loginWeb3Wallet = uuid("web3wallet").nullable()
17+
// val loginWeb3Wallet = kotlinxUUID("web3wallet").nullable()
1918

2019
val createdOn = timestamp("createdOn")
2120

@@ -38,10 +37,10 @@ data class Account(
3837
val createdOn: Instant
3938
) {
4039
constructor(result: ResultRow) : this(
41-
id = result[Accounts.id].value.toKotlinUUID(),
40+
id = result[Accounts.id].value,
4241
name = result[Accounts.name],
4342
email = result[Accounts.email],
44-
//loginWeb3Wallet = result[Accounts.loginWeb3Wallet]?.toKotlinUUID(),
43+
//loginWeb3Wallet = result[Accounts.loginWeb3Wallet]?,
4544
createdOn = result[Accounts.createdOn].toKotlinInstant()
4645
)
4746
}

src/main/kotlin/id/walt/db/models/WalletCredentials.kt

+1-2
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import kotlinx.serialization.json.JsonObject
99
import kotlinx.serialization.json.JsonPrimitive
1010
import kotlinx.serialization.json.jsonObject
1111
import kotlinx.uuid.UUID
12-
import kotlinx.uuid.toKotlinUUID
1312
import org.jetbrains.exposed.sql.ResultRow
1413
import org.jetbrains.exposed.sql.Table
1514
import org.jetbrains.exposed.sql.javatime.timestamp
@@ -75,7 +74,7 @@ data class WalletCredential(
7574

7675

7776
constructor(result: ResultRow) : this(
78-
wallet = result[WalletCredentials.wallet].value.toKotlinUUID(),
77+
wallet = result[WalletCredentials.wallet].value,
7978
id = result[WalletCredentials.id],
8079
document = result[WalletCredentials.document],
8180
disclosures = result[WalletCredentials.disclosures],

src/main/kotlin/id/walt/db/models/WalletOperationHistories.kt

+5-6
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,12 @@ import kotlinx.serialization.Serializable
88
import kotlinx.serialization.encodeToString
99
import kotlinx.serialization.json.Json
1010
import kotlinx.uuid.UUID
11+
import kotlinx.uuid.exposed.KotlinxUUIDTable
1112
import kotlinx.uuid.generateUUID
12-
import kotlinx.uuid.toKotlinUUID
13-
import org.jetbrains.exposed.dao.id.UUIDTable
1413
import org.jetbrains.exposed.sql.ResultRow
1514
import org.jetbrains.exposed.sql.javatime.timestamp
1615

17-
object WalletOperationHistories : UUIDTable("wallet_operation_histories") {
16+
object WalletOperationHistories : KotlinxUUIDTable("wallet_operation_histories") {
1817
val account = reference("account", Accounts)
1918
val wallet = reference("wallet", Wallets)
2019
val timestamp = timestamp("timestamp")
@@ -32,9 +31,9 @@ data class WalletOperationHistory(
3231
val data: String,
3332
) {
3433
constructor(result: ResultRow) : this(
35-
id = result[WalletOperationHistories.id].value.toKotlinUUID(),
36-
account = result[WalletOperationHistories.account].value.toKotlinUUID(),
37-
wallet = result[WalletOperationHistories.wallet].value.toKotlinUUID(),
34+
id = result[WalletOperationHistories.id].value,
35+
account = result[WalletOperationHistories.account].value,
36+
wallet = result[WalletOperationHistories.wallet].value,
3837
timestamp = result[WalletOperationHistories.timestamp].toKotlinInstant(),
3938
operation = result[WalletOperationHistories.operation],
4039
data = result[WalletOperationHistories.data],

src/main/kotlin/id/walt/db/models/Wallets.kt

+3-4
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,11 @@ import kotlinx.datetime.Instant
44
import kotlinx.datetime.toKotlinInstant
55
import kotlinx.serialization.Serializable
66
import kotlinx.uuid.UUID
7-
import kotlinx.uuid.toKotlinUUID
8-
import org.jetbrains.exposed.dao.id.UUIDTable
7+
import kotlinx.uuid.exposed.KotlinxUUIDTable
98
import org.jetbrains.exposed.sql.ResultRow
109
import org.jetbrains.exposed.sql.javatime.timestamp
1110

12-
object Wallets : UUIDTable("wallets") {
11+
object Wallets : KotlinxUUIDTable("wallets") {
1312
val name = varchar("name", 128)
1413
val createdOn = timestamp("createdOn")
1514
}
@@ -21,7 +20,7 @@ data class Wallet(
2120
val createdOn: Instant
2221
) {
2322
constructor(result: ResultRow) : this(
24-
id = result[Wallets.id].value.toKotlinUUID(),
23+
id = result[Wallets.id].value,
2524
name = result[Wallets.name],
2625
createdOn = result[Wallets.createdOn].toKotlinInstant()
2726
)

src/main/kotlin/id/walt/db/models/Web3Wallets.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package id.walt.db.models
22

3+
import kotlinx.uuid.exposed.autoGenerate
4+
import kotlinx.uuid.exposed.kotlinxUUID
35
import org.jetbrains.exposed.sql.Table
46

57
object Web3Wallets : Table("web3wallets") {
68
val account = reference("account", Accounts)
7-
val id = uuid("id").autoGenerate()
9+
val id = kotlinxUUID("id").autoGenerate()
810

911
val address = varchar("address", 256).uniqueIndex()
1012
val ecosystem = varchar("ecosystem", 128)

src/main/kotlin/id/walt/db/models/todo/AccountIssuers.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package id.walt.db.models.todo
22

33
import id.walt.db.models.Accounts
4-
import org.jetbrains.exposed.dao.id.UUIDTable
4+
import kotlinx.uuid.exposed.KotlinxUUIDTable
55

6-
object AccountIssuers : UUIDTable("account_issuers") {
6+
object AccountIssuers : KotlinxUUIDTable("account_issuers") {
77
val account = reference("account", Accounts)
88
val issuer = reference("issuer", Issuers)
99

src/main/kotlin/id/walt/db/models/todo/Issuers.kt

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
package id.walt.db.models.todo
22

33
import kotlinx.uuid.UUID
4-
import kotlinx.uuid.toKotlinUUID
5-
import org.jetbrains.exposed.dao.id.UUIDTable
4+
import kotlinx.uuid.exposed.KotlinxUUIDTable
65
import org.jetbrains.exposed.sql.ResultRow
76

8-
object Issuers : UUIDTable("issuers") {
7+
object Issuers : KotlinxUUIDTable("issuers") {
98
val name = varchar("name", 128).uniqueIndex()
109
val description = text("description").nullable().default("no description")
1110
val uiEndpoint = varchar("ui", 128)
@@ -20,7 +19,7 @@ data class Issuer(
2019
val configurationEndpoint: String,
2120
) {
2221
constructor(result: ResultRow) : this(
23-
id = result[Issuers.id].value.toKotlinUUID(),
22+
id = result[Issuers.id].value,
2423
name = result[Issuers.name],
2524
description = result[Issuers.description],
2625
uiEndpoint = result[Issuers.uiEndpoint],

src/main/kotlin/id/walt/service/SSIKit2WalletService.kt

+7-7
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ import kotlinx.serialization.Serializable
5151
import kotlinx.serialization.encodeToString
5252
import kotlinx.serialization.json.*
5353
import kotlinx.uuid.UUID
54-
import kotlinx.uuid.toJavaUUID
5554
import org.jetbrains.exposed.sql.insert
5655
import org.jetbrains.exposed.sql.select
5756
import org.jetbrains.exposed.sql.transactions.transaction
@@ -201,8 +200,9 @@ class SSIKit2WalletService(accountId: UUID, walletId: UUID) : WalletService(acco
201200

202201
println("Resolved presentation definition: ${presentationSession.authorizationRequest!!.presentationDefinition!!.toJSONString()}")
203202

204-
val tokenResponse = credentialWallet.processImplicitFlowAuthorization(presentationSession.authorizationRequest!!)
205-
val resp = ktorClient.submitForm(presentationSession.authorizationRequest!!.responseUri!!,
203+
val tokenResponse = credentialWallet.processImplicitFlowAuthorization(presentationSession.authorizationRequest)
204+
val resp = ktorClient.submitForm(
205+
presentationSession.authorizationRequest.responseUri!!,
206206
parameters {
207207
tokenResponse.toHttpParameters().forEach { entry ->
208208
entry.value.forEach { append(entry.key, it) }
@@ -504,7 +504,7 @@ class SSIKit2WalletService(accountId: UUID, walletId: UUID) : WalletService(acco
504504
transaction {
505505
WalletKeys.insert {
506506
it[WalletKeys.keyId] = keyId
507-
it[wallet] = walletId.toJavaUUID()
507+
it[wallet] = walletId
508508
it[document] = KeySerialization.serializeKey(key)
509509
it[createdOn] = Clock.System.now().toJavaInstant()
510510
}
@@ -547,7 +547,7 @@ class SSIKit2WalletService(accountId: UUID, walletId: UUID) : WalletService(acco
547547

548548
override fun getHistory(limit: Int, offset: Int): List<WalletOperationHistory> =
549549
WalletOperationHistories
550-
.select { WalletOperationHistories.wallet eq walletId.toJavaUUID() }
550+
.select { WalletOperationHistories.wallet eq walletId }
551551
.orderBy(WalletOperationHistories.timestamp)
552552
.limit(10)
553553
.map { row ->
@@ -557,8 +557,8 @@ class SSIKit2WalletService(accountId: UUID, walletId: UUID) : WalletService(acco
557557
override suspend fun addOperationHistory(operationHistory: WalletOperationHistory) {
558558
transaction {
559559
WalletOperationHistories.insert {
560-
it[account] = operationHistory.account.toJavaUUID()
561-
it[wallet] = operationHistory.wallet.toJavaUUID()
560+
it[account] = operationHistory.account
561+
it[wallet] = operationHistory.wallet
562562
it[timestamp] = operationHistory.timestamp.toJavaInstant()
563563
it[operation] = operationHistory.operation
564564
it[data] = Json.encodeToString(operationHistory.data)

src/main/kotlin/id/walt/service/WalletKitWalletService.kt

+4-5
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ import kotlinx.serialization.Serializable
2727
import kotlinx.serialization.encodeToString
2828
import kotlinx.serialization.json.*
2929
import kotlinx.uuid.UUID
30-
import kotlinx.uuid.toJavaUUID
3130
import org.jetbrains.exposed.sql.insert
3231
import org.jetbrains.exposed.sql.select
3332
import org.jetbrains.exposed.sql.transactions.transaction
@@ -60,7 +59,7 @@ class WalletKitWalletService(accountId: UUID, walletId: UUID) : WalletService(ac
6059

6160
private val userEmail: String by lazy {
6261
transaction {
63-
Accounts.select { Accounts.id eq this@WalletKitWalletService.walletId.toJavaUUID() }
62+
Accounts.select { Accounts.id eq this@WalletKitWalletService.walletId }
6463
.single()[Accounts.email]
6564
} ?: throw IllegalArgumentException("No such account: ${this.walletId}")
6665
}
@@ -339,7 +338,7 @@ class WalletKitWalletService(accountId: UUID, walletId: UUID) : WalletService(ac
339338

340339
override fun getHistory(limit: Int, offset: Int): List<WalletOperationHistory> = transaction {
341340
WalletOperationHistories
342-
.select { WalletOperationHistories.account eq walletId.toJavaUUID() }
341+
.select { WalletOperationHistories.account eq walletId }
343342
.orderBy(WalletOperationHistories.timestamp)
344343
.limit(10)
345344
.map { WalletOperationHistory(it) }
@@ -348,8 +347,8 @@ class WalletKitWalletService(accountId: UUID, walletId: UUID) : WalletService(ac
348347
override suspend fun addOperationHistory(operationHistory: WalletOperationHistory) {
349348
transaction {
350349
WalletOperationHistories.insert {
351-
it[wallet] = walletId.toJavaUUID()
352-
it[account] = accountId.toJavaUUID()
350+
it[wallet] = walletId
351+
it[account] = accountId
353352
it[timestamp] = operationHistory.timestamp.toJavaInstant()
354353
it[operation] = operationHistory.operation
355354
it[data] = Json.encodeToString(operationHistory.data)

src/main/kotlin/id/walt/service/WalletServiceManager.kt

+5-7
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ import id.walt.service.nft.NftService
99
import kotlinx.datetime.Clock
1010
import kotlinx.datetime.toJavaInstant
1111
import kotlinx.uuid.UUID
12-
import kotlinx.uuid.toJavaUUID
13-
import kotlinx.uuid.toKotlinUUID
1412
import org.jetbrains.exposed.sql.insert
1513
import org.jetbrains.exposed.sql.select
1614
import java.util.concurrent.ConcurrentHashMap
@@ -31,12 +29,12 @@ object WalletServiceManager {
3129
val walletId = Wallets.insert {
3230
it[name] = "Wallet of $accountName"
3331
it[createdOn] = Clock.System.now().toJavaInstant()
34-
}[Wallets.id].value.toKotlinUUID()
32+
}[Wallets.id].value
3533

3634
println("Creating wallet mapping: $forAccount -> $walletId")
3735
AccountWalletMappings.insert {
38-
it[account] = forAccount.toJavaUUID()
39-
it[wallet] = walletId.toJavaUUID()
36+
it[account] = forAccount
37+
it[wallet] = walletId
4038
it[permissions] = AccountWalletPermissions.ADMINISTRATE
4139
it[addedOn] = Clock.System.now().toJavaInstant()
4240
}
@@ -46,8 +44,8 @@ object WalletServiceManager {
4644

4745
@Deprecated(replaceWith = ReplaceWith("AccountsService.getAccountWalletMappings(account)", "id.walt.service.account.AccountsService"), message = "depreacted")
4846
fun listWallets(account: UUID): List<UUID> =
49-
AccountWalletMappings.innerJoin(Wallets).select { AccountWalletMappings.account eq account.toJavaUUID() }.map {
50-
it[Wallets.id].value.toKotlinUUID()
47+
AccountWalletMappings.innerJoin(Wallets).select { AccountWalletMappings.account eq account }.map {
48+
it[Wallets.id].value
5149
}
5250

5351
fun getNftService(): NftService = NftKitNftService()

src/main/kotlin/id/walt/service/Web3WalletService.kt

+6-8
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ import id.walt.service.dto.LinkedWalletDataTransferObject
55
import id.walt.service.dto.WalletDataTransferObject
66
import kotlinx.uuid.UUID
77
import kotlinx.uuid.generateUUID
8-
import kotlinx.uuid.toJavaUUID
9-
import kotlinx.uuid.toKotlinUUID
108
import org.jetbrains.exposed.sql.*
119
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
1210
import org.jetbrains.exposed.sql.transactions.transaction
@@ -20,8 +18,8 @@ object Web3WalletService {
2018
*/
2119
fun link(accountId: UUID, wallet: WalletDataTransferObject): LinkedWalletDataTransferObject =
2220
Web3Wallets.insert {
23-
it[account] = accountId.toJavaUUID()
24-
it[id] = UUID.generateUUID().toJavaUUID()
21+
it[account] = accountId
22+
it[id] = UUID.generateUUID()
2523
it[address] = wallet.address
2624
it[ecosystem] = wallet.ecosystem
2725
it[owner] = false
@@ -34,7 +32,7 @@ object Web3WalletService {
3432
* @return true - if operation succeeded, false - otherwise
3533
*/
3634
fun unlink(accountId: UUID, walletId: UUID): Boolean = transaction {
37-
Web3Wallets.deleteWhere { (account eq accountId.toJavaUUID()) and (id eq walletId.toJavaUUID()) }
35+
Web3Wallets.deleteWhere { (account eq accountId) and (id eq walletId) }
3836
} == 1
3937

4038
/**
@@ -71,9 +69,9 @@ object Web3WalletService {
7169
* === 2 different accounts exist, which the user should have access to (merged) when logging in with web3-address
7270
*/
7371
transaction {
74-
Web3Wallets.select { Web3Wallets.account eq accountId.toJavaUUID() }.map {
72+
Web3Wallets.select { Web3Wallets.account eq accountId }.map {
7573
LinkedWalletDataTransferObject(
76-
it[Web3Wallets.id].toKotlinUUID(),
74+
it[Web3Wallets.id],
7775
it[Web3Wallets.address],
7876
it[Web3Wallets.ecosystem],
7977
it[Web3Wallets.owner]
@@ -83,7 +81,7 @@ object Web3WalletService {
8381

8482
private fun setIsOwner(accountId: UUID, walletId: UUID, isOwner: Boolean) = transaction {
8583
Web3Wallets.update(
86-
{ (Web3Wallets.account eq accountId.toJavaUUID()) and (Web3Wallets.id eq walletId.toJavaUUID()) }
84+
{ (Web3Wallets.account eq accountId) and (Web3Wallets.id eq walletId) }
8785
) {
8886
it[owner] = isOwner
8987
}

0 commit comments

Comments
 (0)