SimpleNotes/api/src/features/ConfigurationFeature.kt

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)
}
}