From 24167b5c2971996b5eaf3ce14e5a97c3df9f670f Mon Sep 17 00:00:00 2001 From: Matt Date: Sun, 16 May 2021 18:45:34 -0400 Subject: [PATCH 1/2] Store a version parameter in the database for migrations --- jellyfin_kodi/database/jellyfin_db.py | 12 ++++++++++++ jellyfin_kodi/entrypoint/service.py | 1 + jellyfin_kodi/library.py | 14 ++++++++++++++ 3 files changed, 27 insertions(+) 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/entrypoint/service.py b/jellyfin_kodi/entrypoint/service.py index 04cc4161..77affd8c 100644 --- a/jellyfin_kodi/entrypoint/service.py +++ b/jellyfin_kodi/entrypoint/service.py @@ -427,3 +427,4 @@ class Service(xbmc.Monitor): self.monitor.listener.stop() LOG.info("---<<<[ %s ]", client.get_addon_name()) + 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() From 1effd2fa6ec1ed3eab45b93fb8cc7ca92252b180 Mon Sep 17 00:00:00 2001 From: Matt Date: Sun, 16 May 2021 19:04:11 -0400 Subject: [PATCH 2/2] Remove new line at end of file --- jellyfin_kodi/entrypoint/service.py | 1 - 1 file changed, 1 deletion(-) diff --git a/jellyfin_kodi/entrypoint/service.py b/jellyfin_kodi/entrypoint/service.py index 77affd8c..04cc4161 100644 --- a/jellyfin_kodi/entrypoint/service.py +++ b/jellyfin_kodi/entrypoint/service.py @@ -427,4 +427,3 @@ class Service(xbmc.Monitor): self.monitor.listener.stop() LOG.info("---<<<[ %s ]", client.get_addon_name()) -