mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2025-10-05 07:09:29 +00:00
Compare commits
11 Commits
Author | SHA1 | Date | |
---|---|---|---|
c443bf4fa0 | |||
a6982de822 | |||
4f1a663e75 | |||
dab262d626 | |||
87a3f61ca6 | |||
506e937a68 | |||
5a037c76dd | |||
313f622f7e | |||
6cba1fe1a2 | |||
fd2d0e80b7 | |||
96ab2e8aca |
27
CHANGELOG.md
27
CHANGELOG.md
@@ -1,5 +1,32 @@
|
||||
# Changelog
|
||||
|
||||
## 0.9.8
|
||||
|
||||
* `Versions`:
|
||||
* `Exposed`: `0.37.2` -> `0.37.3`
|
||||
* `Klock`: `2.4.13` -> `2.5.1`
|
||||
* `AppCompat`: `1.4.0` -> `1.4.1`
|
||||
|
||||
## 0.9.7
|
||||
|
||||
* `Repos`:
|
||||
* `Exposed`:
|
||||
* Fix in `ExposedOneToManyKeyValueRepo` - now it will not use `insertIgnore`
|
||||
* `Ktor`:
|
||||
* `Server`:
|
||||
* `Route#includeWebsocketHandling` now will check that `WebSockets` feature and install it if not
|
||||
|
||||
## 0.9.6
|
||||
|
||||
* `Repos`:
|
||||
* `Exposed`:
|
||||
* Fix in `ExposedOneToManyKeyValueRepo` - now it will not use `deleteIgnoreWhere`
|
||||
|
||||
## 0.9.5
|
||||
|
||||
* `Versions`:
|
||||
* `Klock`: `2.4.12` -> `2.4.13`
|
||||
|
||||
## 0.9.4
|
||||
|
||||
* `Pagination`:
|
||||
|
@@ -10,11 +10,11 @@ org.gradle.jvmargs=-Xmx2g
|
||||
kotlin_version=1.6.10
|
||||
kotlin_coroutines_version=1.6.0
|
||||
kotlin_serialisation_core_version=1.3.2
|
||||
kotlin_exposed_version=0.37.2
|
||||
kotlin_exposed_version=0.37.3
|
||||
|
||||
ktor_version=1.6.7
|
||||
|
||||
klockVersion=2.4.12
|
||||
klockVersion=2.5.1
|
||||
|
||||
github_release_plugin_version=2.2.12
|
||||
|
||||
@@ -24,7 +24,7 @@ uuidVersion=0.4.0
|
||||
|
||||
core_ktx_version=1.7.0
|
||||
androidx_recycler_version=1.2.1
|
||||
appcompat_version=1.4.0
|
||||
appcompat_version=1.4.1
|
||||
|
||||
android_minSdkVersion=19
|
||||
android_compileSdkVersion=32
|
||||
@@ -45,5 +45,5 @@ dokka_version=1.6.10
|
||||
# Project data
|
||||
|
||||
group=dev.inmo
|
||||
version=0.9.4
|
||||
android_code_version=94
|
||||
version=0.9.8
|
||||
android_code_version=98
|
||||
|
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,5 +1,5 @@
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
|
@@ -2,25 +2,23 @@ package dev.inmo.micro_utils.ktor.server
|
||||
|
||||
import dev.inmo.micro_utils.coroutines.safely
|
||||
import dev.inmo.micro_utils.ktor.common.*
|
||||
import io.ktor.application.featureOrNull
|
||||
import io.ktor.application.install
|
||||
import io.ktor.http.cio.websocket.*
|
||||
import io.ktor.routing.Route
|
||||
import io.ktor.routing.application
|
||||
import io.ktor.websocket.webSocket
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.collect
|
||||
import kotlinx.serialization.SerializationStrategy
|
||||
|
||||
private suspend fun DefaultWebSocketSession.checkReceivedAndCloseIfExists() {
|
||||
if (incoming.tryReceive() != null) {
|
||||
close()
|
||||
throw CorrectCloseException
|
||||
}
|
||||
}
|
||||
|
||||
fun <T> Route.includeWebsocketHandling(
|
||||
suburl: String,
|
||||
flow: Flow<T>,
|
||||
converter: (T) -> StandardKtorSerialInputData
|
||||
) {
|
||||
application.apply {
|
||||
featureOrNull(io.ktor.websocket.WebSockets) ?: install(io.ktor.websocket.WebSockets)
|
||||
}
|
||||
webSocket(suburl) {
|
||||
safely {
|
||||
flow.collect {
|
||||
|
@@ -35,10 +35,15 @@ open class ExposedOneToManyKeyValueRepo<Key, Value>(
|
||||
if (select { keyColumn.eq(k).and(valueColumn.eq(v)) }.limit(1).count() > 0) {
|
||||
return@mapNotNull null
|
||||
}
|
||||
insertIgnore {
|
||||
val insertResult = insert {
|
||||
it[keyColumn] = k
|
||||
it[valueColumn] = v
|
||||
}.getOrNull(keyColumn) ?.let { k to v }
|
||||
}
|
||||
if (insertResult.insertedCount > 0) {
|
||||
k to v
|
||||
} else {
|
||||
null
|
||||
}
|
||||
} ?: emptyList()
|
||||
}
|
||||
}.forEach { _onNewValue.emit(it) }
|
||||
@@ -48,7 +53,7 @@ open class ExposedOneToManyKeyValueRepo<Key, Value>(
|
||||
transaction(database) {
|
||||
toRemove.keys.flatMap { k ->
|
||||
toRemove[k] ?.mapNotNull { v ->
|
||||
if (deleteIgnoreWhere { keyColumn.eq(k).and(valueColumn.eq(v)) } > 0 ) {
|
||||
if (deleteWhere { keyColumn.eq(k).and(valueColumn.eq(v)) } > 0 ) {
|
||||
k to v
|
||||
} else {
|
||||
null
|
||||
|
Reference in New Issue
Block a user