Skip to content

Commit 02e7ea6

Browse files
committed
Remove some code duplication
1 parent 0845a52 commit 02e7ea6

File tree

1 file changed

+18
-30
lines changed

1 file changed

+18
-30
lines changed

src/main/kotlin/io/sdkman/repos/VersionsRepository.kt

Lines changed: 18 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,8 @@ import io.sdkman.domain.UniqueVersion
55
import io.sdkman.domain.Version
66
import kotlinx.coroutines.Dispatchers
77
import org.jetbrains.exposed.dao.id.IntIdTable
8+
import org.jetbrains.exposed.sql.*
89
import 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
1310
import org.jetbrains.exposed.sql.statements.InsertStatement
1411
import org.jetbrains.exposed.sql.transactions.experimental.newSuspendedTransaction
1512
import 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

Comments
 (0)