UNPKG

@mbamobi/sql-storage

Version:
104 lines 3.91 kB
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