write klient impl
This commit is contained in:
parent
4e25d97ba0
commit
89bef924be
@ -2,10 +2,13 @@ package com.insanusmokrassar.postssystem.utils.repos.ktor.client
|
||||
|
||||
import com.insanusmokrassar.postssystem.ktor.asUrlQueryParts
|
||||
import com.insanusmokrassar.postssystem.ktor.buildStandardUrl
|
||||
import com.insanusmokrassar.postssystem.ktor.client.BodyPair
|
||||
import com.insanusmokrassar.postssystem.ktor.client.uniget
|
||||
import com.insanusmokrassar.postssystem.ktor.client.unipost
|
||||
import com.insanusmokrassar.postssystem.ktor.standardKtorSerialFormat
|
||||
import com.insanusmokrassar.postssystem.utils.common.pagination.Pagination
|
||||
import com.insanusmokrassar.postssystem.utils.common.pagination.PaginationResult
|
||||
import com.insanusmokrassar.postssystem.utils.repos.OneToManyKeyValueRepo
|
||||
import com.insanusmokrassar.postssystem.utils.repos.OneToManyReadKeyValueRepo
|
||||
import com.insanusmokrassar.postssystem.utils.repos.OneToManyWriteKeyValueRepo
|
||||
import com.insanusmokrassar.postssystem.utils.repos.ktor.common.*
|
||||
@ -72,7 +75,7 @@ class KtorOneToManyReadKeyValueRepo<Key, Value> (
|
||||
baseUrl,
|
||||
countByKeyRoute,
|
||||
mapOf(
|
||||
keyParameterName to standardKtorSerialFormat.encodeToHexString(keySerializer, k)
|
||||
keyParameterName to standardKtorSerialFormat.encodeToHexString(keySerializer, k) // TODO: Леша, придумай короче запись, типа keySerializer.toHexString(k)
|
||||
)
|
||||
),
|
||||
Long.serializer()
|
||||
@ -91,19 +94,53 @@ class KtorOneToManyReadKeyValueRepo<Key, Value> (
|
||||
class KtorOneToManyWriteKeyValueRepo<Key, Value> (
|
||||
private val baseUrl: String,
|
||||
private val client: HttpClient = HttpClient(),
|
||||
private val keySerializer: KSerializer<Key>,
|
||||
private val valueSerializer: KSerializer<Value>,
|
||||
) : OneToManyWriteKeyValueRepo<Key, Value> {
|
||||
override suspend fun add(k: Key, v: Value) {
|
||||
TODO("Not yet implemented")
|
||||
override suspend fun add(k: Key, v: Value) = client.unipost(
|
||||
buildStandardUrl(
|
||||
baseUrl,
|
||||
addRoute,
|
||||
),
|
||||
BodyPair(KeyValuePostObject.serializer(keySerializer, valueSerializer), KeyValuePostObject(k, v)),
|
||||
Unit.serializer(),
|
||||
)
|
||||
|
||||
override suspend fun remove(k: Key, v: Value) = client.unipost(
|
||||
buildStandardUrl(
|
||||
baseUrl,
|
||||
removeRoute,
|
||||
),
|
||||
BodyPair(KeyValuePostObject.serializer(keySerializer, valueSerializer), KeyValuePostObject(k, v)),
|
||||
Unit.serializer(),
|
||||
)
|
||||
|
||||
override suspend fun clear(k: Key) = client.unipost(
|
||||
buildStandardUrl(
|
||||
baseUrl,
|
||||
clearRoute,
|
||||
),
|
||||
BodyPair(keySerializer, k),
|
||||
Unit.serializer(),
|
||||
)
|
||||
}
|
||||
|
||||
override suspend fun remove(k: Key, v: Value) {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
override suspend fun clear(k: Key) {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
}
|
||||
|
||||
class KtorOneToManyKeyValueRepo {
|
||||
}
|
||||
class KtorOneToManyKeyValueRepo<Key, Value>(
|
||||
baseUrl: String,
|
||||
baseSubpart: String,
|
||||
client: HttpClient,
|
||||
keySerializer: KSerializer<Key>,
|
||||
valueSerializer: KSerializer<Value>,
|
||||
) : OneToManyKeyValueRepo<Key, Value>,
|
||||
OneToManyReadKeyValueRepo<Key, Value> by KtorOneToManyReadKeyValueRepo<Key, Value> (
|
||||
"$baseUrl/$baseSubpart",
|
||||
client,
|
||||
keySerializer,
|
||||
valueSerializer,
|
||||
),
|
||||
OneToManyWriteKeyValueRepo<Key, Value> by KtorOneToManyWriteKeyValueRepo<Key, Value> (
|
||||
"$baseUrl/$baseSubpart",
|
||||
client,
|
||||
keySerializer,
|
||||
valueSerializer,
|
||||
)
|
@ -0,0 +1,9 @@
|
||||
package com.insanusmokrassar.postssystem.utils.repos.ktor.common
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
@Serializable
|
||||
data class KeyValuePostObject<Key, Value>(
|
||||
val key: Key,
|
||||
val value: Value
|
||||
)
|
@ -6,3 +6,7 @@ const val containsByKeyRoute = "containsByKey"
|
||||
const val containsByKeyValueRoute = "containsByKeyValue"
|
||||
const val countByKeyRoute = "countByKey"
|
||||
const val countRoute = "count"
|
||||
|
||||
const val addRoute = "add"
|
||||
const val removeRoute = "remove"
|
||||
const val clearRoute = "clear"
|
Loading…
Reference in New Issue
Block a user