var store=idb.stores[sn]
var key={};
key[store['keytype']]=store['keyname'];
- cl("idb: creating store '"+sn+"'");
+ cl("idb: creating store '"+sn+"' ("+
+ store.keytype+": "+store.keyname+")");
store.os=idb.handle.createObjectStore(sn,key);
// indices
if(store.idx!==undefined) {
idb.successcb=successcb;
if(upgradecb!==undefined)
idb.onupgradeneeded=upgradecb;
+ cl("idb: init database '"+idb.name+"'");
var req=indexedDB.open(idb.name,idb.version);
req.onsuccess=idb.onsuccess;
req.onupgradeneeded=idb.onupgradeneeded;
req.onerror=idb.onerror;
req.onblocked=idb.onblocked;
},
- add_store_item: function(store,item,callback) {
- var tx=idb.handle.transaction(store,'readwrite');
- var store=tx.objectStore(store);
+ del_store: function(sname,callback) {
+ var tx=db.handle.transaction(sname,'readwrite');
+ var store=tx.objectStore(sname);
+ var req=store.clear();
+ req.onsuccess=function() {
+ cl("db: store "+store.name+" deleted");
+ callback();
+ };
+ },
+ add_store_item: function(sname,item,callback) {
+ var tx=idb.handle.transaction(sname,'readwrite');
+ var store=tx.objectStore(sname);
var req=store.add(item);
req.onsuccess=function(event) {
callback(event);
cl("idb: add item error, "+error);
};
},
- del_store: function(store,callback) {
- var tx=db.handle.transaction(store,'readwrite');
- var store=tx.objectStore(store);
- var req=store.clear();
- req.onsuccess=function() {
- cl("db: store "+store.name+" deleted");
- callback();
- };
- },
- del_store_item: function(store,num,callback) {
- var tx=db.handle.transaction(store,'readwrite');
- var store=tx.objectStore(store);
+ del_store_item: function(sname,num,callback) {
+ var tx=db.handle.transaction(sname,'readwrite');
+ var store=tx.objectStore(sname);
var kr=IDBKeyRange.bound(num,num,false,false);
var req=store.openCursor(kr);
};
},
- update_store_item: function(store,num,nitem,callback) {
- var tx=idb.handle.transaction(store,'readwrite');
- var store=tx.objectStore(store);
+ update_store_item: function(sname,num,nitem,callback) {
+ var tx=idb.handle.transaction(sname,'readwrite');
+ var store=tx.objectStore(sname);
var kr=IDBKeyRange.bound(num,num,false,false);
var req=store.openCursor(kr);
var res=cursor.update(nitem);
res.onsuccess=function(event) {
cl("idb: updated cursor");
- callback(event);
+ if(callback!==undefined)
+ callback(event);
};
res.onerror=function(error) {
cl("idb: cursor update error");
var addreq=store.add(nitem,num);
addreq.onsuccess=function(event) {
cl("idb: added (update mode) key "+num);
- callback(event);
+ if(callback!==undefined)
+ callback(event);
}
addreq.onerror=function(error) {
cl("idb: error add (update mode)");
};
},
- get_store_items: function(store,callback,low,up) {
+ get_store_items: function(sname,callback,low,up) {
// if low and up are undefined, all items are considered
var kr;
var last=false;
kr=IDBKeyRange.upperBound(up,true);
}
- var tx=idb.handle.transaction(store,'readonly');
- var store=tx.objectStore(store);
+ var tx=idb.handle.transaction(sname,'readonly');
+ var store=tx.objectStore(sname);
var obj={};
obj.cnt_objs=0;
}
};
},
- get_item_by_key: function(store,key,callback) {
- var tx=idb.handle.transaction(store,'readonly')
- var store=tx.objectStore(store);
+ get_item_by_key: function(sname,key,callback) {
+ var tx=idb.handle.transaction(sname,'readonly')
+ var store=tx.objectStore(sname);
var req=store.get(key);
req.onerror=function(event) {
cl("idb: get key error - "+event.target.errorCode);
}
}
},
- get_item_by_index: function(store,index,val,callback) {
- var tx=db.handle.transaction(store,'readonly')
- var store=tx.objectStore(store);
+ get_item_by_index: function(sname,index,val,callback) {
+ var tx=db.handle.transaction(sname,'readonly')
+ var store=tx.objectStore(sname);
var idx=store.index(index);
var req=idx.get(val);
req.onerror=function(event) {
}
}
},
- del_item_by_key: function(store,key,callback) {
- var tx=idb.handle.transaction(store,'readwrite');
- var store=tx.objectStore(store);
+ del_item_by_key: function(sname,key,callback) {
+ var tx=idb.handle.transaction(sname,'readwrite');
+ var store=tx.objectStore(sname);
var kr=IDBKeyRange.bound(key,key,false,false);
var req=store.openCursor(kr);
};
},
- del: function() {
+ del: function(callback) {
var req=indexedDB.deleteDatabase(idb.name);
req.onsuccess=function() {
cl("idb: deleted database '"+idb.name+"'");
+ callback();
};
req.onblocked=function() {
cl("idb: database delete blocked");