Cleanup
This commit is contained in:
parent
bbae7d932d
commit
ddfd2a0e5d
@ -0,0 +1,57 @@
|
|||||||
|
package no.iktdev.mediaprocessing.ui.service
|
||||||
|
|
||||||
|
import no.iktdev.mediaprocessing.shared.common.datasource.withTransaction
|
||||||
|
import no.iktdev.mediaprocessing.shared.common.persistance.events
|
||||||
|
import no.iktdev.mediaprocessing.shared.contract.dto.EventsDto
|
||||||
|
import no.iktdev.mediaprocessing.shared.kafka.core.DeserializingRegistry
|
||||||
|
import no.iktdev.mediaprocessing.ui.getEventsDatabase
|
||||||
|
import org.jetbrains.exposed.sql.*
|
||||||
|
import org.springframework.stereotype.Service
|
||||||
|
import java.time.LocalDateTime
|
||||||
|
import javax.annotation.PostConstruct
|
||||||
|
|
||||||
|
@Service
|
||||||
|
class PersistentEventsTableService {
|
||||||
|
val dzz = DeserializingRegistry()
|
||||||
|
private var latestPull: LocalDateTime = LocalDateTime.MIN
|
||||||
|
|
||||||
|
val cachedEvents: MutableMap<String, List<EventsDto>> = mutableMapOf()
|
||||||
|
|
||||||
|
|
||||||
|
fun pullEvents() {
|
||||||
|
val pulled = withTransaction(getEventsDatabase()) {
|
||||||
|
val cached = latestPull
|
||||||
|
latestPull = LocalDateTime.now()
|
||||||
|
events.select {
|
||||||
|
(events.created greaterEq cached)
|
||||||
|
}
|
||||||
|
.orderBy(events.created, SortOrder.ASC)
|
||||||
|
.toEvent(dzz)
|
||||||
|
.groupBy { it.referenceId }
|
||||||
|
} ?: emptyMap()
|
||||||
|
pulled.forEach { (rid, events) ->
|
||||||
|
val cEvents = cachedEvents[rid] ?: emptyList()
|
||||||
|
cachedEvents[rid] = cEvents + events
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fun Query?.toEvent(dzz: DeserializingRegistry): List<EventsDto> {
|
||||||
|
return this?.mapNotNull { fromRow(it, dzz) } ?: emptyList()
|
||||||
|
}
|
||||||
|
fun fromRow(row: ResultRow, dez: DeserializingRegistry): EventsDto? {
|
||||||
|
return EventsDto(
|
||||||
|
referenceId = row[events.referenceId],
|
||||||
|
eventId = row[events.eventId],
|
||||||
|
event = row[events.event],
|
||||||
|
data = row[events.data],
|
||||||
|
created = row[events.created]
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@PostConstruct
|
||||||
|
fun onInitializationCompleted() {
|
||||||
|
pullEvents()
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,9 +0,0 @@
|
|||||||
package no.iktdev.mediaprocessing.shared.common.helper
|
|
||||||
|
|
||||||
import no.iktdev.mediaprocessing.shared.common.persistance.PersistentProcessDataMessage
|
|
||||||
|
|
||||||
data class DerivedProcessIterationHolder(
|
|
||||||
val eventId: String,
|
|
||||||
val event: PersistentProcessDataMessage,
|
|
||||||
var iterated: Int = 0
|
|
||||||
)
|
|
||||||
@ -40,68 +40,8 @@ class PersistentDataReader(var dataSource: DataSource) {
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated(message = "Use PersistentEventManager.isProcessEventCompleted")
|
|
||||||
fun isProcessEventAlreadyClaimed(referenceId: String, eventId: String): Boolean {
|
|
||||||
val result = withDirtyRead(dataSource.database) {
|
|
||||||
processerEvents.select {
|
|
||||||
(processerEvents.referenceId eq referenceId) and
|
|
||||||
(processerEvents.eventId eq eventId)
|
|
||||||
}.mapNotNull { fromRowToPersistentProcessDataMessage(it, dzz) }.singleOrNull()
|
|
||||||
}
|
|
||||||
return result?.claimed ?: true
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated(message = "Use PersistentEventManager.isProcessEventCompleted")
|
|
||||||
fun isProcessEventDefinedAsConsumed(referenceId: String, eventId: String, claimedBy: String): Boolean {
|
|
||||||
return withDirtyRead(dataSource.database) {
|
|
||||||
processerEvents.select {
|
|
||||||
(processerEvents.referenceId eq referenceId) and
|
|
||||||
(processerEvents.eventId eq eventId) and
|
|
||||||
(processerEvents.claimedBy eq claimedBy)
|
|
||||||
}.mapNotNull { fromRowToPersistentProcessDataMessage(it, dzz) }
|
|
||||||
}?.singleOrNull()?.consumed ?: false
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated(message = "Use PersistentEventManager.getProcessEventsClaimable")
|
|
||||||
fun getAvailableProcessEvents(): List<PersistentProcessDataMessage> {
|
|
||||||
return withDirtyRead(dataSource.database) {
|
|
||||||
processerEvents.select {
|
|
||||||
(processerEvents.claimed eq false) and
|
|
||||||
(processerEvents.consumed eq false)
|
|
||||||
}.mapNotNull { fromRowToPersistentProcessDataMessage(it, dzz) }
|
|
||||||
} ?: emptyList()
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated("Use PersistentEventManager.getProcessEventsWithExpiredClaim")
|
|
||||||
fun getExpiredClaimsProcessEvents(): List<PersistentProcessDataMessage> {
|
|
||||||
val deadline = LocalDateTime.now()
|
|
||||||
val entries = withTransaction(dataSource.database) {
|
|
||||||
processerEvents.select {
|
|
||||||
(processerEvents.claimed eq true) and
|
|
||||||
(processerEvents.consumed neq true)
|
|
||||||
}.mapNotNull { fromRowToPersistentProcessDataMessage(it, dzz) }
|
|
||||||
} ?: emptyList()
|
|
||||||
return entries.filter { it.lastCheckIn == null || it.lastCheckIn.plusMinutes(15) < deadline }
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated("Use PersistentEventManager.getProcessEventWith")
|
|
||||||
fun getProcessEvent(referenceId: String, eventId: String): PersistentProcessDataMessage? {
|
|
||||||
val message = withDirtyRead(dataSource.database) {
|
|
||||||
processerEvents.select {
|
|
||||||
(processerEvents.referenceId eq referenceId) and
|
|
||||||
(processerEvents.eventId eq eventId)
|
|
||||||
}.mapNotNull { fromRowToPersistentProcessDataMessage(it, dzz) }
|
|
||||||
}?.singleOrNull()
|
|
||||||
return message
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated("Use PersistentEventManager.getAllEventsProcesser")
|
|
||||||
fun getProcessEvents(): List<PersistentProcessDataMessage> {
|
|
||||||
return withTransaction(dataSource.database) {
|
|
||||||
processerEvents.selectAll()
|
|
||||||
.mapNotNull { fromRowToPersistentProcessDataMessage(it, dzz) }
|
|
||||||
} ?: emptyList()
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -187,7 +187,3 @@ fun List<PersistentMessage>?.toGrouped(): List<List<PersistentMessage>> {
|
|||||||
fun Query?.toPersistentMessage(dzz: DeserializingRegistry): List<PersistentMessage> {
|
fun Query?.toPersistentMessage(dzz: DeserializingRegistry): List<PersistentMessage> {
|
||||||
return this?.mapNotNull { fromRowToPersistentMessage(it, dzz) } ?: emptyList()
|
return this?.mapNotNull { fromRowToPersistentMessage(it, dzz) } ?: emptyList()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun Query?.toPersistentProcesserMessage(dzz: DeserializingRegistry): List<PersistentProcessDataMessage> {
|
|
||||||
return this?.mapNotNull { fromRowToPersistentProcessDataMessage(it, dzz) } ?: emptyList()
|
|
||||||
}
|
|
||||||
@ -1,40 +0,0 @@
|
|||||||
package no.iktdev.mediaprocessing.shared.common.persistance
|
|
||||||
|
|
||||||
import no.iktdev.mediaprocessing.shared.kafka.core.DeserializingRegistry
|
|
||||||
import no.iktdev.mediaprocessing.shared.kafka.core.KafkaEvents
|
|
||||||
import no.iktdev.mediaprocessing.shared.kafka.dto.MessageDataWrapper
|
|
||||||
import org.jetbrains.exposed.sql.ResultRow
|
|
||||||
import java.time.LocalDateTime
|
|
||||||
|
|
||||||
data class PersistentProcessDataMessage(
|
|
||||||
val referenceId: String,
|
|
||||||
val eventId: String,
|
|
||||||
val event: KafkaEvents,
|
|
||||||
val data: MessageDataWrapper,
|
|
||||||
val created: LocalDateTime,
|
|
||||||
val claimedBy: String? = null,
|
|
||||||
val claimed: Boolean = false,
|
|
||||||
val consumed: Boolean = false,
|
|
||||||
val lastCheckIn: LocalDateTime? = null
|
|
||||||
)
|
|
||||||
|
|
||||||
fun fromRowToPersistentProcessDataMessage(row: ResultRow, dez: DeserializingRegistry): PersistentProcessDataMessage? {
|
|
||||||
val kev = try {
|
|
||||||
KafkaEvents.toEvent(row[event])
|
|
||||||
} catch (e: IllegalArgumentException) {
|
|
||||||
e.printStackTrace()
|
|
||||||
return null
|
|
||||||
}?: return null
|
|
||||||
val dzdata = dez.deserializeData(kev, row[data])
|
|
||||||
return PersistentProcessDataMessage(
|
|
||||||
referenceId = row[referenceId],
|
|
||||||
eventId = row[eventId],
|
|
||||||
event = kev,
|
|
||||||
data = dzdata,
|
|
||||||
created = row[created],
|
|
||||||
claimed = row[claimed],
|
|
||||||
claimedBy = row[claimedBy],
|
|
||||||
consumed = row[consumed],
|
|
||||||
lastCheckIn = row[lastCheckIn]
|
|
||||||
)
|
|
||||||
}
|
|
||||||
Loading…
Reference in New Issue
Block a user