daten Klassen im shared Ordner erstellt und gradle überarbeitet

This commit is contained in:
stefan
2025-05-06 15:07:07 +02:00
parent 490e86bf9d
commit b513643b02
28 changed files with 217 additions and 256 deletions
+13 -13
View File
@@ -3,7 +3,7 @@ import org.jetbrains.kotlin.gradle.targets.js.webpack.KotlinWebpackConfig
plugins {
alias(libs.plugins.kotlinMultiplatform)
kotlin("plugin.serialization") version libs.versions.kotlin.get()
alias(libs.plugins.kotlinSerialization)
}
kotlin {
@@ -29,20 +29,20 @@ kotlin {
sourceSets {
val commonMain by getting {
dependencies {
// put your Multiplatform dependencies here
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.1")
implementation("org.jetbrains.kotlinx:kotlinx-datetime:0.4.1")
implementation("com.benasher44:uuid:0.8.1")
implementation("com.ionspin.kotlin:bignum:0.3.8")
// Multiplatform dependencies
implementation(libs.kotlinx.serialization.json)
implementation(libs.kotlinx.datetime)
implementation(libs.uuid)
implementation(libs.bignum)
}
}
val jvmMain by getting {
dependsOn(commonMain)
}
val wasmJsMain by getting {
dependsOn(commonMain)
}
// val jvmMain by getting {
// dependsOn(commonMain)
// }
//
// val wasmJsMain by getting {
// dependsOn(commonMain)
// }
}
}
@@ -1,9 +0,0 @@
package at.mocode
class Greeting {
private val platform = getPlatform()
fun greet(): String {
return "Hello, ${platform.name}!"
}
}
@@ -1,7 +0,0 @@
package at.mocode
interface Platform {
val name: String
}
expect fun getPlatform(): Platform
@@ -1,14 +1,19 @@
package at.mocode.model.entitaeten
import at.mocode.model.serializer.BigDecimalSerializer
import at.mocode.model.serializer.JavaUUIDSerializer
import at.mocode.model.serializer.KotlinInstantSerializer
import at.mocode.model.serializers.BigDecimalSerializer
import at.mocode.model.serializers.KotlinInstantSerializer
import at.mocode.model.serializers.UuidSerializer
import com.benasher44.uuid.Uuid
import com.benasher44.uuid.uuid4
import com.ionspin.kotlin.bignum.decimal.BigDecimal
import kotlinx.datetime.Clock
import kotlinx.datetime.Instant
import kotlinx.serialization.Serializable
@Serializable
data class Artikel(
@Serializable(with = JavaUUIDSerializer::class)
val id: UUID = UUID.randomUUID(),
@Serializable(with = UuidSerializer::class)
val id: Uuid = uuid4(),
var bezeichnung: String,
@Serializable(with = BigDecimalSerializer::class) // Beispiel für Serializer
var preis: BigDecimal,
@@ -1,14 +1,16 @@
package at.mocode.model.entitaeten
import at.mocode.model.serializer.JavaUUIDSerializer
import at.mocode.model.serializers.UuidSerializer
import com.benasher44.uuid.Uuid
import com.benasher44.uuid.uuid4
import kotlinx.serialization.Serializable
@Serializable
data class MeisterschaftReferenz(
@Serializable(with = JavaUUIDSerializer::class)
val id: UUID = UUID.randomUUID(),
@Serializable(with = JavaUUIDSerializer::class)
var meisterschaftId: UUID, // FK zu einer Meisterschafts-Entität
@Serializable(with = UuidSerializer::class)
val id: Uuid = uuid4(),
@Serializable(with = UuidSerializer::class)
var meisterschaftId: Uuid, // FK zu einer Meisterschafts-Entität
var name: String,
var betrifftBewerbNummern: List<Int>,
var berechnungsstrategie: String?,
@@ -1,13 +1,15 @@
package at.mocode.model.entitaeten
import at.mocode.model.enums.PlatzTyp
import at.mocode.model.serializer.JavaUUIDSerializer
import at.mocode.model.serializers.UuidSerializer
import com.benasher44.uuid.Uuid
import com.benasher44.uuid.uuid4
import kotlinx.serialization.Serializable
@Serializable
data class Platz(
@Serializable(with = JavaUUIDSerializer::class)
val id: UUID = UUID.randomUUID(),
@Serializable(with = UuidSerializer::class)
val id: Uuid = uuid4(),
var name: String,
var dimension: String?,
var boden: String?,
@@ -1,31 +1,22 @@
package at.mocode.model.entitaeten
// Hinweis: In einem Kotlin Multiplatform-Projekt können JVM-spezifische Klassen wie
// java.math.BigDecimal und java.util.UUID nicht im commonMain-Quellcode verwendet werden.
// Stattdessen werden multiplatformfähige Alternativen verwendet:
// - com.benasher44.uuid.Uuid anstelle von java.util.UUID
// - com.ionspin.kotlin.bignum.decimal.BigDecimal anstelle von java.math.BigDecimal
// Diese Klassen bieten ähnliche Funktionalität, sind aber auf allen Plattformen verfügbar.
//
// Für JVM-spezifischen Code können diese Klassen im jvmMain-Quellset verwendet werden.
// Siehe: shared/src/jvmMain/kotlin/at/mocode/model/JvmSerializer.kt
import at.mocode.model.enums.NennungsArt
import at.mocode.model.serializer.*
import at.mocode.model.serializers.*
import com.benasher44.uuid.Uuid
import com.benasher44.uuid.uuid4
import com.ionspin.kotlin.bignum.decimal.BigDecimal
import kotlinx.datetime.Clock
import kotlinx.datetime.Instant
import kotlinx.datetime.LocalDate
import kotlinx.datetime.LocalDateTime
import kotlinx.serialization.Serializable
import com.benasher44.uuid.Uuid as UUID
@Serializable
data class Turnier(
@Serializable(with = JavaUUIDSerializer::class)
val id: UUID = UUID.randomUUID(),
@Serializable(with = JavaUUIDSerializer::class)
var veranstaltungId: UUID,
@Serializable(with = UuidSerializer::class)
val id: Uuid = uuid4(),
@Serializable(with = UuidSerializer::class)
var veranstaltungId: Uuid,
var oepsTurnierNr: String,
var titel: String,
var untertitel: String?,
@@ -44,17 +35,17 @@ data class Turnier(
var startgeldStandard: BigDecimal?,
var austragungsplaetze: List<Platz> = emptyList(),
var vorbereitungsplaetze: List<Platz> = emptyList(),
@Serializable(with = JavaUUIDSerializer::class)
var turnierleiterId: UUID?, // FK zu Person
@Serializable(with = JavaUUIDSerializer::class)
var turnierbeauftragterId: UUID?, // FK zu Person
var richterIds: List<@Serializable(with = JavaUUIDSerializer::class)UUID> = emptyList(), // Pool an Richtern
var parcoursbauerIds: List<@Serializable(with = JavaUUIDSerializer::class)UUID> = emptyList(), // FKs zu Person
var parcoursAssistentIds: List<@Serializable(with = JavaUUIDSerializer::class)UUID> = emptyList(), // FKs zu Person
@Serializable(with = UuidSerializer::class)
var turnierleiterId: Uuid?, // FK zu Person
@Serializable(with = UuidSerializer::class)
var turnierbeauftragterId: Uuid?, // FK zu Person
var richterIds: List<@Serializable(with = UuidSerializer::class) Uuid> = emptyList(), // Pool an Richtern
var parcoursbauerIds: List<@Serializable(with = UuidSerializer::class) Uuid> = emptyList(), // FKs zu Person
var parcoursAssistentIds: List<@Serializable(with = UuidSerializer::class) Uuid> = emptyList(), // FKs zu Person
var tierarztInfos: String?,
var hufschmiedInfo: String?,
@Serializable(with = JavaUUIDSerializer::class)
var meldestelleVerantwortlicherId: UUID?, // FK zu Person
@Serializable(with = UuidSerializer::class)
var meldestelleVerantwortlicherId: Uuid?, // FK zu Person
var meldestelleTelefon: String?,
var meldestelleOeffnungszeiten: String?,
var ergebnislistenUrl: String?, // Wird später meist system-generiert
@@ -1,13 +1,20 @@
package at.mocode.model.entitaeten
import at.mocode.model.serializer.JavaUUIDSerializer
import at.mocode.model.serializer.KotlinInstantSerializer
import at.mocode.model.enums.VeranstalterTyp
import at.mocode.model.serializers.KotlinInstantSerializer
import at.mocode.model.serializers.KotlinLocalDateSerializer
import at.mocode.model.serializers.UuidSerializer
import com.benasher44.uuid.Uuid
import com.benasher44.uuid.uuid4
import kotlinx.datetime.Clock
import kotlinx.datetime.Instant
import kotlinx.datetime.LocalDate
import kotlinx.serialization.Serializable
@Serializable
data class Veranstaltung(
@Serializable(with = JavaUUIDSerializer::class) // Beispiel für Serializer, falls nötig
val id: UUID = UUID.randomUUID(),
@Serializable(with = UuidSerializer::class) // Beispiel für Serializer, falls nötig
val id: Uuid = uuid4(),
var name: String,
@Serializable(with = KotlinLocalDateSerializer::class) // Beispiel für Serializer
var datumVon: LocalDate,
@@ -1,15 +0,0 @@
package at.mocode.model.serializer
import com.ionspin.kotlin.bignum.decimal.BigDecimal
import kotlinx.serialization.KSerializer
import kotlinx.serialization.descriptors.PrimitiveKind
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
object BigDecimalSerializer : KSerializer<BigDecimal> {
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("BigDecimal", PrimitiveKind.STRING)
override fun serialize(encoder: Encoder, value: BigDecimal) = encoder.encodeString(value.toStringExpanded())
override fun deserialize(decoder: Decoder): BigDecimal = BigDecimal.parseString(decoder.decodeString())
}
@@ -1,12 +0,0 @@
package at.mocode.model.serializer
import com.benasher44.uuid.Uuid
import kotlinx.serialization.*
import kotlinx.serialization.descriptors.*
import kotlinx.serialization.encoding.*
object JavaUUIDSerializer : KSerializer<Uuid> {
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("UUID", PrimitiveKind.STRING)
override fun serialize(encoder: Encoder, value: Uuid) = encoder.encodeString(value.toString())
override fun deserialize(decoder: Decoder): Uuid = Uuid.fromString(decoder.decodeString())
}
@@ -1,15 +0,0 @@
package at.mocode.model.serializer
import kotlinx.datetime.Instant
import kotlinx.serialization.KSerializer
import kotlinx.serialization.descriptors.PrimitiveKind
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
object KotlinInstantSerializer : KSerializer<Instant> {
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("Instant", PrimitiveKind.STRING)
override fun serialize(encoder: Encoder, value: Instant) = encoder.encodeString(value.toString())
override fun deserialize(decoder: Decoder): Instant = Instant.parse(decoder.decodeString())
}
@@ -1,15 +0,0 @@
package at.mocode.model.serializer
import kotlinx.datetime.LocalDate
import kotlinx.serialization.KSerializer
import kotlinx.serialization.descriptors.PrimitiveKind
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
object KotlinLocalDateSerializer : KSerializer<LocalDate> {
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("LocalDate", PrimitiveKind.STRING)
override fun serialize(encoder: Encoder, value: LocalDate) = encoder.encodeString(value.toString())
override fun deserialize(decoder: Decoder): LocalDate = LocalDate.parse(decoder.decodeString())
}
@@ -1,15 +0,0 @@
package at.mocode.model.serializer
import kotlinx.datetime.LocalDateTime
import kotlinx.serialization.KSerializer
import kotlinx.serialization.descriptors.PrimitiveKind
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
object KotlinLocalDateTimeSerializer : KSerializer<LocalDateTime> {
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("LocalDateTime", PrimitiveKind.STRING)
override fun serialize(encoder: Encoder, value: LocalDateTime) = encoder.encodeString(value.toString())
override fun deserialize(decoder: Decoder): LocalDateTime = LocalDateTime.parse(decoder.decodeString())
}
@@ -0,0 +1,44 @@
package at.mocode.model.serializers
import com.benasher44.uuid.Uuid
import com.benasher44.uuid.uuidFrom
import com.ionspin.kotlin.bignum.decimal.BigDecimal
import kotlinx.datetime.Instant
import kotlinx.datetime.LocalDate
import kotlinx.datetime.LocalDateTime
import kotlinx.serialization.KSerializer
import kotlinx.serialization.descriptors.PrimitiveKind
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
object BigDecimalSerializer : KSerializer<BigDecimal> {
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("BigDecimal", PrimitiveKind.STRING)
override fun serialize(encoder: Encoder, value: BigDecimal) = encoder.encodeString(value.toStringExpanded())
override fun deserialize(decoder: Decoder): BigDecimal = BigDecimal.parseString(decoder.decodeString())
}
object UuidSerializer : KSerializer<Uuid> {
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("UUID", PrimitiveKind.STRING)
override fun serialize(encoder: Encoder, value: Uuid) = encoder.encodeString(value.toString())
override fun deserialize(decoder: Decoder): Uuid = uuidFrom(decoder.decodeString())
}
object KotlinInstantSerializer : KSerializer<Instant> {
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("Instant", PrimitiveKind.STRING)
override fun serialize(encoder: Encoder, value: Instant) = encoder.encodeString(value.toString())
override fun deserialize(decoder: Decoder): Instant = Instant.parse(decoder.decodeString())
}
object KotlinLocalDateSerializer : KSerializer<LocalDate> {
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("LocalDate", PrimitiveKind.STRING)
override fun serialize(encoder: Encoder, value: LocalDate) = encoder.encodeString(value.toString())
override fun deserialize(decoder: Decoder): LocalDate = LocalDate.parse(decoder.decodeString())
}
object KotlinLocalDateTimeSerializer : KSerializer<LocalDateTime> {
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("LocalDateTime", PrimitiveKind.STRING)
override fun serialize(encoder: Encoder, value: LocalDateTime) = encoder.encodeString(value.toString())
override fun deserialize(decoder: Decoder): LocalDateTime = LocalDateTime.parse(decoder.decodeString())
}
@@ -2,7 +2,7 @@ package at.mocode.model.stammdaten
import at.mocode.model.enums.LizenzTyp
import at.mocode.model.enums.Sparte
import at.mocode.model.serializer.KotlinLocalDateSerializer
import at.mocode.model.serializers.KotlinLocalDateSerializer
import kotlinx.datetime.LocalDate
import kotlinx.serialization.Serializable
@@ -2,16 +2,20 @@ package at.mocode.model.stammdaten
import at.mocode.model.enums.FunktionaerRolle
import at.mocode.model.enums.Geschlecht
import at.mocode.model.serializer.JavaUUIDSerializer
import at.mocode.model.serializer.KotlinInstantSerializer
import at.mocode.model.serializer.KotlinLocalDateSerializer
import at.mocode.model.serializers.KotlinInstantSerializer
import at.mocode.model.serializers.KotlinLocalDateSerializer
import at.mocode.model.serializers.UuidSerializer
import com.benasher44.uuid.Uuid
import com.benasher44.uuid.uuid4
import kotlinx.datetime.Clock
import kotlinx.datetime.Instant
import kotlinx.datetime.LocalDate
import kotlinx.serialization.Serializable
@Serializable
data class Person(
@Serializable(with = JavaUUIDSerializer::class)
val id: UUID = UUID.randomUUID(),
@Serializable(with = UuidSerializer::class)
val id: Uuid = uuid4(),
var oepsSatzNr: String?,
var nachname: String,
var vorname: String,
@@ -25,8 +29,8 @@ data class Person(
var adresse: String?,
var plz: String?,
var ort: String?,
@Serializable(with = JavaUUIDSerializer::class)
var stammVereinId: UUID?, // FK zum Verein
@Serializable(with = UuidSerializer::class)
var stammVereinId: Uuid?, // FK zum Verein
var mitgliedsNummerIntern: String?,
var letzteZahlungJahr: Int?,
var feiId: String?,
@@ -1,14 +1,18 @@
package at.mocode.model.stammdaten
import at.mocode.model.enums.GeschlechtPferd
import at.mocode.model.serializer.JavaUUIDSerializer
import at.mocode.model.serializer.KotlinInstantSerializer
import at.mocode.model.serializers.KotlinInstantSerializer
import at.mocode.model.serializers.UuidSerializer
import com.benasher44.uuid.Uuid
import com.benasher44.uuid.uuid4
import kotlinx.datetime.Clock
import kotlinx.datetime.Instant
import kotlinx.serialization.Serializable
@Serializable
data class Pferd(
@Serializable(with = JavaUUIDSerializer::class)
val id: UUID = UUID.randomUUID(),
@Serializable(with = UuidSerializer::class)
val id: Uuid = uuid4(),
var oepsKopfNr: String?,
var oepsSatzNr: String?,
var name: String,
@@ -21,12 +25,12 @@ data class Pferd(
var vaterName: String?,
var mutterName: String?,
var mutterVaterName: String?,
@Serializable(with = JavaUUIDSerializer::class)
var besitzerId: UUID?, // FK Person
@Serializable(with = JavaUUIDSerializer::class)
var verantwortlichePersonId: UUID?, // FK Person
@Serializable(with = JavaUUIDSerializer::class)
var heimatVereinId: UUID?, // FK Verein
@Serializable(with = UuidSerializer::class)
var besitzerId: Uuid?, // FK Person
@Serializable(with = UuidSerializer::class)
var verantwortlichePersonId: Uuid?, // FK Person
@Serializable(with = UuidSerializer::class)
var heimatVereinId: Uuid?, // FK Verein
var letzteZahlungJahrOeps: Int?,
var stockmassCm: Int?,
var istAktiv: Boolean = true,
@@ -1,14 +1,17 @@
package at.mocode.model.stammdaten
import at.mocode.model.serializer.JavaUUIDSerializer
import at.mocode.model.serializer.KotlinInstantSerializer
import com.benasher44.uuid.UUID
import at.mocode.model.serializers.KotlinInstantSerializer
import at.mocode.model.serializers.UuidSerializer
import com.benasher44.uuid.Uuid
import com.benasher44.uuid.uuid4
import kotlinx.datetime.Clock
import kotlinx.datetime.Instant
import kotlinx.serialization.Serializable
@Serializable
data class Verein(
@Serializable(with = JavaUUIDSerializer::class)
val id: UUID = UUID.randomUUID(),
@Serializable(with = UuidSerializer::class)
val id: Uuid = uuid4(),
var oepsVereinsNr: String,
var name: String,
var kuerzel: String?,
@@ -1,7 +0,0 @@
package at.mocode
class JVMPlatform: Platform {
override val name: String = "Java ${System.getProperty("java.version")}"
}
actual fun getPlatform(): Platform = JVMPlatform()
@@ -1,22 +0,0 @@
package at.mocode.model
import kotlinx.serialization.KSerializer
import kotlinx.serialization.descriptors.PrimitiveKind
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
import java.math.BigDecimal
import java.util.*
object JavaUUIDSerializer : KSerializer<UUID> {
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("UUID", PrimitiveKind.STRING)
override fun serialize(encoder: Encoder, value: UUID) = encoder.encodeString(value.toString())
override fun deserialize(decoder: Decoder): UUID = UUID.fromString(decoder.decodeString())
}
object BigDecimalSerializer : KSerializer<BigDecimal> {
override val descriptor: SerialDescriptor = PrimitiveSerialDescriptor("BigDecimal", PrimitiveKind.STRING)
override fun serialize(encoder: Encoder, value: BigDecimal) = encoder.encodeString(value.toPlainString())
override fun deserialize(decoder: Decoder): BigDecimal = BigDecimal(decoder.decodeString())
}
@@ -1,7 +0,0 @@
package at.mocode
class WasmPlatform: Platform {
override val name: String = "Web with Kotlin/Wasm"
}
actual fun getPlatform(): Platform = WasmPlatform()