complete swagger templates

This commit is contained in:
2022-06-04 17:12:05 +06:00
parent f705020aaa
commit 0a8e0f6178
4 changed files with 239 additions and 16 deletions

View File

@@ -8,22 +8,22 @@ import kotlinx.serialization.*
inline fun <reified Key : Any, reified Value : Any> Route.configureKeyValuesRepoRoutes (
originalRepo: KeyValuesRepo<Key, Value>,
noinline idDeserializer: suspend (String) -> Key,
noinline keyDeserializer: suspend (String) -> Key,
noinline valueDeserializer: suspend (String) -> Value
) {
configureReadKeyValuesRepoRoutes(originalRepo, idDeserializer, valueDeserializer)
configureReadKeyValuesRepoRoutes(originalRepo, keyDeserializer, valueDeserializer)
configureWriteKeyValuesRepoRoutes(originalRepo)
}
inline fun <reified Key : Any, reified Value : Any> Route.configureKeyValuesRepoRoutes(
originalRepo: KeyValuesRepo<Key, Value>,
idsSerializer: DeserializationStrategy<Key>,
keySerializer: DeserializationStrategy<Key>,
valueSerializer: DeserializationStrategy<Value>,
serialFormat: StringFormat
) = configureKeyValuesRepoRoutes(
originalRepo,
{
serialFormat.decodeFromString(idsSerializer, it.decodeURLQueryComponent())
serialFormat.decodeFromString(keySerializer, it.decodeURLQueryComponent())
},
{
serialFormat.decodeFromString(valueSerializer, it.decodeURLQueryComponent())
@@ -32,13 +32,13 @@ inline fun <reified Key : Any, reified Value : Any> Route.configureKeyValuesRepo
inline fun <reified Key : Any, reified Value : Any> Route.configureKeyValuesRepoRoutes(
originalRepo: KeyValuesRepo<Key, Value>,
idsSerializer: DeserializationStrategy<Key>,
keySerializer: DeserializationStrategy<Key>,
valueSerializer: DeserializationStrategy<Value>,
serialFormat: BinaryFormat
) = configureKeyValuesRepoRoutes(
originalRepo,
{
serialFormat.decodeHex(idsSerializer, it)
serialFormat.decodeHex(keySerializer, it)
},
{
serialFormat.decodeHex(valueSerializer, it)

View File

@@ -7,6 +7,7 @@ import dev.inmo.micro_utils.pagination.extractPagination
import dev.inmo.micro_utils.repos.ReadKeyValuesRepo
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.one_to_many.*
import io.ktor.http.*
import io.ktor.server.application.call
@@ -20,14 +21,14 @@ import kotlinx.serialization.*
@OptIn(InternalAPI::class)
inline fun <reified Key, reified Value> Route.configureReadKeyValuesRepoRoutes (
originalRepo: ReadKeyValuesRepo<Key, Value>,
noinline idDeserializer: suspend (String) -> Key,
noinline keyDeserializer: suspend (String) -> Key,
noinline valueDeserializer: suspend (String) -> Value
) {
val paginationWithValuesTypeInfo = typeInfo<PaginationResult<Value>>()
val paginationWithKeysTypeInfo = typeInfo<PaginationResult<Key>>()
get(getRoute) {
val key = idDeserializer(
val key = keyDeserializer(
call.getQueryParameterOrSendError(keyParameterName) ?: return@get
)
val pagination = call.request.queryParameters.extractPagination
@@ -53,7 +54,7 @@ inline fun <reified Key, reified Value> Route.configureReadKeyValuesRepoRoutes (
}
get(containsRoute) {
val key = idDeserializer(
val key = keyDeserializer(
call.getQueryParameterOrSendError(keyParameterName) ?: return@get
)
val value = call.getQueryParameter(valueParameterName) ?.let {
@@ -65,9 +66,9 @@ inline fun <reified Key, reified Value> Route.configureReadKeyValuesRepoRoutes (
)
}
get(dev.inmo.micro_utils.repos.ktor.common.countRoute) {
get(countRoute) {
val id = call.getQueryParameter(keyParameterName) ?.let {
idDeserializer(it)
keyDeserializer(it)
}
call.respond(
id ?.let { originalRepo.count(it) } ?: originalRepo.count()
@@ -77,13 +78,13 @@ inline fun <reified Key, reified Value> Route.configureReadKeyValuesRepoRoutes (
inline fun <reified Key, reified Value> Route.configureReadKeyValuesRepoRoutes(
originalRepo: ReadKeyValuesRepo<Key, Value>,
idsSerializer: DeserializationStrategy<Key>,
keySerializer: DeserializationStrategy<Key>,
valueSerializer: DeserializationStrategy<Value>,
serialFormat: StringFormat
) = configureReadKeyValuesRepoRoutes(
originalRepo,
{
serialFormat.decodeFromString(idsSerializer, it.decodeURLQueryComponent())
serialFormat.decodeFromString(keySerializer, it.decodeURLQueryComponent())
},
{
serialFormat.decodeFromString(valueSerializer, it.decodeURLQueryComponent())
@@ -92,13 +93,13 @@ inline fun <reified Key, reified Value> Route.configureReadKeyValuesRepoRoutes(
inline fun <reified Key, reified Value> Route.configureReadKeyValuesRepoRoutes(
originalRepo: ReadKeyValuesRepo<Key, Value>,
idsSerializer: DeserializationStrategy<Key>,
keySerializer: DeserializationStrategy<Key>,
valueSerializer: DeserializationStrategy<Value>,
serialFormat: BinaryFormat
) = configureReadKeyValuesRepoRoutes(
originalRepo,
{
serialFormat.decodeHex(idsSerializer, it)
serialFormat.decodeHex(keySerializer, it)
},
{
serialFormat.decodeHex(valueSerializer, it)