From e9a1276ae11e73257f45d16d75289fa62bbadbe4 Mon Sep 17 00:00:00 2001 From: 000Sanya <000sanya.000sanya@gmail.com> Date: Wed, 26 Aug 2020 13:11:13 +1000 Subject: [PATCH] write kerver impl --- .../ktor/server/KtorOneToManyKeyValueRepo.kt | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/utils/repos/ktor/server/src/jvmMain/kotlin/com/insanusmokrassar/postssystem/utils/repos/ktor/server/KtorOneToManyKeyValueRepo.kt b/utils/repos/ktor/server/src/jvmMain/kotlin/com/insanusmokrassar/postssystem/utils/repos/ktor/server/KtorOneToManyKeyValueRepo.kt index 9946861e..38a6c288 100644 --- a/utils/repos/ktor/server/src/jvmMain/kotlin/com/insanusmokrassar/postssystem/utils/repos/ktor/server/KtorOneToManyKeyValueRepo.kt +++ b/utils/repos/ktor/server/src/jvmMain/kotlin/com/insanusmokrassar/postssystem/utils/repos/ktor/server/KtorOneToManyKeyValueRepo.kt @@ -3,10 +3,13 @@ package com.insanusmokrassar.postssystem.utils.repos.ktor.server import com.insanusmokrassar.postssystem.ktor.server.extractPagination import com.insanusmokrassar.postssystem.ktor.server.getQueryParameterOrSendError import com.insanusmokrassar.postssystem.ktor.server.unianswer +import com.insanusmokrassar.postssystem.ktor.server.uniload 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.* import io.ktor.application.* import io.ktor.routing.* @@ -98,4 +101,53 @@ fun Route.configureOneToManyReadKeyValueRepoRoutes( originalRepo.count() ) } +} + +fun Route.configureOneToManyWriteKeyValueRepoRoutes( + originalRepo: OneToManyWriteKeyValueRepo, + keySerializer: KSerializer, + valueSealizer: KSerializer, +) { + post(addRoute) { + val obj = call.uniload( + KeyValuePostObject.serializer(keySerializer, valueSealizer) + ) + + call.unianswer( + Unit.serializer(), + originalRepo.add(obj.key, obj.value) + ) + } + + post(removeRoute) { + val obj = call.uniload( + KeyValuePostObject.serializer(keySerializer, valueSealizer) + ) + + call.unianswer( + Unit.serializer(), + originalRepo.remove(obj.key, obj.value), + ) + } + + post(clearRoute) { + val key = call.uniload(keySerializer) + + call.unianswer( + Unit.serializer(), + originalRepo.clear(key), + ) + } +} + +fun Route.configureOneToManyKeyValueRepoRoutes( + baseSubpart: String, + originalRepo: OneToManyKeyValueRepo, + keySerializer: KSerializer, + valueSealizer: KSerializer, +) { + route(baseSubpart) { + configureOneToManyReadKeyValueRepoRoutes(originalRepo, keySerializer, valueSealizer) + configureOneToManyWriteKeyValueRepoRoutes(originalRepo, keySerializer, valueSealizer) + } } \ No newline at end of file