From 15f8c4c076cf9bafe989c33f62234c1f27dcb011 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Brage=20Skj=C3=B8nborg?= Date: Sat, 31 Jan 2026 13:26:41 +0100 Subject: [PATCH] Minor changes --- .../events/StoreContentAndMetadataListener.kt | 6 ++++-- .../shared/common/projection/CollectProjection.kt | 13 ++++++++----- .../shared/common/projection/StoreProjection.kt | 7 ------- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/listeners/events/StoreContentAndMetadataListener.kt b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/listeners/events/StoreContentAndMetadataListener.kt index 5b2c0140..0960d303 100644 --- a/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/listeners/events/StoreContentAndMetadataListener.kt +++ b/apps/coordinator/src/main/kotlin/no/iktdev/mediaprocessing/coordinator/listeners/events/StoreContentAndMetadataListener.kt @@ -9,6 +9,7 @@ import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.Migrat import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StoreContentAndMetadataTaskCreatedEvent import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.StoreContentAndMetadataTask import no.iktdev.mediaprocessing.shared.common.model.ContentExport +import no.iktdev.mediaprocessing.shared.common.projection.CollectProjection import no.iktdev.mediaprocessing.shared.common.projection.StoreProjection import no.iktdev.mediaprocessing.shared.database.stores.TaskStore @@ -49,8 +50,9 @@ class StoreContentAndMetadataListener: EventListener() { return null } - if (!projection.canStoreAutomatically()) { - log.info { "Not storing content and metadata automatically for collection: $collection @ ${useEvent.referenceId}" } + val collectProjection = CollectProjection(useHistory) + if (!collectProjection.isStorePermitted()) { + log.info { "\uD83D\uDED1 Not storing content and metadata automatically for collection: $collection @ ${useEvent.referenceId}" } log.info { "A manual allow completion event is required to proceed." } return null } diff --git a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/projection/CollectProjection.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/projection/CollectProjection.kt index 2939b41e..467bf441 100644 --- a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/projection/CollectProjection.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/projection/CollectProjection.kt @@ -50,14 +50,17 @@ class CollectProjection(val events: List) { ) fun isStorePermitted(): Boolean { - val isAuto = events.filterIsInstance().lastOrNull()?.data?.flow == StartFlow.Auto - if (isAuto) { - return true + val start = events.filterIsInstance().firstOrNull() + ?: return false // ingen start → ingen store + + return when (start.data.flow) { + StartFlow.Auto -> true + StartFlow.Manual -> events.any { it is ManualAllowCompletionEvent } + null -> false // eksplisitt: ukjent flow → ikke tillatt } - val anyAllow = events.filterIsInstance().lastOrNull() - return anyAllow != null } + private fun projectUseFile(): File? { val added = events.filterIsInstance().firstOrNull()?.data val startEvent = projectStartedWith() diff --git a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/projection/StoreProjection.kt b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/projection/StoreProjection.kt index f496b95b..6db1bcb5 100644 --- a/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/projection/StoreProjection.kt +++ b/shared/common/src/main/kotlin/no/iktdev/mediaprocessing/shared/common/projection/StoreProjection.kt @@ -4,19 +4,12 @@ import no.iktdev.eventi.models.Event import no.iktdev.eventi.models.store.TaskStatus import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.MediaParsedInfoEvent import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.MigrateContentToStoreTaskResultEvent -import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StartFlow -import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.StartProcessingEvent import no.iktdev.mediaprocessing.shared.common.model.ContentExport import no.iktdev.mediaprocessing.shared.common.model.MigrateStatus import java.io.File class StoreProjection(val events: List) { - fun canStoreAutomatically(): Boolean { - val manualEvent = events.filterIsInstance().lastOrNull() - return manualEvent?.data?.flow != StartFlow.Manual - } - fun projectMetadata(): ContentExport.MetadataExport? { val metadata = CollectProjection(events).metadata if (metadata != null) {