@mbamobi/sql-storage
Version:
Sql Storage Provider
104 lines • 3.91 kB
JavaScript
import { Injectable } from '@angular/core';
var SqlStorage = (function () {
function SqlStorage() {
}
SqlStorage.prototype.initDB = function (sql, dbName) {
var _this = this;
return new Promise(function (resolve) {
if (typeof window['sqlitePlugin'] === 'undefined') {
console.log('Using WebSql');
_this.db = openDatabase(dbName, '1.0', 'Offline document storage', 5 * 1024 * 1024);
_this.executeSql(sql).then(function () {
resolve();
}, function () {
resolve();
});
}
else {
console.log('Using SQLite');
_this.db = window['sqlitePlugin'].openDatabase({
name: dbName + '.db',
location: 2,
androidDatabaseImplementation: 2,
createFromLocation: 1
}, function () {
_this.executeSql(sql).then(function () {
resolve();
}, function () {
resolve();
});
});
}
});
};
SqlStorage.prototype.executeSql = function (sql, params) {
var _this = this;
return new Promise(function (resolve, reject) {
_this.db.transaction(function (transaction) {
transaction.executeSql(sql, params, function (transaction, result) {
console.log(transaction + 'OK');
if (result.rows.length === 0) {
resolve([]);
}
else {
var obj = [];
for (var i = 0; i < result.rows.length; i++) {
obj.push(result.rows.item(i));
}
resolve(obj);
}
}, function (transaction, error) {
console.error(transaction + 'Error');
console.error(error);
reject(error);
});
});
});
};
SqlStorage.prototype.getAll = function (tableName) {
return this.executeSql("SELECT * FROM " + tableName, []);
};
SqlStorage.prototype.getByField = function (tableName, valueField, fieldName, limit) {
var limitQuery = '';
if (limit) {
limitQuery = "LIMIT " + limit;
}
return this.executeSql("SELECT * FROM " + tableName + " where " + fieldName + " = ? " + limitQuery, [valueField]);
};
SqlStorage.prototype.query = function (query) {
return this.executeSql(query, []);
};
SqlStorage.prototype.save = function (tableName, data) {
var sql = [];
var values = [];
var params = [];
for (var key in data) {
sql.push(key);
values.push('?');
if (Object.prototype.toString.call(data[key]) === '[object Array]') {
params.push(JSON.stringify(data[key]));
}
else {
params.push(data[key]);
}
}
sql = ["INSERT INTO " + tableName + " (", sql.join(',')];
values = ['(', values.join(',')];
values.push(')');
sql.push(') VALUES ');
return this.executeSql(sql.join('') + values.join(''), params);
};
SqlStorage.prototype.delete = function (query, params) {
if (query.indexOf('DELETE') === -1) {
return this.executeSql("DELETE FROM " + query, []);
}
return this.executeSql(query, params || []);
};
SqlStorage.decorators = [
{ type: Injectable },
];
SqlStorage.ctorParameters = function () { return []; };
return SqlStorage;
}());
export { SqlStorage };
//# sourceMappingURL=sql-storage.js.map