core/business_cases/post_creating/server/src/jvmMain/kotlin/dev/inmo/postssystem/business_cases/post_creating/server/PostCreatingRoutingCase.kt

34 lines
1.0 KiB
Kotlin

package dev.inmo.postssystem.business_cases.post_creating.server
import dev.inmo.micro_utils.ktor.server.*
import dev.inmo.postssystem.core.post.RegisteredPost
import io.ktor.application.call
import io.ktor.routing.*
import kotlinx.serialization.builtins.nullable
private inline fun Route.configurePostCreatingRoutes(
origin: PostCreatingCase,
unifiedRouter: UnifiedRouter
) {
post(postCreatingCreatePostRoute) {
unifiedRouter.apply {
val model = uniload(PostCreatingCreatePostModel.serializer())
unianswer(
RegisteredPost.serializer().nullable,
origin.createPost(model.postContent, model.triggerId)
)
}
}
}
fun Route.configurePostCreatingRoutes(
origin: PostCreatingCase,
unifiedRouter: UnifiedRouter,
subroute: String? = postCreatingRootRoute
) {
subroute ?.also {
route(subroute) { configurePostCreatingRoutes(origin, unifiedRouter) }
} ?: configurePostCreatingRoutes(origin, unifiedRouter)
}