QueuePersistenceExtensions.kt
package dev.stave.data
import dev.stave.domain.model.DidlItem
import kotlin.time.Duration.Companion.milliseconds
/** DidlItem.Track → PersistedTrack. Duration → millis; all other fields copy verbatim. */
fun DidlItem.Track.toPersisted(): PersistedTrack = PersistedTrack(
id = id,
parentId = parentId,
title = title,
artist = artist,
albumArtist = albumArtist,
album = album,
composer = composer,
genre = genre,
date = date,
trackNumber = trackNumber,
discNumber = discNumber,
durationMs = duration?.inWholeMilliseconds,
albumArtUri = albumArtUri,
resourceUrl = resourceUrl,
mimeType = mimeType,
sampleFrequency = sampleFrequency,
bitsPerSample = bitsPerSample,
channels = channels,
bitrate = bitrate,
size = size,
extras = extras,
)
/** PersistedTrack → DidlItem.Track. Millis → Duration. */
fun PersistedTrack.toDomain(): DidlItem.Track = DidlItem.Track(
id = id,
parentId = parentId,
title = title,
artist = artist,
albumArtist = albumArtist,
album = album,
composer = composer,
genre = genre,
date = date,
trackNumber = trackNumber,
discNumber = discNumber,
duration = durationMs?.milliseconds,
albumArtUri = albumArtUri,
resourceUrl = resourceUrl,
mimeType = mimeType,
sampleFrequency = sampleFrequency,
bitsPerSample = bitsPerSample,
channels = channels,
bitrate = bitrate,
size = size,
extras = extras,
)