mirror of
https://github.com/gusaul/grpcox.git
synced 2024-11-17 06:26:56 +00:00
143 lines
3.9 KiB
JavaScript
143 lines
3.9 KiB
JavaScript
|
const objectStoreRequests = "requests";
|
||
|
let dbConn = null;
|
||
|
|
||
|
function gdb(){
|
||
|
if (!window.indexedDB) {
|
||
|
alert(`Your browser doesn't support IndexedDB`)
|
||
|
return;
|
||
|
}
|
||
|
return new Promise(function (success, error){
|
||
|
if (dbConn !== null){
|
||
|
success(dbConn)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
const request = indexedDB.open('grpcox',1);
|
||
|
request.onerror = (event) => {
|
||
|
error(request.error)
|
||
|
};
|
||
|
|
||
|
request.onsuccess = (event) => {
|
||
|
// add implementation here
|
||
|
console.log("success open DB")
|
||
|
dbConn = event.target.result;
|
||
|
success(dbConn);
|
||
|
};
|
||
|
// create the Contacts object store and indexes
|
||
|
request.onupgradeneeded = (event) => {
|
||
|
let dbConn = event.target.result;
|
||
|
let store = dbConn.createObjectStore(objectStoreRequests,{
|
||
|
keyPath:"name"
|
||
|
});
|
||
|
};
|
||
|
})
|
||
|
}
|
||
|
|
||
|
|
||
|
function getRequest(name) {
|
||
|
return new Promise(async function (success, error){
|
||
|
let db = await gdb()
|
||
|
const txn = db.transaction(objectStoreRequests, 'readwrite');
|
||
|
const store = txn.objectStore(objectStoreRequests);
|
||
|
let idbRequest = store.get(name);
|
||
|
idbRequest.onerror = function (param) {
|
||
|
error(idbRequest.error.name)
|
||
|
}
|
||
|
idbRequest.onsuccess = function (event) {
|
||
|
success(event.target.result)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
function getAllRequestKey() {
|
||
|
return new Promise(async function (success, error){
|
||
|
let db = await gdb();
|
||
|
const txn = db.transaction(objectStoreRequests, 'readwrite');
|
||
|
// get the Contacts object store
|
||
|
const store = txn.objectStore(objectStoreRequests);
|
||
|
let idbRequest = store.getAllKeys();
|
||
|
idbRequest.onerror = function (param) {
|
||
|
error(param.target)
|
||
|
}
|
||
|
idbRequest.onsuccess = function (event) {
|
||
|
success(event.target.result)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
function insertRequest(request) {
|
||
|
return new Promise(async function(success, error){
|
||
|
let db = await gdb()
|
||
|
|
||
|
// create a new transaction
|
||
|
const txn = db.transaction(objectStoreRequests, 'readwrite');
|
||
|
|
||
|
const store = txn.objectStore(objectStoreRequests);
|
||
|
|
||
|
let query = store.add(request);
|
||
|
|
||
|
// handle success case
|
||
|
query.onsuccess = function (event) {
|
||
|
success('success')
|
||
|
};
|
||
|
|
||
|
// handle the error case
|
||
|
query.onerror = function (event) {
|
||
|
if (query.error.name === "ConstraintError") {
|
||
|
error('Duplicate request name')
|
||
|
return
|
||
|
}
|
||
|
error(query.error.name)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
function updateRequest(request) {
|
||
|
return new Promise(async function(success, error){
|
||
|
let db = await gdb()
|
||
|
|
||
|
// create a new transaction
|
||
|
const txn = db.transaction(objectStoreRequests, 'readwrite');
|
||
|
|
||
|
const store = txn.objectStore(objectStoreRequests);
|
||
|
|
||
|
let query = store.put(request);
|
||
|
|
||
|
// handle success case
|
||
|
query.onsuccess = function (event) {
|
||
|
success('success')
|
||
|
};
|
||
|
|
||
|
// handle the error case
|
||
|
query.onerror = function (event) {
|
||
|
if (query.error.name === "ConstraintError") {
|
||
|
error('Duplicate request name')
|
||
|
return
|
||
|
}
|
||
|
error(query.error.name)
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
function deleteRequest(name){
|
||
|
return new Promise(async function (success, error){
|
||
|
let db = await gdb()
|
||
|
|
||
|
// create a new transaction
|
||
|
const txn = db.transaction(objectStoreRequests, 'readwrite');
|
||
|
|
||
|
const store = txn.objectStore(objectStoreRequests);
|
||
|
|
||
|
let query = store.delete(name);
|
||
|
|
||
|
// handle success case
|
||
|
query.onsuccess = function (event) {
|
||
|
success('success')
|
||
|
};
|
||
|
|
||
|
// handle the error case
|
||
|
query.onerror = function (event) {
|
||
|
error(query.error.name)
|
||
|
}
|
||
|
})
|
||
|
}
|