Remove Dom prefix from domain models: delete DomVeranstaltung, rename models like DomNennung to Nennung, update references in repositories, services, and tests for consistency.

This commit is contained in:
2026-04-08 22:59:12 +02:00
parent 085656a85b
commit 2d42578378
13 changed files with 71 additions and 218 deletions
@@ -13,7 +13,7 @@ import kotlin.uuid.Uuid
/**
* Domain-Modell für eine Abteilung im registration-context.
*
* Eine Abteilung ist die kleinste startbare Einheit innerhalb eines [DomBewerb]s.
* Eine Abteilung ist die kleinste startbare Einheit innerhalb eines [Bewerb]s.
* Ein Bewerb kann in mehrere Abteilungen aufgeteilt sein (z.B. Abt. 1: ohne Lizenz,
* Abt. 2: mit Lizenz R1). Die Aufteilung erfolgt gemäß ÖTO § 39 und den
* spartenspezifischen Bestimmungen.
@@ -32,7 +32,7 @@ import kotlin.uuid.Uuid
* @property updatedAt Letzter Änderungszeitpunkt.
*/
@Serializable
data class DomAbteilung(
data class Abteilung(
@Serializable(with = UuidSerializer::class)
val abteilungId: Uuid = Uuid.random(),
@@ -106,5 +106,5 @@ data class DomAbteilung(
/**
* Erstellt eine Kopie mit aktualisiertem Zeitstempel.
*/
fun withUpdatedTimestamp(): DomAbteilung = this.copy(updatedAt = Clock.System.now())
fun withUpdatedTimestamp(): Abteilung = this.copy(updatedAt = Clock.System.now())
}
@@ -13,7 +13,7 @@ import kotlin.uuid.Uuid
/**
* Domain-Modell für eine Startliste im registration-context.
*
* Eine Startliste gehört zu einer [DomAbteilung] und enthält die geordnete Liste
* Eine Startliste gehört zu einer [Abteilung] und enthält die geordnete Liste
* der Starter (Nennungen) mit ihren Startnummern. Sie durchläuft einen definierten
* Workflow: NICHT_ERSTELLT → ENTWURF → VEROEFFENTLICHT → GESPERRT → ARCHIVIERT.
*
@@ -128,7 +128,7 @@ data class DomStartliste(
/**
* Ein einzelner Eintrag in einer Startliste.
*
* Verbindet eine Startnummer mit einer Nennung ([DomNennung]).
* Verbindet eine Startnummer mit einer Nennung ([Nennung]).
*
* @property startnummer Die zugewiesene Startnummer (Kopfnummer gemäß Ubiquitous Language).
* @property nennungId Referenz auf die zugehörige Nennung (UUID).
@@ -40,7 +40,7 @@ import kotlin.uuid.Uuid
* @property updatedAt Timestamp when this entry was last updated.
*/
@Serializable
data class DomNennung(
data class Nennung(
@Serializable(with = UuidSerializer::class)
val nennungId: Uuid = Uuid.random(),
@@ -95,5 +95,5 @@ data class DomNennung(
/**
* Creates a copy of this entry with an updated timestamp.
*/
fun withUpdatedTimestamp(): DomNennung = this.copy(updatedAt = Clock.System.now())
fun withUpdatedTimestamp(): Nennung = this.copy(updatedAt = Clock.System.now())
}
@@ -40,7 +40,7 @@ import kotlin.uuid.Uuid
* @property createdAt Timestamp when this transfer was recorded.
*/
@Serializable
data class DomNennungsTransfer(
data class NennungsTransfer(
@Serializable(with = UuidSerializer::class)
val transferId: Uuid = Uuid.random(),
@@ -2,23 +2,23 @@
package at.mocode.entries.domain.repository
import at.mocode.entries.domain.model.DomAbteilung
import at.mocode.entries.domain.model.DomBewerb
import at.mocode.entries.domain.model.Abteilung
import at.mocode.entries.domain.model.Bewerb
import kotlin.uuid.Uuid
/**
* Repository-Interface für DomBewerb und DomAbteilung Domain-Operationen.
* Repository-Interface für Bewerb und Abteilung Domain-Operationen.
*/
interface CompetitionRepository {
// Bewerbe
suspend fun findBewerbById(id: Uuid): DomBewerb?
suspend fun findBewerbeByTurnierId(turnierId: Uuid): List<DomBewerb>
suspend fun saveBewerb(bewerb: DomBewerb): DomBewerb
suspend fun findBewerbById(id: Uuid): Bewerb?
suspend fun findBewerbeByTurnierId(turnierId: Uuid): List<Bewerb>
suspend fun saveBewerb(bewerb: Bewerb): Bewerb
suspend fun deleteBewerb(id: Uuid): Boolean
// Abteilungen
suspend fun findAbteilungById(id: Uuid): DomAbteilung?
suspend fun findAbteilungenByBewerbId(bewerbId: Uuid): List<DomAbteilung>
suspend fun saveAbteilung(abteilung: DomAbteilung): DomAbteilung
suspend fun findAbteilungById(id: Uuid): Abteilung?
suspend fun findAbteilungenByBewerbId(bewerbId: Uuid): List<Abteilung>
suspend fun saveAbteilung(abteilung: Abteilung): Abteilung
suspend fun deleteAbteilung(id: Uuid): Boolean
}
@@ -3,11 +3,11 @@
package at.mocode.entries.domain.repository
import at.mocode.core.domain.model.NennStatusE
import at.mocode.entries.domain.model.DomNennung
import at.mocode.entries.domain.model.Nennung
import kotlin.uuid.Uuid
/**
* Repository-Interface für DomNennung (Nennung) Domain-Operationen.
* Repository-Interface für Nennung (Nennung) Domain-Operationen.
*
* Definiert den Vertrag für Datenzugriffs-Operationen ohne Abhängigkeit
* von konkreten Implementierungsdetails (Datenbank, etc.).
@@ -17,52 +17,52 @@ interface NennungRepository {
/**
* Sucht eine Nennung anhand ihrer eindeutigen ID.
*/
suspend fun findById(id: Uuid): DomNennung?
suspend fun findById(id: Uuid): Nennung?
/**
* Sucht alle Nennungen für einen bestimmten Bewerb.
*/
suspend fun findByBewerbId(bewerbId: Uuid): List<DomNennung>
suspend fun findByBewerbId(bewerbId: Uuid): List<Nennung>
/**
* Sucht alle Nennungen für eine bestimmte Abteilung.
*/
suspend fun findByAbteilungId(abteilungId: Uuid): List<DomNennung>
suspend fun findByAbteilungId(abteilungId: Uuid): List<Nennung>
/**
* Sucht alle Nennungen für ein bestimmtes Turnier.
*/
suspend fun findByTurnierId(turnierId: Uuid): List<DomNennung>
suspend fun findByTurnierId(turnierId: Uuid): List<Nennung>
/**
* Sucht alle Nennungen eines bestimmten Reiters.
*/
suspend fun findByReiterId(reiterId: Uuid): List<DomNennung>
suspend fun findByReiterId(reiterId: Uuid): List<Nennung>
/**
* Sucht alle Nennungen für ein bestimmtes Pferd.
*/
suspend fun findByPferdId(pferdId: Uuid): List<DomNennung>
suspend fun findByPferdId(pferdId: Uuid): List<Nennung>
/**
* Sucht alle Nennungen eines Reiters für ein bestimmtes Turnier.
*/
suspend fun findByReiterIdAndTurnierId(reiterId: Uuid, turnierId: Uuid): List<DomNennung>
suspend fun findByReiterIdAndTurnierId(reiterId: Uuid, turnierId: Uuid): List<Nennung>
/**
* Sucht alle Nennungen mit einem bestimmten Status.
*/
suspend fun findByStatus(status: NennStatusE): List<DomNennung>
suspend fun findByStatus(status: NennStatusE): List<Nennung>
/**
* Sucht alle Nachnennungen für einen Bewerb.
*/
suspend fun findNachnennungenByBewerbId(bewerbId: Uuid): List<DomNennung>
suspend fun findNachnennungenByBewerbId(bewerbId: Uuid): List<Nennung>
/**
* Speichert eine Nennung (Insert oder Update).
*/
suspend fun save(nennung: DomNennung): DomNennung
suspend fun save(nennung: Nennung): Nennung
/**
* Löscht eine Nennung anhand ihrer ID.
@@ -2,14 +2,14 @@
package at.mocode.entries.domain.repository
import at.mocode.entries.domain.model.DomNennungsTransfer
import at.mocode.entries.domain.model.NennungsTransfer
import kotlin.uuid.Uuid
/**
* Repository-Interface für DomNennungsTransfer Domain-Operationen.
* Repository-Interface für NennungsTransfer Domain-Operationen.
*/
interface NennungsTransferRepository {
suspend fun findById(id: Uuid): DomNennungsTransfer?
suspend fun findByUrsprungsNennungId(nennungId: Uuid): List<DomNennungsTransfer>
suspend fun save(transfer: DomNennungsTransfer): DomNennungsTransfer
suspend fun findById(id: Uuid): NennungsTransfer?
suspend fun findByUrsprungsNennungId(nennungId: Uuid): List<NennungsTransfer>
suspend fun save(transfer: NennungsTransfer): NennungsTransfer
}
@@ -6,8 +6,8 @@ import at.mocode.core.domain.model.AbteilungsTeilungsTypE
import at.mocode.core.domain.model.ReiterLizenzKlasseE
import at.mocode.core.domain.model.PruefungsTypE
import at.mocode.core.domain.model.SparteE
import at.mocode.entries.domain.model.DomAbteilung
import at.mocode.entries.domain.model.DomBewerb
import at.mocode.entries.domain.model.Abteilung
import at.mocode.entries.domain.model.Bewerb
import at.mocode.masterdata.domain.model.Reiter
/**
@@ -32,13 +32,13 @@ class AbteilungsRegelService {
* @param bewerb Der betroffene Bewerb.
* @param abteilungen Liste der verfügbaren Abteilungen des Bewerbs.
* @param reiter Der Reiter, der genannt werden soll.
* @return Die passende [DomAbteilung] oder null, wenn keine Zuordnung eindeutig möglich ist.
* @return Die passende [Abteilung] oder null, wenn keine Zuordnung eindeutig möglich ist.
*/
fun bestimmeAbteilung(
bewerb: DomBewerb,
abteilungen: List<DomAbteilung>,
bewerb: Bewerb,
abteilungen: List<Abteilung>,
reiter: Reiter
): DomAbteilung? {
): Abteilung? {
if (abteilungen.isEmpty()) return null
if (abteilungen.size == 1) return abteilungen.first()
@@ -115,8 +115,8 @@ class AbteilungsRegelService {
* Beispiel CSN-C-NEU: Ein Bewerb muss zwingend eine Abteilung für lizenzfreie Reiter haben.
*/
fun validateStrukturelleVollstaendigkeit(
bewerb: DomBewerb,
abteilungen: List<DomAbteilung>
bewerb: Bewerb,
abteilungen: List<Abteilung>
): List<String> {
val warnings = mutableListOf<String>()
@@ -3,8 +3,8 @@
package at.mocode.entries.domain.service
import at.mocode.core.domain.model.*
import at.mocode.entries.domain.model.DomAbteilung
import at.mocode.entries.domain.model.DomBewerb
import at.mocode.entries.domain.model.Abteilung
import at.mocode.entries.domain.model.Bewerb
import at.mocode.masterdata.domain.model.Reiter
import kotlin.test.Test
import kotlin.test.assertEquals
@@ -213,7 +213,7 @@ class AbteilungsRegelServiceTest {
pruefungsTyp: PruefungsTypE = PruefungsTypE.SPRINGEN_UEBRIG,
teilungsTyp: AbteilungsTeilungsTypE = AbteilungsTeilungsTypE.KEINE,
hoeheCm: Int? = null
) = DomBewerb(
) = Bewerb(
turnierId = Uuid.random(),
bewerbNummer = 1,
bezeichnung = "Testbewerb",
@@ -229,7 +229,7 @@ class AbteilungsRegelServiceTest {
nummer: Int,
bezeichnung: String? = null,
starterAnzahl: Int = 0
) = DomAbteilung(
) = Abteilung(
bewerbId = bewerbId,
abteilungsNummer = nummer,
bezeichnung = bezeichnung,