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

31 lines
943 B
Kotlin

package dev.inmo.postssystem.core.ktor.server.post
import dev.inmo.postssystem.core.ktor.postsRootRoute
import dev.inmo.postssystem.core.post.repo.PostsRepo
import dev.inmo.micro_utils.ktor.server.configurators.ApplicationRoutingConfigurator
import io.ktor.routing.Route
import io.ktor.routing.route
private inline fun configurator(proxyTo: PostsRepo): Route.() -> Unit = {
configureReadPostsRepoRoutes(proxyTo)
configureWritePostsRepoRoutes(proxyTo)
}
fun Route.configurePostsRepoRoutes(
proxyTo: PostsRepo,
rootRoute: String? = postsRootRoute
) {
rootRoute ?.also {
route(it, configurator(proxyTo))
} ?: configurator(proxyTo).invoke(this)
}
class PostsRepoRoutingConfigurator(
private val proxyTo: PostsRepo,
private val rootRoute: String? = postsRootRoute
) : ApplicationRoutingConfigurator.Element {
override fun Route.invoke() {
configurePostsRepoRoutes(proxyTo, rootRoute)
}
}