Service Discovery einführen Consul als Service-Registry implementieren Services für automatische Registrierung konfigurieren Dynamisches Service-Routing im API-Gateway einrichten Health-Checks für jeden Service implementieren
52 lines
2.3 KiB
Kotlin
52 lines
2.3 KiB
Kotlin
package at.mocode.shared.database
|
|
|
|
import java.util.Properties
|
|
|
|
/**
|
|
* Konfiguration für die Datenbankverbindung.
|
|
* Parameter werden aus Umgebungsvariablen oder Property-Dateien gelesen.
|
|
*/
|
|
data class DatabaseConfig(
|
|
val jdbcUrl: String,
|
|
val username: String,
|
|
val password: String,
|
|
val driverClassName: String = "org.postgresql.Driver",
|
|
val maxPoolSize: Int = 10,
|
|
val minPoolSize: Int = 5,
|
|
val autoMigrate: Boolean = true
|
|
) {
|
|
companion object {
|
|
/**
|
|
* Erstellt eine Datenbank-Konfiguration aus Umgebungsvariablen und Properties.
|
|
* Wenn keine Umgebungsvariablen gefunden werden, werden Standardwerte für die Entwicklung verwendet.
|
|
*/
|
|
fun fromEnv(props: Properties = Properties()): DatabaseConfig {
|
|
// Priorität: Umgebungsvariablen > Properties > Standardwerte
|
|
val host = System.getenv("DB_HOST") ?: props.getProperty("database.host") ?: "localhost"
|
|
val port = System.getenv("DB_PORT") ?: props.getProperty("database.port") ?: "5432"
|
|
val database = System.getenv("DB_NAME") ?: props.getProperty("database.name") ?: "meldestelle_db"
|
|
val username = System.getenv("DB_USER") ?: props.getProperty("database.username") ?: "meldestelle_user"
|
|
val password = System.getenv("DB_PASSWORD") ?: props.getProperty("database.password") ?: "secure_password_change_me"
|
|
val maxPoolSize = System.getenv("DB_MAX_POOL_SIZE")?.toIntOrNull()
|
|
?: props.getProperty("database.maxPoolSize")?.toIntOrNull()
|
|
?: 10
|
|
val minPoolSize = System.getenv("DB_MIN_POOL_SIZE")?.toIntOrNull()
|
|
?: props.getProperty("database.minPoolSize")?.toIntOrNull()
|
|
?: 5
|
|
val autoMigrate = System.getenv("DB_AUTO_MIGRATE")?.toBoolean()
|
|
?: props.getProperty("database.autoMigrate")?.toBoolean()
|
|
?: true
|
|
|
|
return DatabaseConfig(
|
|
jdbcUrl = "jdbc:postgresql://$host:$port/$database",
|
|
username = username,
|
|
password = password,
|
|
driverClassName = "org.postgresql.Driver",
|
|
maxPoolSize = maxPoolSize,
|
|
minPoolSize = minPoolSize,
|
|
autoMigrate = autoMigrate
|
|
)
|
|
}
|
|
}
|
|
}
|