1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94// 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;
}
};
}]);