60 lines
1.6 KiB
Kotlin
60 lines
1.6 KiB
Kotlin
package be.vandewalleh
|
|
|
|
import be.vandewalleh.features.configurationFeature
|
|
import be.vandewalleh.features.configurationModule
|
|
import be.vandewalleh.features.features
|
|
import be.vandewalleh.migrations.Migration
|
|
import be.vandewalleh.routing.registerRoutes
|
|
import be.vandewalleh.services.serviceModule
|
|
import io.ktor.application.Application
|
|
import io.ktor.application.feature
|
|
import io.ktor.application.log
|
|
import io.ktor.routing.Route
|
|
import io.ktor.routing.Routing
|
|
import io.ktor.routing.RoutingPath.Companion.root
|
|
import io.ktor.routing.routing
|
|
import me.liuwj.ktorm.database.Database
|
|
import org.kodein.di.Kodein
|
|
import org.kodein.di.description
|
|
import org.kodein.di.generic.bind
|
|
import org.kodein.di.generic.instance
|
|
import org.kodein.di.generic.singleton
|
|
import javax.sql.DataSource
|
|
|
|
lateinit var kodein: Kodein
|
|
|
|
@Suppress("unused") // Referenced in application.conf
|
|
fun Application.module() {
|
|
// must be first to be loaded
|
|
configurationFeature()
|
|
|
|
kodein = Kodein {
|
|
import(configurationModule)
|
|
import(serviceModule)
|
|
|
|
bind<Migration>() with singleton { Migration(this.kodein) }
|
|
bind<Database>() with singleton { Database.Companion.connect(this.instance<DataSource>()) }
|
|
}
|
|
|
|
features()
|
|
|
|
log.debug(kodein.container.tree.bindings.description())
|
|
|
|
val migration by kodein.instance<Migration>()
|
|
migration.migrate()
|
|
|
|
routing {
|
|
registerRoutes(kodein)
|
|
}
|
|
|
|
val root = feature(Routing)
|
|
val allRoutes = allRoutes(root)
|
|
allRoutes.forEach {
|
|
println(it.toString())
|
|
}
|
|
|
|
}
|
|
|
|
fun allRoutes(root: Route): List<Route> {
|
|
return listOf(root) + root.children.flatMap { allRoutes(it) }
|
|
} |