in backend/src/main/kotlin/org/jetbrains/kotlinconf/backend/repositories/KotlinConfRepository.kt [90:120]
suspend fun changeVote(
userIdValue: String,
sessionIdValue: SessionId,
scoreValue: Score?,
timestampValue: LocalDateTime
) {
if (scoreValue == null) {
deleteVote(userIdValue, sessionIdValue)
return
}
newSuspendedTransaction(Dispatchers.IO) {
val count = Votes.selectAll()
.where { (Votes.userId eq userIdValue) and (Votes.sessionId eq sessionIdValue) }.count()
if (count == 0L) {
Votes.insert {
it[userId] = userIdValue
it[sessionId] = sessionIdValue
it[rating] = scoreValue.value
it[timestamp] = timestampValue.toString()
}
return@newSuspendedTransaction
}
Votes.update({ (Votes.userId eq userIdValue) and (Votes.sessionId eq sessionIdValue) }) {
it[rating] = scoreValue.value
}
}
}