Fix order of database initialization (#400)
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Fri, 8 Jul 2022 09:19:01 +0000 (11:19 +0200)
committerGitHub <noreply@github.com>
Fri, 8 Jul 2022 09:19:01 +0000 (11:19 +0200)
music_assistant/helpers/database.py

index bddb5978f44e241c94ffdb2c890ae02505b6120d..54a10eea28a7747411ae9c43be3e49cf56a07a50 100755 (executable)
@@ -40,12 +40,6 @@ class Database:
         """Perform async initialization."""
         await self._db.connect()
         self.logger.info("Database connected.")
-        await self.execute(
-            """CREATE TABLE IF NOT EXISTS settings(
-                    key TEXT PRIMARY KEY,
-                    value TEXT
-                );"""
-        )
         await self._migrate()
 
     async def close(self) -> None:
@@ -179,6 +173,8 @@ class Database:
 
     async def _migrate(self):
         """Perform database migration actions if needed."""
+        # always create db tables if they don't exist to prevent errors trying to access them later
+        await self.__create_database_tables()
         try:
             if prev_version := await self.get_setting("version"):
                 prev_version = int(prev_version["value"])
@@ -193,8 +189,6 @@ class Database:
                 prev_version,
                 SCHEMA_VERSION,
             )
-            # always create db tables if they don't exist to prevent errors trying to access them later
-            await self.__create_database_tables()
 
             if prev_version < 18:
                 # too many changes, just recreate
@@ -214,8 +208,12 @@ class Database:
 
     async def __create_database_tables(self) -> None:
         """Init database tables."""
-        # TODO: create indexes, especially for the json columns
-
+        await self.execute(
+            """CREATE TABLE IF NOT EXISTS settings(
+                    key TEXT PRIMARY KEY,
+                    value TEXT
+                );"""
+        )
         await self.execute(
             f"""CREATE TABLE IF NOT EXISTS {TABLE_TRACK_LOUDNESS}(
                     item_id INTEGER NOT NULL,
@@ -317,6 +315,7 @@ class Database:
                 UNIQUE(path, size));"""
         )
         # create indexes
+        # TODO: create indexes for the json columns ?
         await self.execute(
             "CREATE INDEX IF NOT EXISTS artists_in_library_idx on artists(in_library);"
         )