core/publishing/ktor/server/src/jvmMain/kotlin/com/insanusmokrassar/postssystem/publishing/ktor/server/ReadPublishingKeysRepoRouti...

45 lines
1.6 KiB
Kotlin

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)
}
}