EARHORNMUSIC UPnP · Android TV · Phones · Android Auto · GNU/Linux
Release 0.5.0

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,
)