mods not yet commited
[outofuni/jsutils.git] / idb.js
diff --git a/idb.js b/idb.js
index 20d5ea4..f574688 100644 (file)
--- 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) {
@@ -87,12 +88,22 @@ 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;
        },
+       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();
+               };
+       },
        add_store_item: function(store,item,callback) {
                var tx=idb.handle.transaction(store,'readwrite');
                var store=tx.objectStore(store);
@@ -104,15 +115,6 @@ 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);
@@ -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)");
@@ -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");