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
@@ -121,8 +121,8 @@ class CreateAltersklasseUseCase(
updatedAt = now
)
// Save to repository
val savedAltersklasse = altersklasseRepository.save(altersklasse)
// Upsert anhand des natürlichen Schlüssels (altersklasseCode)
val savedAltersklasse = altersklasseRepository.upsertByCode(altersklasse)
return CreateAltersklasseResponse(
altersklasse = savedAltersklasse,
success = true
@@ -117,8 +117,8 @@ class CreateBundeslandUseCase(
updatedAt = now
)
// Save to repository
val savedBundesland = bundeslandRepository.save(bundesland)
// Upsert anhand des natürlichen Schlüssels (landId + kuerzel)
val savedBundesland = bundeslandRepository.upsertByLandIdAndKuerzel(bundesland)
return CreateBundeslandResponse(
bundesland = savedBundesland,
success = true
@@ -123,8 +123,8 @@ class CreateCountryUseCase(
updatedAt = now
)
// Save to repository
val savedCountry = landRepository.save(country)
// Upsert anhand des natürlichen Schlüssels (ISO Alpha-3)
val savedCountry = landRepository.upsertByIsoAlpha3(country)
return CreateCountryResponse(
country = savedCountry,
success = true
@@ -115,8 +115,8 @@ class CreatePlatzUseCase(
updatedAt = now
)
// Save to repository
val savedPlatz = platzRepository.save(platz)
// Upsert anhand des natürlichen Schlüssels (turnierId + name)
val savedPlatz = platzRepository.upsertByTurnierIdAndName(platz)
return CreatePlatzResponse(
platz = savedPlatz,
success = true