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'));
}