core/core/ktor/server/src/jvmMain/kotlin/dev/inmo/postssystem/core/ktor/server/post/WritePostsRepoRoutingConfigurator.kt

57 lines
1.8 KiB
Kotlin
Raw Normal View History

2020-11-25 08:08:45 +00:00
package dev.inmo.postssystem.core.ktor.server.post
2020-11-25 08:08:45 +00:00
import dev.inmo.postssystem.core.ktor.*
import dev.inmo.postssystem.core.post.*
import dev.inmo.postssystem.core.post.repo.WritePostsRepo
2020-11-25 07:53:15 +00:00
import dev.inmo.micro_utils.ktor.server.*
import dev.inmo.micro_utils.ktor.server.configurators.ApplicationRoutingConfigurator
import io.ktor.application.call
2020-08-15 09:26:46 +00:00
import io.ktor.routing.Route
import io.ktor.routing.post
import kotlinx.serialization.builtins.nullable
import kotlinx.serialization.builtins.serializer
fun Route.configureWritePostsRepoRoutes(
proxyTo: WritePostsRepo
) {
includeWebsocketHandling(postCreatedFlowRoute, proxyTo.postCreatedFlow, RegisteredPost.serializer())
includeWebsocketHandling(postDeletedFlowRoute, proxyTo.postDeletedFlow, RegisteredPost.serializer())
includeWebsocketHandling(postUpdatedFlowRoute, proxyTo.postUpdatedFlow, RegisteredPost.serializer())
post(createPostRoute) {
2020-08-14 12:30:09 +00:00
call.unianswer(
RegisteredPost.serializer().nullable,
proxyTo.createPost(
call.uniload(Post.serializer())
)
)
}
post(deletePostRoute) {
2020-08-14 12:30:09 +00:00
call.unianswer(
Boolean.serializer(),
proxyTo.deletePost(call.uniload(PostId.serializer()))
)
}
post(updatePostContentRoute) {
2020-08-14 12:30:09 +00:00
val updatePostObject = call.uniload(UpdatePostObject.serializer())
2020-08-14 12:30:09 +00:00
call.unianswer(
Boolean.serializer(),
proxyTo.updatePostContent(
updatePostObject.postId,
updatePostObject.post
)
)
}
}
class WritePostsRepoRoutingConfigurator(
private val proxyTo: WritePostsRepo
) : ApplicationRoutingConfigurator.Element {
override fun Route.invoke() {
configureWritePostsRepoRoutes(proxyTo)
}
}