From: Marcel van der Veldt Date: Tue, 16 Apr 2024 00:16:16 +0000 (+0200) Subject: cleanup url provider in db X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=f5dfc84de825aed8a1fff6734e81b993c334e83d;p=music-assistant-server.git cleanup url provider in db --- diff --git a/music_assistant/constants.py b/music_assistant/constants.py index 52a6272e..6ba1e210 100644 --- a/music_assistant/constants.py +++ b/music_assistant/constants.py @@ -5,7 +5,7 @@ from typing import Final API_SCHEMA_VERSION: Final[int] = 24 MIN_SCHEMA_VERSION: Final[int] = 24 -DB_SCHEMA_VERSION: Final[int] = 29 +DB_SCHEMA_VERSION: Final[int] = 30 MASS_LOGGER_NAME: Final[str] = "music_assistant" diff --git a/music_assistant/server/controllers/music.py b/music_assistant/server/controllers/music.py index 02d3da99..48f12474 100644 --- a/music_assistant/server/controllers/music.py +++ b/music_assistant/server/controllers/music.py @@ -27,7 +27,12 @@ from music_assistant.common.models.errors import ( MusicAssistantError, ProviderUnavailableError, ) -from music_assistant.common.models.media_items import BrowseFolder, MediaItemType, SearchResults +from music_assistant.common.models.media_items import ( + BrowseFolder, + MediaItemType, + ProviderMapping, + SearchResults, +) from music_assistant.common.models.provider import SyncTask from music_assistant.common.models.streamdetails import LoudnessMeasurement from music_assistant.constants import ( @@ -745,8 +750,31 @@ class MusicController(CoreController): db_path_backup = db_path + ".backup" await asyncio.to_thread(shutil.copyfile, db_path, db_path_backup) + # handle db migration to 30: uri provider --> builtin provider + if prev_version < 30: + await self.mass.cache.clear("url") + for ctrl in ( + self.mass.music.radio, + self.mass.music.tracks, + self.mass.music.artists, + ): + prov_items = await ctrl.get_library_items_by_prov_id("url") + for item in prov_items: + try: + await ctrl.add_provider_mapping( + item.item_id, + ProviderMapping( + item_id=item.item_id, + provider_domain="builtin", + provider_instance="builtin", # yeah, we're cheating here + ), + ) + await ctrl.remove_provider_mappings(item.item_id, "url") + except Exception as err: + self.logger.exception(err) + # handle db migration from previous schema to this one - if prev_version in (27, 28): + if prev_version in (27, 28, 29): self.logger.info( "Performing database migration from %s to %s", prev_version,