Effective

This commit is contained in:
Brage Skjønborg 2026-01-30 04:00:05 +01:00
parent c54944b4ad
commit 811004096b
2 changed files with 32 additions and 0 deletions

View File

@ -33,4 +33,11 @@ class EventsController(
limit = limit limit = limit
) )
} }
@GetMapping("/history/{referenceId}/effective")
fun getEffectiveHistory(
@PathVariable referenceId: UUID,
): List<PersistedEvent> {
return paging.getEffectiveHistory(referenceId)
}
} }

View File

@ -1,6 +1,7 @@
package no.iktdev.mediaprocessing.coordinator.services package no.iktdev.mediaprocessing.coordinator.services
import no.iktdev.eventi.ZDS.toEvent import no.iktdev.eventi.ZDS.toEvent
import no.iktdev.eventi.models.DeleteEvent
import no.iktdev.eventi.models.store.PersistedEvent import no.iktdev.eventi.models.store.PersistedEvent
import no.iktdev.mediaprocessing.shared.common.dto.EventQuery import no.iktdev.mediaprocessing.shared.common.dto.EventQuery
import no.iktdev.mediaprocessing.shared.common.dto.Paginated import no.iktdev.mediaprocessing.shared.common.dto.Paginated
@ -52,4 +53,28 @@ class EventService {
fun createForcedTaskResetAuditEvent(referenceId: UUID, taskId: UUID): UUID? { fun createForcedTaskResetAuditEvent(referenceId: UUID, taskId: UUID): UUID? {
return EventStore.createTaskResetAudioEvent(referenceId, taskId) return EventStore.createTaskResetAudioEvent(referenceId, taskId)
} }
fun getEffectiveHistory(referenceId: UUID): List<PersistedEvent> {
val persisted = EventStore.getPersistedEventsFor(referenceId)
// Parse alle events (kan være null hvis ukjent type)
val parsed = persisted.mapNotNull { pe ->
pe.toEvent()?.let { ev -> pe to ev }
}
// Finn alle eventIds som er slettet
val deletedIds = parsed
.map { it.second }
.filterIsInstance<DeleteEvent>()
.map { it.deletedEventId }
.toSet()
// Filtrer persisted basert på event-logikken
return parsed
.filter { (_, ev) -> ev.eventId !in deletedIds } // fjern slettede
.filter { (_, ev) -> ev !is DeleteEvent } // fjern selve DeleteEvent
.map { it.first } // behold kun PersistedEvent
}
} }