This commit introduces a comprehensive refactoring and stabilization of the core module, establishing a robust and well-tested foundation (Shared Kernel) for all other services. The module has been thoroughly analyzed, cleaned up, and equipped with a professional-grade test suite. Architectural Refinements: - Slimmed down `core-domain` to be a true, minimal Shared Kernel by removing all domain-specific enums (`PferdeGeschlechtE`, `SparteE`, etc.). This enforces loose coupling between feature modules. - The only remaining enum is `DatenQuelleE`, which is a cross-cutting concern. Code Refactoring & Improvements: - Refactored the configuration loading by introducing a `ConfigLoader` class. This decouples the `AppConfig` data classes from the loading mechanism, significantly improving the testability of components that rely on configuration. - Unified the previously duplicated `ValidationResult` and `ValidationError` classes into a single, serializable source of truth, ensuring consistent error reporting across all APIs. Testing Enhancements: - Introduced a comprehensive test suite for the core module, bringing it to a production-ready quality standard. - Implemented the "gold standard" for database testing by replacing the previous H2 approach with **Testcontainers**. The `DatabaseFactory` is now tested against a real, ephemeral PostgreSQL container, guaranteeing 100% production parity. - Added robust unit and integration tests for critical components, including the new `ConfigLoader`, all custom `Serializers`, and the `ApiResponse` logic. - Fixed all compilation and runtime errors in the test suite, resulting in a successful `./gradlew clean build`.
45 lines
1.3 KiB
Plaintext
45 lines
1.3 KiB
Plaintext
// Dieses Modul stellt gemeinsame technische Hilfsfunktionen bereit,
|
|
// wie z.B. Konfigurations-Management, Datenbank-Verbindungen und Service Discovery.
|
|
plugins {
|
|
alias(libs.plugins.kotlin.jvm)
|
|
}
|
|
|
|
kotlin {
|
|
compilerOptions {
|
|
freeCompilerArgs.add("-opt-in=kotlin.time.ExperimentalTime")
|
|
}
|
|
}
|
|
|
|
dependencies {
|
|
// Abhängigkeit zum platform-Modul für zentrale Versionsverwaltung
|
|
api(projects.platform.platformDependencies)
|
|
// Abhängigkeit zum core-domain-Modul, um dessen Typen zu verwenden
|
|
api(projects.core.coreDomain)
|
|
|
|
// Asynchronität
|
|
api(libs.kotlinx.coroutines.core)
|
|
|
|
// Datenbank-Management
|
|
// OPTIMIERUNG: Verwendung von Bundles für Exposed und Flyway
|
|
api(libs.bundles.exposed)
|
|
api(libs.bundles.flyway)
|
|
api(libs.hikari.cp)
|
|
|
|
// Service Discovery
|
|
// api(libs.consul.client) wird getauscht mir spring-cloud-starter-consul-discovery
|
|
api(libs.spring.cloud.starter.consul.discovery)
|
|
|
|
// Logging
|
|
api(libs.kotlin.logging.jvm)
|
|
|
|
// Utilities
|
|
api(libs.bignum)
|
|
implementation(libs.room.common.jvm) // Für BigDecimal Serialisierung
|
|
|
|
// Testing
|
|
testImplementation(projects.platform.platformTesting)
|
|
testImplementation(libs.bundles.testing.jvm)
|
|
testImplementation(libs.kotlin.test)
|
|
testRuntimeOnly(libs.postgresql.driver)
|
|
}
|