versuch ein Daten-Modell aufzubauen

This commit is contained in:
stefan
2025-05-09 13:57:47 +02:00
parent bd399fdcd3
commit d1f5d07fab
16 changed files with 481 additions and 63 deletions
@@ -0,0 +1,25 @@
package at.mocode.shared.model.entitaeten
import at.mocode.shared.model.serializers.KotlinInstantSerializer
import at.mocode.shared.model.serializers.UuidSerializer
import com.benasher44.uuid.Uuid
import kotlinx.datetime.Clock
import kotlinx.datetime.Instant
import kotlinx.serialization.Serializable
@Serializable
data class Abteilung(
@Serializable(with = UuidSerializer::class)
val id: Uuid,
@Serializable(with = UuidSerializer::class)
val bewerbId: Uuid,
val bezeichnung: String, // z.B. "R1", "R2/RS2 u. höher"
val beginnZeit: String, // TIME als String, z.B. "09:00" oder "anschließend"
val istFixeBeginnZeit: Boolean = false,
@Serializable(with = KotlinInstantSerializer::class)
val createdAt: Instant = Clock.System.now(),
@Serializable(with = KotlinInstantSerializer::class)
var updatedAt: Instant = Clock.System.now()
)
@@ -0,0 +1,41 @@
package at.mocode.shared.model.entitaeten
import at.mocode.shared.model.enums.BewerbStatus
import at.mocode.shared.model.enums.Sparte
import at.mocode.shared.model.serializers.BigDecimalSerializer
import at.mocode.shared.model.serializers.KotlinInstantSerializer
import at.mocode.shared.model.serializers.UuidSerializer
import com.benasher44.uuid.Uuid
import com.ionspin.kotlin.bignum.decimal.BigDecimal
import kotlinx.datetime.Instant
import kotlinx.datetime.LocalDate
import kotlinx.serialization.Serializable
@Serializable
data class Bewerb(
@Serializable(with = UuidSerializer::class)
val id: Uuid,
@Serializable(with = UuidSerializer::class)
var turnierId: Uuid,
var nummer: Int,
var bezeichnung: String,
var klasse: String,
var datum: LocalDate,
var sparte: Sparte,
var richtverfahren: String?,
var beginnZeit: String, // TIME als String (z.B. "09:00" oder "anschließend")
var istFixeBeginnZeit: Boolean = false,
var laufzeitProStarter: Int?, // Dauer pro Starter in Minuten
var maxStarter: Int?,
@Serializable(with = BigDecimalSerializer::class)
var nenngeld: BigDecimal?,
var sonderpruefungReferenz: SonderpruefungReferenz?,
var cupReferenz: List<CupReferenz> = emptyList(),
var status: BewerbStatus = BewerbStatus.GEPLANT,
var details: String?,
var einteilung: String?,
@Serializable(with = KotlinInstantSerializer::class)
val createdAt: Instant,
@Serializable(with = KotlinInstantSerializer::class)
var updatedAt: Instant
)
@@ -16,3 +16,27 @@ data class MeisterschaftReferenz(
var berechnungsstrategie: String?,
var reglementUrl: String?
)
@Serializable
data class CupReferenz(
@Serializable(with = UuidSerializer::class)
val id: Uuid = uuid4(),
@Serializable(with = UuidSerializer::class)
var cupId: Uuid, // FK zu einer Meisterschafts-Entität
var name: String,
var betrifftBewerbNummern: List<Int>,
var berechnungsstrategie: String?,
var reglementUrl: String?
)
@Serializable
data class SonderpruefungReferenz(
@Serializable(with = UuidSerializer::class)
val id: Uuid = uuid4(),
@Serializable(with = UuidSerializer::class)
var cupId: Uuid, // FK zu einer Meisterschafts-Entität
var name: String,
var betrifftBewerbNummern: List<Int>,
var berechnungsstrategie: String?,
var reglementUrl: String?
)
@@ -1,12 +1,7 @@
package at.mocode.shared.model.entitaeten
import at.mocode.shared.model.enums.NennungsArt
import at.mocode.shared.model.serializers.BigDecimalSerializer
import at.mocode.shared.model.serializers.KotlinInstantSerializer
import at.mocode.shared.model.serializers.KotlinLocalDateSerializer
import at.mocode.shared.model.serializers.KotlinLocalDateTimeSerializer
import at.mocode.shared.model.serializers.UuidSerializer
import at.mocode.shared.model.serializers.*
import com.benasher44.uuid.Uuid
import com.benasher44.uuid.uuid4
import com.ionspin.kotlin.bignum.decimal.BigDecimal