package dev.inmo.postssystem.publishing.ktor.server import dev.inmo.postssystem.core.post.PostId import dev.inmo.postssystem.core.publishing.TriggerControlKey import dev.inmo.postssystem.core.publishing.repos.ReadPublishingKeysRepo import dev.inmo.postssystem.publishing.ktor.getPostIdByTriggerControlKeyRoute import dev.inmo.postssystem.publishing.ktor.getTriggerControlKeyByPostIdRoute import dev.inmo.micro_utils.ktor.server.configurators.ApplicationRoutingConfigurator import dev.inmo.micro_utils.ktor.server.getParameterOrSendError import dev.inmo.micro_utils.ktor.server.unianswer import io.ktor.application.call import io.ktor.routing.Route import io.ktor.routing.get import kotlinx.serialization.builtins.nullable import kotlinx.serialization.builtins.serializer fun Route.configureReadPublishingKeysRepoRoutes ( proxyTo: ReadPublishingKeysRepo ) { get("$getPostIdByTriggerControlKeyRoute/{key}") { val key: TriggerControlKey = call.getParameterOrSendError("key") ?: return@get call.unianswer( PostId.serializer().nullable, proxyTo.getPostIdByTriggerControlKey(key) ) } get("$getTriggerControlKeyByPostIdRoute/{postId}") { val postId: PostId = call.getParameterOrSendError("postId") ?: return@get call.unianswer( TriggerControlKey.serializer().nullable, proxyTo.getTriggerControlKeyByPostId(postId) ) } } class ReadPublishingKeysRepoRoutingConfigurator ( private val proxyTo: ReadPublishingKeysRepo ) : ApplicationRoutingConfigurator.Element { override fun Route.invoke() { configureReadPublishingKeysRepoRoutes(proxyTo) } }