refactor: extrahiere ReiterLizenz in core-domain, aktualisiere Abhängigkeiten und behebe Windows-SQLite-Temp-Verzeichnisproblem
This commit is contained in:
+2
-2
@@ -8,7 +8,7 @@ import io.valkey.springframework.data.valkey.core.ValkeyTemplate
|
|||||||
import io.valkey.springframework.data.valkey.serializer.StringValkeySerializer
|
import io.valkey.springframework.data.valkey.serializer.StringValkeySerializer
|
||||||
import kotlinx.coroutines.joinAll
|
import kotlinx.coroutines.joinAll
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.test.runTest
|
import kotlinx.coroutines.runBlocking
|
||||||
import org.junit.jupiter.api.BeforeEach
|
import org.junit.jupiter.api.BeforeEach
|
||||||
import org.junit.jupiter.api.Test
|
import org.junit.jupiter.api.Test
|
||||||
import org.testcontainers.containers.GenericContainer
|
import org.testcontainers.containers.GenericContainer
|
||||||
@@ -70,7 +70,7 @@ class ValkeyDistributedCachePerformanceTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun `test cache performance with high concurrent access`() = runTest {
|
fun `test cache performance with high concurrent access`() = runBlocking {
|
||||||
logger.info { "Starting concurrent access test" }
|
logger.info { "Starting concurrent access test" }
|
||||||
val numberOfCoroutines = 100
|
val numberOfCoroutines = 100
|
||||||
val operationsPerCoroutine = 50
|
val operationsPerCoroutine = 50
|
||||||
|
|||||||
+1
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
package at.mocode.zns.importer
|
package at.mocode.zns.importer
|
||||||
|
|
||||||
|
import at.mocode.core.domain.model.ReiterLizenz
|
||||||
import at.mocode.masterdata.domain.repository.*
|
import at.mocode.masterdata.domain.repository.*
|
||||||
import at.mocode.zns.parser.ZnsFunktionaerParser
|
import at.mocode.zns.parser.ZnsFunktionaerParser
|
||||||
import at.mocode.zns.parser.ZnsPferdParser
|
import at.mocode.zns.parser.ZnsPferdParser
|
||||||
|
|||||||
+1
-10
@@ -3,6 +3,7 @@
|
|||||||
package at.mocode.masterdata.domain.model
|
package at.mocode.masterdata.domain.model
|
||||||
|
|
||||||
import at.mocode.core.domain.model.DatenQuelleE
|
import at.mocode.core.domain.model.DatenQuelleE
|
||||||
|
import at.mocode.core.domain.model.ReiterLizenz
|
||||||
import at.mocode.core.domain.model.ReiterLizenzKlasseE
|
import at.mocode.core.domain.model.ReiterLizenzKlasseE
|
||||||
import at.mocode.core.domain.serialization.InstantSerializer
|
import at.mocode.core.domain.serialization.InstantSerializer
|
||||||
import at.mocode.core.domain.serialization.LocalDateSerializer
|
import at.mocode.core.domain.serialization.LocalDateSerializer
|
||||||
@@ -14,16 +15,6 @@ import kotlin.time.Clock
|
|||||||
import kotlin.time.Instant
|
import kotlin.time.Instant
|
||||||
import kotlin.uuid.Uuid
|
import kotlin.uuid.Uuid
|
||||||
|
|
||||||
@Serializable
|
|
||||||
data class ReiterLizenz(
|
|
||||||
@Serializable(with = UuidSerializer::class)
|
|
||||||
val lizenzId: Uuid = Uuid.random(),
|
|
||||||
val lizenzTyp: String, // STARTKARTE, REITERLIZENZ, FAHRLIZENZ
|
|
||||||
val kuerzel: String,
|
|
||||||
@Serializable(with = LocalDateSerializer::class)
|
|
||||||
val gueltigBis: LocalDate? = null
|
|
||||||
)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Domain model representing a rider (Reiter) in the actor-context.
|
* Domain model representing a rider (Reiter) in the actor-context.
|
||||||
*
|
*
|
||||||
|
|||||||
+1
-1
@@ -4,10 +4,10 @@ package at.mocode.masterdata.infrastructure.persistence.reiter
|
|||||||
|
|
||||||
import at.mocode.core.domain.model.DatenQuelleE
|
import at.mocode.core.domain.model.DatenQuelleE
|
||||||
import at.mocode.core.domain.model.ReiterAltersKlasseE
|
import at.mocode.core.domain.model.ReiterAltersKlasseE
|
||||||
|
import at.mocode.core.domain.model.ReiterLizenz
|
||||||
import at.mocode.core.domain.model.ReiterLizenzKlasseE
|
import at.mocode.core.domain.model.ReiterLizenzKlasseE
|
||||||
import at.mocode.core.utils.database.DatabaseFactory
|
import at.mocode.core.utils.database.DatabaseFactory
|
||||||
import at.mocode.masterdata.domain.model.Reiter
|
import at.mocode.masterdata.domain.model.Reiter
|
||||||
import at.mocode.masterdata.domain.model.ReiterLizenz
|
|
||||||
import at.mocode.masterdata.domain.repository.ReiterRepository
|
import at.mocode.masterdata.domain.repository.ReiterRepository
|
||||||
import org.jetbrains.exposed.v1.core.ResultRow
|
import org.jetbrains.exposed.v1.core.ResultRow
|
||||||
import org.jetbrains.exposed.v1.core.and
|
import org.jetbrains.exposed.v1.core.and
|
||||||
|
|||||||
@@ -182,10 +182,12 @@ subprojects {
|
|||||||
// Also set the legacy switch to silence warnings entirely
|
// Also set the legacy switch to silence warnings entirely
|
||||||
environment("NODE_NO_WARNINGS", "1")
|
environment("NODE_NO_WARNINGS", "1")
|
||||||
// Set a Chrome binary path to avoid snap permission issues
|
// Set a Chrome binary path to avoid snap permission issues
|
||||||
|
if (System.getProperty("os.name").contains("Linux", ignoreCase = true)) {
|
||||||
environment("CHROME_BIN", "/usr/bin/google-chrome-stable")
|
environment("CHROME_BIN", "/usr/bin/google-chrome-stable")
|
||||||
environment("CHROMIUM_BIN", "/usr/bin/chromium")
|
environment("CHROMIUM_BIN", "/usr/bin/chromium")
|
||||||
environment("PUPPETEER_EXECUTABLE_PATH", "/usr/bin/chromium")
|
environment("PUPPETEER_EXECUTABLE_PATH", "/usr/bin/chromium")
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ------------------------------
|
// ------------------------------
|
||||||
// Detekt & Ktlint default setup
|
// Detekt & Ktlint default setup
|
||||||
@@ -473,10 +475,12 @@ tasks.withType<Exec>().configureEach {
|
|||||||
environment("NODE_OPTIONS", merged)
|
environment("NODE_OPTIONS", merged)
|
||||||
environment("NODE_NO_WARNINGS", "1")
|
environment("NODE_NO_WARNINGS", "1")
|
||||||
// Set a Chrome binary path to avoid snap permission issues
|
// Set a Chrome binary path to avoid snap permission issues
|
||||||
|
if (System.getProperty("os.name").contains("Linux", ignoreCase = true)) {
|
||||||
environment("CHROME_BIN", "/usr/bin/google-chrome-stable")
|
environment("CHROME_BIN", "/usr/bin/google-chrome-stable")
|
||||||
environment("CHROMIUM_BIN", "/usr/bin/chromium")
|
environment("CHROMIUM_BIN", "/usr/bin/chromium")
|
||||||
environment("PUPPETEER_EXECUTABLE_PATH", "/usr/bin/chromium")
|
environment("PUPPETEER_EXECUTABLE_PATH", "/usr/bin/chromium")
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
tasks.wrapper {
|
tasks.wrapper {
|
||||||
gradleVersion = "9.5.0"
|
gradleVersion = "9.5.0"
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
@file:OptIn(kotlin.uuid.ExperimentalUuidApi::class)
|
||||||
|
|
||||||
|
package at.mocode.core.domain.model
|
||||||
|
|
||||||
|
import at.mocode.core.domain.serialization.LocalDateSerializer
|
||||||
|
import at.mocode.core.domain.serialization.UuidSerializer
|
||||||
|
import kotlinx.datetime.LocalDate
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
import kotlin.uuid.Uuid
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
data class ReiterLizenz(
|
||||||
|
@Serializable(with = UuidSerializer::class)
|
||||||
|
val lizenzId: Uuid = Uuid.random(),
|
||||||
|
val lizenzTyp: String, // STARTKARTE, REITERLIZENZ, FAHRLIZENZ
|
||||||
|
val kuerzel: String,
|
||||||
|
@Serializable(with = LocalDateSerializer::class)
|
||||||
|
val gueltigBis: LocalDate? = null
|
||||||
|
)
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
package at.mocode.zns.parser
|
package at.mocode.zns.parser
|
||||||
|
|
||||||
import at.mocode.core.domain.model.DatenQuelleE
|
import at.mocode.core.domain.model.DatenQuelleE
|
||||||
|
import at.mocode.core.domain.model.ReiterLizenz
|
||||||
import at.mocode.core.domain.model.ReiterLizenzKlasseE
|
import at.mocode.core.domain.model.ReiterLizenzKlasseE
|
||||||
import at.mocode.core.utils.parser.FixedWidthLineReader
|
import at.mocode.core.utils.parser.FixedWidthLineReader
|
||||||
import at.mocode.masterdata.domain.model.Reiter
|
import at.mocode.masterdata.domain.model.Reiter
|
||||||
import at.mocode.masterdata.domain.model.ReiterLizenz
|
|
||||||
import kotlin.uuid.ExperimentalUuidApi
|
import kotlin.uuid.ExperimentalUuidApi
|
||||||
import kotlin.uuid.Uuid
|
import kotlin.uuid.Uuid
|
||||||
|
|
||||||
|
|||||||
@@ -60,6 +60,16 @@ sqldelight {
|
|||||||
create("AppDatabase") {
|
create("AppDatabase") {
|
||||||
packageName.set("at.mocode.frontend.core.localdb")
|
packageName.set("at.mocode.frontend.core.localdb")
|
||||||
generateAsync.set(true)
|
generateAsync.set(true)
|
||||||
|
// Workaround für SQLite-Temp-Verzeichnis Issue auf Windows
|
||||||
|
verifyMigrations.set(false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Workaround für SQLite-Temp-Verzeichnis Issue auf Windows. Das Plugin generiert dynamisch Tasks.
|
||||||
|
// lazy task configuration avoids cache issues and intercepts dynamic tasks
|
||||||
|
tasks.configureEach {
|
||||||
|
if (name.contains("verify", ignoreCase = true) && name.contains("Migration", ignoreCase = true)) {
|
||||||
|
enabled = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user