core/server/src/main/java/dev/inmo/postssystem/server/Config.kt

36 lines
1.1 KiB
Kotlin
Raw Normal View History

2021-11-24 07:52:27 +00:00
package dev.inmo.postssystem.server
2022-05-19 18:15:49 +00:00
import dev.inmo.postssystem.features.common.server.ServerModuleLoader
2021-11-24 07:52:27 +00:00
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import java.io.File
@Serializable
data class Config(
val host: String = "0.0.0.0",
val port: Int = 8080,
@SerialName("database")
val databaseConfig: DatabaseConfig = DatabaseConfig(),
@SerialName("auth")
val authConfig: AuthConfig = AuthConfig(),
val filesFolder: String,
2022-03-11 14:37:40 +00:00
@SerialName("modules")
val modulesClassPaths: List<String>,
2021-11-24 07:52:27 +00:00
val debugMode: Boolean = false
) {
val filesFolderFile: File
get() = File(filesFolder)
2022-01-07 17:38:55 +00:00
2022-03-11 14:37:40 +00:00
@kotlinx.serialization.Transient
val modules by lazy {
modulesClassPaths.mapNotNull { moduleClassPath ->
runCatching {
Class.forName(moduleClassPath).constructors.firstOrNull { it.parameterCount == 0 } ?.newInstance() as ServerModuleLoader
2022-03-11 14:37:40 +00:00
}.onFailure {
println("Unable to load $moduleClassPath")
it.printStackTrace()
}.getOrNull()
}
}
2021-11-24 07:52:27 +00:00
}