working on indexeddb upgrade logic

This commit is contained in:
Jack Case
2025-12-06 13:37:42 +00:00
parent 1e100c16a2
commit a7d1449c01

View File

@@ -2,22 +2,50 @@ class SlopDB {
db: IDBDatabase db: IDBDatabase
constructor(idb_version: number) { 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<IDBDatabase> { async open_database(idb_version: number): Promise<IDBDatabase> {
const db_promise = new Promise<IDBDatabase>((resolve, reject) => { const db_promise = new Promise<IDBDatabase>((resolve, reject) => {
const db_request = window.indexedDB.open("SlopDB", idb_version) const db_request = window.indexedDB.open("SlopDB", idb_version)
db_request.onerror = (event) => { db_request.onerror = (_event) => {
reject(db_request.error) reject(db_request.error)
} }
db_request.onsuccess = (event) => { db_request.onsuccess = (_event) => {
resolve(db_request.result) 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 return db_promise