QueuePersistenceExtensions.kt
54 lines · 1.5 KB
Changed in: 0.5.0
| 1 | package dev.stave.data |
| 2 | |
| 3 | import dev.stave.domain.model.DidlItem |
| 4 | import kotlin.time.Duration.Companion.milliseconds |
| 5 | |
| 6 | /** DidlItem.Track → PersistedTrack. Duration → millis; all other fields copy verbatim. */ |
| 7 | fun DidlItem.Track.toPersisted(): PersistedTrack = PersistedTrack( |
| 8 | id = id, |
| 9 | parentId = parentId, |
| 10 | title = title, |
| 11 | artist = artist, |
| 12 | albumArtist = albumArtist, |
| 13 | album = album, |
| 14 | composer = composer, |
| 15 | genre = genre, |
| 16 | date = date, |
| 17 | trackNumber = trackNumber, |
| 18 | discNumber = discNumber, |
| 19 | durationMs = duration?.inWholeMilliseconds, |
| 20 | albumArtUri = albumArtUri, |
| 21 | resourceUrl = resourceUrl, |
| 22 | mimeType = mimeType, |
| 23 | sampleFrequency = sampleFrequency, |
| 24 | bitsPerSample = bitsPerSample, |
| 25 | channels = channels, |
| 26 | bitrate = bitrate, |
| 27 | size = size, |
| 28 | extras = extras, |
| 29 | ) |
| 30 | |
| 31 | /** PersistedTrack → DidlItem.Track. Millis → Duration. */ |
| 32 | fun PersistedTrack.toDomain(): DidlItem.Track = DidlItem.Track( |
| 33 | id = id, |
| 34 | parentId = parentId, |
| 35 | title = title, |
| 36 | artist = artist, |
| 37 | albumArtist = albumArtist, |
| 38 | album = album, |
| 39 | composer = composer, |
| 40 | genre = genre, |
| 41 | date = date, |
| 42 | trackNumber = trackNumber, |
| 43 | discNumber = discNumber, |
| 44 | duration = durationMs?.milliseconds, |
| 45 | albumArtUri = albumArtUri, |
| 46 | resourceUrl = resourceUrl, |
| 47 | mimeType = mimeType, |
| 48 | sampleFrequency = sampleFrequency, |
| 49 | bitsPerSample = bitsPerSample, |
| 50 | channels = channels, |
| 51 | bitrate = bitrate, |
| 52 | size = size, |
| 53 | extras = extras, |
| 54 | ) |


