diff options
Diffstat (limited to 'ext/bg/js')
-rw-r--r-- | ext/bg/js/database.js | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/ext/bg/js/database.js b/ext/bg/js/database.js index a21708f5..9fb45794 100644 --- a/ext/bg/js/database.js +++ b/ext/bg/js/database.js @@ -20,23 +20,36 @@ class Database { constructor() { this.db = null; + this.dbVersion = 1; this.tagMetaCache = {}; } + sanitize() { + const db = new Dexie('dict'); + return db.open().then(() => { + db.close(); + if (db.verno !== this.dbVersion) { + return db.delete(); + } + }).catch(() => {}); + } + prepare() { if (this.db !== null) { return Promise.reject('database already initialized'); } - this.db = new Dexie('dict'); - this.db.version(1).stores({ - terms: '++id,dictionary,expression,reading', - kanji: '++,dictionary,character', - tagMeta: '++,dictionary', - dictionaries: '++,title,version', - }); + return this.sanitize().then(() => { + this.db = new Dexie('dict'); + this.db.version(this.dbVersion).stores({ + terms: '++id,dictionary,expression,reading', + kanji: '++,dictionary,character', + tagMeta: '++,dictionary', + dictionaries: '++,title,version', + }); - return this.db.open(); + return this.db.open(); + }); } purge() { |