45 lines
1.6 KiB
Kotlin
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)
|
|
}
|
|
} |