Skip to content

Instantly share code, notes, and snippets.

@anasmustafa123
Last active August 9, 2024 20:11
Show Gist options
  • Select an option

  • Save anasmustafa123/5422bc4d5f9c1a3f29b2b32d7d9a931a to your computer and use it in GitHub Desktop.

Select an option

Save anasmustafa123/5422bc4d5f9c1a3f29b2b32d7d9a931a to your computer and use it in GitHub Desktop.
const dbName = "name";
const dbVersion = 1;
const storeName = 'Games';
let db;
const init_indexedDb = () => {
return new Promise((resolve, reject) => {
const request = indexedDB.open(dbName, dbVersion);
request.onupgradeneeded = event => {
console.log('upgradeneeded');
const db = event.target.result;
if (!db.objectStoreNames.contains(storeName)) {
db.createObjectStore(storeName);
}
};
request.onsuccess = () => {
db = request.result;
resolve({ ok: true, database: db });
};
request.onerror = () => {
reject(request.error);
};
});
};
const addData = ({
storename,
data,
}) => {
return new Promise((resolve, reject) => {
if (!db) {
reject('Database is not open');
return;
}
const transaction = db.transaction(storename, 'readwrite');
const store = transaction.objectStore(storename);
let request: IDBRequest<IDBValidKey>;
request = store.add(data.value, data.key)
if (request) {
request.onsuccess = () => {
resolve({ ok: true });
};
request.onerror = () => {
reject(request.error);
};
}
});
};
const getDataByKey = (param: {
storename;
data;
}) => {
return new Promise((resolve, reject) => {
if (!db) {
reject('Database is not open');
return;
}
try {
const transaction = db.transaction(storename, 'readwrite');
const store = transaction.objectStore(storename);
const request = store.get(data.key);
request.onsuccess = () => {
resolve({ ok: true, request });
};
request.onerror = () => {
reject({ ok: false, request });
};
} catch (e) {
reject(`no store with the name: ${storename}- ${e}`);
}
});
};
const updateData = ({
storename;
data;
})=> {
return new Promise((resolve, reject) => {
if (!db) {
reject('Database is not open');
return;
}
const transaction = db.transaction(storename, 'readwrite');
const store = transaction.objectStore(storename);
const request = store.put(data.value, data.key);
request.onsuccess = () => {
resolve({ ok: true, request });
};
request.onerror = () => {
reject({ ok: false, request });
};
});
};
const deleteData = ({
storename;
data;
})=> {
return new Promise((resolve, reject) => {
if (!db) {
reject('Database is not open');
return;
}
const transaction = db.transaction(storename, 'readwrite');
const store = transaction.objectStore(storename);
const request = store.delete(data.key);
request.onsuccess = () => {
resolve({ ok: true, request });
};
request.onerror = () => {
reject({ ok: false, request });
};
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment