Minor changes

This commit is contained in:
Brage Skjønborg 2026-01-31 13:26:41 +01:00
parent c39366960f
commit 15f8c4c076
3 changed files with 12 additions and 14 deletions

View File

@ -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.events.StoreContentAndMetadataTaskCreatedEvent
import no.iktdev.mediaprocessing.shared.common.event_task_contract.tasks.StoreContentAndMetadataTask 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.model.ContentExport
import no.iktdev.mediaprocessing.shared.common.projection.CollectProjection
import no.iktdev.mediaprocessing.shared.common.projection.StoreProjection import no.iktdev.mediaprocessing.shared.common.projection.StoreProjection
import no.iktdev.mediaprocessing.shared.database.stores.TaskStore import no.iktdev.mediaprocessing.shared.database.stores.TaskStore
@ -49,8 +50,9 @@ class StoreContentAndMetadataListener: EventListener() {
return null return null
} }
if (!projection.canStoreAutomatically()) { val collectProjection = CollectProjection(useHistory)
log.info { "Not storing content and metadata automatically for collection: $collection @ ${useEvent.referenceId}" } 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." } log.info { "A manual allow completion event is required to proceed." }
return null return null
} }

View File

@ -50,14 +50,17 @@ class CollectProjection(val events: List<Event>) {
) )
fun isStorePermitted(): Boolean { fun isStorePermitted(): Boolean {
val isAuto = events.filterIsInstance<StartProcessingEvent>().lastOrNull()?.data?.flow == StartFlow.Auto val start = events.filterIsInstance<StartProcessingEvent>().firstOrNull()
if (isAuto) { ?: return false // ingen start → ingen store
return true
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<ManualAllowCompletionEvent>().lastOrNull()
return anyAllow != null
} }
private fun projectUseFile(): File? { private fun projectUseFile(): File? {
val added = events.filterIsInstance<FileAddedEvent>().firstOrNull()?.data val added = events.filterIsInstance<FileAddedEvent>().firstOrNull()?.data
val startEvent = projectStartedWith() val startEvent = projectStartedWith()

View File

@ -4,19 +4,12 @@ import no.iktdev.eventi.models.Event
import no.iktdev.eventi.models.store.TaskStatus 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.MediaParsedInfoEvent
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.MigrateContentToStoreTaskResultEvent 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.ContentExport
import no.iktdev.mediaprocessing.shared.common.model.MigrateStatus import no.iktdev.mediaprocessing.shared.common.model.MigrateStatus
import java.io.File import java.io.File
class StoreProjection(val events: List<Event>) { class StoreProjection(val events: List<Event>) {
fun canStoreAutomatically(): Boolean {
val manualEvent = events.filterIsInstance<StartProcessingEvent>().lastOrNull()
return manualEvent?.data?.flow != StartFlow.Manual
}
fun projectMetadata(): ContentExport.MetadataExport? { fun projectMetadata(): ContentExport.MetadataExport? {
val metadata = CollectProjection(events).metadata val metadata = CollectProjection(events).metadata
if (metadata != null) { if (metadata != null) {