38 lines
1.2 KiB
Kotlin
38 lines
1.2 KiB
Kotlin
package be.vandewalleh.features
|
|
|
|
import be.vandewalleh.auth.SimpleJWT
|
|
import com.zaxxer.hikari.HikariConfig
|
|
import com.zaxxer.hikari.HikariDataSource
|
|
import io.ktor.application.*
|
|
import org.kodein.di.Kodein
|
|
import org.kodein.di.generic.bind
|
|
import org.kodein.di.generic.instance
|
|
import javax.sql.DataSource
|
|
|
|
/**
|
|
* [Kodein] configuration module
|
|
*/
|
|
lateinit var configurationModule: Kodein.Module
|
|
|
|
fun Application.configurationFeature() {
|
|
val dataSource: DataSource = with(environment.config) {
|
|
val host = property("database.host").getString()
|
|
val port = property("database.port").getString()
|
|
val name = property("database.name").getString()
|
|
|
|
val hikariConfig = HikariConfig().apply {
|
|
jdbcUrl = "jdbc:mariadb://$host:$port/$name"
|
|
username = this@with.property("database.user").getString()
|
|
password = this@with.property("database.password").getString()
|
|
}
|
|
|
|
HikariDataSource(hikariConfig)
|
|
}
|
|
|
|
val simpleJwt = SimpleJWT(environment.config.property("jwt.secret").getString())
|
|
|
|
configurationModule = Kodein.Module("Configuration") {
|
|
bind<DataSource>() with instance(dataSource)
|
|
bind<SimpleJWT>() with instance(simpleJwt)
|
|
}
|
|
} |