Refactor domain models (DomFunktionaer, DomReiter, DomPferd) to align with ZNS conventions: simplify naming, update properties, and enhance parser logic. Adjust related controllers, repository methods, and tests. Update MASTER_ROADMAP with changes to domain models.

This commit is contained in:
2026-04-06 00:00:20 +02:00
parent 1e5fa3d053
commit f50d4deb16
57 changed files with 811 additions and 532 deletions
@@ -3,7 +3,7 @@
package at.mocode.masterdata.api.rest
import at.mocode.core.domain.serialization.InstantSerializer
import at.mocode.masterdata.domain.model.DomFunktionaer
import at.mocode.masterdata.domain.model.Funktionaer
import at.mocode.masterdata.domain.repository.FunktionaerRepository
import io.ktor.http.*
import io.ktor.server.request.*
@@ -96,8 +96,8 @@ class FunktionaerController(private val funktionaerRepository: FunktionaerReposi
*/
post {
val req = call.receive<FunktionaerCreateRequest>()
val domFunktionaer = DomFunktionaer(
satzID = req.satzID,
val domFunktionaer = Funktionaer(
satzId = req.satzID,
satzNummer = req.satzNummer,
name = req.name,
qualifikationen = req.qualifikationen,
@@ -139,9 +139,9 @@ class FunktionaerController(private val funktionaerRepository: FunktionaerReposi
private fun parseUuid(value: String?): Uuid? = value?.let { runCatching { Uuid.parse(it) }.getOrNull() }
private fun DomFunktionaer.toDto() = FunktionaerDto(
private fun Funktionaer.toDto() = FunktionaerDto(
funktionaerId = funktionaerId.toString(),
satzID = satzID,
satzID = satzId,
satzNummer = satzNummer,
name = name,
qualifikationen = qualifikationen,
@@ -4,7 +4,7 @@ package at.mocode.masterdata.api.rest
import at.mocode.core.domain.model.PferdeGeschlechtE
import at.mocode.core.domain.serialization.InstantSerializer
import at.mocode.masterdata.domain.model.DomPferd
import at.mocode.masterdata.domain.model.Pferd
import at.mocode.masterdata.domain.repository.HorseRepository
import io.ktor.http.*
import io.ktor.server.request.*
@@ -110,7 +110,7 @@ class HorseController(private val horseRepository: HorseRepository) {
val req = call.receive<HorseCreateRequest>()
val geschlecht = runCatching { PferdeGeschlechtE.valueOf(req.geschlecht) }.getOrNull()
?: return@post call.respond(HttpStatusCode.BadRequest, "Ungültiges Geschlecht: ${req.geschlecht}")
val domPferd = DomPferd(
val pferd = Pferd(
kopfnummer = req.kopfnummer,
pferdeName = req.pferdeName,
lebensnummer = req.lebensnummer,
@@ -120,7 +120,7 @@ class HorseController(private val horseRepository: HorseRepository) {
satznummer = req.satznummer,
istAktiv = req.istAktiv
)
val saved = horseRepository.save(domPferd)
val saved = horseRepository.save(pferd)
call.respond(HttpStatusCode.Created, saved.toDto())
}
@@ -161,7 +161,7 @@ class HorseController(private val horseRepository: HorseRepository) {
private fun parseUuid(value: String?): Uuid? = value?.let { runCatching { Uuid.parse(it) }.getOrNull() }
private fun DomPferd.toDto() = HorseDto(
private fun Pferd.toDto() = HorseDto(
pferdId = pferdId.toString(),
kopfnummer = kopfnummer,
pferdeName = pferdeName,
@@ -2,10 +2,10 @@
package at.mocode.masterdata.api.rest
import at.mocode.core.domain.model.LizenzKlasseE
import at.mocode.core.domain.model.ReiterLizenzKlasseE
import at.mocode.core.domain.serialization.InstantSerializer
import at.mocode.core.domain.serialization.LocalDateSerializer
import at.mocode.masterdata.domain.model.DomReiter
import at.mocode.masterdata.domain.model.Reiter
import at.mocode.masterdata.domain.repository.ReiterRepository
import io.ktor.http.*
import io.ktor.server.request.*
@@ -132,9 +132,9 @@ class ReiterController(private val reiterRepository: ReiterRepository) {
*/
post {
val req = call.receive<ReiterCreateRequest>()
val lizenzKlasse = runCatching { LizenzKlasseE.valueOf(req.lizenzKlasse) }.getOrNull()
val lizenzKlasse = runCatching { ReiterLizenzKlasseE.valueOf(req.lizenzKlasse) }.getOrNull()
?: return@post call.respond(HttpStatusCode.BadRequest, "Ungültige lizenzKlasse: ${req.lizenzKlasse}")
val domReiter = DomReiter(
val domReiter = Reiter(
personId = Uuid.random(),
satznummer = req.satznummer,
nachname = req.nachname,
@@ -165,7 +165,7 @@ class ReiterController(private val reiterRepository: ReiterRepository) {
val existing = reiterRepository.findById(id) ?: return@put call.respond(HttpStatusCode.NotFound)
val req = call.receive<ReiterUpdateRequest>()
val lizenzKlasse = req.lizenzKlasse?.let {
runCatching { LizenzKlasseE.valueOf(it) }.getOrNull()
runCatching { ReiterLizenzKlasseE.valueOf(it) }.getOrNull()
?: return@put call.respond(HttpStatusCode.BadRequest, "Ungültige lizenzKlasse: $it")
} ?: existing.lizenzKlasse
val updated = existing.copy(
@@ -202,7 +202,7 @@ class ReiterController(private val reiterRepository: ReiterRepository) {
private fun parseUuid(value: String?): Uuid? = value?.let { runCatching { Uuid.parse(it) }.getOrNull() }
private fun DomReiter.toDto() = ReiterDto(
private fun Reiter.toDto() = ReiterDto(
reiterId = reiterId.toString(),
satznummer = satznummer,
nachname = nachname,
@@ -3,7 +3,7 @@
package at.mocode.masterdata.api.rest
import at.mocode.core.domain.serialization.InstantSerializer
import at.mocode.masterdata.domain.model.DomVerein
import at.mocode.masterdata.domain.model.Verein
import at.mocode.masterdata.domain.repository.VereinRepository
import io.ktor.http.*
import io.ktor.server.request.*
@@ -24,7 +24,6 @@ class VereinController(private val vereinRepository: VereinRepository) {
val vereinId: String,
val vereinsNummer: String,
val name: String,
val kurzname: String? = null,
val bundesland: String? = null,
val ort: String? = null,
val plz: String? = null,
@@ -32,9 +31,9 @@ class VereinController(private val vereinRepository: VereinRepository) {
val email: String? = null,
val telefon: String? = null,
val website: String? = null,
val oepsRegionNummer: String? = null,
val istVeranstalter: Boolean,
val istAktiv: Boolean,
val imageUrl: String? = null,
val bemerkungen: String? = null,
@Serializable(with = InstantSerializer::class)
val updatedAt: Instant
@@ -44,7 +43,6 @@ class VereinController(private val vereinRepository: VereinRepository) {
data class VereinCreateRequest(
val vereinsNummer: String,
val name: String,
val kurzname: String? = null,
val bundesland: String? = null,
val ort: String? = null,
val plz: String? = null,
@@ -52,16 +50,15 @@ class VereinController(private val vereinRepository: VereinRepository) {
val email: String? = null,
val telefon: String? = null,
val website: String? = null,
val oepsRegionNummer: String? = null,
val istVeranstalter: Boolean = false,
val istAktiv: Boolean = true,
val imageUrl: String? = null,
val bemerkungen: String? = null
)
@Serializable
data class VereinUpdateRequest(
val name: String? = null,
val kurzname: String? = null,
val bundesland: String? = null,
val ort: String? = null,
val plz: String? = null,
@@ -69,9 +66,9 @@ class VereinController(private val vereinRepository: VereinRepository) {
val email: String? = null,
val telefon: String? = null,
val website: String? = null,
val oepsRegionNummer: String? = null,
val istVeranstalter: Boolean? = null,
val istAktiv: Boolean? = null,
val imageUrl: String? = null,
val bemerkungen: String? = null
)
@@ -95,7 +92,7 @@ class VereinController(private val vereinRepository: VereinRepository) {
}
/**
* GET /verein/search?q=... — Sucht Vereine nach Name oder Kurzname.
* GET /verein/search?q=... — Sucht Vereine nach Name.
*/
get("/search") {
val query = call.request.queryParameters["q"] ?: ""
@@ -126,10 +123,9 @@ class VereinController(private val vereinRepository: VereinRepository) {
*/
post {
val req = call.receive<VereinCreateRequest>()
val domVerein = DomVerein(
val domVerein = Verein(
vereinsNummer = req.vereinsNummer,
name = req.name,
kurzname = req.kurzname,
vereinName = req.name,
bundesland = req.bundesland,
ort = req.ort,
plz = req.plz,
@@ -137,9 +133,9 @@ class VereinController(private val vereinRepository: VereinRepository) {
email = req.email,
telefon = req.telefon,
website = req.website,
oepsRegionNummer = req.oepsRegionNummer,
istVeranstalter = req.istVeranstalter,
istAktiv = req.istAktiv,
imageUrl = req.imageUrl,
bemerkungen = req.bemerkungen
)
val saved = vereinRepository.save(domVerein)
@@ -154,8 +150,7 @@ class VereinController(private val vereinRepository: VereinRepository) {
val existing = vereinRepository.findById(id) ?: return@put call.respond(HttpStatusCode.NotFound)
val req = call.receive<VereinUpdateRequest>()
val updated = existing.copy(
name = req.name ?: existing.name,
kurzname = req.kurzname ?: existing.kurzname,
vereinName = req.name ?: existing.vereinName,
bundesland = req.bundesland ?: existing.bundesland,
ort = req.ort ?: existing.ort,
plz = req.plz ?: existing.plz,
@@ -163,9 +158,9 @@ class VereinController(private val vereinRepository: VereinRepository) {
email = req.email ?: existing.email,
telefon = req.telefon ?: existing.telefon,
website = req.website ?: existing.website,
oepsRegionNummer = req.oepsRegionNummer ?: existing.oepsRegionNummer,
istVeranstalter = req.istVeranstalter ?: existing.istVeranstalter,
istAktiv = req.istAktiv ?: existing.istAktiv,
imageUrl = req.imageUrl ?: existing.imageUrl,
bemerkungen = req.bemerkungen ?: existing.bemerkungen
)
val saved = vereinRepository.save(updated)
@@ -185,11 +180,10 @@ class VereinController(private val vereinRepository: VereinRepository) {
private fun parseUuid(value: String?): Uuid? = value?.let { runCatching { Uuid.parse(it) }.getOrNull() }
private fun DomVerein.toDto() = VereinDto(
private fun Verein.toDto() = VereinDto(
vereinId = vereinId.toString(),
vereinsNummer = vereinsNummer,
name = name,
kurzname = kurzname,
name = vereinName,
bundesland = bundesland,
ort = ort,
plz = plz,
@@ -197,9 +191,9 @@ class VereinController(private val vereinRepository: VereinRepository) {
email = email,
telefon = telefon,
website = website,
oepsRegionNummer = oepsRegionNummer,
istVeranstalter = istVeranstalter,
istAktiv = istAktiv,
imageUrl = imageUrl,
bemerkungen = bemerkungen,
updatedAt = updatedAt
)