mirror of
https://github.com/gusaul/grpcox.git
synced 2024-11-17 06:26:56 +00:00
464de07064
by using this request list, user doesn't need to memorise the endpoint & the request anymore, they can store the request and come again if they need it. at the moment the data is store in IndexDB (browser), hence it doesn't need backend effort.
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)
|
|
}
|
|
})
|
|
} |