return hash((self.provider, self.item_id))
+@dataclass
+class DbAlbum(Album):
+ """Model for an album when retrieved from the db."""
+
+ artists: list[ItemMapping] = field(default_factory=list)
+
+
@dataclass(frozen=True)
class TrackAlbumMapping(ItemMapping):
"""Model for a track that is mapped to an album."""
return self.metadata and self.metadata.chapters and len(self.metadata.chapters) > 1
+@dataclass
+class DbTrack(Track):
+ """Model for a track when retrieved from the db."""
+
+ artists: list[ItemMapping] = field(default_factory=list)
+ # album track only
+ album: ItemMapping | None = None
+ albums: list[TrackAlbumMapping] = field(default_factory=list)
+
+
@dataclass
class Playlist(MediaItem):
"""Model for a playlist."""
from music_assistant.common.models.media_items import (
Album,
Artist,
+ DbTrack,
ItemMapping,
Track,
TrackAlbumMapping,
db_table = DB_TABLE_TRACKS
media_type = MediaType.TRACK
- item_cls = Track
+ item_cls = DbTrack
def __init__(self, *args, **kwargs):
"""Initialize class."""