Move ConfigLoader

This commit is contained in:
2020-10-24 01:31:03 +02:00
parent 8b8dbd6fe5
commit 0260bea951
6 changed files with 19 additions and 18 deletions
+6
View File
@@ -11,5 +11,11 @@
<artifactId>simplenotes-config</artifactId>
<dependencies>
<dependency>
<groupId>org.koin</groupId>
<artifactId>koin-core</artifactId>
</dependency>
</dependencies>
</project>
@@ -0,0 +1,45 @@
package be.simplenotes.config
import java.util.*
import java.util.concurrent.TimeUnit
class ConfigLoader {
//region Config loading
private val properties: Properties = javaClass
.getResource("/application.properties")
.openStream()
.use {
Properties().apply { load(it) }
}
private val env = System.getenv()
private fun value(key: String): String =
env[key.toUpperCase().replace(".", "_")]
?: properties.getProperty(key)
?: error("Missing config key $key")
//endregion
val jwtConfig
get() = JwtConfig(
secret = value("jwt.secret"),
validity = value("jwt.validity").toLong(),
timeUnit = TimeUnit.HOURS,
)
val dataSourceConfig
get() = DataSourceConfig(
jdbcUrl = value("jdbcUrl"),
driverClassName = value("driverClassName"),
username = value("username"),
password = value("password"),
maximumPoolSize = value("maximumPoolSize").toInt(),
connectionTimeout = value("connectionTimeout").toLong()
)
val serverConfig
get() = ServerConfig(
host = value("host"),
port = value("port").toInt(),
)
}
@@ -0,0 +1,10 @@
package be.simplenotes.config
import org.koin.dsl.module
val configModule = module {
single { ConfigLoader() }
single { get<ConfigLoader>().dataSourceConfig }
single { get<ConfigLoader>().jwtConfig }
single { get<ConfigLoader>().serverConfig }
}
@@ -0,0 +1,12 @@
host=localhost
port=8080
#
jdbcUrl=jdbc:h2:./notes-db;
driverClassName=org.h2.Driver
username=h2
password=
maximumPoolSize=10
connectionTimeout=3000
#
jwt.secret=PliLvfk7l4WF+cZJk66LR5Mpnh+ocbvJ2wfUCK2UCms=
jwt.validity=24