diff options
Diffstat (limited to 'ext')
-rw-r--r-- | ext/bg/js/database.js | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/ext/bg/js/database.js b/ext/bg/js/database.js index 79a0a7a1..50a6ecd7 100644 --- a/ext/bg/js/database.js +++ b/ext/bg/js/database.js @@ -161,19 +161,21 @@ class Database { } const indexLoaded = (title, version, entities, hasTerms, hasKanji) => { - return this.db.dictionaries.add({title, version, hasTerms, hasKanji}).then(() => { - this.entities = entities || {}; - - const rows = []; - for (const name in entities || {}) { - rows.push({ - name, - value: entities[name], - dictionary: title - }); + return this.db.dictionaries.where('title').equals(title).count().then(count => { + if (count > 0) { + return Promise.reject(`dictionary "${title}" is already imported`); } - return this.db.entities.bulkAdd(rows); + return this.db.dictionaries.add({title, version, hasTerms, hasKanji}).then(() => { + this.entities = entities || {}; + + const rows = []; + for (const name in entities || {}) { + rows.push({name, value: entities[name], dictionary: title}); + } + + return this.db.entities.bulkAdd(rows); + }); }); }; |