www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit 04a730da7fd32381535180c0ad105770ab919b43
parent 7d3311679edfa2cc8c710dc90f256668323ecab6
Author: Dan Stillman <dstillman@zotero.org>
Date:   Fri, 17 Nov 2017 02:55:58 -0500

More complete fix for invalid creator row error at startup

Follow-up to 7d3311679e

Diffstat:
Mchrome/content/zotero/xpcom/schema.js | 18+++++++++++++++++-
1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/chrome/content/zotero/xpcom/schema.js b/chrome/content/zotero/xpcom/schema.js @@ -1338,7 +1338,23 @@ Zotero.Schema = new function(){ // Creators with first name can't be fieldMode 1 [ "SELECT COUNT(*) > 0 FROM creators WHERE fieldMode = 1 AND firstName != ''", - "UPDATE creators SET fieldMode = 0 WHERE fieldMode = 1 AND firstName != ''" + function () { + return Zotero.DB.executeTransaction(function* () { + var rows = yield Zotero.DB.queryAsync("SELECT * FROM creators WHERE fieldMode = 1 AND firstName != ''"); + for (let row of rows) { + // Find existing fieldMode 0 row and use that if available + let newID = yield Zotero.DB.valueQueryAsync("SELECT creatorID FROM creators WHERE firstName=? AND lastName=? AND fieldMode=0", [row.firstName, row.lastName]); + if (newID) { + yield Zotero.DB.queryAsync("UPDATE itemCreators SET creatorID=? WHERE creatorID=?", [newID, row.creatorID]); + yield Zotero.DB.queryAsync("DELETE FROM creators WHERE creatorID=?", row.creatorID); + } + // Otherwise convert this one to fieldMode 0 + else { + yield Zotero.DB.queryAsync("UPDATE creators SET fieldMode=0 WHERE creatorID=?", row.creatorID); + } + } + }); + } ] ];