From 3efc157312ef70f1561d3292067d878a1f649e93 Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Sun, 22 May 2022 23:01:29 +0200 Subject: [PATCH] Throw exceptions when required info is missing on albums (#338) * Add more guard for missing required info --- music_assistant/controllers/music/albums.py | 5 ++++- music_assistant/controllers/music/tracks.py | 8 ++++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/music_assistant/controllers/music/albums.py b/music_assistant/controllers/music/albums.py index 32a59c4d..712635a5 100644 --- a/music_assistant/controllers/music/albums.py +++ b/music_assistant/controllers/music/albums.py @@ -110,7 +110,8 @@ class AlbumsController(MediaControllerBase[Album]): async def add_db_item(self, album: Album, db: Optional[Db] = None) -> Album: """Add a new album record to the database.""" - assert album.provider_ids, "Album is missing provider id(s)" + assert album.provider_ids, f"Album {album.name} is missing provider id(s)" + assert album.artist, f"Album {album.name} is missing artist" cur_item = None async with self.mass.database.get_db(db) as db: # always try to grab existing item by musicbrainz_id @@ -163,6 +164,8 @@ class AlbumsController(MediaControllerBase[Album]): db: Optional[Db] = None, ) -> Album: """Update Album record in the database.""" + assert album.provider_ids, f"Album {album.name} is missing provider id(s)" + assert album.artist, f"Album {album.name} is missing artist" async with self.mass.database.get_db(db) as db: cur_item = await self.get_db_item(item_id) album_artist = await self._get_album_artist(album, cur_item, db=db) diff --git a/music_assistant/controllers/music/tracks.py b/music_assistant/controllers/music/tracks.py index 9a22c620..8b7fe066 100644 --- a/music_assistant/controllers/music/tracks.py +++ b/music_assistant/controllers/music/tracks.py @@ -273,13 +273,13 @@ class TracksController(MediaControllerBase[Track]): return album return ItemMapping.from_item(album) - if db_artist := await self.mass.music.albums.get_db_item_by_prov_id( + if db_album := await self.mass.music.albums.get_db_item_by_prov_id( album.item_id, provider=album.provider, db=db ): - return ItemMapping.from_item(db_artist) + return ItemMapping.from_item(db_album) - db_artist = await self.mass.music.albums.add_db_item(album, db=db) - return ItemMapping.from_item(db_artist) + db_album = await self.mass.music.albums.add_db_item(album, db=db) + return ItemMapping.from_item(db_album) async def _get_artist_mapping( self, artist: Union[Artist, ItemMapping], db: Optional[Db] = None -- 2.34.1