diff --git a/index.html b/index.html index d8bf5e8..d994e5f 100644 --- a/index.html +++ b/index.html @@ -5354,19 +5354,19 @@ request = request.split(" "); requestor = request[0]; request = JSON.parse(request[1]); - if (floGlobals.storageList.includes(request.application)) - compactIDB.searchData(request.application, (k, v) => { return (v.application == request.application && (!request.receiverID || v.receiverID == request.receiverID) && (!request.type || v.type == request.type) && (!request.senderIDs || request.senderIDs.includes(v.senderID))) }, request.vectorClock, request.lastOnly) - .then(result => floSupernode.supernodeClientWS.send(`${requestor} ${JSON.stringify(result)}`)) - .catch(error => console.log(error)) - else - compactIDB.searchData(floGlobals.defaultStorage, (k, v) => { return (v.application == request.application && (!request.receiverID || v.receiverID == request.receiverID) && (!request.type || v.type == request.type) && (!request.senderIDs || request.senderIDs.includes(v.senderID))) }, request.vectorClock, request.lastOnly) - .then(result => floSupernode.supernodeClientWS.send(`${requestor} ${JSON.stringify(result)}`)) - .catch(error => console.log(error)) - + var filterOptions = { + lowerKey: request.lowerVectorClock, + upperKey: request.upperVectorClock, + lastOnly: request.mostRecent, + atKey: request.atVectorClock, + patternEval: (k, v) => { return (v.application == request.application && (!request.receiverID || v.receiverID == request.receiverID) && (!request.comment || v.comment == request.comment) && (!request.type || v.type == request.type) && (!request.senderIDs || request.senderIDs.includes(v.senderID))) } + } + compactIDB.searchData( floGlobals.storageList.includes(request.application) ? request.application : floGlobals.defaultStorage, filterOptions) + .then(result => floSupernode.supernodeClientWS.send(`${requestor} ${JSON.stringify(result)}`)) + .catch(error => console.log(error)) } catch (error) { console.log(error.message) } - }); //Event fired during incoming data @@ -5384,7 +5384,6 @@ var table = data.application; else var table = floGlobals.defaultStorage; - compactIDB.addData(table, { senderID: data.senderID, receiverID: data.receiverID, @@ -5395,7 +5394,6 @@ type: data.type, comment: data.comment }) - } }) } catch (error) { @@ -5536,18 +5534,24 @@ }); }, - searchData: function (obsName, patternEval, startKey = 0, lastOnly = false, dbName = this.dbName) { + searchData: function (obsName, options = {}, dbName = this.dbName) { + options.lowerKey = options.atKey | options.lowerKey | 1 + options.upperKey = options.atKey | options.upperKey | false + options.patternEval = options.patternEval | ((k,v) => {return true}) + options.lastOnly = options.lastOnly | false return new Promise((resolve, reject) => { this.openDB(dbName).then(db => { var obs = db.transaction(obsName, "readonly").objectStore(obsName); var filteredResult = {} - let curReq = obs.openCursor(IDBKeyRange.lowerBound(startKey,true), lastOnly ? "prev":"next" ); + let curReq = obs.openCursor( + options.upperKey ? IDBKeyRange.bound(options.lowerKey,options.upperKey) : IDBKeyRange.lowerBound(options.lowerKey), + options.lastOnly ? "prev":"next" ); curReq.onsuccess = (evt) => { var cursor = evt.target.result; if (cursor) { - if (patternEval(cursor.primaryKey, cursor.value)){ + if (options.patternEval(cursor.primaryKey, cursor.value)){ filteredResult[cursor.primaryKey] = cursor.value; - lastOnly ? resolve(filteredResult) : cursor.continue(); + options.lastOnly ? resolve(filteredResult) : cursor.continue(); }else cursor.continue(); } else