From 893f2683b12a943a6005e6a5e8da314f2d255db0 Mon Sep 17 00:00:00 2001 From: Marcel van der Veldt Date: Thu, 28 Jul 2022 21:20:52 +0200 Subject: [PATCH] cool down media updated events --- music_assistant/controllers/music/albums.py | 6 +----- music_assistant/controllers/music/artists.py | 6 +----- music_assistant/controllers/music/playlists.py | 6 +----- music_assistant/controllers/music/radio.py | 6 +----- music_assistant/controllers/music/tracks.py | 6 +----- music_assistant/models/media_controller.py | 13 ++++++++++++- 6 files changed, 17 insertions(+), 26 deletions(-) diff --git a/music_assistant/controllers/music/albums.py b/music_assistant/controllers/music/albums.py index a0ca7524..773d218e 100644 --- a/music_assistant/controllers/music/albums.py +++ b/music_assistant/controllers/music/albums.py @@ -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.""" diff --git a/music_assistant/controllers/music/artists.py b/music_assistant/controllers/music/artists.py index b985fa15..f6f69567 100644 --- a/music_assistant/controllers/music/artists.py +++ b/music_assistant/controllers/music/artists.py @@ -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.""" diff --git a/music_assistant/controllers/music/playlists.py b/music_assistant/controllers/music/playlists.py index 52666b0c..74acaf3a 100644 --- a/music_assistant/controllers/music/playlists.py +++ b/music_assistant/controllers/music/playlists.py @@ -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) diff --git a/music_assistant/controllers/music/radio.py b/music_assistant/controllers/music/radio.py index 5f263b0d..0d403424 100644 --- a/music_assistant/controllers/music/radio.py +++ b/music_assistant/controllers/music/radio.py @@ -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) diff --git a/music_assistant/controllers/music/tracks.py b/music_assistant/controllers/music/tracks.py index 6e05d2a8..1183378e 100644 --- a/music_assistant/controllers/music/tracks.py +++ b/music_assistant/controllers/music/tracks.py @@ -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, diff --git a/music_assistant/models/media_controller.py b/music_assistant/models/media_controller.py index 5234b7ac..09a6a389 100644 --- a/music_assistant/models/media_controller.py +++ b/music_assistant/models/media_controller.py @@ -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) -- 2.34.1