Effective
This commit is contained in:
parent
c54944b4ad
commit
811004096b
@ -33,4 +33,11 @@ class EventsController(
|
||||
limit = limit
|
||||
)
|
||||
}
|
||||
|
||||
@GetMapping("/history/{referenceId}/effective")
|
||||
fun getEffectiveHistory(
|
||||
@PathVariable referenceId: UUID,
|
||||
): List<PersistedEvent> {
|
||||
return paging.getEffectiveHistory(referenceId)
|
||||
}
|
||||
}
|
||||
|
||||
@ -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<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
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user