Switch to using new db class
This commit is contained in:
parent
0215b5990d
commit
a658b40946
4 changed files with 206 additions and 217 deletions
104
js/database.js
Normal file
104
js/database.js
Normal file
|
@ -0,0 +1,104 @@
|
|||
angular.module('podcasts.database', [])
|
||||
.run(['dbBackend', function(dbBackend) {
|
||||
var dbConfig = (function () {
|
||||
//Create IndexedDB ObjectStore and Indexes via ixDbEz
|
||||
dbBackend.createObjStore("feed", "id", true);
|
||||
dbBackend.createIndex("feed", "ixUrl", "url", true);
|
||||
dbBackend.createObjStore("feedItem", "id", true);
|
||||
dbBackend.createIndex("feedItem", "ixGuid", "guid", true);
|
||||
dbBackend.createIndex("feedItem", "ixFeedId", "feedId");
|
||||
dbBackend.createIndex("feedItem", "ixQueued", "queued");
|
||||
dbBackend.createObjStore("setting", "id", true);
|
||||
dbBackend.createIndex("setting", "ixName", "name", true);
|
||||
dbBackend.put("setting", {'name': "refreshInterval", 'value': 20000});
|
||||
});
|
||||
|
||||
//Create or Open the local IndexedDB database via ixDbEz
|
||||
dbBackend.startDB("podcastDb", 11, dbConfig, undefined, undefined, false);
|
||||
}])
|
||||
.value('dbBackend', ixDbEz)
|
||||
.service('db', ['$q', '$rootScope', 'dbBackend', function($q, $rootScope, dbBackend) {
|
||||
var _getOne = function(store, identifier) {
|
||||
var deferred = $q.defer();
|
||||
|
||||
dbBackend.getCursor(store, function(ixDbCursorReq)
|
||||
{
|
||||
if(typeof ixDbCursorReq !== "undefined") {
|
||||
ixDbCursorReq.onsuccess = function (e) {
|
||||
var cursor = ixDbCursorReq.result || e.result;
|
||||
if (cursor) {
|
||||
$rootScope.$apply(deferred.resolve(cursor.value));
|
||||
|
||||
cursor.continue();
|
||||
} else {
|
||||
//TODO: not sure if this'll work, since it may both resolve and reject.
|
||||
// May need to check if any were resolved or not first
|
||||
|
||||
// deferred.reject();
|
||||
}
|
||||
}
|
||||
} else {
|
||||
deferred.reject();
|
||||
}
|
||||
}, null, IDBKeyRange.only(identifier));
|
||||
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
function _get(store, range, indexName) {
|
||||
var deferred = $q.defer(),
|
||||
results = [];
|
||||
|
||||
dbBackend.getCursor(
|
||||
store,
|
||||
function(ixDbCursorReq) {
|
||||
if(typeof ixDbCursorReq !== "undefined") {
|
||||
ixDbCursorReq.onsuccess = function (e) {
|
||||
var cursor = ixDbCursorReq.result || e.result;
|
||||
if (cursor) {
|
||||
results.push(cursor.value);
|
||||
|
||||
cursor.continue();
|
||||
} else {
|
||||
|
||||
$rootScope.$apply(deferred.resolve(results));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
deferred.reject();
|
||||
}
|
||||
},
|
||||
function() {
|
||||
deferred.reject();
|
||||
},
|
||||
range,
|
||||
false,
|
||||
indexName
|
||||
);
|
||||
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
function _put(store, data, id) {
|
||||
var deferred = $q.defer();
|
||||
|
||||
dbBackend.put(store, data, id, function(key) {
|
||||
$rootScope.$apply(deferred.resolve(key));
|
||||
}, function() {
|
||||
deferred.reject();
|
||||
});
|
||||
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
function _delete(store, id) {
|
||||
dbBackend.delete(store, id);
|
||||
}
|
||||
|
||||
return {
|
||||
getOne: _getOne,
|
||||
get: _get,
|
||||
put: _put,
|
||||
delete: _delete
|
||||
};
|
||||
}]);
|
Loading…
Add table
Add a link
Reference in a new issue