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