From 7e30afb2a56b8c4296548fd6782619ae0719c612 Mon Sep 17 00:00:00 2001 From: Dan Stillman Date: Fri, 13 Jan 2017 21:16:47 -0500 Subject: [PATCH] Use coroutine() for Zotero.Schema::_updateSchema() --- chrome/content/zotero/xpcom/schema.js | 34 +++++++++++++-------------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/chrome/content/zotero/xpcom/schema.js b/chrome/content/zotero/xpcom/schema.js index e04bbaf42..02e9ffd71 100644 --- a/chrome/content/zotero/xpcom/schema.js +++ b/chrome/content/zotero/xpcom/schema.js @@ -1418,26 +1418,24 @@ Zotero.Schema = new function(){ } - function _updateSchema(schema){ - return Zotero.Promise.all([Zotero.Schema.getDBVersion(schema), _getSchemaSQLVersion(schema)]) - .spread(function (dbVersion, schemaVersion) { - if (dbVersion == schemaVersion) { - return false; - } - else if (dbVersion < schemaVersion) { - return _getSchemaSQL(schema) - .then(function (sql) { - return Zotero.DB.executeSQLFile(sql); - }) - .then(function () { - return _updateDBVersion(schema, schemaVersion); - }); - } - + /** + * Requires a transaction + */ + var _updateSchema = Zotero.Promise.coroutine(function* (schema) { + var [dbVersion, schemaVersion] = yield Zotero.Promise.all( + [Zotero.Schema.getDBVersion(schema), _getSchemaSQLVersion(schema)] + ); + if (dbVersion == schemaVersion) { + return false; + } + if (dbVersion > schemaVersion) { throw new Error("Zotero '" + schema + "' DB version (" + dbVersion + ") is newer than SQL file (" + schemaVersion + ")"); - }); - } + } + let sql = yield _getSchemaSQL(schema); + yield Zotero.DB.executeSQLFile(sql); + return _updateDBVersion(schema, schemaVersion); + }); var _updateCompatibility = Zotero.Promise.coroutine(function* (version) {