Migrated to instant
This commit is contained in:
parent
ab21fc76d9
commit
a86347aaa5
@ -2,18 +2,18 @@ package no.iktdev.mediaprocessing.coordinator.services
|
||||
|
||||
import no.iktdev.eventi.ZDS.toEvent
|
||||
import no.iktdev.eventi.models.store.PersistedEvent
|
||||
import no.iktdev.mediaprocessing.shared.common.LocalDateTimeEpoch
|
||||
import no.iktdev.mediaprocessing.shared.common.dto.SequenceSummary
|
||||
import no.iktdev.mediaprocessing.shared.common.event_task_contract.events.CollectedEvent
|
||||
import no.iktdev.mediaprocessing.shared.common.projection.CollectProjection
|
||||
import no.iktdev.mediaprocessing.shared.database.stores.EventStore
|
||||
import org.springframework.stereotype.Service
|
||||
import java.time.Instant
|
||||
|
||||
@Service
|
||||
class SequenceAggregatorService() {
|
||||
|
||||
fun getActiveSequences(): List<SequenceSummary> {
|
||||
val allEvents = EventStore.getPersistedEventsAfter(LocalDateTimeEpoch)
|
||||
val allEvents = EventStore.getPersistedEventsAfter(Instant.EPOCH)
|
||||
|
||||
// Gruppér først, deserialiser senere
|
||||
val grouped = allEvents.groupBy { it.referenceId }
|
||||
@ -26,7 +26,7 @@ class SequenceAggregatorService() {
|
||||
}
|
||||
|
||||
fun getRecentSequences(limit: Int): List<SequenceSummary> {
|
||||
val allEvents = EventStore.getPersistedEventsAfter(LocalDateTimeEpoch)
|
||||
val allEvents = EventStore.getPersistedEventsAfter(Instant.EPOCH)
|
||||
|
||||
val grouped = allEvents.groupBy { it.referenceId }
|
||||
|
||||
|
||||
@ -2,9 +2,8 @@ from datetime import datetime, timezone
|
||||
|
||||
def utc_now():
|
||||
"""
|
||||
Returnerer en UTC-basert LocalDateTime uten Z eller offset,
|
||||
med nanosekund-lignende presisjon (mikrosekunder + padding).
|
||||
Matcher nøyaktig formatet Kotlin/Exposed skriver til databasen:
|
||||
yyyy-MM-dd HH:mm:ss.SSSSSS (UTC)
|
||||
"""
|
||||
dt = datetime.now(timezone.utc).replace(tzinfo=None)
|
||||
return dt.strftime("%Y-%m-%dT%H:%M:%S.") + f"{dt.microsecond:06d}000"
|
||||
|
||||
dt = datetime.now(timezone.utc)
|
||||
return dt.strftime("%Y-%m-%d %H:%M:%S.%f")
|
||||
|
||||
@ -2,9 +2,8 @@ from datetime import datetime, timezone
|
||||
|
||||
def utc_now():
|
||||
"""
|
||||
Returnerer en UTC-basert LocalDateTime uten Z eller offset,
|
||||
med nanosekund-lignende presisjon (mikrosekunder + padding).
|
||||
Matcher nøyaktig formatet Kotlin/Exposed skriver til databasen:
|
||||
yyyy-MM-dd HH:mm:ss.SSSSSS (UTC)
|
||||
"""
|
||||
dt = datetime.now(timezone.utc).replace(tzinfo=None)
|
||||
return dt.strftime("%Y-%m-%dT%H:%M:%S.") + f"{dt.microsecond:06d}000"
|
||||
|
||||
dt = datetime.now(timezone.utc)
|
||||
return dt.strftime("%Y-%m-%d %H:%M:%S.%f")
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
[versions]
|
||||
eventi = "1.0-rc29"
|
||||
eventi = "1.0-rc30"
|
||||
exfl = "1.0-rc1"
|
||||
|
||||
[libraries]
|
||||
|
||||
@ -10,8 +10,7 @@ import java.io.FileInputStream
|
||||
import java.io.RandomAccessFile
|
||||
import java.net.InetAddress
|
||||
import java.security.MessageDigest
|
||||
import java.time.Clock
|
||||
import java.time.LocalDateTime
|
||||
import java.time.Instant
|
||||
import java.util.zip.CRC32
|
||||
|
||||
private val logger = KotlinLogging.logger {}
|
||||
@ -217,9 +216,4 @@ fun File.resolveConflict(): File {
|
||||
return candidate
|
||||
}
|
||||
|
||||
val LocalDateTimeEpoch: LocalDateTime =
|
||||
LocalDateTime.of(1970, 1, 1, 0, 0, 0)
|
||||
|
||||
fun UtcNow(): LocalDateTime {
|
||||
return LocalDateTime.now(Clock.systemUTC())
|
||||
}
|
||||
fun UtcNow(): Instant = Instant.now()
|
||||
@ -1,10 +1,10 @@
|
||||
package no.iktdev.mediaprocessing.shared.common.dto
|
||||
|
||||
import java.time.LocalDateTime
|
||||
import java.time.Instant
|
||||
|
||||
data class FileTableItem(
|
||||
val name: String,
|
||||
val uri: String,
|
||||
val checksum: String,
|
||||
val identifiedAt: LocalDateTime,
|
||||
val identifiedAt: Instant,
|
||||
)
|
||||
@ -2,7 +2,7 @@ package no.iktdev.mediaprocessing.shared.common.dto
|
||||
|
||||
import no.iktdev.eventi.models.Event
|
||||
import no.iktdev.eventi.models.store.PersistedEvent
|
||||
import java.time.LocalDateTime
|
||||
import java.time.Instant
|
||||
import java.util.*
|
||||
import kotlin.reflect.KProperty1
|
||||
|
||||
@ -10,14 +10,14 @@ data class SequenceEvent(
|
||||
val eventId: UUID,
|
||||
val referenceId: UUID,
|
||||
val type: String,
|
||||
val timestamp: LocalDateTime,
|
||||
val timestamp: Instant,
|
||||
val metadata: MetadataDto,
|
||||
val payload: Map<String, Any?>?
|
||||
)
|
||||
|
||||
data class MetadataDto(
|
||||
val derivedFromEventIds: Set<UUID>?,
|
||||
val createdAt: LocalDateTime
|
||||
val createdAt: Instant
|
||||
)
|
||||
|
||||
fun Event.extractPayload(): Map<String, Any?>? {
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
package no.iktdev.mediaprocessing.shared.common.dto
|
||||
|
||||
import no.iktdev.mediaprocessing.shared.common.projection.CollectProjection
|
||||
import java.time.LocalDateTime
|
||||
import java.time.Instant
|
||||
|
||||
data class SequenceSummary(
|
||||
val referenceId: String,
|
||||
@ -9,7 +9,7 @@ data class SequenceSummary(
|
||||
val inputFileName: String?,
|
||||
val type: ContextType = ContextType.Content,
|
||||
val lastEventId: String,
|
||||
val lastEventTime: LocalDateTime,
|
||||
val lastEventTime: Instant,
|
||||
val metadataTaskStatus: CollectProjection.TaskStatus,
|
||||
val encodeTaskStatus: CollectProjection.TaskStatus,
|
||||
val extractTaskStatus: CollectProjection.TaskStatus,
|
||||
|
||||
@ -9,11 +9,11 @@ import no.iktdev.mediaprocessing.shared.database.tables.EventsTable
|
||||
import no.iktdev.mediaprocessing.shared.database.withTransaction
|
||||
import org.jetbrains.exposed.sql.insert
|
||||
import org.jetbrains.exposed.sql.selectAll
|
||||
import java.time.LocalDateTime
|
||||
import java.time.Instant
|
||||
import java.util.*
|
||||
|
||||
object EventStore: EventStore {
|
||||
override fun getPersistedEventsAfter(timestamp: LocalDateTime): List<PersistedEvent> {
|
||||
override fun getPersistedEventsAfter(timestamp: Instant): List<PersistedEvent> {
|
||||
val result = withTransaction {
|
||||
EventsTable.selectAll()
|
||||
.where { EventsTable.persistedAt greater timestamp }
|
||||
|
||||
@ -1,17 +1,18 @@
|
||||
package no.iktdev.mediaprocessing.shared.database.tables
|
||||
|
||||
import no.iktdev.mediaprocessing.shared.common.UtcNow
|
||||
import org.jetbrains.exposed.dao.id.IntIdTable
|
||||
import org.jetbrains.exposed.sql.Column
|
||||
import org.jetbrains.exposed.sql.javatime.CurrentDateTime
|
||||
import org.jetbrains.exposed.sql.javatime.datetime
|
||||
import java.time.LocalDateTime
|
||||
import org.jetbrains.exposed.sql.javatime.timestamp
|
||||
|
||||
object EventsTable: IntIdTable(name = "EVENTS") {
|
||||
val referenceId: Column<String> = varchar("REFERENCE_ID", 36)
|
||||
val eventId: Column<String> = varchar("EVENT_ID", 36)
|
||||
val event: Column<String> = varchar("EVENT",100)
|
||||
val data: Column<String> = text("DATA")
|
||||
val persistedAt: Column<LocalDateTime> = datetime("PERSISTED_AT").defaultExpression(CurrentDateTime)
|
||||
val persistedAt = timestamp("PERSISTED_AT")
|
||||
.clientDefault { UtcNow() }
|
||||
|
||||
|
||||
init {
|
||||
uniqueIndex(referenceId, eventId, event)
|
||||
|
||||
@ -2,12 +2,12 @@ package no.iktdev.mediaprocessing.shared.database.tables
|
||||
|
||||
import org.jetbrains.exposed.dao.id.IntIdTable
|
||||
import org.jetbrains.exposed.sql.Column
|
||||
import org.jetbrains.exposed.sql.javatime.datetime
|
||||
import java.time.LocalDateTime
|
||||
import org.jetbrains.exposed.sql.javatime.timestamp
|
||||
import java.time.Instant
|
||||
|
||||
object FilesTable: IntIdTable("FILES") {
|
||||
val name: Column<String> = varchar("NAME", 255)
|
||||
val uri: Column<String> = text("URI")
|
||||
val checksum: Column<String> = char("CHECKSUM", 64)
|
||||
val identifiedAt: Column<LocalDateTime> = datetime("IDENTIFIED_AT")
|
||||
val identifiedAt: Column<Instant> = timestamp("IDENTIFIED_AT")
|
||||
}
|
||||
@ -1,11 +1,11 @@
|
||||
package no.iktdev.mediaprocessing.shared.database.tables
|
||||
|
||||
import no.iktdev.eventi.models.store.TaskStatus
|
||||
import no.iktdev.mediaprocessing.shared.common.UtcNow
|
||||
import org.jetbrains.exposed.dao.id.IntIdTable
|
||||
import org.jetbrains.exposed.sql.Column
|
||||
import org.jetbrains.exposed.sql.javatime.CurrentDateTime
|
||||
import org.jetbrains.exposed.sql.javatime.datetime
|
||||
import java.time.LocalDateTime
|
||||
import org.jetbrains.exposed.sql.javatime.timestamp
|
||||
import java.time.Instant
|
||||
|
||||
object TasksTable: IntIdTable(name = "TASKS") {
|
||||
val referenceId: Column<String> = varchar("REFERENCE_ID", 36)
|
||||
@ -16,6 +16,7 @@ object TasksTable: IntIdTable(name = "TASKS") {
|
||||
val claimed: Column<Boolean> = bool("CLAIMED").default(false)
|
||||
val claimedBy: Column<String?> = varchar("CLAIMED_BY",100).nullable()
|
||||
val consumed: Column<Boolean> = bool("CONSUMED").default(false)
|
||||
val lastCheckIn: Column<LocalDateTime?> = datetime("LAST_CHECK_IN").nullable()
|
||||
val persistedAt: Column<LocalDateTime> = datetime("PERSISTED_AT").defaultExpression(CurrentDateTime)
|
||||
val lastCheckIn: Column<Instant?> = timestamp("LAST_CHECK_IN").nullable()
|
||||
val persistedAt = timestamp("PERSISTED_AT")
|
||||
.clientDefault { UtcNow() }
|
||||
}
|
||||
@ -10,6 +10,7 @@ import no.iktdev.mediaprocessing.ffmpeg.decoder.FfmpegProgressDecoder
|
||||
import no.iktdev.mediaprocessing.ffmpeg.util.UtcNow
|
||||
import java.io.File
|
||||
import java.io.FileOutputStream
|
||||
import java.time.ZoneId
|
||||
import java.time.format.DateTimeFormatter
|
||||
|
||||
open class FFmpeg(val executable: String, val logDir: File) {
|
||||
@ -20,9 +21,12 @@ open class FFmpeg(val executable: String, val logDir: File) {
|
||||
private val outputCache = mutableListOf<String>()
|
||||
|
||||
//region Log File formatting
|
||||
val currentDateTime = UtcNow()
|
||||
val currentDateTime = UtcNow() // Instant, alltid UTC
|
||||
val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd.HH.mm")
|
||||
val formattedDateTime = currentDateTime.format(formatter)
|
||||
val formattedDateTime = currentDateTime
|
||||
.atZone(ZoneId.systemDefault())
|
||||
.format(formatter)
|
||||
|
||||
//endregion
|
||||
lateinit var logFile: File
|
||||
|
||||
|
||||
@ -1,8 +1,5 @@
|
||||
package no.iktdev.mediaprocessing.ffmpeg.util
|
||||
|
||||
import java.time.Clock
|
||||
import java.time.LocalDateTime
|
||||
import java.time.Instant
|
||||
|
||||
fun UtcNow(): LocalDateTime {
|
||||
return LocalDateTime.now(Clock.systemUTC())
|
||||
}
|
||||
fun UtcNow(): Instant = Instant.now()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user