IndexedDB

PHOTO EMBED

Wed Jun 15 2022 15:13:29 GMT+0000 (Coordinated Universal Time)

Saved by @zaccamp #javascript

export function idbPromise(storeName, method, object) {
  return new Promise((resolve, reject) => {
    // open connection to the database `shop-shop` with the version of 1
    const request = window.indexedDB.open('shop-shop', 1);

    // create variables to hold reference to the database, transaction (tx), and object store
    let db, tx, store;

    // if version has changed (or if this is the first time using the database), run this method and create the three object stores 
    request.onupgradeneeded = function(e) {
      const db = request.result;
      // create object store for each type of data and set "primary" key index to be the `_id` of the data
      db.createObjectStore('products', { keyPath: '_id' });
      db.createObjectStore('categories', { keyPath: '_id' });
      db.createObjectStore('cart', { keyPath: '_id' });
    };

    // handle any errors with connecting
    request.onerror = function(e) {
      console.log('There was an error');
    };
    
    // on database open success
	request.onsuccess = function(e) {
 	// save a reference of the database to the `db` variable
 	 db = request.result;
 	// open a transaction do whatever we pass into `storeName` (must match one of the 		object store names)
 	tx = db.transaction(storeName, 'readwrite');
  	// save a reference to that object store
  	store = tx.objectStore(storeName);

 	 // if there's any errors, let us know
 	 db.onerror = function(e) {
    console.log('error', e);
  };
      
    switch (method) {
  		case 'put':
   		store.put(object);
    	resolve(object);
    	break;
  	case 'get':
    	const all = store.getAll();
    	all.onsuccess = function() {
      		resolve(all.result);
    	};
    	break;
  	case 'delete':
    	store.delete(object._id);
    	break;
  	default:
    	console.log('No valid method');
    	break;
}

  // when the transaction is complete, close the connection
  tx.oncomplete = function() {
    db.close();
  };
};
    
    

  });
}
content_copyCOPY

https://courses.bootcampspot.com/courses/972/pages/22-dot-3-3-create-the-idb-helper-function?module_item_id