UNPKG

ng-cordova

Version:

[ngCordova](http://ngcordova.com/) ==========

94 lines (79 loc) 2.72 kB
// install : cordova plugin add https://github.com/litehelpers/Cordova-sqlite-storage.git // link : https://github.com/litehelpers/Cordova-sqlite-storage angular.module('ngCordova.plugins.sqlite', []) .factory('$cordovaSQLite', ['$q', '$window', function ($q, $window) { return { openDB: function (options, background) { if (angular.isObject(options) && !angular.isString(options)) { if (typeof background !== 'undefined') { options.bgType = background; } return $window.sqlitePlugin.openDatabase(options); } return $window.sqlitePlugin.openDatabase({ name: options, bgType: background }); }, execute: function (db, query, binding) { var q = $q.defer(); db.transaction(function (tx) { tx.executeSql(query, binding, function (tx, result) { q.resolve(result); }, function (transaction, error) { q.reject(error); }); }); return q.promise; }, insertCollection: function (db, query, bindings) { var q = $q.defer(); var coll = bindings.slice(0); // clone collection db.transaction(function (tx) { (function insertOne() { var record = coll.splice(0, 1)[0]; // get the first record of coll and reduce coll by one try { tx.executeSql(query, record, function (tx, result) { if (coll.length === 0) { q.resolve(result); } else { insertOne(); } }, function (transaction, error) { q.reject(error); return; }); } catch (exception) { q.reject(exception); } })(); }); return q.promise; }, nestedExecute: function (db, query1, query2, binding1, binding2) { var q = $q.defer(); db.transaction(function (tx) { tx.executeSql(query1, binding1, function (tx, result) { q.resolve(result); tx.executeSql(query2, binding2, function (tx, res) { q.resolve(res); }); }); }, function (transaction, error) { q.reject(error); }); return q.promise; }, deleteDB: function (dbName) { var q = $q.defer(); $window.sqlitePlugin.deleteDatabase(dbName, function (success) { q.resolve(success); }, function (error) { q.reject(error); }); return q.promise; } }; }]);