@@ -5,11 +5,8 @@ import io.sdkman.domain.UniqueVersion
55import io.sdkman.domain.Version
66import kotlinx.coroutines.Dispatchers
77import org.jetbrains.exposed.dao.id.IntIdTable
8+ import org.jetbrains.exposed.sql.*
89import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
9- import org.jetbrains.exposed.sql.and
10- import org.jetbrains.exposed.sql.deleteWhere
11- import org.jetbrains.exposed.sql.insert
12- import org.jetbrains.exposed.sql.select
1310import org.jetbrains.exposed.sql.statements.InsertStatement
1411import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction
1512import org.jetbrains.exposed.sql.transactions.transaction
@@ -31,39 +28,30 @@ class VersionsRepository {
3128 private suspend fun <T > dbQuery (block : suspend () -> T ): T =
3229 newSuspendedTransaction(Dispatchers .IO ) { block() }
3330
31+ private fun Query.asVersions (): List <Version > =
32+ this .map {
33+ Version (
34+ candidate = it[Versions .candidate],
35+ version = it[Versions .version],
36+ vendor = it[Versions .vendor],
37+ platform = it[Versions .platform],
38+ url = it[Versions .url],
39+ visible = it[Versions .visible],
40+ md5sum = it[Versions .md5sum].toOption(),
41+ sha256sum = it[Versions .sha256sum].toOption(),
42+ sha512sum = it[Versions .sha512sum].toOption(),
43+ )
44+ }
45+
3446 suspend fun read (candidate : String ): List <Version > = dbQuery {
3547 Versions .select { Versions .candidate eq candidate }
36- .map {
37- Version (
38- candidate = it[Versions .candidate],
39- version = it[Versions .version],
40- vendor = it[Versions .vendor],
41- platform = it[Versions .platform],
42- url = it[Versions .url],
43- visible = it[Versions .visible],
44- md5sum = it[Versions .md5sum].toOption(),
45- sha256sum = it[Versions .sha256sum].toOption(),
46- sha512sum = it[Versions .sha512sum].toOption(),
47- )
48- }
48+ .asVersions()
4949 .sortedWith(compareBy({ it.candidate }, { it.version }, { it.vendor }, { it.platform }))
5050 }
5151
5252 suspend fun read (candidate : String , platform : String ): List <Version > = dbQuery {
5353 Versions .select { (Versions .candidate eq candidate) and (Versions .platform eq platform) }
54- .map {
55- Version (
56- candidate = it[Versions .candidate],
57- version = it[Versions .version],
58- vendor = it[Versions .vendor],
59- platform = it[Versions .platform],
60- url = it[Versions .url],
61- visible = it[Versions .visible],
62- md5sum = it[Versions .md5sum].toOption(),
63- sha256sum = it[Versions .sha256sum].toOption(),
64- sha512sum = it[Versions .sha512sum].toOption(),
65- )
66- }
54+ .asVersions()
6755 .sortedWith(compareBy({ it.candidate }, { it.version }, { it.vendor }, { it.platform }))
6856 }
6957
0 commit comments