2020-11-25 08:08:45 +00:00
|
|
|
package dev.inmo.postssystem.core.ktor.server.post
|
2020-08-14 07:17:27 +00:00
|
|
|
|
2020-11-25 08:08:45 +00:00
|
|
|
import dev.inmo.postssystem.core.ktor.postsRootRoute
|
|
|
|
import dev.inmo.postssystem.core.post.repo.PostsRepo
|
2020-11-25 07:53:15 +00:00
|
|
|
import dev.inmo.micro_utils.ktor.server.configurators.ApplicationRoutingConfigurator
|
2020-08-14 07:17:27 +00:00
|
|
|
import io.ktor.routing.Route
|
|
|
|
import io.ktor.routing.route
|
|
|
|
|
2020-11-27 14:35:09 +00:00
|
|
|
private inline fun configurator(proxyTo: PostsRepo): Route.() -> Unit = {
|
|
|
|
configureReadPostsRepoRoutes(proxyTo)
|
|
|
|
configureWritePostsRepoRoutes(proxyTo)
|
|
|
|
}
|
|
|
|
|
2020-08-14 07:17:27 +00:00
|
|
|
fun Route.configurePostsRepoRoutes(
|
2020-11-27 14:35:09 +00:00
|
|
|
proxyTo: PostsRepo,
|
|
|
|
rootRoute: String? = postsRootRoute
|
2020-08-14 07:17:27 +00:00
|
|
|
) {
|
2020-11-27 14:35:09 +00:00
|
|
|
rootRoute ?.also {
|
|
|
|
route(it, configurator(proxyTo))
|
|
|
|
} ?: configurator(proxyTo).invoke(this)
|
2020-08-14 07:17:27 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
class PostsRepoRoutingConfigurator(
|
2020-11-27 14:35:09 +00:00
|
|
|
private val proxyTo: PostsRepo,
|
|
|
|
private val rootRoute: String? = postsRootRoute
|
2020-08-14 07:17:27 +00:00
|
|
|
) : ApplicationRoutingConfigurator.Element {
|
|
|
|
override fun Route.invoke() {
|
2020-11-27 14:35:09 +00:00
|
|
|
configurePostsRepoRoutes(proxyTo, rootRoute)
|
2020-08-14 07:17:27 +00:00
|
|
|
}
|
|
|
|
}
|