From: Marcel van der Veldt Date: Sat, 25 Mar 2023 00:45:33 +0000 (+0100) Subject: Map ItemMapping results from database records X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=615037a00e00d6febc46ceb68dbaac221436988f;p=music-assistant-server.git Map ItemMapping results from database records --- diff --git a/music_assistant/common/models/media_items.py b/music_assistant/common/models/media_items.py index 8d385c04..5e74763b 100755 --- a/music_assistant/common/models/media_items.py +++ b/music_assistant/common/models/media_items.py @@ -319,6 +319,13 @@ class Album(MediaItem): 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.""" @@ -382,6 +389,16 @@ class Track(MediaItem): 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.""" diff --git a/music_assistant/server/controllers/media/albums.py b/music_assistant/server/controllers/media/albums.py index c0511863..b957ca52 100644 --- a/music_assistant/server/controllers/media/albums.py +++ b/music_assistant/server/controllers/media/albums.py @@ -14,6 +14,7 @@ from music_assistant.common.models.media_items import ( Album, AlbumType, Artist, + DbAlbum, ItemMapping, MediaType, Track, @@ -31,7 +32,7 @@ class AlbumsController(MediaControllerBase[Album]): db_table = DB_TABLE_ALBUMS media_type = MediaType.ALBUM - item_cls = Album + item_cls = DbAlbum def __init__(self, *args, **kwargs): """Initialize class.""" diff --git a/music_assistant/server/controllers/media/tracks.py b/music_assistant/server/controllers/media/tracks.py index 2e06cdf6..b797b730 100644 --- a/music_assistant/server/controllers/media/tracks.py +++ b/music_assistant/server/controllers/media/tracks.py @@ -10,6 +10,7 @@ from music_assistant.common.models.errors import MediaNotFoundError, Unsupported from music_assistant.common.models.media_items import ( Album, Artist, + DbTrack, ItemMapping, Track, TrackAlbumMapping, @@ -29,7 +30,7 @@ class TracksController(MediaControllerBase[Track]): db_table = DB_TABLE_TRACKS media_type = MediaType.TRACK - item_cls = Track + item_cls = DbTrack def __init__(self, *args, **kwargs): """Initialize class."""