indexeddb
by sonylnagale
JavaScript
IDBKeyRange.forPrefix = (prefix) => {
const successor = (key) => {
let len = key.length;
while (len > 0) {
const head = key.substring(0, len - 1);
const tail = key.charCodeAt(len - 1);
if (tail !== 0xFFFF) {
return head + String.fromCharCode(tail + 1);
}
key = head;
--len;
}
return UPPER_BOUND.STRING;
}
const upperKey = successor(prefix);
if (upperKey === undefined) {
return IDBKeyRange.lowerBound(prefix);
}
return IDBKeyRange.bound(prefix, upperKey, false, true);
};
////////////////////
/**
for (let i = 0; i < 10; i++) {
adapter.save({ topic: 'workspace.cache', "value": `test${Math.random()}`}, (err, result) => {
console.log('hi');
});
}
*/
const request = window.indexedDB.open("finsemble", 1);
let db;
// Create the object store if necessary
request.onupgradeneeded = (event) => {
// Save the IDBDatabase interface
db = event.target.result;
// Create an objectStore for this database
const objectStore = db.createObjectStore("fsbl", { keyPath: "key" });
// Use transaction oncomplete to make sure the objectStore creation is
// finished before adding data into it.
objectStore.transaction.oncomplete = () => {
console.debug("IndexedDBAdapter object store created");
};
};
request.onsuccess = (event) => {
console.log("IndexedDBAdapter initialized successfully");
db = event.target.result;
const objectStore = db.createObjectStore("fsbl", { keyPath: "key" });
for (let i = 0; i < 10; i++) {
const saverequest = objectStore.put({ key: `Finsemble:user`, value: Math.round(Math.random()*100) });
}
console.log(keys());
};
request.onerror = (err) => {
console.error("IndexedDBAdapter DB connection initialization failed, Error: ", err);
};
function keys() {
const objectStore = db.transaction(["fsbl"], "readwrite").objectStore("fsbl");
const request = objectStore.getAllKeys(IDBKeyRange.forPrefix('Finsemble:user'));
}