From: Marcel van der Veldt Date: Sun, 30 Mar 2025 14:16:10 +0000 (+0200) Subject: Chore: Add db migration for invalid release_date in db X-Git-Url: https://git.kitaultman.com/?a=commitdiff_plain;h=9fe408eaedf3543eb16eb78e866149b4d6a68043;p=music-assistant-server.git Chore: Add db migration for invalid release_date in db --- diff --git a/music_assistant/controllers/music.py b/music_assistant/controllers/music.py index a6e50b94..3589510a 100644 --- a/music_assistant/controllers/music.py +++ b/music_assistant/controllers/music.py @@ -8,6 +8,7 @@ import os import shutil from collections.abc import Sequence from contextlib import suppress +from datetime import datetime from itertools import zip_longest from math import inf from typing import TYPE_CHECKING, Final, cast @@ -85,7 +86,7 @@ DEFAULT_SYNC_INTERVAL = 12 * 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] = 16 +DB_SCHEMA_VERSION: Final[int] = 17 class MusicController(CoreController): @@ -1511,6 +1512,31 @@ class MusicController(CoreController): }, ) + if prev_version <= 16: + # cleanup invalid release_date field in metadata + for table in ( + DB_TABLE_TRACKS, + DB_TABLE_ALBUMS, + DB_TABLE_AUDIOBOOKS, + DB_TABLE_PODCASTS, + ): + async for db_row in self.database.iter_items(table): + if '"release_date":null' in db_row["metadata"]: + continue + metadata = json_loads(db_row["metadata"]) + try: + datetime.fromisoformat(metadata["release_date"]) + except (KeyError, ValueError): + # this is not a valid date, so we set it to None + metadata["release_date"] = None + await self.database.update( + table, + {"item_id": db_row["item_id"]}, + { + "metadata": serialize_to_json(metadata), + }, + ) + # save changes await self.database.commit()