mirror of
https://github.com/InsanusMokrassar/MicroUtils.git
synced 2024-11-26 03:58:45 +00:00
deprecations handling
This commit is contained in:
parent
984d781f2f
commit
f33ada5396
@ -2,6 +2,8 @@
|
|||||||
|
|
||||||
## 0.12.0-beta
|
## 0.12.0-beta
|
||||||
|
|
||||||
|
**OLD DEPRECATIONS HAVE BEEN REMOVED**
|
||||||
|
|
||||||
* `Versions`
|
* `Versions`
|
||||||
* `Kotlin`: `1.6.21` -> `1.7.0`
|
* `Kotlin`: `1.6.21` -> `1.7.0`
|
||||||
* `Coroutines`: `1.6.3` -> `1.6.4`
|
* `Coroutines`: `1.6.3` -> `1.6.4`
|
||||||
@ -9,6 +11,8 @@
|
|||||||
* `Compose`: `1.2.0-alpha01-dev729` -> `1.2.0-alpha01-dev753`
|
* `Compose`: `1.2.0-alpha01-dev729` -> `1.2.0-alpha01-dev753`
|
||||||
* `Klock`: `2.7.0` -> `3.0.0`
|
* `Klock`: `2.7.0` -> `3.0.0`
|
||||||
* `uuid`: `0.4.1` -> `0.5.0`
|
* `uuid`: `0.4.1` -> `0.5.0`
|
||||||
|
* `Ktor`:
|
||||||
|
* All previously standard functions related to work with binary data by default have been deprecated
|
||||||
|
|
||||||
## 0.11.12
|
## 0.11.12
|
||||||
|
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
@file:Suppress("unused", "NOTHING_TO_INLINE")
|
||||||
|
|
||||||
package dev.inmo.micro_utils.common
|
package dev.inmo.micro_utils.common
|
||||||
|
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
@ -21,11 +23,10 @@ import kotlinx.serialization.encoding.*
|
|||||||
sealed interface Either<T1, T2> {
|
sealed interface Either<T1, T2> {
|
||||||
val optionalT1: Optional<T1>
|
val optionalT1: Optional<T1>
|
||||||
val optionalT2: Optional<T2>
|
val optionalT2: Optional<T2>
|
||||||
@Deprecated("Use optionalT1 instead", ReplaceWith("optionalT1"))
|
|
||||||
val t1: T1?
|
val t1OrNull: T1?
|
||||||
get() = optionalT1.dataOrNull()
|
get() = optionalT1.dataOrNull()
|
||||||
@Deprecated("Use optionalT2 instead", ReplaceWith("optionalT2"))
|
val t2OrNull: T2?
|
||||||
val t2: T2?
|
|
||||||
get() = optionalT2.dataOrNull()
|
get() = optionalT2.dataOrNull()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -33,7 +34,7 @@ class EitherSerializer<T1, T2>(
|
|||||||
t1Serializer: KSerializer<T1>,
|
t1Serializer: KSerializer<T1>,
|
||||||
t2Serializer: KSerializer<T2>,
|
t2Serializer: KSerializer<T2>,
|
||||||
) : KSerializer<Either<T1, T2>> {
|
) : KSerializer<Either<T1, T2>> {
|
||||||
@OptIn(InternalSerializationApi::class)
|
@OptIn(InternalSerializationApi::class, ExperimentalSerializationApi::class)
|
||||||
override val descriptor: SerialDescriptor = buildSerialDescriptor(
|
override val descriptor: SerialDescriptor = buildSerialDescriptor(
|
||||||
"TypedSerializer",
|
"TypedSerializer",
|
||||||
SerialKind.CONTEXTUAL
|
SerialKind.CONTEXTUAL
|
||||||
@ -96,7 +97,7 @@ class EitherSerializer<T1, T2>(
|
|||||||
*/
|
*/
|
||||||
@Serializable
|
@Serializable
|
||||||
data class EitherFirst<T1, T2>(
|
data class EitherFirst<T1, T2>(
|
||||||
override val t1: T1
|
val t1: T1
|
||||||
) : Either<T1, T2> {
|
) : Either<T1, T2> {
|
||||||
override val optionalT1: Optional<T1> = t1.optional
|
override val optionalT1: Optional<T1> = t1.optional
|
||||||
override val optionalT2: Optional<T2> = Optional.absent()
|
override val optionalT2: Optional<T2> = Optional.absent()
|
||||||
@ -107,7 +108,7 @@ data class EitherFirst<T1, T2>(
|
|||||||
*/
|
*/
|
||||||
@Serializable
|
@Serializable
|
||||||
data class EitherSecond<T1, T2>(
|
data class EitherSecond<T1, T2>(
|
||||||
override val t2: T2
|
val t2: T2
|
||||||
) : Either<T1, T2> {
|
) : Either<T1, T2> {
|
||||||
override val optionalT1: Optional<T1> = Optional.absent()
|
override val optionalT1: Optional<T1> = Optional.absent()
|
||||||
override val optionalT2: Optional<T2> = t2.optional
|
override val optionalT2: Optional<T2> = t2.optional
|
||||||
|
@ -95,9 +95,3 @@ fun <T> Optional<T>.dataOrThrow(throwable: Throwable) = @OptIn(Warning::class) i
|
|||||||
* Returns [Optional.data] if [Optional.dataPresented] of [this] is true, or call [block] and returns the result of it
|
* Returns [Optional.data] if [Optional.dataPresented] of [this] is true, or call [block] and returns the result of it
|
||||||
*/
|
*/
|
||||||
inline fun <T> Optional<T>.dataOrElse(block: () -> T) = @OptIn(Warning::class) if (dataPresented) @Suppress("UNCHECKED_CAST") (data as T) else block()
|
inline fun <T> Optional<T>.dataOrElse(block: () -> T) = @OptIn(Warning::class) if (dataPresented) @Suppress("UNCHECKED_CAST") (data as T) else block()
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns [Optional.data] if [Optional.dataPresented] of [this] is true, or call [block] and returns the result of it
|
|
||||||
*/
|
|
||||||
@Deprecated("dataOrElse now is inline", ReplaceWith("dataOrElse", "dev.inmo.micro_utils.common.dataOrElse"))
|
|
||||||
suspend fun <T> Optional<T>.dataOrElseSuspendable(block: suspend () -> T) = @OptIn(Warning::class) if (dataPresented) @Suppress("UNCHECKED_CAST") (data as T) else block()
|
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
package dev.inmo.micro_utils.crypto
|
|
||||||
|
|
||||||
@Deprecated("Deprecated due to incorrect of work sometimes and redundancy. Can be replaced by korlibs krypto")
|
|
||||||
expect fun SourceString.hmacSha256(key: String): String
|
|
@ -7,8 +7,3 @@ external interface CryptoJs {
|
|||||||
@JsModule("crypto-js")
|
@JsModule("crypto-js")
|
||||||
@JsNonModule
|
@JsNonModule
|
||||||
external val CryptoJS: CryptoJs
|
external val CryptoJS: CryptoJs
|
||||||
|
|
||||||
@Deprecated("Deprecated due to incorrect of work sometimes and redundancy. Can be replaced by korlibs krypto")
|
|
||||||
actual fun SourceString.hmacSha256(key: String): String {
|
|
||||||
return CryptoJS.asDynamic().HmacSHA256(this, key).toString().unsafeCast<String>()
|
|
||||||
}
|
|
||||||
|
@ -1,14 +0,0 @@
|
|||||||
package dev.inmo.micro_utils.crypto
|
|
||||||
|
|
||||||
import javax.crypto.Mac
|
|
||||||
import javax.crypto.spec.SecretKeySpec
|
|
||||||
|
|
||||||
@Deprecated("Deprecated due to incorrect of work sometimes and redundancy. Can be replaced by korlibs krypto")
|
|
||||||
actual fun SourceString.hmacSha256(key: String): String {
|
|
||||||
val mac = Mac.getInstance("HmacSHA256")
|
|
||||||
|
|
||||||
val secretKey = SecretKeySpec(key.toByteArray(), "HmacSHA256")
|
|
||||||
mac.init(secretKey)
|
|
||||||
|
|
||||||
return mac.doFinal(toByteArray()).hex()
|
|
||||||
}
|
|
@ -47,24 +47,11 @@ fun <I : O, O : State> CheckableHandlerHolder(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@Deprecated("Renamed", ReplaceWith("CheckableHandlerHolder"))
|
|
||||||
fun <I : O, O : State> StateHandlerHolder(
|
|
||||||
inputKlass: KClass<I>,
|
|
||||||
strict: Boolean = false,
|
|
||||||
delegateTo: StatesHandler<I, O>
|
|
||||||
) = CheckableHandlerHolder(inputKlass, strict, delegateTo)
|
|
||||||
|
|
||||||
inline fun <reified I : O, O : State> CheckableHandlerHolder(
|
inline fun <reified I : O, O : State> CheckableHandlerHolder(
|
||||||
strict: Boolean = false,
|
strict: Boolean = false,
|
||||||
delegateTo: StatesHandler<I, O>
|
delegateTo: StatesHandler<I, O>
|
||||||
) = CheckableHandlerHolder(I::class, strict, delegateTo)
|
) = CheckableHandlerHolder(I::class, strict, delegateTo)
|
||||||
|
|
||||||
@Deprecated("Renamed", ReplaceWith("CheckableHandlerHolder"))
|
|
||||||
inline fun <reified I : O, O : State> StateHandlerHolder(
|
|
||||||
strict: Boolean = false,
|
|
||||||
delegateTo: StatesHandler<I, O>
|
|
||||||
) = CheckableHandlerHolder(strict, delegateTo)
|
|
||||||
|
|
||||||
inline fun <reified I : O, O: State> StatesHandler<I, O>.holder(
|
inline fun <reified I : O, O: State> StatesHandler<I, O>.holder(
|
||||||
strict: Boolean = true
|
strict: Boolean = true
|
||||||
) = CheckableHandlerHolder<I, O>(
|
) = CheckableHandlerHolder<I, O>(
|
||||||
|
@ -68,9 +68,6 @@ open class DefaultUpdatableStatesMachine<T : State>(
|
|||||||
*/
|
*/
|
||||||
protected open suspend fun shouldReplaceJob(previous: Optional<T>, new: T): Boolean = previous.dataOrNull() != new
|
protected open suspend fun shouldReplaceJob(previous: Optional<T>, new: T): Boolean = previous.dataOrNull() != new
|
||||||
|
|
||||||
@Deprecated("Overwrite shouldReplaceJob instead")
|
|
||||||
protected open suspend fun compare(previous: Optional<T>, new: T): Boolean = shouldReplaceJob(previous, new)
|
|
||||||
|
|
||||||
override suspend fun updateChain(currentState: T, newState: T) {
|
override suspend fun updateChain(currentState: T, newState: T) {
|
||||||
statesManager.update(currentState, newState)
|
statesManager.update(currentState, newState)
|
||||||
}
|
}
|
||||||
|
@ -1,17 +0,0 @@
|
|||||||
package dev.inmo.micro_utils.fsm.common.managers
|
|
||||||
|
|
||||||
import dev.inmo.micro_utils.fsm.common.State
|
|
||||||
import kotlinx.coroutines.flow.*
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates [DefaultStatesManager] with [InMemoryDefaultStatesManagerRepo]
|
|
||||||
*
|
|
||||||
* @param onContextsConflictResolver Receive old [State], new one and the state currently placed on new [State.context]
|
|
||||||
* key. In case when this callback will returns true, the state placed on [State.context] of new will be replaced by
|
|
||||||
* new state by using [endChain] with that state
|
|
||||||
*/
|
|
||||||
@Deprecated("Use DefaultStatesManager instead", ReplaceWith("DefaultStatesManager"))
|
|
||||||
fun <T: State> InMemoryStatesManager(
|
|
||||||
onStartContextsConflictResolver: suspend (old: T, new: T) -> Boolean = { _, _ -> true },
|
|
||||||
onUpdateContextsConflictResolver: suspend (old: T, new: T, currentNew: T) -> Boolean = { _, _, _ -> true }
|
|
||||||
) = DefaultStatesManager(onStartContextsConflictResolver = onStartContextsConflictResolver, onUpdateContextsConflictResolver = onUpdateContextsConflictResolver)
|
|
@ -19,6 +19,7 @@ import kotlinx.serialization.DeserializationStrategy
|
|||||||
* @param checkReconnection This lambda will be called when it is required to reconnect to websocket to establish
|
* @param checkReconnection This lambda will be called when it is required to reconnect to websocket to establish
|
||||||
* connection. Must return true in case if must be reconnected. By default always reconnecting
|
* connection. Must return true in case if must be reconnected. By default always reconnecting
|
||||||
*/
|
*/
|
||||||
|
@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
|
||||||
inline fun <T> HttpClient.createStandardWebsocketFlow(
|
inline fun <T> HttpClient.createStandardWebsocketFlow(
|
||||||
url: String,
|
url: String,
|
||||||
crossinline checkReconnection: suspend (Throwable?) -> Boolean = { true },
|
crossinline checkReconnection: suspend (Throwable?) -> Boolean = { true },
|
||||||
@ -65,6 +66,7 @@ inline fun <T> HttpClient.createStandardWebsocketFlow(
|
|||||||
* @param checkReconnection This lambda will be called when it is required to reconnect to websocket to establish
|
* @param checkReconnection This lambda will be called when it is required to reconnect to websocket to establish
|
||||||
* connection. Must return true in case if must be reconnected. By default always reconnecting
|
* connection. Must return true in case if must be reconnected. By default always reconnecting
|
||||||
*/
|
*/
|
||||||
|
@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
|
||||||
inline fun <T> HttpClient.createStandardWebsocketFlow(
|
inline fun <T> HttpClient.createStandardWebsocketFlow(
|
||||||
url: String,
|
url: String,
|
||||||
deserializer: DeserializationStrategy<T>,
|
deserializer: DeserializationStrategy<T>,
|
||||||
|
@ -12,9 +12,7 @@ import io.ktor.http.*
|
|||||||
import io.ktor.utils.io.core.ByteReadPacket
|
import io.ktor.utils.io.core.ByteReadPacket
|
||||||
import kotlinx.serialization.*
|
import kotlinx.serialization.*
|
||||||
|
|
||||||
@Deprecated("This class will be removed in next")
|
@Deprecated("This class will be removed soon. It is now recommended to use built-in ktor features instead")
|
||||||
typealias BodyPair<T> = Pair<SerializationStrategy<T>, T>
|
|
||||||
|
|
||||||
class UnifiedRequester(
|
class UnifiedRequester(
|
||||||
val client: HttpClient = HttpClient(),
|
val client: HttpClient = HttpClient(),
|
||||||
val serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
|
val serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
|
||||||
@ -100,8 +98,10 @@ class UnifiedRequester(
|
|||||||
) = createStandardWebsocketFlow(url, { true }, deserializer, requestBuilder)
|
) = createStandardWebsocketFlow(url, { true }, deserializer, requestBuilder)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated("This property will be removed soon. It is now recommended to use built-in ktor features instead")
|
||||||
val defaultRequester = UnifiedRequester()
|
val defaultRequester = UnifiedRequester()
|
||||||
|
|
||||||
|
@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
|
||||||
suspend fun <ResultType> HttpClient.uniget(
|
suspend fun <ResultType> HttpClient.uniget(
|
||||||
url: String,
|
url: String,
|
||||||
resultDeserializer: DeserializationStrategy<ResultType>,
|
resultDeserializer: DeserializationStrategy<ResultType>,
|
||||||
@ -111,6 +111,7 @@ suspend fun <ResultType> HttpClient.uniget(
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
|
||||||
fun <T> SerializationStrategy<T>.encodeUrlQueryValue(
|
fun <T> SerializationStrategy<T>.encodeUrlQueryValue(
|
||||||
value: T,
|
value: T,
|
||||||
serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
|
serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
|
||||||
@ -119,6 +120,7 @@ fun <T> SerializationStrategy<T>.encodeUrlQueryValue(
|
|||||||
value
|
value
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
|
||||||
suspend fun <BodyType, ResultType> HttpClient.unipost(
|
suspend fun <BodyType, ResultType> HttpClient.unipost(
|
||||||
url: String,
|
url: String,
|
||||||
bodyInfo: Pair<SerializationStrategy<BodyType>, BodyType>,
|
bodyInfo: Pair<SerializationStrategy<BodyType>, BodyType>,
|
||||||
@ -132,6 +134,7 @@ suspend fun <BodyType, ResultType> HttpClient.unipost(
|
|||||||
serialFormat.decodeDefault(resultDeserializer, it.body<StandardKtorSerialInputData>())
|
serialFormat.decodeDefault(resultDeserializer, it.body<StandardKtorSerialInputData>())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
|
||||||
suspend fun <ResultType> HttpClient.unimultipart(
|
suspend fun <ResultType> HttpClient.unimultipart(
|
||||||
url: String,
|
url: String,
|
||||||
filename: String,
|
filename: String,
|
||||||
@ -160,6 +163,7 @@ suspend fun <ResultType> HttpClient.unimultipart(
|
|||||||
requestBuilder()
|
requestBuilder()
|
||||||
}.let { serialFormat.decodeDefault(resultDeserializer, it.body<StandardKtorSerialInputData>()) }
|
}.let { serialFormat.decodeDefault(resultDeserializer, it.body<StandardKtorSerialInputData>()) }
|
||||||
|
|
||||||
|
@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
|
||||||
suspend fun <BodyType, ResultType> HttpClient.unimultipart(
|
suspend fun <BodyType, ResultType> HttpClient.unimultipart(
|
||||||
url: String,
|
url: String,
|
||||||
filename: String,
|
filename: String,
|
||||||
@ -197,6 +201,7 @@ suspend fun <BodyType, ResultType> HttpClient.unimultipart(
|
|||||||
serialFormat
|
serialFormat
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
|
||||||
suspend fun <ResultType> HttpClient.unimultipart(
|
suspend fun <ResultType> HttpClient.unimultipart(
|
||||||
url: String,
|
url: String,
|
||||||
mppFile: MPPFile,
|
mppFile: MPPFile,
|
||||||
@ -218,6 +223,7 @@ suspend fun <ResultType> HttpClient.unimultipart(
|
|||||||
serialFormat
|
serialFormat
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
|
||||||
suspend fun <BodyType, ResultType> HttpClient.unimultipart(
|
suspend fun <BodyType, ResultType> HttpClient.unimultipart(
|
||||||
url: String,
|
url: String,
|
||||||
mppFile: MPPFile,
|
mppFile: MPPFile,
|
||||||
|
@ -33,6 +33,7 @@ fun <T> Route.includeWebsocketHandling(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated("This method will be removed soon")
|
||||||
fun <T> Route.includeWebsocketHandling(
|
fun <T> Route.includeWebsocketHandling(
|
||||||
suburl: String,
|
suburl: String,
|
||||||
flow: Flow<T>,
|
flow: Flow<T>,
|
||||||
|
@ -19,6 +19,7 @@ import kotlinx.coroutines.flow.Flow
|
|||||||
import kotlinx.serialization.DeserializationStrategy
|
import kotlinx.serialization.DeserializationStrategy
|
||||||
import kotlinx.serialization.SerializationStrategy
|
import kotlinx.serialization.SerializationStrategy
|
||||||
|
|
||||||
|
@Deprecated("This class method will be removed soon. It is now recommended to use built-in ktor features instead")
|
||||||
class UnifiedRouter(
|
class UnifiedRouter(
|
||||||
val serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat,
|
val serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat,
|
||||||
val serialFormatContentType: ContentType = standardKtorSerialFormatContentType
|
val serialFormatContentType: ContentType = standardKtorSerialFormatContentType
|
||||||
@ -97,6 +98,7 @@ class UnifiedRouter(
|
|||||||
|
|
||||||
val defaultUnifiedRouter = UnifiedRouter()
|
val defaultUnifiedRouter = UnifiedRouter()
|
||||||
|
|
||||||
|
@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
|
||||||
suspend fun <T> ApplicationCall.unianswer(
|
suspend fun <T> ApplicationCall.unianswer(
|
||||||
answerSerializer: SerializationStrategy<T>,
|
answerSerializer: SerializationStrategy<T>,
|
||||||
answer: T
|
answer: T
|
||||||
@ -107,6 +109,7 @@ suspend fun <T> ApplicationCall.unianswer(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
|
||||||
suspend fun <T> ApplicationCall.uniload(
|
suspend fun <T> ApplicationCall.uniload(
|
||||||
deserializer: DeserializationStrategy<T>
|
deserializer: DeserializationStrategy<T>
|
||||||
) = safely {
|
) = safely {
|
||||||
@ -143,6 +146,7 @@ suspend fun ApplicationCall.uniloadMultipart(
|
|||||||
resultInput ?: error("Bytes has not been received")
|
resultInput ?: error("Bytes has not been received")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
|
||||||
suspend fun <T> ApplicationCall.uniloadMultipart(
|
suspend fun <T> ApplicationCall.uniloadMultipart(
|
||||||
deserializer: DeserializationStrategy<T>,
|
deserializer: DeserializationStrategy<T>,
|
||||||
onFormItem: (PartData.FormItem) -> Unit = {},
|
onFormItem: (PartData.FormItem) -> Unit = {},
|
||||||
@ -168,6 +172,7 @@ suspend fun <T> ApplicationCall.uniloadMultipart(
|
|||||||
return resultInput to (completeData.dataOrNull().let { it as T })
|
return resultInput to (completeData.dataOrNull().let { it as T })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
|
||||||
suspend fun <T> ApplicationCall.uniloadMultipartFile(
|
suspend fun <T> ApplicationCall.uniloadMultipartFile(
|
||||||
deserializer: DeserializationStrategy<T>,
|
deserializer: DeserializationStrategy<T>,
|
||||||
onFormItem: (PartData.FormItem) -> Unit = {},
|
onFormItem: (PartData.FormItem) -> Unit = {},
|
||||||
@ -281,6 +286,7 @@ suspend fun ApplicationCall.getQueryParameterOrSendError(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
|
||||||
fun <T> ApplicationCall.decodeUrlQueryValue(
|
fun <T> ApplicationCall.decodeUrlQueryValue(
|
||||||
field: String,
|
field: String,
|
||||||
deserializer: DeserializationStrategy<T>
|
deserializer: DeserializationStrategy<T>
|
||||||
@ -291,6 +297,7 @@ fun <T> ApplicationCall.decodeUrlQueryValue(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated("This method will be removed soon. It is now recommended to use built-in ktor features instead")
|
||||||
suspend fun <T> ApplicationCall.decodeUrlQueryValueOrSendError(
|
suspend fun <T> ApplicationCall.decodeUrlQueryValueOrSendError(
|
||||||
field: String,
|
field: String,
|
||||||
deserializer: DeserializationStrategy<T>
|
deserializer: DeserializationStrategy<T>
|
||||||
|
@ -1,6 +0,0 @@
|
|||||||
package dev.inmo.micro_utils.repos.cache
|
|
||||||
|
|
||||||
@Deprecated("Replaced", ReplaceWith("KVCache", "dev.inmo.micro_utils.repos.cache.cache.KVCache"))
|
|
||||||
typealias KVCache<K, V> = dev.inmo.micro_utils.repos.cache.cache.KVCache<K, V>
|
|
||||||
@Deprecated("Replaced", ReplaceWith("SimpleKVCache", "dev.inmo.micro_utils.repos.cache.cache.SimpleKVCache"))
|
|
||||||
typealias SimpleKVCache<K, V> = dev.inmo.micro_utils.repos.cache.cache.SimpleKVCache<K, V>
|
|
@ -6,8 +6,6 @@ import dev.inmo.micro_utils.repos.*
|
|||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.map
|
import kotlinx.coroutines.flow.map
|
||||||
|
|
||||||
@Deprecated("Renamed", ReplaceWith("MapperReadKeyValueRepo", "dev.inmo.micro_utils.repos.mappers.MapperReadKeyValueRepo"))
|
|
||||||
typealias MapperReadStandardKeyValueRepo<FromKey, FromValue, ToKey, ToValue> = MapperReadKeyValueRepo<FromKey, FromValue, ToKey, ToValue>
|
|
||||||
open class MapperReadKeyValueRepo<FromKey, FromValue, ToKey, ToValue>(
|
open class MapperReadKeyValueRepo<FromKey, FromValue, ToKey, ToValue>(
|
||||||
private val to: ReadKeyValueRepo<ToKey, ToValue>,
|
private val to: ReadKeyValueRepo<ToKey, ToValue>,
|
||||||
mapper: MapperRepo<FromKey, FromValue, ToKey, ToValue>
|
mapper: MapperRepo<FromKey, FromValue, ToKey, ToValue>
|
||||||
@ -85,8 +83,6 @@ inline fun <reified FromKey, reified FromValue, reified ToKey, reified ToValue>
|
|||||||
mapper(keyFromToTo, valueFromToTo, keyToToFrom, valueToToFrom)
|
mapper(keyFromToTo, valueFromToTo, keyToToFrom, valueToToFrom)
|
||||||
)
|
)
|
||||||
|
|
||||||
@Deprecated("Renamed", ReplaceWith("MapperWriteKeyValueRepo", "dev.inmo.micro_utils.repos.mappers.MapperWriteKeyValueRepo"))
|
|
||||||
typealias MapperWriteStandardKeyValueRepo<FromKey, FromValue, ToKey, ToValue> = MapperWriteKeyValueRepo<FromKey, FromValue, ToKey, ToValue>
|
|
||||||
open class MapperWriteKeyValueRepo<FromKey, FromValue, ToKey, ToValue>(
|
open class MapperWriteKeyValueRepo<FromKey, FromValue, ToKey, ToValue>(
|
||||||
private val to: WriteKeyValueRepo<ToKey, ToValue>,
|
private val to: WriteKeyValueRepo<ToKey, ToValue>,
|
||||||
mapper: MapperRepo<FromKey, FromValue, ToKey, ToValue>
|
mapper: MapperRepo<FromKey, FromValue, ToKey, ToValue>
|
||||||
@ -130,8 +126,6 @@ inline fun <reified FromKey, reified FromValue, reified ToKey, reified ToValue>
|
|||||||
mapper(keyFromToTo, valueFromToTo, keyToToFrom, valueToToFrom)
|
mapper(keyFromToTo, valueFromToTo, keyToToFrom, valueToToFrom)
|
||||||
)
|
)
|
||||||
|
|
||||||
@Deprecated("Renamed", ReplaceWith("MapperKeyValueRepo", "dev.inmo.micro_utils.repos.mappers.MapperKeyValueRepo"))
|
|
||||||
typealias MapperStandardKeyValueRepo<FromKey, FromValue, ToKey, ToValue> = MapperKeyValueRepo<FromKey, FromValue, ToKey, ToValue>
|
|
||||||
@Suppress("DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE")
|
@Suppress("DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE")
|
||||||
open class MapperKeyValueRepo<FromKey, FromValue, ToKey, ToValue>(
|
open class MapperKeyValueRepo<FromKey, FromValue, ToKey, ToValue>(
|
||||||
private val to: KeyValueRepo<ToKey, ToValue>,
|
private val to: KeyValueRepo<ToKey, ToValue>,
|
||||||
|
@ -6,8 +6,6 @@ import dev.inmo.micro_utils.repos.*
|
|||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.map
|
import kotlinx.coroutines.flow.map
|
||||||
|
|
||||||
@Deprecated("Renamed", ReplaceWith("MapperReadKeyValuesRepo", "dev.inmo.micro_utils.repos.mappers.MapperReadKeyValuesRepo"))
|
|
||||||
typealias MapperReadOneToManyKeyValueRepo<FromKey, FromValue, ToKey, ToValue> = MapperReadKeyValuesRepo<FromKey, FromValue, ToKey, ToValue>
|
|
||||||
open class MapperReadKeyValuesRepo<FromKey, FromValue, ToKey, ToValue>(
|
open class MapperReadKeyValuesRepo<FromKey, FromValue, ToKey, ToValue>(
|
||||||
private val to: ReadKeyValuesRepo<ToKey, ToValue>,
|
private val to: ReadKeyValuesRepo<ToKey, ToValue>,
|
||||||
mapper: MapperRepo<FromKey, FromValue, ToKey, ToValue>
|
mapper: MapperRepo<FromKey, FromValue, ToKey, ToValue>
|
||||||
@ -83,8 +81,6 @@ inline fun <reified FromKey, reified FromValue, reified ToKey, reified ToValue>
|
|||||||
mapper(keyFromToTo, valueFromToTo, keyToToFrom, valueToToFrom)
|
mapper(keyFromToTo, valueFromToTo, keyToToFrom, valueToToFrom)
|
||||||
)
|
)
|
||||||
|
|
||||||
@Deprecated("Renamed", ReplaceWith("MapperWriteKeyValuesRepo", "dev.inmo.micro_utils.repos.mappers.MapperWriteKeyValuesRepo"))
|
|
||||||
typealias MapperWriteOneToManyKeyValueRepo<FromKey, FromValue, ToKey, ToValue> = MapperWriteKeyValuesRepo<FromKey, FromValue, ToKey, ToValue>
|
|
||||||
open class MapperWriteKeyValuesRepo<FromKey, FromValue, ToKey, ToValue>(
|
open class MapperWriteKeyValuesRepo<FromKey, FromValue, ToKey, ToValue>(
|
||||||
private val to: WriteKeyValuesRepo<ToKey, ToValue>,
|
private val to: WriteKeyValuesRepo<ToKey, ToValue>,
|
||||||
mapper: MapperRepo<FromKey, FromValue, ToKey, ToValue>
|
mapper: MapperRepo<FromKey, FromValue, ToKey, ToValue>
|
||||||
@ -136,8 +132,6 @@ inline fun <reified FromKey, reified FromValue, reified ToKey, reified ToValue>
|
|||||||
mapper(keyFromToTo, valueFromToTo, keyToToFrom, valueToToFrom)
|
mapper(keyFromToTo, valueFromToTo, keyToToFrom, valueToToFrom)
|
||||||
)
|
)
|
||||||
|
|
||||||
@Deprecated("Renamed", ReplaceWith("MapperKeyValuesRepo", "dev.inmo.micro_utils.repos.mappers.MapperKeyValuesRepo"))
|
|
||||||
typealias MapperOneToManyKeyValueRepo<FromKey, FromValue, ToKey, ToValue> = MapperKeyValuesRepo<FromKey, FromValue, ToKey, ToValue>
|
|
||||||
@Suppress("DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE")
|
@Suppress("DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE")
|
||||||
open class MapperKeyValuesRepo<FromKey, FromValue, ToKey, ToValue>(
|
open class MapperKeyValuesRepo<FromKey, FromValue, ToKey, ToValue>(
|
||||||
private val to: KeyValuesRepo<ToKey, ToValue>,
|
private val to: KeyValuesRepo<ToKey, ToValue>,
|
||||||
|
@ -13,9 +13,6 @@ import java.nio.file.StandardWatchEventKinds.*
|
|||||||
private inline val String.isAbsolute
|
private inline val String.isAbsolute
|
||||||
get() = startsWith(File.separator)
|
get() = startsWith(File.separator)
|
||||||
|
|
||||||
@Deprecated("Renamed", ReplaceWith("FileReadKeyValueRepo", "dev.inmo.micro_utils.repos.FileReadKeyValueRepo"))
|
|
||||||
typealias FileReadStandardKeyValueRepo = FileReadKeyValueRepo
|
|
||||||
|
|
||||||
class FileReadKeyValueRepo(
|
class FileReadKeyValueRepo(
|
||||||
private val folder: File
|
private val folder: File
|
||||||
) : ReadKeyValueRepo<String, File> {
|
) : ReadKeyValueRepo<String, File> {
|
||||||
@ -82,9 +79,6 @@ class FileReadKeyValueRepo(
|
|||||||
override suspend fun count(): Long = folder.list() ?.size ?.toLong() ?: 0L
|
override suspend fun count(): Long = folder.list() ?.size ?.toLong() ?: 0L
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated("Renamed", ReplaceWith("FileWriteKeyValueRepo", "dev.inmo.micro_utils.repos.FileWriteKeyValueRepo"))
|
|
||||||
typealias FileWriteStandardKeyValueRepo = FileWriteKeyValueRepo
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Files watching will not correctly works on Android with version of API lower than API 26
|
* Files watching will not correctly works on Android with version of API lower than API 26
|
||||||
*/
|
*/
|
||||||
@ -184,9 +178,6 @@ class FileWriteKeyValueRepo(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated("Renamed", ReplaceWith("FileKeyValueRepo", "dev.inmo.micro_utils.repos.FileKeyValueRepo"))
|
|
||||||
typealias FileStandardKeyValueRepo = FileKeyValueRepo
|
|
||||||
|
|
||||||
@Warning("Files watching will not correctly works on Android Platform with version of API lower than API 26")
|
@Warning("Files watching will not correctly works on Android Platform with version of API lower than API 26")
|
||||||
@Suppress("DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE")
|
@Suppress("DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE")
|
||||||
class FileKeyValueRepo(
|
class FileKeyValueRepo(
|
||||||
|
@ -20,12 +20,6 @@ abstract class AbstractExposedWriteCRUDRepo<ObjectType, IdType, InputValueType>(
|
|||||||
protected val _newObjectsFlow = MutableSharedFlow<ObjectType>(replyCacheInFlows, flowsChannelsSize)
|
protected val _newObjectsFlow = MutableSharedFlow<ObjectType>(replyCacheInFlows, flowsChannelsSize)
|
||||||
protected val _updatedObjectsFlow = MutableSharedFlow<ObjectType>(replyCacheInFlows, flowsChannelsSize)
|
protected val _updatedObjectsFlow = MutableSharedFlow<ObjectType>(replyCacheInFlows, flowsChannelsSize)
|
||||||
protected val _deletedObjectsIdsFlow = MutableSharedFlow<IdType>(replyCacheInFlows, flowsChannelsSize)
|
protected val _deletedObjectsIdsFlow = MutableSharedFlow<IdType>(replyCacheInFlows, flowsChannelsSize)
|
||||||
@Deprecated("Renamed", ReplaceWith("_newObjectsFlow"))
|
|
||||||
protected val newObjectsChannel = _newObjectsFlow
|
|
||||||
@Deprecated("Renamed", ReplaceWith("_updatedObjectsFlow"))
|
|
||||||
protected val updateObjectsChannel = _updatedObjectsFlow
|
|
||||||
@Deprecated("Renamed", ReplaceWith("_deletedObjectsIdsFlow"))
|
|
||||||
protected val deleteObjectsIdsChannel = _deletedObjectsIdsFlow
|
|
||||||
|
|
||||||
override val newObjectsFlow: Flow<ObjectType> = _newObjectsFlow.asSharedFlow()
|
override val newObjectsFlow: Flow<ObjectType> = _newObjectsFlow.asSharedFlow()
|
||||||
override val updatedObjectsFlow: Flow<ObjectType> = _updatedObjectsFlow.asSharedFlow()
|
override val updatedObjectsFlow: Flow<ObjectType> = _updatedObjectsFlow.asSharedFlow()
|
||||||
|
@ -87,6 +87,7 @@ class WriteMapKeyValueRepo<Key, Value>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Suppress("DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE")
|
||||||
class MapKeyValueRepo<Key, Value>(
|
class MapKeyValueRepo<Key, Value>(
|
||||||
private val map: MutableMap<Key, Value> = mutableMapOf()
|
private val map: MutableMap<Key, Value> = mutableMapOf()
|
||||||
) : KeyValueRepo<Key, Value>,
|
) : KeyValueRepo<Key, Value>,
|
||||||
|
@ -5,8 +5,6 @@ import dev.inmo.micro_utils.pagination.utils.paginate
|
|||||||
import dev.inmo.micro_utils.pagination.utils.reverse
|
import dev.inmo.micro_utils.pagination.utils.reverse
|
||||||
import kotlinx.coroutines.flow.*
|
import kotlinx.coroutines.flow.*
|
||||||
|
|
||||||
@Deprecated("Renamed", ReplaceWith("MapReadKeyValuesRepo", "dev.inmo.micro_utils.repos.MapReadKeyValuesRepo"))
|
|
||||||
typealias MapReadOneToManyKeyValueRepo<Key, Value> = MapReadKeyValuesRepo<Key, Value>
|
|
||||||
class MapReadKeyValuesRepo<Key, Value>(
|
class MapReadKeyValuesRepo<Key, Value>(
|
||||||
private val map: Map<Key, List<Value>> = emptyMap()
|
private val map: Map<Key, List<Value>> = emptyMap()
|
||||||
) : ReadKeyValuesRepo<Key, Value> {
|
) : ReadKeyValuesRepo<Key, Value> {
|
||||||
@ -55,8 +53,6 @@ class MapReadKeyValuesRepo<Key, Value>(
|
|||||||
override suspend fun count(): Long = map.size.toLong()
|
override suspend fun count(): Long = map.size.toLong()
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated("Renamed", ReplaceWith("MapWriteKeyValuesRepo", "dev.inmo.micro_utils.repos.MapWriteKeyValuesRepo"))
|
|
||||||
typealias MapWriteOneToManyKeyValueRepo<Key, Value> = MapWriteKeyValuesRepo<Key, Value>
|
|
||||||
class MapWriteKeyValuesRepo<Key, Value>(
|
class MapWriteKeyValuesRepo<Key, Value>(
|
||||||
private val map: MutableMap<Key, MutableList<Value>> = mutableMapOf()
|
private val map: MutableMap<Key, MutableList<Value>> = mutableMapOf()
|
||||||
) : WriteKeyValuesRepo<Key, Value> {
|
) : WriteKeyValuesRepo<Key, Value> {
|
||||||
@ -102,8 +98,7 @@ class MapWriteKeyValuesRepo<Key, Value>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated("Renamed", ReplaceWith("MapKeyValuesRepo", "dev.inmo.micro_utils.repos.MapKeyValuesRepo"))
|
@Suppress("DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE")
|
||||||
typealias MapOneToManyKeyValueRepo1<Key, Value> = MapKeyValuesRepo<Key, Value>
|
|
||||||
class MapKeyValuesRepo<Key, Value>(
|
class MapKeyValuesRepo<Key, Value>(
|
||||||
private val map: MutableMap<Key, MutableList<Value>> = mutableMapOf()
|
private val map: MutableMap<Key, MutableList<Value>> = mutableMapOf()
|
||||||
) : KeyValuesRepo<Key, Value>,
|
) : KeyValuesRepo<Key, Value>,
|
||||||
@ -113,6 +108,3 @@ class MapKeyValuesRepo<Key, Value>(
|
|||||||
fun <K, V> MutableMap<K, List<V>>.asKeyValuesRepo(): KeyValuesRepo<K, V> = MapKeyValuesRepo(
|
fun <K, V> MutableMap<K, List<V>>.asKeyValuesRepo(): KeyValuesRepo<K, V> = MapKeyValuesRepo(
|
||||||
map { (k, v) -> k to v.toMutableList() }.toMap().toMutableMap()
|
map { (k, v) -> k to v.toMutableList() }.toMap().toMutableMap()
|
||||||
)
|
)
|
||||||
|
|
||||||
@Deprecated("Renamed", ReplaceWith("asKeyValuesRepo", "dev.inmo.micro_utils.repos.asKeyValuesRepo"))
|
|
||||||
fun <K, V> MutableMap<K, List<V>>.asOneToManyKeyValueRepo(): KeyValuesRepo<K, V> = asKeyValuesRepo()
|
|
||||||
|
@ -1,65 +0,0 @@
|
|||||||
package dev.inmo.micro_utils.repos.ktor.client.crud
|
|
||||||
|
|
||||||
import dev.inmo.micro_utils.ktor.client.*
|
|
||||||
import dev.inmo.micro_utils.ktor.common.*
|
|
||||||
import dev.inmo.micro_utils.pagination.*
|
|
||||||
import dev.inmo.micro_utils.repos.ReadCRUDRepo
|
|
||||||
import dev.inmo.micro_utils.repos.ktor.common.countRouting
|
|
||||||
import dev.inmo.micro_utils.repos.ktor.common.crud.*
|
|
||||||
import dev.inmo.micro_utils.repos.ktor.common.idParameterName
|
|
||||||
import io.ktor.client.HttpClient
|
|
||||||
import kotlinx.serialization.KSerializer
|
|
||||||
import kotlinx.serialization.builtins.serializer
|
|
||||||
|
|
||||||
@Deprecated("Use KtorReadCRUDRepoClient instead")
|
|
||||||
class KtorReadStandardCrudRepo<ObjectType, IdType> (
|
|
||||||
private val baseUrl: String,
|
|
||||||
private val unifiedRequester: UnifiedRequester,
|
|
||||||
private val objectsSerializer: KSerializer<ObjectType>,
|
|
||||||
private val objectsSerializerNullable: KSerializer<ObjectType?>,
|
|
||||||
private val idsSerializer: KSerializer<IdType>
|
|
||||||
) : ReadCRUDRepo<ObjectType, IdType> {
|
|
||||||
private val paginationResultSerializer = PaginationResult.serializer(objectsSerializer)
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
baseUrl: String,
|
|
||||||
client: HttpClient,
|
|
||||||
objectsSerializer: KSerializer<ObjectType>,
|
|
||||||
objectsSerializerNullable: KSerializer<ObjectType?>,
|
|
||||||
idsSerializer: KSerializer<IdType>,
|
|
||||||
serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
|
|
||||||
) : this (
|
|
||||||
baseUrl, UnifiedRequester(client, serialFormat), objectsSerializer, objectsSerializerNullable, idsSerializer
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun getByPagination(pagination: Pagination): PaginationResult<ObjectType> = unifiedRequester.uniget(
|
|
||||||
buildStandardUrl(baseUrl, getByPaginationRouting, pagination.asUrlQueryParts),
|
|
||||||
paginationResultSerializer
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun getById(id: IdType): ObjectType? = unifiedRequester.uniget(
|
|
||||||
buildStandardUrl(
|
|
||||||
baseUrl,
|
|
||||||
getByIdRouting,
|
|
||||||
idParameterName to unifiedRequester.encodeUrlQueryValue(idsSerializer, id)
|
|
||||||
),
|
|
||||||
objectsSerializerNullable
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun contains(id: IdType): Boolean = unifiedRequester.uniget(
|
|
||||||
buildStandardUrl(
|
|
||||||
baseUrl,
|
|
||||||
containsRouting,
|
|
||||||
idParameterName to unifiedRequester.encodeUrlQueryValue(idsSerializer, id)
|
|
||||||
),
|
|
||||||
Boolean.serializer()
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun count(): Long = unifiedRequester.uniget(
|
|
||||||
buildStandardUrl(
|
|
||||||
baseUrl,
|
|
||||||
countRouting
|
|
||||||
),
|
|
||||||
Long.serializer()
|
|
||||||
)
|
|
||||||
}
|
|
@ -1,47 +0,0 @@
|
|||||||
package dev.inmo.micro_utils.repos.ktor.client.crud
|
|
||||||
|
|
||||||
import dev.inmo.micro_utils.ktor.client.UnifiedRequester
|
|
||||||
import dev.inmo.micro_utils.ktor.common.StandardKtorSerialFormat
|
|
||||||
import dev.inmo.micro_utils.ktor.common.standardKtorSerialFormat
|
|
||||||
import dev.inmo.micro_utils.repos.*
|
|
||||||
import io.ktor.client.HttpClient
|
|
||||||
import kotlinx.serialization.KSerializer
|
|
||||||
|
|
||||||
@Deprecated("Use KtorCRUDRepoClient instead")
|
|
||||||
class KtorStandardCrudRepo<ObjectType, IdType, InputValue> (
|
|
||||||
baseUrl: String,
|
|
||||||
baseSubpart: String,
|
|
||||||
unifiedRequester: UnifiedRequester,
|
|
||||||
objectsSerializer: KSerializer<ObjectType>,
|
|
||||||
objectsNullableSerializer: KSerializer<ObjectType?>,
|
|
||||||
inputsSerializer: KSerializer<InputValue>,
|
|
||||||
idsSerializer: KSerializer<IdType>
|
|
||||||
) : CRUDRepo<ObjectType, IdType, InputValue>,
|
|
||||||
ReadCRUDRepo<ObjectType, IdType> by KtorReadStandardCrudRepo(
|
|
||||||
"$baseUrl/$baseSubpart",
|
|
||||||
unifiedRequester,
|
|
||||||
objectsSerializer,
|
|
||||||
objectsNullableSerializer,
|
|
||||||
idsSerializer
|
|
||||||
),
|
|
||||||
WriteCRUDRepo<ObjectType, IdType, InputValue> by KtorWriteStandardCrudRepo(
|
|
||||||
"$baseUrl/$baseSubpart",
|
|
||||||
unifiedRequester,
|
|
||||||
objectsSerializer,
|
|
||||||
objectsNullableSerializer,
|
|
||||||
inputsSerializer,
|
|
||||||
idsSerializer
|
|
||||||
) {
|
|
||||||
constructor(
|
|
||||||
baseUrl: String,
|
|
||||||
baseSubpart: String,
|
|
||||||
client: HttpClient,
|
|
||||||
objectsSerializer: KSerializer<ObjectType>,
|
|
||||||
objectsNullableSerializer: KSerializer<ObjectType?>,
|
|
||||||
inputsSerializer: KSerializer<InputValue>,
|
|
||||||
idsSerializer: KSerializer<IdType>,
|
|
||||||
serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
|
|
||||||
) : this(
|
|
||||||
baseUrl, baseSubpart, UnifiedRequester(client, serialFormat), objectsSerializer, objectsNullableSerializer, inputsSerializer, idsSerializer
|
|
||||||
)
|
|
||||||
}
|
|
@ -1,80 +0,0 @@
|
|||||||
package dev.inmo.micro_utils.repos.ktor.client.crud
|
|
||||||
|
|
||||||
import dev.inmo.micro_utils.ktor.client.*
|
|
||||||
import dev.inmo.micro_utils.ktor.common.*
|
|
||||||
import dev.inmo.micro_utils.repos.UpdatedValuePair
|
|
||||||
import dev.inmo.micro_utils.repos.WriteCRUDRepo
|
|
||||||
import dev.inmo.micro_utils.repos.ktor.common.crud.*
|
|
||||||
import io.ktor.client.HttpClient
|
|
||||||
import kotlinx.coroutines.flow.Flow
|
|
||||||
import kotlinx.serialization.KSerializer
|
|
||||||
import kotlinx.serialization.builtins.*
|
|
||||||
|
|
||||||
@Deprecated("Use KtorWriteCRUDRepoClient instead")
|
|
||||||
class KtorWriteStandardCrudRepo<ObjectType, IdType, InputValue> (
|
|
||||||
private val baseUrl: String,
|
|
||||||
private val unifiedRequester: UnifiedRequester,
|
|
||||||
private val objectsSerializer: KSerializer<ObjectType>,
|
|
||||||
private val objectsNullableSerializer: KSerializer<ObjectType?>,
|
|
||||||
private val inputsSerializer: KSerializer<InputValue>,
|
|
||||||
private val idsSerializer: KSerializer<IdType>
|
|
||||||
) : WriteCRUDRepo<ObjectType, IdType, InputValue> {
|
|
||||||
private val listObjectsSerializer = ListSerializer(objectsSerializer)
|
|
||||||
private val listInputSerializer = ListSerializer(inputsSerializer)
|
|
||||||
private val listIdsSerializer = ListSerializer(idsSerializer)
|
|
||||||
private val inputUpdateSerializer = PairSerializer(
|
|
||||||
idsSerializer,
|
|
||||||
inputsSerializer
|
|
||||||
)
|
|
||||||
private val listInputUpdateSerializer = ListSerializer(inputUpdateSerializer)
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
baseUrl: String,
|
|
||||||
client: HttpClient,
|
|
||||||
objectsSerializer: KSerializer<ObjectType>,
|
|
||||||
objectsSerializerNullable: KSerializer<ObjectType?>,
|
|
||||||
inputsSerializer: KSerializer<InputValue>,
|
|
||||||
idsSerializer: KSerializer<IdType>,
|
|
||||||
serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
|
|
||||||
) : this (
|
|
||||||
baseUrl, UnifiedRequester(client, serialFormat), objectsSerializer, objectsSerializerNullable, inputsSerializer, idsSerializer
|
|
||||||
)
|
|
||||||
|
|
||||||
override val newObjectsFlow: Flow<ObjectType> = unifiedRequester.createStandardWebsocketFlow(
|
|
||||||
buildStandardUrl(baseUrl, newObjectsFlowRouting),
|
|
||||||
deserializer = objectsSerializer
|
|
||||||
)
|
|
||||||
override val updatedObjectsFlow: Flow<ObjectType> = unifiedRequester.createStandardWebsocketFlow(
|
|
||||||
buildStandardUrl(baseUrl, updatedObjectsFlowRouting),
|
|
||||||
deserializer = objectsSerializer
|
|
||||||
)
|
|
||||||
override val deletedObjectsIdsFlow: Flow<IdType> = unifiedRequester.createStandardWebsocketFlow(
|
|
||||||
buildStandardUrl(baseUrl, deletedObjectsIdsFlowRouting),
|
|
||||||
deserializer = idsSerializer
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
override suspend fun create(values: List<InputValue>): List<ObjectType> = unifiedRequester.unipost(
|
|
||||||
buildStandardUrl(baseUrl, createRouting),
|
|
||||||
Pair(listInputSerializer, values),
|
|
||||||
listObjectsSerializer
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun update(id: IdType, value: InputValue): ObjectType? = unifiedRequester.unipost(
|
|
||||||
buildStandardUrl(baseUrl, updateRouting),
|
|
||||||
Pair(inputUpdateSerializer, id to value),
|
|
||||||
objectsNullableSerializer
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun update(values: List<UpdatedValuePair<IdType, InputValue>>): List<ObjectType> = unifiedRequester.unipost(
|
|
||||||
buildStandardUrl(baseUrl, updateManyRouting),
|
|
||||||
Pair(listInputUpdateSerializer, values),
|
|
||||||
listObjectsSerializer
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun deleteById(ids: List<IdType>) = unifiedRequester.unipost(
|
|
||||||
buildStandardUrl(baseUrl, deleteByIdRouting),
|
|
||||||
Pair(listIdsSerializer, ids),
|
|
||||||
Unit.serializer()
|
|
||||||
)
|
|
||||||
}
|
|
@ -1,99 +0,0 @@
|
|||||||
package dev.inmo.micro_utils.repos.ktor.client.key_value
|
|
||||||
|
|
||||||
import dev.inmo.micro_utils.ktor.client.*
|
|
||||||
import dev.inmo.micro_utils.ktor.common.*
|
|
||||||
import dev.inmo.micro_utils.pagination.*
|
|
||||||
import dev.inmo.micro_utils.repos.ReadKeyValueRepo
|
|
||||||
import dev.inmo.micro_utils.repos.ktor.common.*
|
|
||||||
import dev.inmo.micro_utils.repos.ktor.common.containsRoute
|
|
||||||
import dev.inmo.micro_utils.repos.ktor.common.countRoute
|
|
||||||
import dev.inmo.micro_utils.repos.ktor.common.key_value.*
|
|
||||||
import dev.inmo.micro_utils.repos.ktor.common.key_value.keyParameterName
|
|
||||||
import dev.inmo.micro_utils.repos.ktor.common.key_value.reversedParameterName
|
|
||||||
import io.ktor.client.HttpClient
|
|
||||||
import kotlinx.serialization.*
|
|
||||||
import kotlinx.serialization.builtins.serializer
|
|
||||||
|
|
||||||
@Deprecated("Replaced with KtorReadKeyValueRepoClient")
|
|
||||||
class KtorReadStandardKeyValueRepo<Key, Value> (
|
|
||||||
private val baseUrl: String,
|
|
||||||
private val unifiedRequester: UnifiedRequester,
|
|
||||||
private val keySerializer: KSerializer<Key>,
|
|
||||||
private val valueSerializer: KSerializer<Value>,
|
|
||||||
private val valueNullableSerializer: KSerializer<Value?>
|
|
||||||
) : ReadKeyValueRepo<Key, Value> {
|
|
||||||
constructor(
|
|
||||||
baseUrl: String,
|
|
||||||
client: HttpClient,
|
|
||||||
keySerializer: KSerializer<Key>,
|
|
||||||
valueSerializer: KSerializer<Value>,
|
|
||||||
valueNullableSerializer: KSerializer<Value?>,
|
|
||||||
serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
|
|
||||||
) : this (
|
|
||||||
baseUrl, UnifiedRequester(client, serialFormat), keySerializer, valueSerializer, valueNullableSerializer
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun get(k: Key): Value? = unifiedRequester.uniget(
|
|
||||||
buildStandardUrl(
|
|
||||||
baseUrl,
|
|
||||||
getRoute,
|
|
||||||
mapOf(
|
|
||||||
keyParameterName to unifiedRequester.encodeUrlQueryValue(keySerializer, k)
|
|
||||||
)
|
|
||||||
),
|
|
||||||
valueNullableSerializer
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun values(pagination: Pagination, reversed: Boolean): PaginationResult<Value> = unifiedRequester.uniget(
|
|
||||||
buildStandardUrl(
|
|
||||||
baseUrl,
|
|
||||||
valuesRoute,
|
|
||||||
mapOf(
|
|
||||||
reversedParameterName to unifiedRequester.encodeUrlQueryValue(Boolean.serializer(), reversed)
|
|
||||||
) + pagination.asUrlQueryParts
|
|
||||||
),
|
|
||||||
PaginationResult.serializer(valueSerializer)
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun keys(pagination: Pagination, reversed: Boolean): PaginationResult<Key> = unifiedRequester.uniget(
|
|
||||||
buildStandardUrl(
|
|
||||||
baseUrl,
|
|
||||||
keysRoute,
|
|
||||||
mapOf(
|
|
||||||
reversedParameterName to unifiedRequester.encodeUrlQueryValue(Boolean.serializer(), reversed)
|
|
||||||
) + pagination.asUrlQueryParts
|
|
||||||
),
|
|
||||||
PaginationResult.serializer(keySerializer)
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun keys(v: Value, pagination: Pagination, reversed: Boolean): PaginationResult<Key> = unifiedRequester.uniget(
|
|
||||||
buildStandardUrl(
|
|
||||||
baseUrl,
|
|
||||||
keysRoute,
|
|
||||||
mapOf(
|
|
||||||
valueParameterName to unifiedRequester.encodeUrlQueryValue(valueSerializer, v),
|
|
||||||
reversedParameterName to unifiedRequester.encodeUrlQueryValue(Boolean.serializer(), reversed)
|
|
||||||
) + pagination.asUrlQueryParts
|
|
||||||
),
|
|
||||||
PaginationResult.serializer(keySerializer)
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun contains(key: Key): Boolean = unifiedRequester.uniget(
|
|
||||||
buildStandardUrl(
|
|
||||||
baseUrl,
|
|
||||||
containsRoute,
|
|
||||||
mapOf(
|
|
||||||
keyParameterName to unifiedRequester.encodeUrlQueryValue(keySerializer, key)
|
|
||||||
),
|
|
||||||
),
|
|
||||||
Boolean.serializer(),
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun count(): Long = unifiedRequester.uniget(
|
|
||||||
buildStandardUrl(
|
|
||||||
baseUrl,
|
|
||||||
countRoute,
|
|
||||||
),
|
|
||||||
Long.serializer()
|
|
||||||
)
|
|
||||||
}
|
|
@ -1,42 +0,0 @@
|
|||||||
package dev.inmo.micro_utils.repos.ktor.client.key_value
|
|
||||||
|
|
||||||
import dev.inmo.micro_utils.ktor.client.UnifiedRequester
|
|
||||||
import dev.inmo.micro_utils.ktor.common.StandardKtorSerialFormat
|
|
||||||
import dev.inmo.micro_utils.ktor.common.standardKtorSerialFormat
|
|
||||||
import dev.inmo.micro_utils.repos.*
|
|
||||||
import io.ktor.client.HttpClient
|
|
||||||
import kotlinx.serialization.*
|
|
||||||
|
|
||||||
@Deprecated("Replaced with KtorKeyValueRepoClient")
|
|
||||||
@Suppress("DELEGATED_MEMBER_HIDES_SUPERTYPE_OVERRIDE")
|
|
||||||
class KtorStandartKeyValueRepo<K, V> (
|
|
||||||
baseUrl: String,
|
|
||||||
baseSubpart: String,
|
|
||||||
unifiedRequester: UnifiedRequester,
|
|
||||||
keySerializer: KSerializer<K>,
|
|
||||||
valueSerializer: KSerializer<V>,
|
|
||||||
valueNullableSerializer: KSerializer<V?>
|
|
||||||
) : KeyValueRepo<K, V>,
|
|
||||||
ReadKeyValueRepo<K, V> by KtorReadStandardKeyValueRepo(
|
|
||||||
"$baseUrl/$baseSubpart",
|
|
||||||
unifiedRequester,
|
|
||||||
keySerializer,
|
|
||||||
valueSerializer,
|
|
||||||
valueNullableSerializer
|
|
||||||
),
|
|
||||||
WriteKeyValueRepo<K, V> by KtorWriteStandardKeyValueRepo(
|
|
||||||
"$baseUrl/$baseSubpart",
|
|
||||||
unifiedRequester,
|
|
||||||
keySerializer,
|
|
||||||
valueSerializer
|
|
||||||
) {
|
|
||||||
constructor(
|
|
||||||
baseUrl: String,
|
|
||||||
baseSubpart: String,
|
|
||||||
client: HttpClient = HttpClient(),
|
|
||||||
keySerializer: KSerializer<K>,
|
|
||||||
valueSerializer: KSerializer<V>,
|
|
||||||
valueNullableSerializer: KSerializer<V?>,
|
|
||||||
serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
|
|
||||||
) : this(baseUrl, baseSubpart, UnifiedRequester(client, serialFormat), keySerializer, valueSerializer, valueNullableSerializer)
|
|
||||||
}
|
|
@ -1,69 +0,0 @@
|
|||||||
package dev.inmo.micro_utils.repos.ktor.client.key_value
|
|
||||||
|
|
||||||
import dev.inmo.micro_utils.ktor.client.*
|
|
||||||
import dev.inmo.micro_utils.ktor.common.*
|
|
||||||
import dev.inmo.micro_utils.repos.WriteKeyValueRepo
|
|
||||||
import dev.inmo.micro_utils.repos.ktor.common.key_value.*
|
|
||||||
import io.ktor.client.HttpClient
|
|
||||||
import kotlinx.coroutines.flow.Flow
|
|
||||||
import kotlinx.serialization.KSerializer
|
|
||||||
import kotlinx.serialization.builtins.*
|
|
||||||
|
|
||||||
@Deprecated("Replaced with KtorWriteKeyValueRepoClient")
|
|
||||||
class KtorWriteStandardKeyValueRepo<K, V> (
|
|
||||||
private var baseUrl: String,
|
|
||||||
private var unifiedRequester: UnifiedRequester,
|
|
||||||
private var keySerializer: KSerializer<K>,
|
|
||||||
private var valueSerializer: KSerializer<V>,
|
|
||||||
) : WriteKeyValueRepo<K, V> {
|
|
||||||
private val keyValueMapSerializer = MapSerializer(keySerializer, valueSerializer)
|
|
||||||
private val keysListSerializer = ListSerializer(keySerializer)
|
|
||||||
private val valuesListSerializer = ListSerializer(valueSerializer)
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
baseUrl: String,
|
|
||||||
client: HttpClient,
|
|
||||||
keySerializer: KSerializer<K>,
|
|
||||||
valueSerializer: KSerializer<V>,
|
|
||||||
serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
|
|
||||||
) : this (
|
|
||||||
baseUrl, UnifiedRequester(client, serialFormat), keySerializer, valueSerializer
|
|
||||||
)
|
|
||||||
|
|
||||||
override val onNewValue: Flow<Pair<K, V>> = unifiedRequester.createStandardWebsocketFlow(
|
|
||||||
buildStandardUrl(baseUrl, onNewValueRoute),
|
|
||||||
deserializer = PairSerializer(keySerializer, valueSerializer)
|
|
||||||
)
|
|
||||||
|
|
||||||
override val onValueRemoved: Flow<K> = unifiedRequester.createStandardWebsocketFlow(
|
|
||||||
buildStandardUrl(baseUrl, onValueRemovedRoute),
|
|
||||||
deserializer = keySerializer
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun set(toSet: Map<K, V>) = unifiedRequester.unipost(
|
|
||||||
buildStandardUrl(
|
|
||||||
baseUrl,
|
|
||||||
setRoute
|
|
||||||
),
|
|
||||||
Pair(keyValueMapSerializer, toSet),
|
|
||||||
Unit.serializer()
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun unset(toUnset: List<K>) = unifiedRequester.unipost(
|
|
||||||
buildStandardUrl(
|
|
||||||
baseUrl,
|
|
||||||
unsetRoute,
|
|
||||||
),
|
|
||||||
Pair(keysListSerializer, toUnset),
|
|
||||||
Unit.serializer()
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun unsetWithValues(toUnset: List<V>) = unifiedRequester.unipost(
|
|
||||||
buildStandardUrl(
|
|
||||||
baseUrl,
|
|
||||||
unsetWithValuesRoute,
|
|
||||||
),
|
|
||||||
Pair(valuesListSerializer, toUnset),
|
|
||||||
Unit.serializer()
|
|
||||||
)
|
|
||||||
}
|
|
@ -1,38 +0,0 @@
|
|||||||
package dev.inmo.micro_utils.repos.ktor.client.one_to_many
|
|
||||||
|
|
||||||
import dev.inmo.micro_utils.ktor.client.UnifiedRequester
|
|
||||||
import dev.inmo.micro_utils.ktor.common.StandardKtorSerialFormat
|
|
||||||
import dev.inmo.micro_utils.ktor.common.standardKtorSerialFormat
|
|
||||||
import dev.inmo.micro_utils.repos.*
|
|
||||||
import io.ktor.client.HttpClient
|
|
||||||
import kotlinx.serialization.KSerializer
|
|
||||||
|
|
||||||
@Deprecated("Should be replaced with KtorKeyValuesRepoClient")
|
|
||||||
class KtorOneToManyKeyValueRepo<Key, Value>(
|
|
||||||
baseUrl: String,
|
|
||||||
baseSubpart: String,
|
|
||||||
unifiedRequester: UnifiedRequester,
|
|
||||||
keySerializer: KSerializer<Key>,
|
|
||||||
valueSerializer: KSerializer<Value>,
|
|
||||||
) : KeyValuesRepo<Key, Value>,
|
|
||||||
ReadKeyValuesRepo<Key, Value> by KtorReadOneToManyKeyValueRepo<Key, Value> (
|
|
||||||
"$baseUrl/$baseSubpart",
|
|
||||||
unifiedRequester,
|
|
||||||
keySerializer,
|
|
||||||
valueSerializer,
|
|
||||||
),
|
|
||||||
WriteKeyValuesRepo<Key, Value> by KtorWriteOneToManyKeyValueRepo<Key, Value> (
|
|
||||||
"$baseUrl/$baseSubpart",
|
|
||||||
unifiedRequester,
|
|
||||||
keySerializer,
|
|
||||||
valueSerializer,
|
|
||||||
) {
|
|
||||||
constructor(
|
|
||||||
baseUrl: String,
|
|
||||||
baseSubpart: String,
|
|
||||||
client: HttpClient,
|
|
||||||
keySerializer: KSerializer<Key>,
|
|
||||||
valueSerializer: KSerializer<Value>,
|
|
||||||
serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
|
|
||||||
) : this (baseUrl, baseSubpart, UnifiedRequester(client, serialFormat), keySerializer, valueSerializer)
|
|
||||||
}
|
|
@ -1,108 +0,0 @@
|
|||||||
package dev.inmo.micro_utils.repos.ktor.client.one_to_many
|
|
||||||
|
|
||||||
import dev.inmo.micro_utils.ktor.client.*
|
|
||||||
import dev.inmo.micro_utils.ktor.common.*
|
|
||||||
import dev.inmo.micro_utils.pagination.*
|
|
||||||
import dev.inmo.micro_utils.repos.ReadKeyValuesRepo
|
|
||||||
import dev.inmo.micro_utils.repos.ktor.common.keyParameterName
|
|
||||||
import dev.inmo.micro_utils.repos.ktor.common.one_to_many.*
|
|
||||||
import dev.inmo.micro_utils.repos.ktor.common.reversedParameterName
|
|
||||||
import dev.inmo.micro_utils.repos.ktor.common.valueParameterName
|
|
||||||
import io.ktor.client.HttpClient
|
|
||||||
import kotlinx.serialization.KSerializer
|
|
||||||
import kotlinx.serialization.builtins.serializer
|
|
||||||
|
|
||||||
@Deprecated("Should be replaced with KtorReadKeyValuesRepoClient")
|
|
||||||
class KtorReadOneToManyKeyValueRepo<Key, Value> (
|
|
||||||
private val baseUrl: String,
|
|
||||||
private val unifiedRequester: UnifiedRequester,
|
|
||||||
private val keySerializer: KSerializer<Key>,
|
|
||||||
private val valueSerializer: KSerializer<Value>
|
|
||||||
) : ReadKeyValuesRepo<Key, Value> {
|
|
||||||
private val paginationValueResultSerializer = PaginationResult.serializer(valueSerializer)
|
|
||||||
private val paginationKeyResultSerializer = PaginationResult.serializer(keySerializer)
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
baseUrl: String,
|
|
||||||
client: HttpClient,
|
|
||||||
keySerializer: KSerializer<Key>,
|
|
||||||
valueSerializer: KSerializer<Value>,
|
|
||||||
serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
|
|
||||||
) : this (baseUrl, UnifiedRequester(client, serialFormat), keySerializer, valueSerializer)
|
|
||||||
|
|
||||||
override suspend fun get(k: Key, pagination: Pagination, reversed: Boolean): PaginationResult<Value> = unifiedRequester.uniget(
|
|
||||||
buildStandardUrl(
|
|
||||||
baseUrl,
|
|
||||||
getRoute,
|
|
||||||
mapOf(
|
|
||||||
keyParameterName to unifiedRequester.encodeUrlQueryValue(keySerializer, k),
|
|
||||||
reversedParameterName to unifiedRequester.encodeUrlQueryValue(Boolean.serializer(), reversed)
|
|
||||||
) + pagination.asUrlQueryParts
|
|
||||||
),
|
|
||||||
paginationValueResultSerializer
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun keys(pagination: Pagination, reversed: Boolean): PaginationResult<Key> = unifiedRequester.uniget(
|
|
||||||
buildStandardUrl(
|
|
||||||
baseUrl,
|
|
||||||
keysRoute,
|
|
||||||
mapOf(
|
|
||||||
reversedParameterName to unifiedRequester.encodeUrlQueryValue(Boolean.serializer(), reversed)
|
|
||||||
) + pagination.asUrlQueryParts
|
|
||||||
),
|
|
||||||
paginationKeyResultSerializer
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun keys(v: Value, pagination: Pagination, reversed: Boolean): PaginationResult<Key> = unifiedRequester.uniget(
|
|
||||||
buildStandardUrl(
|
|
||||||
baseUrl,
|
|
||||||
keysRoute,
|
|
||||||
mapOf(
|
|
||||||
valueParameterName to unifiedRequester.encodeUrlQueryValue(valueSerializer, v),
|
|
||||||
reversedParameterName to unifiedRequester.encodeUrlQueryValue(Boolean.serializer(), reversed)
|
|
||||||
) + pagination.asUrlQueryParts
|
|
||||||
),
|
|
||||||
paginationKeyResultSerializer
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun contains(k: Key): Boolean = unifiedRequester.uniget(
|
|
||||||
buildStandardUrl(
|
|
||||||
baseUrl,
|
|
||||||
containsByKeyRoute,
|
|
||||||
mapOf(keyParameterName to unifiedRequester.encodeUrlQueryValue(keySerializer, k))
|
|
||||||
),
|
|
||||||
Boolean.serializer()
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun contains(k: Key, v: Value): Boolean = unifiedRequester.uniget(
|
|
||||||
buildStandardUrl(
|
|
||||||
baseUrl,
|
|
||||||
containsByKeyValueRoute,
|
|
||||||
mapOf(
|
|
||||||
keyParameterName to unifiedRequester.encodeUrlQueryValue(keySerializer, k),
|
|
||||||
valueParameterName to unifiedRequester.encodeUrlQueryValue(valueSerializer, v),
|
|
||||||
)
|
|
||||||
),
|
|
||||||
Boolean.serializer()
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun count(k: Key): Long = unifiedRequester.uniget(
|
|
||||||
buildStandardUrl(
|
|
||||||
baseUrl,
|
|
||||||
countByKeyRoute,
|
|
||||||
mapOf(
|
|
||||||
keyParameterName to unifiedRequester.encodeUrlQueryValue(keySerializer, k)
|
|
||||||
)
|
|
||||||
),
|
|
||||||
Long.serializer()
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun count(): Long = unifiedRequester.uniget(
|
|
||||||
buildStandardUrl(
|
|
||||||
baseUrl,
|
|
||||||
countRoute,
|
|
||||||
),
|
|
||||||
Long.serializer()
|
|
||||||
)
|
|
||||||
|
|
||||||
}
|
|
@ -1,88 +0,0 @@
|
|||||||
package dev.inmo.micro_utils.repos.ktor.client.one_to_many
|
|
||||||
|
|
||||||
import dev.inmo.micro_utils.ktor.client.*
|
|
||||||
import dev.inmo.micro_utils.ktor.common.*
|
|
||||||
import dev.inmo.micro_utils.repos.WriteKeyValuesRepo
|
|
||||||
import dev.inmo.micro_utils.repos.ktor.common.one_to_many.*
|
|
||||||
import io.ktor.client.HttpClient
|
|
||||||
import kotlinx.coroutines.flow.Flow
|
|
||||||
import kotlinx.serialization.KSerializer
|
|
||||||
import kotlinx.serialization.builtins.*
|
|
||||||
|
|
||||||
@Deprecated("Should be replaced with KtorWriteKeyValuesRepoClient")
|
|
||||||
class KtorWriteOneToManyKeyValueRepo<Key, Value> (
|
|
||||||
private val baseUrl: String,
|
|
||||||
private val unifiedRequester: UnifiedRequester,
|
|
||||||
private val keySerializer: KSerializer<Key>,
|
|
||||||
private val valueSerializer: KSerializer<Value>
|
|
||||||
) : WriteKeyValuesRepo<Key, Value> {
|
|
||||||
private val keyValueSerializer = PairSerializer(keySerializer, valueSerializer)
|
|
||||||
private val keyValueMapSerializer = MapSerializer(keySerializer, ListSerializer(valueSerializer))
|
|
||||||
|
|
||||||
constructor(
|
|
||||||
baseUrl: String,
|
|
||||||
client: HttpClient,
|
|
||||||
keySerializer: KSerializer<Key>,
|
|
||||||
valueSerializer: KSerializer<Value>,
|
|
||||||
serialFormat: StandardKtorSerialFormat = standardKtorSerialFormat
|
|
||||||
) : this (
|
|
||||||
baseUrl, UnifiedRequester(client, serialFormat), keySerializer, valueSerializer
|
|
||||||
)
|
|
||||||
|
|
||||||
override val onNewValue: Flow<Pair<Key, Value>> = unifiedRequester.createStandardWebsocketFlow(
|
|
||||||
buildStandardUrl(baseUrl, onNewValueRoute),
|
|
||||||
deserializer = keyValueSerializer
|
|
||||||
)
|
|
||||||
override val onValueRemoved: Flow<Pair<Key, Value>> = unifiedRequester.createStandardWebsocketFlow(
|
|
||||||
buildStandardUrl(baseUrl, onValueRemovedRoute),
|
|
||||||
deserializer = keyValueSerializer
|
|
||||||
)
|
|
||||||
override val onDataCleared: Flow<Key> = unifiedRequester.createStandardWebsocketFlow(
|
|
||||||
buildStandardUrl(baseUrl, onDataClearedRoute),
|
|
||||||
deserializer = keySerializer
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun remove(toRemove: Map<Key, List<Value>>) = unifiedRequester.unipost(
|
|
||||||
buildStandardUrl(
|
|
||||||
baseUrl,
|
|
||||||
removeRoute,
|
|
||||||
),
|
|
||||||
Pair(keyValueMapSerializer, toRemove),
|
|
||||||
Unit.serializer(),
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun add(toAdd: Map<Key, List<Value>>) = unifiedRequester.unipost(
|
|
||||||
buildStandardUrl(
|
|
||||||
baseUrl,
|
|
||||||
addRoute,
|
|
||||||
),
|
|
||||||
Pair(keyValueMapSerializer, toAdd),
|
|
||||||
Unit.serializer(),
|
|
||||||
)
|
|
||||||
override suspend fun clear(k: Key) = unifiedRequester.unipost(
|
|
||||||
buildStandardUrl(
|
|
||||||
baseUrl,
|
|
||||||
clearRoute,
|
|
||||||
),
|
|
||||||
Pair(keySerializer, k),
|
|
||||||
Unit.serializer(),
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun clearWithValue(v: Value) = unifiedRequester.unipost(
|
|
||||||
buildStandardUrl(
|
|
||||||
baseUrl,
|
|
||||||
clearWithValueRoute,
|
|
||||||
),
|
|
||||||
Pair(valueSerializer, v),
|
|
||||||
Unit.serializer(),
|
|
||||||
)
|
|
||||||
|
|
||||||
override suspend fun set(toSet: Map<Key, List<Value>>) = unifiedRequester.unipost(
|
|
||||||
buildStandardUrl(
|
|
||||||
baseUrl,
|
|
||||||
setRoute,
|
|
||||||
),
|
|
||||||
Pair(keyValueMapSerializer, toSet),
|
|
||||||
Unit.serializer(),
|
|
||||||
)
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user