fix corrupt chapters in tracks table
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Mon, 6 Jan 2025 23:46:48 +0000 (00:46 +0100)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Mon, 6 Jan 2025 23:46:48 +0000 (00:46 +0100)
music_assistant/controllers/music.py

index 5b795974996d9a4eda9b108966b5f9fb9ebb389a..65a106c24bb5e7569147535b409bcd086ddf36cf 100644 (file)
@@ -56,6 +56,7 @@ from music_assistant.constants import (
 from music_assistant.helpers.api import api_command
 from music_assistant.helpers.database import DatabaseConnection
 from music_assistant.helpers.datetime import utc_timestamp
+from music_assistant.helpers.json import json_loads, serialize_to_json
 from music_assistant.helpers.uri import parse_uri
 from music_assistant.helpers.util import TaskManager
 from music_assistant.models.core_controller import CoreController
@@ -78,7 +79,7 @@ DEFAULT_SYNC_INTERVAL = 3 * 60  # default sync interval in minutes
 CONF_SYNC_INTERVAL = "sync_interval"
 CONF_DELETED_PROVIDERS = "deleted_providers"
 CONF_ADD_LIBRARY_ON_PLAY = "add_library_on_play"
-DB_SCHEMA_VERSION: Final[int] = 13
+DB_SCHEMA_VERSION: Final[int] = 14
 
 
 class MusicController(CoreController):
@@ -1239,6 +1240,18 @@ class MusicController(CoreController):
             await self.database.execute(f"DROP TABLE IF EXISTS {DB_TABLE_PODCASTS}")
             await self.__create_database_tables()
 
+        if prev_version <= 13:
+            # migrate chapters in metadata
+            # this is leftover mess from the old chapters implementation
+            for db_row in await self.database.search(DB_TABLE_TRACKS, "position_start", "metadata"):
+                metadata = json_loads(db_row["metadata"])
+                metadata["chapters"] = None
+                await self.database.update(
+                    DB_TABLE_TRACKS,
+                    {"item_id": db_row["item_id"]},
+                    {"metadata": serialize_to_json(metadata)},
+                )
+
         # save changes
         await self.database.commit()