X-Git-Url: https://hackdaworld.org/gitweb/?p=outofuni%2Fjsutils.git;a=blobdiff_plain;f=idb.js;h=dcb7a84381a63d6c3769852a13051a7f03b794e6;hp=20d5ea4c424dc19a5426af5e5f75e703af47975b;hb=940bad374392d3128509499fc8e6e855d0f37037;hpb=6e422299e58210a31d3b080f935a8213f9eef68c diff --git a/idb.js b/idb.js index 20d5ea4..dcb7a84 100644 --- a/idb.js +++ b/idb.js @@ -25,7 +25,8 @@ var idb = { 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) { @@ -59,7 +60,7 @@ var idb = { } } } - cl("idb: upgrade success! ("+ov+"->"+nv+")"); + cl("idb: upgrade success! ("+ov+" -> "+nv+")"); }, onsuccess: function(event) { idb.handle=event.target.result; @@ -87,15 +88,25 @@ var idb = { 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); @@ -104,18 +115,9 @@ var idb = { 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); @@ -139,9 +141,9 @@ var idb = { }; }, - 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); @@ -165,7 +167,8 @@ var idb = { 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"); @@ -177,7 +180,8 @@ var idb = { 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)"); @@ -186,7 +190,7 @@ var idb = { }; }, - 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; @@ -215,8 +219,8 @@ var idb = { 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; @@ -247,9 +251,9 @@ var idb = { } }; }, - 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); @@ -260,9 +264,9 @@ var idb = { } } }, - 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) { @@ -274,9 +278,9 @@ var idb = { } } }, - 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); @@ -299,10 +303,11 @@ var idb = { }; }, - 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");