From 54c2787da16d4cb137d71f7c07f49402c65d9cce Mon Sep 17 00:00:00 2001 From: Jack Case Date: Sat, 6 Dec 2025 22:02:02 +0000 Subject: [PATCH] continuing indexeddb work --- src/indexed-db.ts | 35 +++++++++++++++++++++++++++++++---- 1 file changed, 31 insertions(+), 4 deletions(-) diff --git a/src/indexed-db.ts b/src/indexed-db.ts index 81bf47f..7969749 100644 --- a/src/indexed-db.ts +++ b/src/indexed-db.ts @@ -50,17 +50,44 @@ class SlopDB { return db_promise } + + start_transaction(storeNames: string | Array, mode: IDBTransactionMode, options: IDBTransactionOptions = undefined): IDBTransaction { + return this.db.transaction(storeNames, mode, options) + } } class CheckCache { slopdb: SlopDB + cache_capacity: number + static cache_objectstore_name = "checkcache" - constructor(slopdb: SlopDB) { + constructor(slopdb: SlopDB, max_entries: number) { this.slopdb = slopdb + this.cache_capacity = max_entries } - start_transaction(mode: IDBTransactionMode): IDBTransaction { - const transaction = this.slopdb.db.transaction("checkcache", mode) - return transaction + cache_item_factory(url: URL) { + return { + url: url, + check_timestamp: Date.now() + } + } + + async evict_least_recently_checked(count: number) { + const transaction = this.slopdb.start_transaction(CheckCache.cache_objectstore_name, "readwrite") + const cache_objectstore = transaction.objectStore(CheckCache.cache_objectstore_name) + + const cursor_result_promise = new Promise((resolve, reject) => { + const cache_cursor_request = cache_objectstore.openCursor() + + cache_cursor_request.onerror = (error) => { + reject(error) + } + + cache_cursor_request.onsuccess = (event) => { + + } + }) + } } \ No newline at end of file