cool down media updated events
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Thu, 28 Jul 2022 19:20:52 +0000 (21:20 +0200)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Thu, 28 Jul 2022 19:20:52 +0000 (21:20 +0200)
music_assistant/controllers/music/albums.py
music_assistant/controllers/music/artists.py
music_assistant/controllers/music/playlists.py
music_assistant/controllers/music/radio.py
music_assistant/controllers/music/tracks.py
music_assistant/models/media_controller.py

index a0ca7524c4ef238493f73edeb7eedf26faa51d05..773d218ee82e2d0c3c99cc76dddd521e95e7f2bc 100644 (file)
@@ -262,11 +262,7 @@ class AlbumsController(MediaControllerBase[Album]):
             },
         )
         self.logger.debug("updated %s in database: %s", item.name, item_id)
-        db_item = await self.get_db_item(item_id)
-        self.mass.signal_event(
-            MassEvent(EventType.MEDIA_ITEM_UPDATED, db_item.uri, db_item)
-        )
-        return db_item
+        return await self.get_db_item(item_id)
 
     async def delete_db_item(self, item_id: int, recursive: bool = False) -> None:
         """Delete record from the database."""
index b985fa15a9098e40894ef233a9be531530a44e6a..f6f69567eb584c982e809e035061d7badd42d0e3 100644 (file)
@@ -313,11 +313,7 @@ class ArtistsController(MediaControllerBase[Artist]):
             },
         )
         self.logger.debug("updated %s in database: %s", item.name, item_id)
-        db_item = await self.get_db_item(item_id)
-        self.mass.signal_event(
-            MassEvent(EventType.MEDIA_ITEM_UPDATED, db_item.uri, db_item)
-        )
-        return db_item
+        return await self.get_db_item(item_id)
 
     async def delete_db_item(self, item_id: int, recursive: bool = False) -> None:
         """Delete record from the database."""
index 52666b0c10ae01d8e84fcf4c545fa2617f454322..74acaf3a4bbe281b40fb0bcf9bb912dfb5bcb174 100644 (file)
@@ -279,8 +279,4 @@ class PlaylistController(MediaControllerBase[Playlist]):
             },
         )
         self.logger.debug("updated %s in database: %s", item.name, item_id)
-        db_item = await self.get_db_item(item_id)
-        self.mass.signal_event(
-            MassEvent(EventType.MEDIA_ITEM_UPDATED, db_item.uri, db_item)
-        )
-        return db_item
+        return await self.get_db_item(item_id)
index 5f263b0d2dd7f22a36426cef112d406be4d8e42d..0d4034246dc4ed2bee468075934cd96c76733bd3 100644 (file)
@@ -123,8 +123,4 @@ class RadioController(MediaControllerBase[Radio]):
             },
         )
         self.logger.debug("updated %s in database: %s", item.name, item_id)
-        db_item = await self.get_db_item(item_id)
-        self.mass.signal_event(
-            MassEvent(EventType.MEDIA_ITEM_UPDATED, db_item.uri, db_item)
-        )
-        return db_item
+        return await self.get_db_item(item_id)
index 6e05d2a89eccc55fec94abcc6bdb616c37bdce10..1183378e1bf20caa37e47463a1e932554638dd56 100644 (file)
@@ -250,11 +250,7 @@ class TracksController(MediaControllerBase[Track]):
             },
         )
         self.logger.debug("updated %s in database: %s", item.name, item_id)
-        db_item = await self.get_db_item(item_id)
-        self.mass.signal_event(
-            MassEvent(EventType.MEDIA_ITEM_UPDATED, db_item.uri, db_item)
-        )
-        return db_item
+        return await self.get_db_item(item_id)
 
     async def _get_track_artists(
         self,
index 5234b7ace9cc061ddbec8982abed7c60546ffcc2..09a6a389e9d9b77601a2d5aaf252fe8b4cc87ebe 100644 (file)
@@ -15,6 +15,7 @@ from typing import (
     Union,
 )
 
+from music_assistant.helpers.json import json_serializer
 from music_assistant.models.errors import MediaNotFoundError
 from music_assistant.models.event import MassEvent
 
@@ -421,7 +422,17 @@ class MediaControllerBase(Generic[ItemCls], metaclass=ABCMeta):
                     "Could not delete %s: it has items attached", db_item.item_id
                 )
             return
-        await self.update_db_item(db_item.item_id, db_item, overwrite=True)
+
+        # update the item in db (provider_ids column only)
+        match = {"item_id": item_id}
+        await self.mass.database.update(
+            self.db_table,
+            match,
+            {"provider_ids": json_serializer(db_item.provider_ids)},
+        )
+        self.mass.signal_event(
+            MassEvent(EventType.MEDIA_ITEM_UPDATED, db_item.uri, db_item)
+        )
 
         self.logger.debug("removed provider %s from item id %s", prov_id, item_id)