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() with instance(dataSource) bind() with instance(simpleJwt) } }