]> kaliko git repositories - mpd-sima.git/commitdiff
Add new database replacement code.
authorkaliko <kaliko@azylum.org>
Tue, 4 May 2021 18:21:13 +0000 (20:21 +0200)
committerkaliko <kaliko@azylum.org>
Fri, 7 May 2021 16:24:36 +0000 (18:24 +0200)
In case a previous database is loaded, it is renamed with a prefix
"-old-version-backup" in the same directory. No migration managed.

sima/launch.py
sima/lib/simadb.py

index 27e9d6bfdab60e75a2832a2b8e3683b7d341adf7..890f96bfd1641db6c1b6a3b1e357ffe7ea4c8571 100644 (file)
@@ -26,6 +26,7 @@ import sys
 
 from importlib import __import__ as sima_import
 from os.path import isfile
+from os import rename
 ##
 
 # third parties components
@@ -92,7 +93,13 @@ def start(sopt, restart=False):
     db_file = config.get('sima', 'db_file')
     if not isfile(db_file):
         logger.debug('Creating database in "%s"', db_file)
-        open(db_file, 'a').close()  # TODO: to remove with new simadb in v0.18
+        SimaDB(db_path=db_file).create_db()
+    # Migration from v0.17.0
+    dbinfo = SimaDB(db_path=db_file).get_info()
+    if not dbinfo:  # v0.17.0 → v0.18+ migration
+        logger.warning('Backing up database!')
+        rename(db_file, db_file + '-old-version-backup')
+        logger.info('Creating an new database in "%s"', db_file)
         SimaDB(db_path=db_file).create_db()
 
     if sopt.options.get('command'):
index ca2277d601d4c24c61e407fa02ee996f86beab92..60844a2af38854618fed17d49d993459d6582a8a 100644 (file)
@@ -49,6 +49,13 @@ class SimaDB:
             self._db_path, isolation_level=None)
         return connection
 
+    def get_info(self):
+        connection = self.get_database_connection()
+        info = connection.execute("""SELECT * FROM db_info
+                    WHERE name = "DB Version" LIMIT 1;""").fetchone()
+        connection.close()
+        return info
+
     def create_db(self):
         """ Set up a database
         """