64 lines
1.6 KiB
Kotlin
64 lines
1.6 KiB
Kotlin
package be.vandewalleh
|
|
|
|
import be.vandewalleh.features.Config
|
|
import be.vandewalleh.features.configurationModule
|
|
import be.vandewalleh.features.loadFeatures
|
|
import be.vandewalleh.migrations.Migration
|
|
import be.vandewalleh.routing.registerRoutes
|
|
import be.vandewalleh.services.serviceModule
|
|
import io.ktor.application.*
|
|
import io.ktor.routing.*
|
|
import io.ktor.server.engine.*
|
|
import io.ktor.server.netty.*
|
|
import me.liuwj.ktorm.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 org.slf4j.Logger
|
|
import org.slf4j.LoggerFactory
|
|
import javax.sql.DataSource
|
|
|
|
|
|
fun main() {
|
|
|
|
val kodein = Kodein{
|
|
import(mainModule)
|
|
}
|
|
|
|
val config by kodein.instance<Config>()
|
|
val logger by kodein.instance<Logger>()
|
|
logger.info("Running application with configuration $config")
|
|
logger.debug("Kodein bindings\n${kodein.container.tree.bindings.description()}")
|
|
val migration by kodein.instance<Migration>()
|
|
migration.migrate()
|
|
serve(kodein)
|
|
}
|
|
|
|
fun serve(kodein: Kodein) {
|
|
val config by kodein.instance<Config>()
|
|
val logger by kodein.instance<Logger>()
|
|
val env = applicationEngineEnvironment {
|
|
module {
|
|
module(kodein)
|
|
}
|
|
log = logger
|
|
connector {
|
|
host = config.server.host
|
|
port = config.server.port
|
|
}
|
|
}
|
|
embeddedServer(Netty, env).start(wait = true)
|
|
}
|
|
|
|
|
|
fun Application.module(kodein: Kodein) {
|
|
loadFeatures(kodein)
|
|
|
|
routing {
|
|
registerRoutes(kodein)
|
|
}
|
|
|
|
}
|