(fix) Umbau zu SCS
**Backend:** - Vervollständigen Sie alle Repository-Implementierungen - Implementieren Sie die Authentifizierung und Autorisierung - Fügen Sie Validierung für alle API-Endpunkte hinzu
This commit is contained in:
-1
@@ -1,6 +1,5 @@
|
||||
package at.mocode.members.domain.repository
|
||||
|
||||
import at.mocode.members.domain.model.DomBerechtigung
|
||||
import at.mocode.members.domain.model.DomRolleBerechtigung
|
||||
import com.benasher44.uuid.Uuid
|
||||
|
||||
|
||||
@@ -8,8 +8,6 @@ import kotlinx.datetime.Clock
|
||||
import kotlinx.datetime.Instant
|
||||
import kotlinx.serialization.Serializable
|
||||
import kotlinx.serialization.json.Json
|
||||
import kotlinx.serialization.encodeToString
|
||||
import kotlinx.serialization.decodeFromString
|
||||
|
||||
/**
|
||||
* Service für die Erstellung und Validierung von JWT-Tokens.
|
||||
@@ -114,7 +112,7 @@ actual class JwtService(private val userAuthorizationService: UserAuthorizationS
|
||||
val permissions = payload.permissions.mapNotNull { permString ->
|
||||
try {
|
||||
BerechtigungE.valueOf(permString)
|
||||
} catch (e: IllegalArgumentException) {
|
||||
} catch (_: IllegalArgumentException) {
|
||||
null
|
||||
}
|
||||
}
|
||||
@@ -127,7 +125,7 @@ actual class JwtService(private val userAuthorizationService: UserAuthorizationS
|
||||
issuedAt = Instant.fromEpochSeconds(payload.iat),
|
||||
expiresAt = Instant.fromEpochSeconds(payload.exp)
|
||||
)
|
||||
} catch (e: Exception) {
|
||||
} catch (_: Exception) {
|
||||
null
|
||||
}
|
||||
}
|
||||
@@ -162,6 +160,6 @@ actual class JwtService(private val userAuthorizationService: UserAuthorizationS
|
||||
bytes[i] = hexPair.toInt(16).toByte()
|
||||
}
|
||||
|
||||
return Uuid(bytes)
|
||||
return uuidOf(bytes)
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -78,17 +78,17 @@ class AuthenticationService(
|
||||
* @return RegisterResult mit dem Ergebnis der Registrierung
|
||||
*/
|
||||
suspend fun registerUser(username: String, email: String, password: String, personId: Uuid): RegisterResult {
|
||||
// Prüfen, ob Benutzername bereits existiert
|
||||
// Prüfen, ob der Benutzername bereits existiert
|
||||
if (userRepository.findByUsername(username) != null) {
|
||||
return RegisterResult.Failure("Benutzername wird bereits verwendet")
|
||||
}
|
||||
|
||||
// Prüfen, ob E-Mail bereits existiert
|
||||
// Prüfen, ob eine E-Mail bereits existiert
|
||||
if (userRepository.findByEmail(email) != null) {
|
||||
return RegisterResult.Failure("E-Mail-Adresse wird bereits verwendet")
|
||||
}
|
||||
|
||||
// Prüfen, ob Person bereits einen Benutzer hat
|
||||
// Prüfen, ob eine Person bereits einen Benutzer hat
|
||||
if (userRepository.findByPersonId(personId) != null) {
|
||||
return RegisterResult.Failure("Diese Person hat bereits einen Benutzeraccount")
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ actual class JwtService(private val userAuthorizationService: UserAuthorizationS
|
||||
val permissions = permissionStrings.mapNotNull { permString ->
|
||||
try {
|
||||
BerechtigungE.valueOf(permString)
|
||||
} catch (e: IllegalArgumentException) {
|
||||
} catch (_: IllegalArgumentException) {
|
||||
null
|
||||
}
|
||||
}
|
||||
@@ -84,7 +84,7 @@ actual class JwtService(private val userAuthorizationService: UserAuthorizationS
|
||||
issuedAt = Instant.fromEpochMilliseconds(jwt.issuedAt.time),
|
||||
expiresAt = Instant.fromEpochMilliseconds(jwt.expiresAt.time)
|
||||
)
|
||||
} catch (e: Exception) {
|
||||
} catch (_: Exception) {
|
||||
null
|
||||
}
|
||||
}
|
||||
|
||||
+8
-8
@@ -7,9 +7,9 @@ import at.mocode.members.infrastructure.table.BerechtigungTable
|
||||
import at.mocode.shared.database.DatabaseFactory
|
||||
import com.benasher44.uuid.Uuid
|
||||
import kotlinx.datetime.Clock
|
||||
import kotlinx.datetime.TimeZone
|
||||
import kotlinx.datetime.toInstant
|
||||
import kotlinx.datetime.toLocalDateTime
|
||||
import kotlinx.datetime.TimeZone
|
||||
import org.jetbrains.exposed.sql.*
|
||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
|
||||
|
||||
@@ -73,34 +73,34 @@ class BerechtigungRepositoryImpl : BerechtigungRepository {
|
||||
}
|
||||
|
||||
override suspend fun findById(berechtigungId: Uuid): DomBerechtigung? = DatabaseFactory.dbQuery {
|
||||
BerechtigungTable.select { BerechtigungTable.id eq berechtigungId }
|
||||
BerechtigungTable.selectAll().where { BerechtigungTable.id eq berechtigungId }
|
||||
.map(::rowToDomBerechtigung)
|
||||
.singleOrNull()
|
||||
}
|
||||
|
||||
override suspend fun findByTyp(berechtigungTyp: BerechtigungE): DomBerechtigung? = DatabaseFactory.dbQuery {
|
||||
BerechtigungTable.select { BerechtigungTable.berechtigungTyp eq berechtigungTyp }
|
||||
BerechtigungTable.selectAll().where { BerechtigungTable.berechtigungTyp eq berechtigungTyp }
|
||||
.map(::rowToDomBerechtigung)
|
||||
.singleOrNull()
|
||||
}
|
||||
|
||||
override suspend fun findByName(name: String): List<DomBerechtigung> = DatabaseFactory.dbQuery {
|
||||
BerechtigungTable.select { BerechtigungTable.name like "%$name%" }
|
||||
BerechtigungTable.selectAll().where { BerechtigungTable.name like "%$name%" }
|
||||
.map(::rowToDomBerechtigung)
|
||||
}
|
||||
|
||||
override suspend fun findByRessource(ressource: String): List<DomBerechtigung> = DatabaseFactory.dbQuery {
|
||||
BerechtigungTable.select { BerechtigungTable.ressource eq ressource }
|
||||
BerechtigungTable.selectAll().where { BerechtigungTable.ressource eq ressource }
|
||||
.map(::rowToDomBerechtigung)
|
||||
}
|
||||
|
||||
override suspend fun findByAktion(aktion: String): List<DomBerechtigung> = DatabaseFactory.dbQuery {
|
||||
BerechtigungTable.select { BerechtigungTable.aktion eq aktion }
|
||||
BerechtigungTable.selectAll().where { BerechtigungTable.aktion eq aktion }
|
||||
.map(::rowToDomBerechtigung)
|
||||
}
|
||||
|
||||
override suspend fun findAllActive(): List<DomBerechtigung> = DatabaseFactory.dbQuery {
|
||||
BerechtigungTable.select { BerechtigungTable.istAktiv eq true }
|
||||
BerechtigungTable.selectAll().where { BerechtigungTable.istAktiv eq true }
|
||||
.map(::rowToDomBerechtigung)
|
||||
}
|
||||
|
||||
@@ -138,7 +138,7 @@ class BerechtigungRepositoryImpl : BerechtigungRepository {
|
||||
}
|
||||
|
||||
override suspend fun existsByTyp(berechtigungTyp: BerechtigungE): Boolean = DatabaseFactory.dbQuery {
|
||||
BerechtigungTable.select { BerechtigungTable.berechtigungTyp eq berechtigungTyp }
|
||||
BerechtigungTable.selectAll().where { BerechtigungTable.berechtigungTyp eq berechtigungTyp }
|
||||
.count() > 0
|
||||
}
|
||||
}
|
||||
|
||||
+8
-9
@@ -2,7 +2,6 @@ package at.mocode.members.infrastructure.repository
|
||||
|
||||
import at.mocode.members.domain.model.DomPerson
|
||||
import at.mocode.members.domain.repository.PersonRepository
|
||||
import at.mocode.members.infrastructure.repository.PersonTable
|
||||
import at.mocode.shared.database.DatabaseFactory
|
||||
import com.benasher44.uuid.Uuid
|
||||
import kotlinx.datetime.Clock
|
||||
@@ -21,25 +20,25 @@ import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
|
||||
class PersonRepositoryImpl : PersonRepository {
|
||||
|
||||
override suspend fun findById(id: Uuid): DomPerson? = DatabaseFactory.dbQuery {
|
||||
PersonTable.select { PersonTable.id eq id }
|
||||
PersonTable.selectAll().where { PersonTable.id eq id }
|
||||
.map { rowToDomPerson(it) }
|
||||
.singleOrNull()
|
||||
}
|
||||
|
||||
override suspend fun findByOepsSatzNr(oepsSatzNr: String): DomPerson? = DatabaseFactory.dbQuery {
|
||||
PersonTable.select { PersonTable.oepsSatzNr eq oepsSatzNr }
|
||||
PersonTable.selectAll().where { PersonTable.oepsSatzNr eq oepsSatzNr }
|
||||
.map { rowToDomPerson(it) }
|
||||
.singleOrNull()
|
||||
}
|
||||
|
||||
override suspend fun findByStammVereinId(vereinId: Uuid): List<DomPerson> = DatabaseFactory.dbQuery {
|
||||
PersonTable.select { PersonTable.stammVereinId eq vereinId }
|
||||
PersonTable.selectAll().where { PersonTable.stammVereinId eq vereinId }
|
||||
.map { rowToDomPerson(it) }
|
||||
}
|
||||
|
||||
override suspend fun findByName(searchTerm: String, limit: Int): List<DomPerson> = DatabaseFactory.dbQuery {
|
||||
val searchPattern = "%$searchTerm%"
|
||||
PersonTable.select {
|
||||
PersonTable.selectAll().where {
|
||||
(PersonTable.nachname like searchPattern) or
|
||||
(PersonTable.vorname like searchPattern)
|
||||
}
|
||||
@@ -48,7 +47,7 @@ class PersonRepositoryImpl : PersonRepository {
|
||||
}
|
||||
|
||||
override suspend fun findAllActive(limit: Int, offset: Int): List<DomPerson> = DatabaseFactory.dbQuery {
|
||||
PersonTable.select { PersonTable.istAktiv eq true }
|
||||
PersonTable.selectAll().where { PersonTable.istAktiv eq true }
|
||||
.limit(limit, offset.toLong())
|
||||
.map { rowToDomPerson(it) }
|
||||
}
|
||||
@@ -58,7 +57,7 @@ class PersonRepositoryImpl : PersonRepository {
|
||||
val existingPerson = findById(person.personId)
|
||||
|
||||
if (existingPerson == null) {
|
||||
// Insert new person
|
||||
// Insert a new person
|
||||
PersonTable.insert { stmt ->
|
||||
stmt[PersonTable.id] = person.personId
|
||||
stmt[PersonTable.oepsSatzNr] = person.oepsSatzNr
|
||||
@@ -128,12 +127,12 @@ class PersonRepositoryImpl : PersonRepository {
|
||||
}
|
||||
|
||||
override suspend fun existsByOepsSatzNr(oepsSatzNr: String): Boolean = DatabaseFactory.dbQuery {
|
||||
PersonTable.select { PersonTable.oepsSatzNr eq oepsSatzNr }
|
||||
PersonTable.selectAll().where { PersonTable.oepsSatzNr eq oepsSatzNr }
|
||||
.count() > 0
|
||||
}
|
||||
|
||||
override suspend fun countActive(): Long = DatabaseFactory.dbQuery {
|
||||
PersonTable.select { PersonTable.istAktiv eq true }
|
||||
PersonTable.selectAll().where { PersonTable.istAktiv eq true }
|
||||
.count()
|
||||
}
|
||||
|
||||
|
||||
+26
-29
@@ -74,65 +74,62 @@ class PersonRolleRepositoryImpl : PersonRolleRepository {
|
||||
}
|
||||
|
||||
override suspend fun findById(personRolleId: Uuid): DomPersonRolle? = DatabaseFactory.dbQuery {
|
||||
PersonRolleTable.select { PersonRolleTable.id eq personRolleId }
|
||||
PersonRolleTable.selectAll().where { PersonRolleTable.id eq personRolleId }
|
||||
.map(::rowToDomPersonRolle)
|
||||
.singleOrNull()
|
||||
}
|
||||
|
||||
override suspend fun findByPersonId(personId: Uuid, nurAktive: Boolean): List<DomPersonRolle> = DatabaseFactory.dbQuery {
|
||||
val query = if (nurAktive) {
|
||||
PersonRolleTable.select {
|
||||
(PersonRolleTable.personId eq personId) and (PersonRolleTable.istAktiv eq true)
|
||||
}
|
||||
PersonRolleTable.selectAll()
|
||||
.where { (PersonRolleTable.personId eq personId) and (PersonRolleTable.istAktiv eq true) }
|
||||
} else {
|
||||
PersonRolleTable.select { PersonRolleTable.personId eq personId }
|
||||
PersonRolleTable.selectAll().where { PersonRolleTable.personId eq personId }
|
||||
}
|
||||
query.map(::rowToDomPersonRolle)
|
||||
}
|
||||
|
||||
override suspend fun findByRolleId(rolleId: Uuid, nurAktive: Boolean): List<DomPersonRolle> = DatabaseFactory.dbQuery {
|
||||
val query = if (nurAktive) {
|
||||
PersonRolleTable.select {
|
||||
(PersonRolleTable.rolleId eq rolleId) and (PersonRolleTable.istAktiv eq true)
|
||||
}
|
||||
PersonRolleTable.selectAll()
|
||||
.where { (PersonRolleTable.rolleId eq rolleId) and (PersonRolleTable.istAktiv eq true) }
|
||||
} else {
|
||||
PersonRolleTable.select { PersonRolleTable.rolleId eq rolleId }
|
||||
PersonRolleTable.selectAll().where { PersonRolleTable.rolleId eq rolleId }
|
||||
}
|
||||
query.map(::rowToDomPersonRolle)
|
||||
}
|
||||
|
||||
override suspend fun findByVereinId(vereinId: Uuid, nurAktive: Boolean): List<DomPersonRolle> = DatabaseFactory.dbQuery {
|
||||
val query = if (nurAktive) {
|
||||
PersonRolleTable.select {
|
||||
(PersonRolleTable.vereinId eq vereinId) and (PersonRolleTable.istAktiv eq true)
|
||||
}
|
||||
PersonRolleTable.selectAll()
|
||||
.where { (PersonRolleTable.vereinId eq vereinId) and (PersonRolleTable.istAktiv eq true) }
|
||||
} else {
|
||||
PersonRolleTable.select { PersonRolleTable.vereinId eq vereinId }
|
||||
PersonRolleTable.selectAll().where { PersonRolleTable.vereinId eq vereinId }
|
||||
}
|
||||
query.map(::rowToDomPersonRolle)
|
||||
}
|
||||
|
||||
override suspend fun findByPersonAndRolle(personId: Uuid, rolleId: Uuid, vereinId: Uuid?): DomPersonRolle? = DatabaseFactory.dbQuery {
|
||||
val query = if (vereinId != null) {
|
||||
PersonRolleTable.select {
|
||||
PersonRolleTable.selectAll().where {
|
||||
(PersonRolleTable.personId eq personId) and
|
||||
(PersonRolleTable.rolleId eq rolleId) and
|
||||
(PersonRolleTable.vereinId eq vereinId)
|
||||
(PersonRolleTable.rolleId eq rolleId) and
|
||||
(PersonRolleTable.vereinId eq vereinId)
|
||||
}
|
||||
} else {
|
||||
PersonRolleTable.select {
|
||||
PersonRolleTable.selectAll().where {
|
||||
(PersonRolleTable.personId eq personId) and
|
||||
(PersonRolleTable.rolleId eq rolleId) and
|
||||
PersonRolleTable.vereinId.isNull()
|
||||
(PersonRolleTable.rolleId eq rolleId) and
|
||||
PersonRolleTable.vereinId.isNull()
|
||||
}
|
||||
}
|
||||
query.map(::rowToDomPersonRolle).singleOrNull()
|
||||
}
|
||||
|
||||
override suspend fun findValidAt(stichtag: LocalDate, nurAktive: Boolean): List<DomPersonRolle> = DatabaseFactory.dbQuery {
|
||||
val baseQuery = PersonRolleTable.select {
|
||||
val baseQuery = PersonRolleTable.selectAll().where {
|
||||
(PersonRolleTable.gueltigVon lessEq stichtag) and
|
||||
(PersonRolleTable.gueltigBis.isNull() or (PersonRolleTable.gueltigBis greaterEq stichtag))
|
||||
(PersonRolleTable.gueltigBis.isNull() or (PersonRolleTable.gueltigBis greaterEq stichtag))
|
||||
}
|
||||
|
||||
val query = if (nurAktive) {
|
||||
@@ -145,10 +142,10 @@ class PersonRolleRepositoryImpl : PersonRolleRepository {
|
||||
}
|
||||
|
||||
override suspend fun findByPersonValidAt(personId: Uuid, stichtag: LocalDate, nurAktive: Boolean): List<DomPersonRolle> = DatabaseFactory.dbQuery {
|
||||
val baseQuery = PersonRolleTable.select {
|
||||
val baseQuery = PersonRolleTable.selectAll().where {
|
||||
(PersonRolleTable.personId eq personId) and
|
||||
(PersonRolleTable.gueltigVon lessEq stichtag) and
|
||||
(PersonRolleTable.gueltigBis.isNull() or (PersonRolleTable.gueltigBis greaterEq stichtag))
|
||||
(PersonRolleTable.gueltigVon lessEq stichtag) and
|
||||
(PersonRolleTable.gueltigBis.isNull() or (PersonRolleTable.gueltigBis greaterEq stichtag))
|
||||
}
|
||||
|
||||
val query = if (nurAktive) {
|
||||
@@ -177,12 +174,12 @@ class PersonRolleRepositoryImpl : PersonRolleRepository {
|
||||
override suspend fun hasPersonRolle(personId: Uuid, rolleId: Uuid, vereinId: Uuid?, stichtag: LocalDate?): Boolean = DatabaseFactory.dbQuery {
|
||||
val checkDate = stichtag ?: Clock.System.todayIn(TimeZone.currentSystemDefault())
|
||||
|
||||
val baseQuery = PersonRolleTable.select {
|
||||
val baseQuery = PersonRolleTable.selectAll().where {
|
||||
(PersonRolleTable.personId eq personId) and
|
||||
(PersonRolleTable.rolleId eq rolleId) and
|
||||
(PersonRolleTable.istAktiv eq true) and
|
||||
(PersonRolleTable.gueltigVon lessEq checkDate) and
|
||||
(PersonRolleTable.gueltigBis.isNull() or (PersonRolleTable.gueltigBis greaterEq checkDate))
|
||||
(PersonRolleTable.rolleId eq rolleId) and
|
||||
(PersonRolleTable.istAktiv eq true) and
|
||||
(PersonRolleTable.gueltigVon lessEq checkDate) and
|
||||
(PersonRolleTable.gueltigBis.isNull() or (PersonRolleTable.gueltigBis greaterEq checkDate))
|
||||
}
|
||||
|
||||
val query = if (vereinId != null) {
|
||||
|
||||
+17
-20
@@ -1,6 +1,5 @@
|
||||
package at.mocode.members.infrastructure.repository
|
||||
|
||||
import at.mocode.enums.BerechtigungE
|
||||
import at.mocode.members.domain.model.DomBerechtigung
|
||||
import at.mocode.members.domain.model.DomRolleBerechtigung
|
||||
import at.mocode.members.domain.repository.RolleBerechtigungRepository
|
||||
@@ -9,9 +8,9 @@ import at.mocode.members.infrastructure.table.RolleBerechtigungTable
|
||||
import at.mocode.shared.database.DatabaseFactory
|
||||
import com.benasher44.uuid.Uuid
|
||||
import kotlinx.datetime.Clock
|
||||
import kotlinx.datetime.TimeZone
|
||||
import kotlinx.datetime.toInstant
|
||||
import kotlinx.datetime.toLocalDateTime
|
||||
import kotlinx.datetime.TimeZone
|
||||
import org.jetbrains.exposed.sql.*
|
||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
|
||||
|
||||
@@ -91,41 +90,39 @@ class RolleBerechtigungRepositoryImpl : RolleBerechtigungRepository {
|
||||
}
|
||||
|
||||
override suspend fun findById(rolleBerechtigungId: Uuid): DomRolleBerechtigung? = DatabaseFactory.dbQuery {
|
||||
RolleBerechtigungTable.select { RolleBerechtigungTable.id eq rolleBerechtigungId }
|
||||
RolleBerechtigungTable.selectAll().where { RolleBerechtigungTable.id eq rolleBerechtigungId }
|
||||
.map(::rowToDomRolleBerechtigung)
|
||||
.singleOrNull()
|
||||
}
|
||||
|
||||
override suspend fun findByRolleId(rolleId: Uuid, nurAktive: Boolean): List<DomRolleBerechtigung> = DatabaseFactory.dbQuery {
|
||||
val query = if (nurAktive) {
|
||||
RolleBerechtigungTable.select {
|
||||
(RolleBerechtigungTable.rolleId eq rolleId) and (RolleBerechtigungTable.istAktiv eq true)
|
||||
}
|
||||
RolleBerechtigungTable.selectAll()
|
||||
.where { (RolleBerechtigungTable.rolleId eq rolleId) and (RolleBerechtigungTable.istAktiv eq true) }
|
||||
} else {
|
||||
RolleBerechtigungTable.select { RolleBerechtigungTable.rolleId eq rolleId }
|
||||
RolleBerechtigungTable.selectAll().where { RolleBerechtigungTable.rolleId eq rolleId }
|
||||
}
|
||||
query.map(::rowToDomRolleBerechtigung)
|
||||
}
|
||||
|
||||
override suspend fun findByBerechtigungId(berechtigungId: Uuid, nurAktive: Boolean): List<DomRolleBerechtigung> = DatabaseFactory.dbQuery {
|
||||
val query = if (nurAktive) {
|
||||
RolleBerechtigungTable.select {
|
||||
(RolleBerechtigungTable.berechtigungId eq berechtigungId) and (RolleBerechtigungTable.istAktiv eq true)
|
||||
}
|
||||
RolleBerechtigungTable.selectAll()
|
||||
.where { (RolleBerechtigungTable.berechtigungId eq berechtigungId) and (RolleBerechtigungTable.istAktiv eq true) }
|
||||
} else {
|
||||
RolleBerechtigungTable.select { RolleBerechtigungTable.berechtigungId eq berechtigungId }
|
||||
RolleBerechtigungTable.selectAll().where { RolleBerechtigungTable.berechtigungId eq berechtigungId }
|
||||
}
|
||||
query.map(::rowToDomRolleBerechtigung)
|
||||
}
|
||||
|
||||
override suspend fun findByRolleAndBerechtigung(rolleId: Uuid, berechtigungId: Uuid): DomRolleBerechtigung? = DatabaseFactory.dbQuery {
|
||||
RolleBerechtigungTable.select {
|
||||
(RolleBerechtigungTable.rolleId eq rolleId) and (RolleBerechtigungTable.berechtigungId eq berechtigungId)
|
||||
}.map(::rowToDomRolleBerechtigung).singleOrNull()
|
||||
RolleBerechtigungTable.selectAll()
|
||||
.where { (RolleBerechtigungTable.rolleId eq rolleId) and (RolleBerechtigungTable.berechtigungId eq berechtigungId) }
|
||||
.map(::rowToDomRolleBerechtigung).singleOrNull()
|
||||
}
|
||||
|
||||
override suspend fun findAllActive(): List<DomRolleBerechtigung> = DatabaseFactory.dbQuery {
|
||||
RolleBerechtigungTable.select { RolleBerechtigungTable.istAktiv eq true }
|
||||
RolleBerechtigungTable.selectAll().where { RolleBerechtigungTable.istAktiv eq true }
|
||||
.map(::rowToDomRolleBerechtigung)
|
||||
}
|
||||
|
||||
@@ -148,22 +145,22 @@ class RolleBerechtigungRepositoryImpl : RolleBerechtigungRepository {
|
||||
}
|
||||
|
||||
override suspend fun hasRolleBerechtigung(rolleId: Uuid, berechtigungId: Uuid): Boolean = DatabaseFactory.dbQuery {
|
||||
RolleBerechtigungTable.select {
|
||||
RolleBerechtigungTable.selectAll().where {
|
||||
(RolleBerechtigungTable.rolleId eq rolleId) and
|
||||
(RolleBerechtigungTable.berechtigungId eq berechtigungId) and
|
||||
(RolleBerechtigungTable.istAktiv eq true)
|
||||
(RolleBerechtigungTable.berechtigungId eq berechtigungId) and
|
||||
(RolleBerechtigungTable.istAktiv eq true)
|
||||
}.count() > 0
|
||||
}
|
||||
|
||||
override suspend fun assignBerechtigungToRolle(rolleId: Uuid, berechtigungId: Uuid, zugewiesenVon: Uuid?): DomRolleBerechtigung = DatabaseFactory.dbQuery {
|
||||
// Check if assignment already exists
|
||||
// Check if the assignment already exists
|
||||
val existing = findByRolleAndBerechtigung(rolleId, berechtigungId)
|
||||
if (existing != null) {
|
||||
// Relationship already exists, return it
|
||||
return@dbQuery existing
|
||||
}
|
||||
|
||||
// Create new assignment
|
||||
// Create a new assignment
|
||||
val newAssignment = DomRolleBerechtigung(
|
||||
rolleId = rolleId,
|
||||
berechtigungId = berechtigungId,
|
||||
|
||||
+6
-6
@@ -7,9 +7,9 @@ import at.mocode.members.infrastructure.table.RolleTable
|
||||
import at.mocode.shared.database.DatabaseFactory
|
||||
import com.benasher44.uuid.Uuid
|
||||
import kotlinx.datetime.Clock
|
||||
import kotlinx.datetime.TimeZone
|
||||
import kotlinx.datetime.toInstant
|
||||
import kotlinx.datetime.toLocalDateTime
|
||||
import kotlinx.datetime.TimeZone
|
||||
import org.jetbrains.exposed.sql.*
|
||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
|
||||
|
||||
@@ -67,24 +67,24 @@ class RolleRepositoryImpl : RolleRepository {
|
||||
}
|
||||
|
||||
override suspend fun findById(rolleId: Uuid): DomRolle? = DatabaseFactory.dbQuery {
|
||||
RolleTable.select { RolleTable.id eq rolleId }
|
||||
RolleTable.selectAll().where { RolleTable.id eq rolleId }
|
||||
.map(::rowToDomRolle)
|
||||
.singleOrNull()
|
||||
}
|
||||
|
||||
override suspend fun findByTyp(rolleTyp: RolleE): DomRolle? = DatabaseFactory.dbQuery {
|
||||
RolleTable.select { RolleTable.rolleTyp eq rolleTyp }
|
||||
RolleTable.selectAll().where { RolleTable.rolleTyp eq rolleTyp }
|
||||
.map(::rowToDomRolle)
|
||||
.singleOrNull()
|
||||
}
|
||||
|
||||
override suspend fun findByName(name: String): List<DomRolle> = DatabaseFactory.dbQuery {
|
||||
RolleTable.select { RolleTable.name like "%$name%" }
|
||||
RolleTable.selectAll().where { RolleTable.name like "%$name%" }
|
||||
.map(::rowToDomRolle)
|
||||
}
|
||||
|
||||
override suspend fun findAllActive(): List<DomRolle> = DatabaseFactory.dbQuery {
|
||||
RolleTable.select { RolleTable.istAktiv eq true }
|
||||
RolleTable.selectAll().where { RolleTable.istAktiv eq true }
|
||||
.map(::rowToDomRolle)
|
||||
}
|
||||
|
||||
@@ -122,7 +122,7 @@ class RolleRepositoryImpl : RolleRepository {
|
||||
}
|
||||
|
||||
override suspend fun existsByTyp(rolleTyp: RolleE): Boolean = DatabaseFactory.dbQuery {
|
||||
RolleTable.select { RolleTable.rolleTyp eq rolleTyp }
|
||||
RolleTable.selectAll().where { RolleTable.rolleTyp eq rolleTyp }
|
||||
.count() > 0
|
||||
}
|
||||
}
|
||||
|
||||
+5
-5
@@ -67,25 +67,25 @@ class UserRepositoryImpl : UserRepository {
|
||||
}
|
||||
|
||||
override suspend fun findById(userId: Uuid): DomUser? = DatabaseFactory.dbQuery {
|
||||
UserTable.select { UserTable.id eq userId }
|
||||
UserTable.selectAll().where { UserTable.id eq userId }
|
||||
.map(::rowToDomUser)
|
||||
.singleOrNull()
|
||||
}
|
||||
|
||||
override suspend fun findByUsername(username: String): DomUser? = DatabaseFactory.dbQuery {
|
||||
UserTable.select { UserTable.username eq username }
|
||||
UserTable.selectAll().where { UserTable.username eq username }
|
||||
.map(::rowToDomUser)
|
||||
.singleOrNull()
|
||||
}
|
||||
|
||||
override suspend fun findByEmail(email: String): DomUser? = DatabaseFactory.dbQuery {
|
||||
UserTable.select { UserTable.email eq email }
|
||||
UserTable.selectAll().where { UserTable.email eq email }
|
||||
.map(::rowToDomUser)
|
||||
.singleOrNull()
|
||||
}
|
||||
|
||||
override suspend fun findByPersonId(personId: Uuid): DomUser? = DatabaseFactory.dbQuery {
|
||||
UserTable.select { UserTable.personId eq personId }
|
||||
UserTable.selectAll().where { UserTable.personId eq personId }
|
||||
.map(::rowToDomUser)
|
||||
.singleOrNull()
|
||||
}
|
||||
@@ -201,7 +201,7 @@ class UserRepositoryImpl : UserRepository {
|
||||
}
|
||||
|
||||
override suspend fun getActiveUsers(): List<DomUser> = DatabaseFactory.dbQuery {
|
||||
UserTable.select { UserTable.isActive eq true }
|
||||
UserTable.selectAll().where { UserTable.isActive eq true }
|
||||
.map(::rowToDomUser)
|
||||
}
|
||||
}
|
||||
|
||||
+10
-13
@@ -2,7 +2,6 @@ package at.mocode.members.infrastructure.repository
|
||||
|
||||
import at.mocode.members.domain.model.DomVerein
|
||||
import at.mocode.members.domain.repository.VereinRepository
|
||||
import at.mocode.members.infrastructure.repository.VereinTable
|
||||
import at.mocode.shared.database.DatabaseFactory
|
||||
import com.benasher44.uuid.Uuid
|
||||
import kotlinx.datetime.Clock
|
||||
@@ -21,20 +20,20 @@ import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
|
||||
class VereinRepositoryImpl : VereinRepository {
|
||||
|
||||
override suspend fun findById(id: Uuid): DomVerein? = DatabaseFactory.dbQuery {
|
||||
VereinTable.select { VereinTable.id eq id }
|
||||
VereinTable.selectAll().where { VereinTable.id eq id }
|
||||
.map { rowToDomVerein(it) }
|
||||
.singleOrNull()
|
||||
}
|
||||
|
||||
override suspend fun findByOepsVereinsNr(oepsVereinsNr: String): DomVerein? = DatabaseFactory.dbQuery {
|
||||
VereinTable.select { VereinTable.oepsVereinsNr eq oepsVereinsNr }
|
||||
VereinTable.selectAll().where { VereinTable.oepsVereinsNr eq oepsVereinsNr }
|
||||
.map { rowToDomVerein(it) }
|
||||
.singleOrNull()
|
||||
}
|
||||
|
||||
override suspend fun findByName(searchTerm: String, limit: Int): List<DomVerein> = DatabaseFactory.dbQuery {
|
||||
val searchPattern = "%$searchTerm%"
|
||||
VereinTable.select {
|
||||
VereinTable.selectAll().where {
|
||||
(VereinTable.name like searchPattern) or
|
||||
(VereinTable.kuerzel like searchPattern)
|
||||
}
|
||||
@@ -43,24 +42,24 @@ class VereinRepositoryImpl : VereinRepository {
|
||||
}
|
||||
|
||||
override suspend fun findByBundeslandId(bundeslandId: Uuid): List<DomVerein> = DatabaseFactory.dbQuery {
|
||||
VereinTable.select { VereinTable.bundeslandId eq bundeslandId }
|
||||
VereinTable.selectAll().where { VereinTable.bundeslandId eq bundeslandId }
|
||||
.map { rowToDomVerein(it) }
|
||||
}
|
||||
|
||||
override suspend fun findByLandId(landId: Uuid): List<DomVerein> = DatabaseFactory.dbQuery {
|
||||
VereinTable.select { VereinTable.landId eq landId }
|
||||
VereinTable.selectAll().where { VereinTable.landId eq landId }
|
||||
.map { rowToDomVerein(it) }
|
||||
}
|
||||
|
||||
override suspend fun findAllActive(limit: Int, offset: Int): List<DomVerein> = DatabaseFactory.dbQuery {
|
||||
VereinTable.select { VereinTable.istAktiv eq true }
|
||||
VereinTable.selectAll().where { VereinTable.istAktiv eq true }
|
||||
.limit(limit, offset.toLong())
|
||||
.map { rowToDomVerein(it) }
|
||||
}
|
||||
|
||||
override suspend fun findByLocation(searchTerm: String, limit: Int): List<DomVerein> = DatabaseFactory.dbQuery {
|
||||
val searchPattern = "%$searchTerm%"
|
||||
VereinTable.select {
|
||||
VereinTable.selectAll().where {
|
||||
(VereinTable.ort like searchPattern) or
|
||||
(VereinTable.plz like searchPattern)
|
||||
}
|
||||
@@ -123,19 +122,17 @@ class VereinRepositoryImpl : VereinRepository {
|
||||
}
|
||||
|
||||
override suspend fun existsByOepsVereinsNr(oepsVereinsNr: String): Boolean = DatabaseFactory.dbQuery {
|
||||
VereinTable.select { VereinTable.oepsVereinsNr eq oepsVereinsNr }
|
||||
VereinTable.selectAll().where { VereinTable.oepsVereinsNr eq oepsVereinsNr }
|
||||
.count() > 0
|
||||
}
|
||||
|
||||
override suspend fun countActive(): Long = DatabaseFactory.dbQuery {
|
||||
VereinTable.select { VereinTable.istAktiv eq true }
|
||||
VereinTable.selectAll().where { VereinTable.istAktiv eq true }
|
||||
.count()
|
||||
}
|
||||
|
||||
override suspend fun countActiveByBundeslandId(bundeslandId: Uuid): Long = DatabaseFactory.dbQuery {
|
||||
VereinTable.select {
|
||||
(VereinTable.istAktiv eq true) and (VereinTable.bundeslandId eq bundeslandId)
|
||||
}.count()
|
||||
VereinTable.selectAll().where { (VereinTable.istAktiv eq true) and (VereinTable.bundeslandId eq bundeslandId) }.count()
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
-1
@@ -1,6 +1,5 @@
|
||||
package at.mocode.members.infrastructure.table
|
||||
|
||||
import at.mocode.members.infrastructure.table.RolleTable
|
||||
import org.jetbrains.exposed.sql.Table
|
||||
import org.jetbrains.exposed.sql.kotlin.datetime.date
|
||||
import org.jetbrains.exposed.sql.kotlin.datetime.timestamp
|
||||
|
||||
Reference in New Issue
Block a user