diff --git a/server/Db.js b/server/Db.js index e3700d7e..d3ac3938 100644 --- a/server/Db.js +++ b/server/Db.js @@ -109,6 +109,20 @@ class Db { return this.init() } + // Get previous server version before loading DB to check whether a db migration is required + // returns null if server was not upgraded + checkPreviousVersion() { + return this.settingsDb.select(() => true).then((results) => { + if (results.data && results.data.length) { + var serverSettings = results.data.find(s => s.id === 'server-settings') + if (serverSettings && serverSettings.version && serverSettings.version !== version) { + return serverSettings.version + } + } + return null + }) + } + async init() { await this.load() diff --git a/server/Server.js b/server/Server.js index 2c2c77e1..ebfeaed9 100644 --- a/server/Server.js +++ b/server/Server.js @@ -117,7 +117,12 @@ class Server { await this.playbackSessionManager.removeOrphanStreams() await this.downloadManager.removeOrphanDownloads() - if (version.localeCompare('2.0.0') <= 0) { // Old version data model migration + var previousVersion = await this.db.checkPreviousVersion() // Returns null if same server version + if (previousVersion) { + Logger.debug(`[Server] Upgraded from previous version ${previousVersion}`) + } + if (previousVersion && previousVersion.localeCompare('2.0.0') < 0) { // Old version data model migration + Logger.debug(`[Server] Previous version was < 2.0.0 - migration required`) await dbMigration.migrate(this.db) } else { await this.db.init()