From 811004096bf708325809aaef00aa4b83bdcd8636 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Brage=20Skj=C3=B8nborg?= Date: Fri, 30 Jan 2026 04:00:05 +0100 Subject: [PATCH] Effective --- .../controller/EventsController.kt | 7 ++++++ .../coordinator/services/EventService.kt | 25 +++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/controller/EventsController.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/controller/EventsController.kt index 05cfcfec..f102f4c3 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/controller/EventsController.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/controller/EventsController.kt @@ -33,4 +33,11 @@ class EventsController( limit = limit ) } + + @GetMapping("/history/{referenceId}/effective") + fun getEffectiveHistory( + @PathVariable referenceId: UUID, + ): List { + return paging.getEffectiveHistory(referenceId) + } } diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/services/EventService.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/services/EventService.kt index 5dee4f2f..d2d4f2cc 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/services/EventService.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/services/EventService.kt @@ -1,6 +1,7 @@ package no.iktdev.mediaprocessing.coordinator.services import no.iktdev.eventi.ZDS.toEvent +import no.iktdev.eventi.models.DeleteEvent import no.iktdev.eventi.models.store.PersistedEvent import no.iktdev.mediaprocessing.shared.common.dto.EventQuery import no.iktdev.mediaprocessing.shared.common.dto.Paginated @@ -52,4 +53,28 @@ class EventService { fun createForcedTaskResetAuditEvent(referenceId: UUID, taskId: UUID): UUID? { return EventStore.createTaskResetAudioEvent(referenceId, taskId) } + + fun getEffectiveHistory(referenceId: UUID): List { + 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() + .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 + } + + } \ No newline at end of file