From: Marcel van der Veldt Date: Sun, 22 May 2022 21:01:29 +0000 (+0200) Subject: Throw exceptions when required info is missing on albums (#338) X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=3efc157312ef70f1561d3292067d878a1f649e93;p=music-assistant-server.git Throw exceptions when required info is missing on albums (#338) * Add more guard for missing required info --- 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