mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2024-12-19 15:17:15 +00:00
improvements in ExposedReadKeyValuesRepo
This commit is contained in:
parent
173991e3cb
commit
039aed2747
@ -2,6 +2,10 @@
|
|||||||
|
|
||||||
## 0.20.6
|
## 0.20.6
|
||||||
|
|
||||||
|
* `Repos`:
|
||||||
|
* `Exposed`
|
||||||
|
* Fixes in exposed key-values repos
|
||||||
|
|
||||||
## 0.20.5
|
## 0.20.5
|
||||||
|
|
||||||
* `Coroutines`:
|
* `Coroutines`:
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
package dev.inmo.micro_utils.repos.exposed.onetomany
|
package dev.inmo.micro_utils.repos.exposed.onetomany
|
||||||
|
|
||||||
import dev.inmo.micro_utils.pagination.*
|
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.ReadKeyValuesRepo
|
||||||
import dev.inmo.micro_utils.repos.exposed.*
|
import dev.inmo.micro_utils.repos.exposed.*
|
||||||
import dev.inmo.micro_utils.repos.exposed.utils.selectPaginated
|
import dev.inmo.micro_utils.repos.exposed.utils.selectPaginated
|
||||||
import org.jetbrains.exposed.sql.*
|
import org.jetbrains.exposed.sql.*
|
||||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
|
|
||||||
import org.jetbrains.exposed.sql.transactions.transaction
|
import org.jetbrains.exposed.sql.transactions.transaction
|
||||||
|
|
||||||
abstract class AbstractExposedReadKeyValuesRepo<Key, Value>(
|
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) {
|
override suspend fun contains(k: Key, v: Value): Boolean = transaction(database) {
|
||||||
select { selectById(k).and(selectByValue(v)) }.limit(1).any()
|
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