mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2024-11-18 22:33:49 +00:00
improvements in ExposedReadKeyValuesRepo
This commit is contained in:
parent
173991e3cb
commit
039aed2747
@ -2,6 +2,10 @@
|
||||
|
||||
## 0.20.6
|
||||
|
||||
* `Repos`:
|
||||
* `Exposed`
|
||||
* Fixes in exposed key-values repos
|
||||
|
||||
## 0.20.5
|
||||
|
||||
* `Coroutines`:
|
||||
|
@ -1,12 +1,10 @@
|
||||
package dev.inmo.micro_utils.repos.exposed.onetomany
|
||||
|
||||
import dev.inmo.micro_utils.pagination.*
|
||||
import dev.inmo.micro_utils.repos.ReadKeyValueRepo
|
||||
import dev.inmo.micro_utils.repos.ReadKeyValuesRepo
|
||||
import dev.inmo.micro_utils.repos.exposed.*
|
||||
import dev.inmo.micro_utils.repos.exposed.utils.selectPaginated
|
||||
import org.jetbrains.exposed.sql.*
|
||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
|
||||
import org.jetbrains.exposed.sql.transactions.transaction
|
||||
|
||||
abstract class AbstractExposedReadKeyValuesRepo<Key, Value>(
|
||||
@ -73,4 +71,26 @@ abstract class AbstractExposedReadKeyValuesRepo<Key, Value>(
|
||||
override suspend fun contains(k: Key, v: Value): Boolean = transaction(database) {
|
||||
select { selectById(k).and(selectByValue(v)) }.limit(1).any()
|
||||
}
|
||||
|
||||
override suspend fun getAll(reverseLists: Boolean): Map<Key, List<Value>> = transaction(database) {
|
||||
val query = if (reverseLists) {
|
||||
selectAll().orderBy(keyColumn, SortOrder.DESC)
|
||||
} else {
|
||||
selectAll()
|
||||
}
|
||||
query.asSequence().map { it.asKey to it.asObject }.groupBy { it.first }.mapValues {
|
||||
it.value.map { it.second }
|
||||
}
|
||||
}
|
||||
|
||||
override suspend fun getAll(k: Key, reverseLists: Boolean): List<Value> = transaction(database) {
|
||||
val query = if (reverseLists) {
|
||||
select { selectById(k) }.orderBy(keyColumn, SortOrder.DESC)
|
||||
} else {
|
||||
select { selectById(k) }
|
||||
}
|
||||
query.map {
|
||||
it.asObject
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user