first step into refactoring attachmentsStore.js

This commit is contained in:
Javier Abadia 2014-04-27 18:33:30 +02:00
parent 02f913bb43
commit d5c106fa14

View File

@ -59,30 +59,31 @@ define([], function()
this.retrieve = function(attachmentId, callback) this.retrieve = function(attachmentId, callback)
{ {
if(this._db !== null) console.assert(this._db !== null, "indexeddb not initialized");
var objectStore = this._db.transaction([OBJECT_STORE_NAME]).objectStore(OBJECT_STORE_NAME);
var request = objectStore.get(attachmentId);
request.onsuccess = function(event)
{ {
var objectStore = this._db.transaction([OBJECT_STORE_NAME]).objectStore(OBJECT_STORE_NAME); var result = event.target.result;
var request = objectStore.get(attachmentId); if(!result){
request.onsuccess = function(event) callback(false,"not found");
{ }
var result = event.target.result; else{
if(!result){ callback(true,result);
callback(false,"not found"); }
} };
else{ request.onerror = function(err)
callback(true,result); {
} console.log(err);
}; callback(false,err);
request.onerror = function(err) };
{
console.log(err);
callback(false,err);
};
}
}; };
this.getAttachmentsByFeatureId = function(featureLayerUrl,objectId,callback) this.getAttachmentsByFeatureId = function(featureLayerUrl,objectId,callback)
{ {
console.assert(this._db !== null, "indexeddb not initialized");
var featureId = featureLayerUrl + "/" + objectId; var featureId = featureLayerUrl + "/" + objectId;
var attachments = []; var attachments = [];
@ -106,6 +107,8 @@ define([], function()
this.getAttachmentsByFeatureLayer = function(featureLayerUrl,callback) this.getAttachmentsByFeatureLayer = function(featureLayerUrl,callback)
{ {
console.assert(this._db !== null, "indexeddb not initialized");
var attachments = []; var attachments = [];
var objectStore = this._db.transaction([OBJECT_STORE_NAME]).objectStore(OBJECT_STORE_NAME); var objectStore = this._db.transaction([OBJECT_STORE_NAME]).objectStore(OBJECT_STORE_NAME);
@ -128,6 +131,8 @@ define([], function()
this.getAllAttachments = function(callback) this.getAllAttachments = function(callback)
{ {
console.assert(this._db !== null, "indexeddb not initialized");
var attachments = []; var attachments = [];
var objectStore = this._db.transaction([OBJECT_STORE_NAME]).objectStore(OBJECT_STORE_NAME); var objectStore = this._db.transaction([OBJECT_STORE_NAME]).objectStore(OBJECT_STORE_NAME);
@ -148,6 +153,8 @@ define([], function()
this.deleteAttachmentsByFeatureId = function(featureLayerUrl,objectId,callback) this.deleteAttachmentsByFeatureId = function(featureLayerUrl,objectId,callback)
{ {
console.assert(this._db !== null, "indexeddb not initialized");
var featureId = featureLayerUrl + "/" + objectId; var featureId = featureLayerUrl + "/" + objectId;
var objectStore = this._db.transaction([OBJECT_STORE_NAME],"readwrite").objectStore(OBJECT_STORE_NAME); var objectStore = this._db.transaction([OBJECT_STORE_NAME],"readwrite").objectStore(OBJECT_STORE_NAME);
@ -172,50 +179,42 @@ define([], function()
this.delete = function(attachmentId, callback) this.delete = function(attachmentId, callback)
{ {
if(this._db !== null) console.assert(this._db !== null, "indexeddb not initialized");
var request = this._db.transaction([OBJECT_STORE_NAME],"readwrite")
.objectStore(OBJECT_STORE_NAME)
.delete(attachmentId);
request.onsuccess = function(event)
{ {
var request = this._db.transaction([OBJECT_STORE_NAME],"readwrite") setTimeout(function(){callback(true);},1);
.objectStore(OBJECT_STORE_NAME) };
.delete(attachmentId); request.onerror = function(err)
request.onsuccess = function(event)
{
setTimeout(function(){callback(true);},1);
};
request.onerror = function(err)
{
callback(false,err);
};
}
else
{ {
callback(false,null); callback(false,err);
} };
}; };
this.deleteAll = function(callback) this.deleteAll = function(callback)
{ {
if(this._db !== null) console.assert(this._db !== null, "indexeddb not initialized");
var request = this._db.transaction([OBJECT_STORE_NAME],"readwrite")
.objectStore(OBJECT_STORE_NAME)
.clear();
request.onsuccess = function(event)
{ {
var request = this._db.transaction([OBJECT_STORE_NAME],"readwrite") callback(true);
.objectStore(OBJECT_STORE_NAME) };
.clear(); request.onerror = function(err)
request.onsuccess = function(event)
{
callback(true);
};
request.onerror = function(err)
{
callback(false,err);
};
}
else
{ {
callback(false,null); callback(false,err);
} };
}; };
this.replaceFeatureId = function(featureLayerUrl, oldId, newId, callback) this.replaceFeatureId = function(featureLayerUrl, oldId, newId, callback)
{ {
console.assert(this._db !== null, "indexeddb not initialized");
var featureId = featureLayerUrl + "/" + oldId; var featureId = featureLayerUrl + "/" + oldId;
var objectStore = this._db.transaction([OBJECT_STORE_NAME],"readwrite").objectStore(OBJECT_STORE_NAME); var objectStore = this._db.transaction([OBJECT_STORE_NAME],"readwrite").objectStore(OBJECT_STORE_NAME);
@ -245,41 +244,37 @@ define([], function()
this.getUsage = function(callback) this.getUsage = function(callback)
{ {
if(this._db !== null){ console.assert(this._db !== null, "indexeddb not initialized");
var usage = { sizeBytes: 0, attachmentCount: 0 };
var transaction = this._db.transaction([OBJECT_STORE_NAME]) var usage = { sizeBytes: 0, attachmentCount: 0 };
.objectStore(OBJECT_STORE_NAME)
.openCursor();
console.log("dumping keys"); var transaction = this._db.transaction([OBJECT_STORE_NAME])
.objectStore(OBJECT_STORE_NAME)
.openCursor();
transaction.onsuccess = function(event) console.log("dumping keys");
{
var cursor = event.target.result; transaction.onsuccess = function(event)
if(cursor)
{
console.log(cursor.value.id, cursor.value.featureId, cursor.value.objectId);
var storedObject = cursor.value;
var json = JSON.stringify(storedObject);
usage.sizeBytes += json.length;
usage.attachmentCount += 1;
cursor.continue();
}
else
{
callback(usage,null);
}
}.bind(this);
transaction.onerror = function(err)
{
callback(null,err);
};
}
else
{ {
callback(null,null); var cursor = event.target.result;
} if(cursor)
{
console.log(cursor.value.id, cursor.value.featureId, cursor.value.objectId);
var storedObject = cursor.value;
var json = JSON.stringify(storedObject);
usage.sizeBytes += json.length;
usage.attachmentCount += 1;
cursor.continue();
}
else
{
callback(usage,null);
}
}.bind(this);
transaction.onerror = function(err)
{
callback(null,err);
};
}; };
this.init = function(callback) this.init = function(callback)