feat(masterdata): add controllers, services, and repositories for Reiter, Horse, and Verein domains
- Introduced entities `ReiterController`, `HorseController`, and `VereinController`, with associated REST routes. - Implemented upsert functionality for `Reiter`, `Horse`, and `Verein` repositories. - Added services for `Altersklasse` calculations and integrated them into the domain layer. - Updated database schema to include `ReiterTable`, `HorseTable`, `VereinTable`, and `FunktionaerTable`. - Refactored `masterdataApiModule` to register new domain controllers. - Adjusted Ktor server and Spring configurations to support new domains. Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
This commit is contained in:
+31
@@ -174,4 +174,35 @@ class ExposedReiterRepository : ReiterRepository {
|
||||
override suspend fun existsBySatznummer(satznummer: String): Boolean = DatabaseFactory.dbQuery {
|
||||
ReiterTable.selectAll().where { ReiterTable.satznummer eq satznummer }.any()
|
||||
}
|
||||
|
||||
override suspend fun upsertBySatznummer(reiter: DomReiter): DomReiter = DatabaseFactory.dbQuery {
|
||||
val existing = ReiterTable.selectAll().where { ReiterTable.satznummer eq reiter.satznummer }
|
||||
.map(::rowToDomReiter)
|
||||
.singleOrNull()
|
||||
|
||||
if (existing != null) {
|
||||
val toUpdate = reiter.copy(reiterId = existing.reiterId)
|
||||
ReiterTable.update({ ReiterTable.id eq existing.reiterId }) {
|
||||
it[personId] = toUpdate.personId
|
||||
it[nachname] = toUpdate.nachname
|
||||
it[vorname] = toUpdate.vorname
|
||||
it[geburtsdatum] = toUpdate.geburtsdatum
|
||||
it[lizenzNummer] = toUpdate.lizenzNummer
|
||||
it[lizenzKlasse] = toUpdate.lizenzKlasse.name
|
||||
it[startkartAktiv] = toUpdate.startkartAktiv
|
||||
it[startkartSaison] = toUpdate.startkartSaison
|
||||
it[feiId] = toUpdate.feiId
|
||||
it[nation] = toUpdate.nation
|
||||
it[vereinsNummer] = toUpdate.vereinsNummer
|
||||
it[vereinsName] = toUpdate.vereinsName
|
||||
it[istGastreiter] = toUpdate.istGastreiter
|
||||
it[istAktiv] = toUpdate.istAktiv
|
||||
it[datenQuelle] = toUpdate.datenQuelle.name
|
||||
it[updatedAt] = toUpdate.updatedAt
|
||||
}
|
||||
toUpdate
|
||||
} else {
|
||||
save(reiter)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+33
-6
@@ -7,14 +7,10 @@ import at.mocode.core.utils.database.DatabaseFactory
|
||||
import at.mocode.masterdata.domain.model.DomVerein
|
||||
import at.mocode.masterdata.domain.repository.VereinRepository
|
||||
import org.jetbrains.exposed.v1.core.ResultRow
|
||||
import org.jetbrains.exposed.v1.core.or
|
||||
import org.jetbrains.exposed.v1.jdbc.deleteWhere
|
||||
import org.jetbrains.exposed.v1.jdbc.insert
|
||||
import org.jetbrains.exposed.v1.jdbc.selectAll
|
||||
import org.jetbrains.exposed.v1.jdbc.update
|
||||
import org.jetbrains.exposed.v1.core.eq
|
||||
import org.jetbrains.exposed.v1.core.like
|
||||
import org.jetbrains.exposed.v1.jdbc.andWhere
|
||||
import org.jetbrains.exposed.v1.core.or
|
||||
import org.jetbrains.exposed.v1.jdbc.*
|
||||
import kotlin.uuid.Uuid
|
||||
|
||||
/**
|
||||
@@ -151,4 +147,35 @@ class ExposedVereinRepository : VereinRepository {
|
||||
override suspend fun existsByVereinsNummer(vereinsNummer: String): Boolean = DatabaseFactory.dbQuery {
|
||||
VereinTable.selectAll().where { VereinTable.vereinsNummer eq vereinsNummer }.any()
|
||||
}
|
||||
|
||||
override suspend fun upsertByVereinsNummer(verein: DomVerein): DomVerein = DatabaseFactory.dbQuery {
|
||||
val existing = VereinTable.selectAll().where { VereinTable.vereinsNummer eq verein.vereinsNummer }
|
||||
.map(::rowToDomVerein)
|
||||
.singleOrNull()
|
||||
|
||||
if (existing != null) {
|
||||
val toUpdate = verein.copy(vereinId = existing.vereinId)
|
||||
VereinTable.update({ VereinTable.id eq existing.vereinId }) {
|
||||
it[vereinsNummer] = toUpdate.vereinsNummer
|
||||
it[name] = toUpdate.name
|
||||
it[kurzname] = toUpdate.kurzname
|
||||
it[bundesland] = toUpdate.bundesland
|
||||
it[ort] = toUpdate.ort
|
||||
it[plz] = toUpdate.plz
|
||||
it[strasse] = toUpdate.strasse
|
||||
it[email] = toUpdate.email
|
||||
it[telefon] = toUpdate.telefon
|
||||
it[website] = toUpdate.website
|
||||
it[oepsRegionNummer] = toUpdate.oepsRegionNummer
|
||||
it[istVeranstalter] = toUpdate.istVeranstalter
|
||||
it[istAktiv] = toUpdate.istAktiv
|
||||
it[bemerkungen] = toUpdate.bemerkungen
|
||||
it[datenQuelle] = toUpdate.datenQuelle.name
|
||||
it[updatedAt] = toUpdate.updatedAt
|
||||
}
|
||||
toUpdate
|
||||
} else {
|
||||
save(verein)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+39
@@ -283,4 +283,43 @@ class HorseRepositoryImpl : HorseRepository {
|
||||
}
|
||||
query.count()
|
||||
}
|
||||
|
||||
override suspend fun upsertByLebensnummer(horse: DomPferd): DomPferd = DatabaseFactory.dbQuery {
|
||||
val lebensnummer = horse.lebensnummer ?: return@dbQuery save(horse)
|
||||
|
||||
val existing = HorseTable.selectAll().where { HorseTable.lebensnummer eq lebensnummer }
|
||||
.map(::rowToDomPferd)
|
||||
.singleOrNull()
|
||||
|
||||
if (existing != null) {
|
||||
val toUpdate = horse.copy(pferdId = existing.pferdId)
|
||||
HorseTable.update({ HorseTable.id eq existing.pferdId }) {
|
||||
it[pferdeName] = toUpdate.pferdeName
|
||||
it[geschlecht] = toUpdate.geschlecht.name
|
||||
it[geburtsdatum] = toUpdate.geburtsdatum
|
||||
it[rasse] = toUpdate.rasse
|
||||
it[farbe] = toUpdate.farbe
|
||||
it[besitzerId] = toUpdate.besitzerId
|
||||
it[verantwortlichePersonId] = toUpdate.verantwortlichePersonId
|
||||
it[zuechterName] = toUpdate.zuechterName
|
||||
it[zuchtbuchNummer] = toUpdate.zuchtbuchNummer
|
||||
it[lebensnummer] = toUpdate.lebensnummer
|
||||
it[chipNummer] = toUpdate.chipNummer
|
||||
it[passNummer] = toUpdate.passNummer
|
||||
it[oepsNummer] = toUpdate.oepsNummer
|
||||
it[feiNummer] = toUpdate.feiNummer
|
||||
it[vaterName] = toUpdate.vaterName
|
||||
it[mutterName] = toUpdate.mutterName
|
||||
it[mutterVaterName] = toUpdate.mutterVaterName
|
||||
it[stockmass] = toUpdate.stockmass
|
||||
it[istAktiv] = toUpdate.istAktiv
|
||||
it[bemerkungen] = toUpdate.bemerkungen
|
||||
it[datenQuelle] = toUpdate.datenQuelle.name
|
||||
it[updatedAt] = toUpdate.updatedAt
|
||||
}
|
||||
toUpdate
|
||||
} else {
|
||||
save(horse)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user