Throw exceptions when required info is missing on albums (#338)
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Sun, 22 May 2022 21:01:29 +0000 (23:01 +0200)
committerGitHub <noreply@github.com>
Sun, 22 May 2022 21:01:29 +0000 (23:01 +0200)
* Add more guard for missing required info

music_assistant/controllers/music/albums.py
music_assistant/controllers/music/tracks.py

index 32a59c4d2c3f704344442b4ad9bfdf8c0d90681c..712635a5f3accfe8396fc3a404632558d3683a84 100644 (file)
@@ -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)
index 9a22c6205548877493636ce37fc80c142b976d02..8b7fe0669e51f2bae68535a89d2b448c49deb7e7 100644 (file)
@@ -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