diff --git a/src/indexed-db.ts b/src/indexed-db.ts index 72299d7..7c85aeb 100644 --- a/src/indexed-db.ts +++ b/src/indexed-db.ts @@ -2,22 +2,50 @@ class SlopDB { db: IDBDatabase constructor(idb_version: number) { + this.open_database(idb_version).then((db) => { + this.db = db + }).catch((err) => { + console.log(err) + throw err + }) + } + apply_db_upgrade(db: IDBDatabase, idb_version: number) { + switch (idb_version) { + case 1: + db.createObjectStore("slop", { keyPath: "domain" }) + break + case 2: + db.createObjectStore("checkcache", { keyPath: "domain" }) + break + } } async open_database(idb_version: number): Promise { const db_promise = new Promise((resolve, reject) => { const db_request = window.indexedDB.open("SlopDB", idb_version) - db_request.onerror = (event) => { + db_request.onerror = (_event) => { reject(db_request.error) } - db_request.onsuccess = (event) => { + db_request.onsuccess = (_event) => { resolve(db_request.result) } - db_request.onupgradeneeded + db_request.onupgradeneeded = (upgrade_event) => { + const oldVersion = upgrade_event.oldVersion + const newVersion = upgrade_event.newVersion + + const db = db_request.result + + // make updates + for (let version = oldVersion + 1; version <= newVersion; version++) { + this.apply_db_upgrade(db, version) + } + + resolve(db) + } }) return db_promise