Introduce Ktor-based HTTP server for Masterdata context, implement upsert logic for Altersklasse, Bundesland, and Land repositories, enhance IdempotencyPlugin, and add integration tests.
Build and Publish Docker Images / build-and-push (., backend/services/ping/Dockerfile, ping-service, ping-service) (push) Has been cancelled
Build and Publish Docker Images / build-and-push (., config/docker/caddy/web-app/Dockerfile, web-app, web-app) (push) Has been cancelled
Build and Publish Docker Images / build-and-push (., config/docker/keycloak/Dockerfile, keycloak, keycloak) (push) Has been cancelled
Build and Publish Docker Images / build-and-push (., backend/infrastructure/gateway/Dockerfile, api-gateway, api-gateway) (push) Has been cancelled

This commit is contained in:
2026-03-29 00:05:14 +01:00
parent eedce74a85
commit 8c2a82403e
21 changed files with 919 additions and 124 deletions
@@ -108,6 +108,13 @@ interface AltersklasseRepository {
*/
suspend fun save(altersklasse: AltersklasseDefinition): AltersklasseDefinition
/**
* Upsert basierend auf dem natürlichen Schlüssel Altersklassen-Code.
* Existiert bereits ein Datensatz mit gleichem Code, wird er aktualisiert,
* ansonsten wird ein neuer Datensatz eingefügt.
*/
suspend fun upsertByCode(altersklasse: AltersklasseDefinition): AltersklasseDefinition
/**
* Deletes an age class by ID.
*
@@ -75,6 +75,13 @@ interface BundeslandRepository {
*/
suspend fun save(bundesland: BundeslandDefinition): BundeslandDefinition
/**
* Upsert basierend auf dem natürlichen Schlüssel (landId + kuerzel).
* Existiert bereits ein Datensatz mit gleicher Kombination, wird er aktualisiert,
* ansonsten wird ein neuer Datensatz eingefügt.
*/
suspend fun upsertByLandIdAndKuerzel(bundesland: BundeslandDefinition): BundeslandDefinition
/**
* Deletes a federal state by ID.
*
@@ -77,6 +77,13 @@ interface LandRepository {
*/
suspend fun save(land: LandDefinition): LandDefinition
/**
* Upsert basierend auf dem natürlichen Schlüssel ISO Alpha-3.
* Existiert bereits ein Datensatz mit gleichem ISO Alpha-3 Code, wird er aktualisiert,
* ansonsten wird ein neuer Datensatz eingefügt.
*/
suspend fun upsertByIsoAlpha3(land: LandDefinition): LandDefinition
/**
* Deletes a country by ID.
*
@@ -103,6 +103,13 @@ interface PlatzRepository {
*/
suspend fun save(platz: Platz): Platz
/**
* Upsert basierend auf dem natürlichen Schlüssel (turnierId + name).
* Existiert bereits ein Datensatz mit gleicher Kombination, wird er aktualisiert,
* ansonsten wird ein neuer Datensatz eingefügt.
*/
suspend fun upsertByTurnierIdAndName(platz: Platz): Platz
/**
* Deletes a venue by ID.
*