diff options
author | Alex Yatskov <alex@foosoft.net> | 2017-02-26 11:05:41 -0800 |
---|---|---|
committer | Alex Yatskov <alex@foosoft.net> | 2017-02-26 11:05:41 -0800 |
commit | 32f95e59a9c5612d2b5658ea8a70b55ec17cca18 (patch) | |
tree | a75e426d9350f266402ff0e8a9d040a985a37629 /ext/bg/js/database.js | |
parent | b7faaf0b51363b8366adae3ba7511d5232d6cd30 (diff) | |
parent | 8966dc1213d4af15c956dbd8976b80a1287c9fe0 (diff) |
Merge branch 'dev' into firefox
Diffstat (limited to 'ext/bg/js/database.js')
-rw-r--r-- | ext/bg/js/database.js | 78 |
1 files changed, 1 insertions, 77 deletions
diff --git a/ext/bg/js/database.js b/ext/bg/js/database.js index cae96306..3b2bcfcb 100644 --- a/ext/bg/js/database.js +++ b/ext/bg/js/database.js @@ -45,7 +45,7 @@ class Database { terms: '++id,dictionary,expression,reading', kanji: '++,dictionary,character', tagMeta: '++,dictionary', - dictionaries: '++,title,version', + dictionaries: '++,title,version' }); return this.db.open(); @@ -155,82 +155,6 @@ class Database { return this.db.dictionaries.toArray(); } - deleteDictionary(title, callback) { - if (this.db === null) { - return Promise.reject('database not initialized'); - } - - return this.db.dictionaries.where('title').equals(title).first(info => { - if (!info) { - return; - } - - let termCounter = Promise.resolve(0); - if (info.hasTerms) { - termCounter = this.db.terms.where('dictionary').equals(title).count(); - } - - let kanjiCounter = Promise.resolve(0); - if (info.hasKanji) { - kanjiCounter = this.db.kanji.where('dictionary').equals(title).count(); - } - - return Promise.all([termCounter, kanjiCounter]).then(([termCount, kanjiCount]) => { - const rowLimit = 500; - const totalCount = termCount + kanjiCount; - let deletedCount = 0; - - let termDeleter = Promise.resolve(); - if (info.hasTerms) { - const termDeleterFunc = () => { - return this.db.terms.where('dictionary').equals(title).limit(rowLimit).delete().then(count => { - if (count === 0) { - return Promise.resolve(); - } - - deletedCount += count; - if (callback) { - callback(totalCount, deletedCount); - } - - return termDeleterFunc(); - }); - }; - - termDeleter = termDeleterFunc(); - } - - let kanjiDeleter = Promise.resolve(); - if (info.hasKanji) { - const kanjiDeleterFunc = () => { - return this.db.kanji.where('dictionary').equals(title).limit(rowLimit).delete().then(count => { - if (count === 0) { - return Promise.resolve(); - } - - deletedCount += count; - if (callback) { - callback(totalCount, deletedCount); - } - - return kanjiDeleterFunc(); - }); - }; - - kanjiDeleter = kanjiDeleterFunc(); - } - - return Promise.all([termDeleter, kanjiDeleter]); - }); - }).then(() => { - return this.db.tagMeta.where('dictionary').equals(title).delete(); - }).then(() => { - return this.db.dictionaries.where('title').equals(title).delete(); - }).then(() => { - delete this.cacheTagMeta[title]; - }); - } - importDictionary(indexUrl, callback) { if (this.db === null) { return Promise.reject('database not initialized'); |