diff --git a/jellyfin_kodi/database/jellyfin_db.py b/jellyfin_kodi/database/jellyfin_db.py index 2036a25d..5683e740 100644 --- a/jellyfin_kodi/database/jellyfin_db.py +++ b/jellyfin_kodi/database/jellyfin_db.py @@ -144,3 +144,15 @@ class JellyfinDatabase(): def remove_media_by_parent_id(self, *args): self.cursor.execute(QU.delete_media_by_parent_id, args) + + def get_version(self): + self.cursor.execute(QU.get_version) + + return self.cursor.fetchone() + + def add_version(self, *args): + ''' + We only ever want one value here, so erase the existing contents first + ''' + self.cursor.execute(QU.delete_version) + self.cursor.execute(QU.add_version, args) diff --git a/jellyfin_kodi/library.py b/jellyfin_kodi/library.py index 1c616fd1..860c1c9e 100644 --- a/jellyfin_kodi/library.py +++ b/jellyfin_kodi/library.py @@ -26,6 +26,7 @@ from helper import LazyLogger LOG = LazyLogger(__name__) LIMIT = int(settings('limitIndex') or 15) DTHREADS = int(settings('limitThreads') or 3) +TARGET_DB_VERSION = 1 ################################################################################################## @@ -110,6 +111,18 @@ class Library(threading.Thread): with Database('video'), Database('music'): pass + def check_version(self): + ''' + Checks database version and triggers any required data migrations + ''' + with Database('jellyfin') as jellyfindb: + db = jellyfin_db.JellyfinDatabase(jellyfindb.cursor) + db_version = db.get_version() + + if not db_version: + # Make sure we always have a version in the database + db.add_version((TARGET_DB_VERSION)) + @stop def service(self): @@ -303,6 +316,7 @@ class Library(threading.Thread): Check for the server plugin. ''' self.test_databases() + self.check_version() Views().get_views() Views().get_nodes()