db-wrapper 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"db-wrapper.umd.js.map","sources":["node_modules/tslib/tslib.es6.js","ng://db-wrapper/lib/window.service.ts","ng://db-wrapper/lib/db-wrapper.service.ts","ng://db-wrapper/lib/db-wrapper.module.ts","ng://db-wrapper/lib/db-wrapper.models.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class WindowService {\r\n\r\n get nativeWindow(): any {\r\n return _window();\r\n }\r\n}\r\n\r\nfunction _window(): any {\r\n // Return the global native browser window object\r\n return typeof window !== 'undefined' ? window : undefined;\r\n}","import { InjectionToken } from '@angular/core';\r\nimport { WindowService } from './window.service';\r\nimport { DBTable, DbConfig, DBSchema, DBView,\r\n DBColumn, DBUnique, DBForeign, SqlTransaction, SqlResultSet, SqlError, DefaultType } from './db-wrapper.models';\r\n\r\nexport class DbWrapperService {\r\n private _dbName: string;\r\n private _location: string;\r\n private _iosDatabaseLocation: string;\r\n private _readyPromise: Promise<void>;\r\n schema: DBSchema;\r\n db: any;\r\n\r\n constructor(dbConfig: DbConfig, dbSchema?: DBSchema) {\r\n\r\n this._dbName = dbConfig.dbName;\r\n this._location = dbConfig.location || 'default';\r\n this._iosDatabaseLocation = dbConfig.iosDatabaseLocation || 'Library';\r\n const window = (new WindowService()).nativeWindow;\r\n if (dbSchema) { this.schema = dbSchema; }\r\n this._readyPromise = new Promise ( (resolve, reject) => {\r\n if (typeof window.cordova === 'undefined') {\r\n setTimeout( () => {\r\n this.init(dbSchema).then (\r\n () => {\r\n resolve();\r\n } )\r\n .catch ( (err) => {\r\n reject(err);\r\n } );\r\n }, 500);\r\n } else {\r\n document.addEventListener('deviceready', () => {\r\n console.log('dbWrapper: device ready.');\r\n this.initDevice(dbSchema).then ( () => resolve() ).catch ( (err) => reject(err) );\r\n });\r\n }\r\n });\r\n }\r\n\r\n ready(): Promise<void> {\r\n return this._readyPromise;\r\n }\r\n\r\n initDevice(dbSchema: DBSchema): Promise<void> {\r\n const window = (new WindowService()).nativeWindow;\r\n return new Promise( (resolve, reject) => {\r\n this.db = window.sqlitePlugin.openDatabase({\r\n name: this._dbName,\r\n location: this._location,\r\n androidLockWorkaround: 1\r\n });\r\n\r\n if (dbSchema) {\r\n this.generate(dbSchema).catch(err => {\r\n reject(err);\r\n }).then(() => { resolve(); });\r\n } else {\r\n resolve();\r\n }\r\n });\r\n }\r\n\r\n init(dbSchema: DBSchema): Promise<void> {\r\n const window = (new WindowService()).nativeWindow;\r\n return new Promise ( (resolve, reject) => {\r\n this.db = window.openDatabase(this._dbName, '1.0', 'database', -1);\r\n if (dbSchema) {\r\n this.generate(dbSchema).catch(err => {\r\n reject(err);\r\n }).then( () => {\r\n resolve();\r\n });\r\n } else {\r\n resolve();\r\n }\r\n });\r\n }\r\n\r\n generate(schema: DBSchema): Promise<any> {\r\n\r\n const sentences = [];\r\n this.schema = schema;\r\n\r\n if (schema.tables) {\r\n schema.tables.forEach(table => {\r\n sentences.push(this.createTable(table));\r\n });\r\n }\r\n if (schema.views) {\r\n schema.views.forEach( view => {\r\n sentences.push(this.createView(view));\r\n });\r\n }\r\n if (sentences.length === 0) {\r\n throw new Error('Esquema de la base de datos vacia.');\r\n }\r\n return Promise.all(sentences);\r\n }\r\n\r\n async createTable(table: DBTable): Promise<any> {\r\n let sql = '', onConflictPrimary;\r\n const sentences = [], newColumns = []\r\n\r\n const tableDDL = await this.tableExists(table.name);\r\n if (tableDDL) {\r\n table.columns.forEach( col => {\r\n if (!this.columnExists(tableDDL as string, col.name) ) {\r\n newColumns.push(this.addColumn(table.name, col));\r\n }\r\n });\r\n } else {\r\n table.columns.forEach( col => {\r\n sentences.push(this.defColumn(col));\r\n });\r\n }\r\n onConflictPrimary = 'on conflict fail';\r\n\r\n if (Array.isArray(table.primary) ) {\r\n sentences.push (' CONSTRAINT identificador PRIMARY KEY (' + table.primary.join(',') + ') ' + onConflictPrimary );\r\n }\r\n if (typeof table.primary === 'string') {\r\n sentences.push (' CONSTRAINT identificador PRIMARY KEY (' + table.primary + ') ' + onConflictPrimary );\r\n }\r\n if (table.uniques) {\r\n table.uniques.forEach( uniq => {\r\n sentences.push(this.defUnique(uniq));\r\n });\r\n }\r\n\r\n if (table.foreigns) {\r\n table.foreigns.forEach ( fore => {\r\n sentences.push(this.defForeign(fore));\r\n });\r\n }\r\n\r\n if (tableDDL && newColumns.length !== 0) {\r\n return Promise.all(newColumns)\r\n .then( () => { console.log(`Table ${table.name} altered.`); } )\r\n .catch( (err) => {\r\n console.error (`Table ${table.name}: ${err.message}`);\r\n throw new Error(`Table ${table.name}: ${err.message}`);\r\n });\r\n\r\n } else if (!tableDDL) {\r\n sql = 'CREATE TABLE IF NOT EXISTS ' + table.name + ' (' + sentences.join(',') + ')';\r\n return this.query(sql)\r\n .then( () => { console.log(`Table ${table.name} created.`); })\r\n .catch( (err) => {\r\n console.error (`Table ${table.name}: ${err.message}`);\r\n throw new Error(`Table ${table.name}: ${err.message}`);\r\n });\r\n } else {\r\n return Promise.resolve().then( () => { console.log(`Table ${table.name} initialized.`); });\r\n }\r\n }\r\n\r\n\r\n createView(view: DBView): Promise<any> {\r\n let sql: string;\r\n\r\n sql = 'CREATE VIEW IF NOT EXISTS ' + view.name\r\n + ' AS ' + view.sql;\r\n\r\n return this.query(sql);\r\n\r\n }\r\n\r\n getSchemaTable(tableName: string): DBTable {\r\n let res: DBTable;\r\n\r\n this.schema.tables.forEach( table => {\r\n if (table.name === tableName) {\r\n res = table;\r\n }\r\n });\r\n return res;\r\n\r\n }\r\n\r\n getUniquesTable(table: DBTable): object {\r\n let res: {};\r\n table.uniques.forEach(uniq => {\r\n res[uniq.name] = uniq;\r\n });\r\n return res;\r\n }\r\n\r\n query(query: string, bindings: any[]= []): Promise<SqlResultSet> {\r\n return new Promise((resolve, reject) => {\r\n if (query.indexOf('select') === 0) {\r\n this.db.readTransaction((transaction: SqlTransaction) => {\r\n transaction.executeSql(query, bindings, (transaction: SqlTransaction, result: SqlResultSet) => {\r\n resolve(result);\r\n }, (transaction: SqlTransaction, error: SqlError) => {\r\n reject(error);\r\n });\r\n }, (err: SqlError) => reject(err) );\r\n } else {\r\n this.db.transaction((transaction: SqlTransaction) => {\r\n transaction.executeSql(query, bindings, (transaction: SqlTransaction, result: SqlResultSet) => {\r\n resolve(result);\r\n }, (transaction: SqlTransaction, error: SqlError) => {\r\n reject(error);\r\n });\r\n }, (err: SqlError) => reject(err) );\r\n }\r\n });\r\n }\r\n\r\n Count(query: string, bindings: any[]= []): Promise<number> {\r\n return this.query(query, bindings).then(rows => {\r\n return this.rowsCount(rows);\r\n });\r\n }\r\n\r\n insert(table: string, bindings: {}): Promise<SqlResultSet> {\r\n let sql = '', sqlBinds = [], sqlKeys = [], sqlValues = [] ;\r\n\r\n sql = sql + 'insert into ' + table + ' ';\r\n\r\n for (const index in bindings) {\r\n if (bindings.hasOwnProperty(index)) {\r\n sqlKeys.push(index);\r\n sqlValues.push(bindings[index]);\r\n sqlBinds.push('?');\r\n }\r\n }\r\n\r\n sql = sql + '(' + sqlKeys.join(',') + ') values (' + sqlBinds.join(',') + ')';\r\n return new Promise((resolve, reject) => {\r\n this.db.transaction(transaction => {\r\n transaction.executeSql(sql, sqlValues, (transaction: SqlTransaction, result: SqlResultSet) => {\r\n resolve(result);\r\n }, (transaction: SqlTransaction, error: SqlError) => {\r\n reject(error);\r\n });\r\n });\r\n });\r\n }\r\n\r\n update(table: string, bindings: {}, where: {}): Promise<SqlResultSet> {\r\n let sql = '', sqlBinds = [], sqlKeys =[], sqlValues = [] ;\r\n\r\n sql = sql + 'update ' + table + ' set ';\r\n\r\n for (let index in bindings) {\r\n if (bindings.hasOwnProperty(index)) {\r\n let newObj = bindings[index];\r\n if (typeof newObj === 'object' && newObj !== null) {\r\n sqlValues.push(newObj.value);\r\n if (newObj.ifnull) {\r\n sqlBinds.push(index + ' = ifnull( ' + index + ',0) + ?');\r\n } else if (newObj.operator) {\r\n sqlBinds.push(index + ' = ' + index + newObj.operator + ' ?');\r\n } else {\r\n sqlBinds.push(index + ' = ?');\r\n }\r\n\r\n } else {\r\n sqlBinds.push(index + ' = ?');\r\n sqlValues.push(bindings[index]);\r\n\r\n }\r\n }\r\n }\r\n\r\n for (let index in where) {\r\n if (where.hasOwnProperty(index)) {\r\n if (typeof where[index] === 'object' && where[index] !== null){\r\n sqlKeys.push(index + ' ' + where[index].operator + ' ?');\r\n sqlValues.push(where[index].value);\r\n } else {\r\n sqlKeys.push(index + ' = ?');\r\n sqlValues.push(where[index]);\r\n }\r\n }\r\n }\r\n\r\n sql = sql + sqlBinds.join(',') + ' where ' + sqlKeys.join(' and ');\r\n return new Promise((resolve, reject) => {\r\n this.db.transaction(transaction => {\r\n transaction.executeSql(sql, sqlValues, (transaction: SqlTransaction, result: SqlResultSet) => {\r\n resolve(result);\r\n }, (transaction: SqlTransaction, error: SqlError) => {\r\n reject(error);\r\n });\r\n });\r\n });\r\n }\r\n\r\n dropTable (tables: string[]): Promise<void> {\r\n let cont = 1;\r\n\r\n cont = tables.length;\r\n return new Promise((resolve, reject) => {\r\n tables.some( table => {\r\n if (cont !== 0) {\r\n this.query('DROP TABLE ' + table)\r\n .then( () => {\r\n if (cont === 1 ) { resolve();\r\n } else { cont--; }\r\n }, err => {\r\n cont = 0;\r\n reject(err);\r\n return true;\r\n });\r\n return false;\r\n }\r\n });\r\n })\r\n }\r\n\r\n fetchAll(result: SqlResultSet): object[] {\r\n let output = [];\r\n\r\n for (let i = 0; i < result.rows.length; i++) {\r\n output.push(result.rows.item(i));\r\n }\r\n\r\n return output;\r\n }\r\n\r\n fetch(result: SqlResultSet): object {\r\n let objeto = undefined, newObj= undefined;\r\n if (result.rows.length !== 0) {\r\n objeto = result.rows.item(0);\r\n newObj = {};\r\n const keys = Object.keys(objeto);\r\n for (let key in keys) {\r\n newObj[keys[key]] = objeto[keys[key]];\r\n }\r\n }\r\n return newObj;\r\n }\r\n\r\n\r\n rowsCount(result: SqlResultSet): number {\r\n return result.rows.length;\r\n }\r\n\r\n/* Private */\r\n\r\n private defColumn(col: DBColumn): string {\r\n let colSql: string;\r\n\r\n colSql = col.name + ' ' + col.type;\r\n if (!col.isNullable) {\r\n colSql += ' NOT NULL ';\r\n }\r\n if (col.default) {\r\n colSql += ' DEFAULT ' + col.default + ' ';\r\n }\r\n if (col.type === 'text' && col.length) {\r\n colSql += ` CONSTRAINT ${col.name}_length CHECK ( `;\r\n if (col.isNullable) {\r\n colSql += `${col.name} is null OR `;\r\n }\r\n colSql += `length(${col.name}) <= ${col.length} )`;\r\n\r\n }\r\n\r\n return colSql;\r\n\r\n }\r\n\r\n private defUnique(unique: DBUnique): string {\r\n let uniqSql: string;\r\n\r\n // depende del entorno, producción o desarrollo\r\n const onConflictUnique = 'on conflict fail';\r\n\r\n if (Array.isArray(unique.fields) ) {\r\n uniqSql = ` CONSTRAINT ${unique.name} UNIQUE ( ${unique.fields.join(',')} ) ${onConflictUnique} `;\r\n }\r\n if (typeof unique.fields === 'string') {\r\n uniqSql = ` CONSTRAINT ${unique.name} UNIQUE ( ${unique.fields} ) ${onConflictUnique} `;\r\n }\r\n\r\n return uniqSql;\r\n }\r\n\r\n private defForeign(fore: DBForeign): string {\r\n let foreSql: string;\r\n\r\n if (Array.isArray(fore.foreignKey) ) {\r\n foreSql = ` FOREIGN KEY ( ${fore.foreignKey.join(',')} ) `;\r\n }\r\n\r\n if (typeof fore.foreignKey === 'string') {\r\n foreSql = ` FOREIGN KEY ( ${fore.foreignKey} ) `;\r\n }\r\n\r\n if (Array.isArray(fore.primaryKey) ) {\r\n foreSql = ` REFERENCES ${fore.referenceTable} ( ${fore.primaryKey.join(',')} ) `;\r\n }\r\n\r\n if (typeof fore.primaryKey === 'string') {\r\n foreSql = ` REFERENCES ${fore.referenceTable} ( ${fore.primaryKey} ) `;\r\n }\r\n\r\n return foreSql;\r\n }\r\n\r\n private tableExists(table: string): Promise<boolean | string> {\r\n return this.query('select sql from sqlite_master ' +\r\n 'where type=\\'table\\' and name=\\'' + table + '\\'')\r\n .then(result => {\r\n if (this.rowsCount(result) === 1) { return (this.fetch(result) as any).sql as string; } else { return false; }\r\n });\r\n }\r\n\r\n private columnExists(tableDDL: string, column: string): boolean {\r\n\r\n if (tableDDL.indexOf(column) === -1) { return false; } else { return true; }\r\n }\r\n\r\n private addColumn(table: string, col: DBColumn): Promise<any> {\r\n const colSql = this.defColumn(col);\r\n const query = 'alter TABLE ' + table + ' add COLUMN ' + colSql;\r\n return this.query(query);\r\n }\r\n\r\n}\r\n\r\n\r\n\r\nexport const DB_CONFIG = new InjectionToken<DbConfig>('dbWrapperConfig');\r\nexport const DB_SCHEMA = new InjectionToken<DBSchema>('dbWrapperSchema');\r\n\r\nexport function getDefaultDbConfig(): DbConfig {\r\n return {\r\n dbName: 'db.sqlite',\r\n location: 'default',\r\n iosDatabaseLocation: 'Library'\r\n };\r\n}\r\n\r\nexport function provideDbWrapper(dbConfig: DbConfig, dbSchema?: DBSchema): DbWrapperService {\r\n const config = !!dbConfig ? dbConfig : getDefaultDbConfig();\r\n return new DbWrapperService(config, dbSchema);\r\n}\r\n\r\n\r\n\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { DbConfig, DBSchema } from './db-wrapper.models';\r\nimport { DB_CONFIG, provideDbWrapper, DbWrapperService, DB_SCHEMA } from './db-wrapper.service';\r\n\r\n@NgModule()\r\nexport class DbWrapperModule {\r\n static forRoot(dbConfig: DbConfig, schema?: DBSchema): ModuleWithProviders {\r\n return {\r\n ngModule: DbWrapperModule,\r\n providers: [\r\n { provide: DB_CONFIG, useValue: dbConfig },\r\n { provide: DB_SCHEMA, useValue: schema },\r\n { provide: DbWrapperService, useFactory: provideDbWrapper, deps: [DB_CONFIG, DB_SCHEMA] }\r\n ]\r\n };\r\n }\r\n\r\n}\r\n","\r\nexport enum DataType {\r\n Integer = 'integer',\r\n Int = 'integer',\r\n TinyInt = 'integer',\r\n SmallInt = 'integer',\r\n BigInt = 'integer',\r\n Text = 'text',\r\n Char = 'text',\r\n NChar = 'text',\r\n VarChar = 'text',\r\n NVarChar = 'text',\r\n CLOB = 'text',\r\n BLOB = 'blob',\r\n Real = 'real',\r\n Double = 'real',\r\n Decimal = 'real',\r\n Float = 'real',\r\n Boolean = 'integer',\r\n DateTime = 'text',\r\n Date = 'text'\r\n\r\n}\r\n\r\nexport enum DefaultType {\r\n Integer = '0',\r\n Int = '0',\r\n TinyInt = '0',\r\n SmallInt = '0',\r\n BigInt = '0',\r\n Text = '\\'\\'',\r\n Char = '\\'\\'',\r\n NChar = '\\'\\'',\r\n VarChar = '\\'\\'',\r\n NVarChar = '\\'\\'',\r\n CLOB = '\\'\\'',\r\n BLOB = '0',\r\n Real = '0.0',\r\n Double = '0.0',\r\n Decimal = '0.0',\r\n Float = '0.0',\r\n Boolean = '0',\r\n DateTime = '(datetime(\\'now\\', \\'localtime\\'))',\r\n Date = '(date(\\'now\\', \\'localtime\\'))'\r\n}\r\n\r\n\r\nexport interface SqlTransaction {\r\n /**\r\n * Executes SQL statement via current transaction.\r\n * @param sql SQL statement to execute.\r\n * @param params SQL stetement arguments.\r\n * @param successCallback Called in case of query has been successfully done.\r\n * @param errorCallback Called, when query fails. Return false to continue transaction; true or no return to rollback.\r\n */\r\n executeSql(sql: string,\r\n params?: any[],\r\n successCallback?: (transaction: SqlTransaction, resultSet: SqlResultSet) => void,\r\n errorCallback?: (transaction: SqlTransaction, error: SqlError) => any): void;\r\n}\r\n\r\nexport interface SqlResultSet {\r\n insertId: number;\r\n rowsAffected: number;\r\n rows: SqlResultSetRowList;\r\n}\r\n\r\nexport interface SqlResultSetRowList {\r\n length: number;\r\n item(index: number): Object;\r\n}\r\n\r\nexport interface SqlError {\r\n code: number;\r\n message: string;\r\n}\r\n\r\n/**\r\n * Interfaz con la configuración de websql\r\n */\r\nexport interface DbConfig {\r\n /**\r\n * nombre de la base de datos\r\n */\r\n dbName: string;\r\n /**\r\n * default 'default'\r\n */\r\n location?: string;\r\n /**\r\n * default 'Library'\r\n */\r\n iosDatabaseLocation?: string;\r\n}\r\n\r\n/**\r\n * Intefaz para definir un constraint unique\r\n *\r\n */\r\nexport interface DBUnique {\r\n name: string; /** nombre */\r\n fields: string | string[]; /** lista de campos */\r\n}\r\n\r\nexport interface DBForeign {\r\n name: string;\r\n foreignKey: string | string[];\r\n referenceTable: string;\r\n primaryKey: string | string[];\r\n}\r\n\r\nexport interface DBColumn {\r\n name: string;\r\n type: DataType;\r\n length?: number;\r\n isNullable?: boolean;\r\n default?: DefaultType | string;\r\n}\r\n\r\nexport interface DBTable {\r\n name: string;\r\n columns: DBColumn[];\r\n primary: string | string[];\r\n uniques?: DBUnique[];\r\n foreigns?: DBForeign[];\r\n sync?: string;\r\n}\r\n\r\n\r\nexport interface DBView {\r\n name: string;\r\n sql: string;\r\n}\r\n\r\nexport interface DBSchema {\r\n tables: DBTable[],\r\n views?: DBView[]\r\n}\r\n\r\n"],"names":["Injectable","InjectionToken","NgModule"],"mappings":"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"}
1
+ {"version":3,"file":"db-wrapper.umd.js","sources":["../../../node_modules/tslib/tslib.es6.js","ng://db-wrapper/lib/window.service.ts","ng://db-wrapper/lib/db-wrapper.service.ts","ng://db-wrapper/lib/db-wrapper.module.ts","ng://db-wrapper/lib/db-wrapper.models.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class WindowService {\r\n\r\n get nativeWindow(): any {\r\n return _window();\r\n }\r\n}\r\n\r\nfunction _window(): any {\r\n // Return the global native browser window object\r\n return typeof window !== 'undefined' ? window : undefined;\r\n}","import { InjectionToken } from '@angular/core';\r\nimport { WindowService } from './window.service';\r\nimport { DBTable, DbConfig, DBSchema, DBView,\r\n DBColumn, DBUnique, DBForeign, SqlTransaction, SqlResultSet, SqlError, DefaultType } from './db-wrapper.models';\r\n\r\nexport class DbWrapperService {\r\n private _dbName: string;\r\n private _location: string;\r\n private _iosDatabaseLocation: string;\r\n private _readyPromise: Promise<void>;\r\n schema: DBSchema;\r\n db: any;\r\n\r\n constructor(dbConfig: DbConfig, dbSchema?: DBSchema) {\r\n\r\n this._dbName = dbConfig.dbName;\r\n this._location = dbConfig.location || 'default';\r\n this._iosDatabaseLocation = dbConfig.iosDatabaseLocation || 'Library';\r\n const window = (new WindowService()).nativeWindow;\r\n if (dbSchema) { this.schema = dbSchema; }\r\n this._readyPromise = new Promise ( (resolve, reject) => {\r\n if (typeof window.cordova === 'undefined') {\r\n setTimeout( () => {\r\n this.init(dbSchema).then (\r\n () => {\r\n resolve();\r\n } )\r\n .catch ( (err) => {\r\n reject(err);\r\n } );\r\n }, 500);\r\n } else {\r\n document.addEventListener('deviceready', () => {\r\n console.log('dbWrapper: device ready.');\r\n this.initDevice(dbSchema).then ( () => resolve() ).catch ( (err) => reject(err) );\r\n });\r\n }\r\n });\r\n }\r\n\r\n ready(): Promise<void> {\r\n return this._readyPromise;\r\n }\r\n\r\n initDevice(dbSchema: DBSchema): Promise<void> {\r\n const window = (new WindowService()).nativeWindow;\r\n return new Promise( (resolve, reject) => {\r\n this.db = window.sqlitePlugin.openDatabase({\r\n name: this._dbName,\r\n location: this._location,\r\n androidLockWorkaround: 1\r\n });\r\n\r\n if (dbSchema) {\r\n this.generate(dbSchema).catch(err => {\r\n reject(err);\r\n }).then(() => { resolve(); });\r\n } else {\r\n resolve();\r\n }\r\n });\r\n }\r\n\r\n init(dbSchema: DBSchema): Promise<void> {\r\n const window = (new WindowService()).nativeWindow;\r\n return new Promise ( (resolve, reject) => {\r\n this.db = window.openDatabase(this._dbName, '1.0', 'database', -1);\r\n if (dbSchema) {\r\n this.generate(dbSchema).catch(err => {\r\n reject(err);\r\n }).then( () => {\r\n resolve();\r\n });\r\n } else {\r\n resolve();\r\n }\r\n });\r\n }\r\n\r\n generate(schema: DBSchema): Promise<any> {\r\n\r\n const sentences = [];\r\n this.schema = schema;\r\n\r\n if (schema.tables) {\r\n schema.tables.forEach(table => {\r\n sentences.push(this.createTable(table));\r\n });\r\n }\r\n if (schema.views) {\r\n schema.views.forEach( view => {\r\n sentences.push(this.createView(view));\r\n });\r\n }\r\n if (sentences.length === 0) {\r\n throw new Error('Esquema de la base de datos vacia.');\r\n }\r\n return Promise.all(sentences);\r\n }\r\n\r\n async createTable(table: DBTable): Promise<any> {\r\n let sql = '', onConflictPrimary;\r\n const sentences = [], newColumns = []\r\n\r\n const tableDDL = await this._tableExists(table.name);\r\n if (tableDDL) {\r\n table.columns.forEach( col => {\r\n if (!this._columnExists(tableDDL as string, col.name) ) {\r\n newColumns.push(this.addColumn(table.name, col));\r\n }\r\n });\r\n } else {\r\n table.columns.forEach( col => {\r\n sentences.push(this.defColumn(col));\r\n });\r\n }\r\n onConflictPrimary = 'on conflict fail';\r\n\r\n if (Array.isArray(table.primary) ) {\r\n sentences.push (' CONSTRAINT identificador PRIMARY KEY (' + table.primary.join(',') + ') ' + onConflictPrimary );\r\n }\r\n if (typeof table.primary === 'string') {\r\n sentences.push (' CONSTRAINT identificador PRIMARY KEY (' + table.primary + ') ' + onConflictPrimary );\r\n }\r\n if (table.uniques) {\r\n table.uniques.forEach( uniq => {\r\n sentences.push(this.defUnique(uniq));\r\n });\r\n }\r\n\r\n if (table.foreigns) {\r\n table.foreigns.forEach ( fore => {\r\n sentences.push(this.defForeign(fore));\r\n });\r\n }\r\n\r\n if (tableDDL && newColumns.length !== 0) {\r\n return Promise.all(newColumns)\r\n .then( () => { console.log(`Table ${table.name} altered.`); } )\r\n .catch( (err) => {\r\n console.error (`Table ${table.name}: ${err.message}`);\r\n throw new Error(`Table ${table.name}: ${err.message}`);\r\n });\r\n\r\n } else if (!tableDDL) {\r\n sql = 'CREATE TABLE IF NOT EXISTS ' + table.name + ' (' + sentences.join(',') + ')';\r\n return this.query(sql)\r\n .then( () => { console.log(`Table ${table.name} created.`); })\r\n .catch( (err) => {\r\n console.error (`Table ${table.name}: ${err.message}`);\r\n throw new Error(`Table ${table.name}: ${err.message}`);\r\n });\r\n } else {\r\n return Promise.resolve().then( () => { console.log(`Table ${table.name} initialized.`); });\r\n }\r\n }\r\n\r\n\r\n createView(view: DBView): Promise<any> {\r\n let sql: string;\r\n\r\n sql = 'CREATE VIEW IF NOT EXISTS ' + view.name\r\n + ' AS ' + view.sql;\r\n\r\n return this.query(sql);\r\n\r\n }\r\n\r\n getSchemaTable(tableName: string): DBTable {\r\n let res: DBTable;\r\n\r\n this.schema.tables.forEach( table => {\r\n if (table.name === tableName) {\r\n res = table;\r\n }\r\n });\r\n return res;\r\n\r\n }\r\n\r\n getUniquesTable(table: DBTable): object {\r\n let res: {};\r\n table.uniques.forEach(uniq => {\r\n res[uniq.name] = uniq;\r\n });\r\n return res;\r\n }\r\n\r\n query(query: string, bindings: any[]= []): Promise<SqlResultSet> {\r\n return new Promise((resolve, reject) => {\r\n if (query.indexOf('select') === 0) {\r\n this.db.readTransaction((transaction: SqlTransaction) => {\r\n transaction.executeSql(query, bindings, (transaction: SqlTransaction, result: SqlResultSet) => {\r\n resolve(result);\r\n }, (transaction: SqlTransaction, error: SqlError) => {\r\n reject(error);\r\n });\r\n }, (err: SqlError) => reject(err) );\r\n } else {\r\n this.db.transaction((transaction: SqlTransaction) => {\r\n transaction.executeSql(query, bindings, (transaction: SqlTransaction, result: SqlResultSet) => {\r\n resolve(result);\r\n }, (transaction: SqlTransaction, error: SqlError) => {\r\n reject(error);\r\n });\r\n }, (err: SqlError) => reject(err) );\r\n }\r\n });\r\n }\r\n\r\n Count(query: string, bindings: any[]= []): Promise<number> {\r\n return this.query(query, bindings).then(rows => {\r\n return this.rowsCount(rows);\r\n });\r\n }\r\n\r\n insert(table: string, bindings: {}): Promise<SqlResultSet> {\r\n let sql = '', sqlBinds = [], sqlKeys = [], sqlValues = [] ;\r\n\r\n sql = sql + 'insert into ' + table + ' ';\r\n\r\n for (const index in bindings) {\r\n if (bindings.hasOwnProperty(index)) {\r\n sqlKeys.push(index);\r\n sqlValues.push(bindings[index]);\r\n sqlBinds.push('?');\r\n }\r\n }\r\n\r\n sql = sql + '(' + sqlKeys.join(',') + ') values (' + sqlBinds.join(',') + ')';\r\n return new Promise((resolve, reject) => {\r\n this.db.transaction(transaction => {\r\n transaction.executeSql(sql, sqlValues, (transaction: SqlTransaction, result: SqlResultSet) => {\r\n resolve(result);\r\n }, (transaction: SqlTransaction, error: SqlError) => {\r\n reject(error);\r\n });\r\n });\r\n });\r\n }\r\n\r\n update(table: string, bindings: {}, where: {}): Promise<SqlResultSet> {\r\n let sql = '', sqlBinds = [], sqlKeys =[], sqlValues = [] ;\r\n\r\n sql = sql + 'update ' + table + ' set ';\r\n\r\n for (let index in bindings) {\r\n if (bindings.hasOwnProperty(index)) {\r\n let newObj = bindings[index];\r\n if (typeof newObj === 'object' && newObj !== null) {\r\n sqlValues.push(newObj.value);\r\n if (newObj.ifnull) {\r\n sqlBinds.push(index + ' = ifnull( ' + index + ',0) + ?');\r\n } else if (newObj.operator) {\r\n sqlBinds.push(index + ' = ' + index + newObj.operator + ' ?');\r\n } else {\r\n sqlBinds.push(index + ' = ?');\r\n }\r\n\r\n } else {\r\n sqlBinds.push(index + ' = ?');\r\n sqlValues.push(bindings[index]);\r\n\r\n }\r\n }\r\n }\r\n\r\n for (let index in where) {\r\n if (where.hasOwnProperty(index)) {\r\n if (typeof where[index] === 'object' && where[index] !== null){\r\n sqlKeys.push(index + ' ' + where[index].operator + ' ?');\r\n sqlValues.push(where[index].value);\r\n } else {\r\n sqlKeys.push(index + ' = ?');\r\n sqlValues.push(where[index]);\r\n }\r\n }\r\n }\r\n\r\n sql = sql + sqlBinds.join(',') + ' where ' + sqlKeys.join(' and ');\r\n return new Promise((resolve, reject) => {\r\n this.db.transaction(transaction => {\r\n transaction.executeSql(sql, sqlValues, (transaction: SqlTransaction, result: SqlResultSet) => {\r\n resolve(result);\r\n }, (transaction: SqlTransaction, error: SqlError) => {\r\n reject(error);\r\n });\r\n });\r\n });\r\n }\r\n\r\n dropTable (tables: string[]): Promise<void> {\r\n let cont = 1;\r\n\r\n cont = tables.length;\r\n return new Promise((resolve, reject) => {\r\n tables.some( table => {\r\n if (cont !== 0) {\r\n this.query('DROP TABLE ' + table)\r\n .then( () => {\r\n if (cont === 1 ) { resolve();\r\n } else { cont--; }\r\n }, err => {\r\n cont = 0;\r\n reject(err);\r\n return true;\r\n });\r\n return false;\r\n }\r\n });\r\n })\r\n }\r\n\r\n fetchAll(result: SqlResultSet): object[] {\r\n let output = [];\r\n\r\n for (let i = 0; i < result.rows.length; i++) {\r\n output.push(result.rows.item(i));\r\n }\r\n\r\n return output;\r\n }\r\n\r\n fetch(result: SqlResultSet): object {\r\n let objeto = undefined, newObj= undefined;\r\n if (result.rows.length !== 0) {\r\n objeto = result.rows.item(0);\r\n newObj = {};\r\n const keys = Object.keys(objeto);\r\n for (let key in keys) {\r\n newObj[keys[key]] = objeto[keys[key]];\r\n }\r\n }\r\n return newObj;\r\n }\r\n\r\n\r\n rowsCount(result: SqlResultSet): number {\r\n return result.rows.length;\r\n }\r\n\r\n tableExists(table: string): Promise<boolean> {\r\n return this.query('select sql from sqlite_master ' +\r\n 'where type=\\'table\\' and name=\\'' + table + '\\'')\r\n .then(result => (this.rowsCount(result) === 1) );\r\n } \r\n\r\n columnExists(table: string, column: string): Promise<boolean> {\r\n return this._tableExists(table)\r\n .then((tableDDL) => {\r\n if (tableDDL) {\r\n return this._columnExists((tableDDL as string), column);\r\n } else { return false; }\r\n });\r\n }\r\n\r\n/* Private */\r\n\r\n private defColumn(col: DBColumn): string {\r\n let colSql: string;\r\n\r\n colSql = col.name + ' ' + col.type;\r\n if (!col.isNullable) {\r\n colSql += ' NOT NULL ';\r\n }\r\n if (col.default) {\r\n colSql += ' DEFAULT ' + col.default + ' ';\r\n }\r\n if (col.type === 'text' && col.length) {\r\n colSql += ` CONSTRAINT ${col.name}_length CHECK ( `;\r\n if (col.isNullable) {\r\n colSql += `${col.name} is null OR `;\r\n }\r\n colSql += `length(${col.name}) <= ${col.length} )`;\r\n\r\n }\r\n\r\n return colSql;\r\n\r\n }\r\n\r\n private defUnique(unique: DBUnique): string {\r\n let uniqSql: string;\r\n\r\n // depende del entorno, producción o desarrollo\r\n const onConflictUnique = 'on conflict replace';\r\n\r\n if (Array.isArray(unique.fields) ) {\r\n uniqSql = ` CONSTRAINT ${unique.name} UNIQUE ( ${unique.fields.join(',')} ) ${onConflictUnique} `;\r\n }\r\n if (typeof unique.fields === 'string') {\r\n uniqSql = ` CONSTRAINT ${unique.name} UNIQUE ( ${unique.fields} ) ${onConflictUnique} `;\r\n }\r\n\r\n return uniqSql;\r\n }\r\n\r\n private defForeign(fore: DBForeign): string {\r\n let foreSql: string;\r\n\r\n if (Array.isArray(fore.foreignKey) ) {\r\n foreSql = ` FOREIGN KEY ( ${fore.foreignKey.join(',')} ) `;\r\n }\r\n\r\n if (typeof fore.foreignKey === 'string') {\r\n foreSql = ` FOREIGN KEY ( ${fore.foreignKey} ) `;\r\n }\r\n\r\n if (Array.isArray(fore.primaryKey) ) {\r\n foreSql = ` REFERENCES ${fore.referenceTable} ( ${fore.primaryKey.join(',')} ) `;\r\n }\r\n\r\n if (typeof fore.primaryKey === 'string') {\r\n foreSql = ` REFERENCES ${fore.referenceTable} ( ${fore.primaryKey} ) `;\r\n }\r\n\r\n return foreSql;\r\n }\r\n\r\n private _tableExists(table: string): Promise<boolean | string> {\r\n return this.query('select sql from sqlite_master ' +\r\n 'where type=\\'table\\' and name=\\'' + table + '\\'')\r\n .then(result => {\r\n if (this.rowsCount(result) === 1) { return (this.fetch(result) as any).sql as string; } else { return false; }\r\n });\r\n }\r\n\r\n private _columnExists(tableDDL: string, column: string): boolean {\r\n\r\n if (tableDDL.indexOf(column) === -1) { return false; } else { return true; }\r\n }\r\n\r\n private addColumn(table: string, col: DBColumn): Promise<any> {\r\n const colSql = this.defColumn(col);\r\n const query = 'alter TABLE ' + table + ' add COLUMN ' + colSql;\r\n return this.query(query);\r\n }\r\n\r\n}\r\n\r\n\r\n\r\nexport const DB_CONFIG = new InjectionToken<DbConfig>('dbWrapperConfig');\r\nexport const DB_SCHEMA = new InjectionToken<DBSchema>('dbWrapperSchema');\r\n\r\nexport function getDefaultDbConfig(): DbConfig {\r\n return {\r\n dbName: 'db.sqlite',\r\n location: 'default',\r\n iosDatabaseLocation: 'Library'\r\n };\r\n}\r\n\r\nexport function provideDbWrapper(dbConfig: DbConfig, dbSchema?: DBSchema): DbWrapperService {\r\n const config = !!dbConfig ? dbConfig : getDefaultDbConfig();\r\n return new DbWrapperService(config, dbSchema);\r\n}\r\n\r\n\r\n\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { DbConfig, DBSchema } from './db-wrapper.models';\r\nimport { DB_CONFIG, provideDbWrapper, DbWrapperService, DB_SCHEMA } from './db-wrapper.service';\r\n\r\n@NgModule()\r\nexport class DbWrapperModule {\r\n static forRoot(dbConfig: DbConfig, schema?: DBSchema): ModuleWithProviders {\r\n return {\r\n ngModule: DbWrapperModule,\r\n providers: [\r\n { provide: DB_CONFIG, useValue: dbConfig },\r\n { provide: DB_SCHEMA, useValue: schema },\r\n { provide: DbWrapperService, useFactory: provideDbWrapper, deps: [DB_CONFIG, DB_SCHEMA] }\r\n ]\r\n };\r\n }\r\n\r\n}\r\n","\r\nexport enum DataType {\r\n Integer = 'integer',\r\n Int = 'integer',\r\n TinyInt = 'integer',\r\n SmallInt = 'integer',\r\n BigInt = 'integer',\r\n Text = 'text',\r\n Char = 'text',\r\n NChar = 'text',\r\n VarChar = 'text',\r\n NVarChar = 'text',\r\n CLOB = 'text',\r\n BLOB = 'blob',\r\n Real = 'real',\r\n Double = 'real',\r\n Decimal = 'real',\r\n Float = 'real',\r\n Boolean = 'integer',\r\n DateTime = 'text',\r\n Date = 'text'\r\n\r\n}\r\n\r\nexport enum DefaultType {\r\n Integer = '0',\r\n Int = '0',\r\n TinyInt = '0',\r\n SmallInt = '0',\r\n BigInt = '0',\r\n Text = '\\'\\'',\r\n Char = '\\'\\'',\r\n NChar = '\\'\\'',\r\n VarChar = '\\'\\'',\r\n NVarChar = '\\'\\'',\r\n CLOB = '\\'\\'',\r\n BLOB = '0',\r\n Real = '0.0',\r\n Double = '0.0',\r\n Decimal = '0.0',\r\n Float = '0.0',\r\n Boolean = '0',\r\n DateTime = '(datetime(\\'now\\', \\'localtime\\'))',\r\n Date = '(date(\\'now\\', \\'localtime\\'))'\r\n}\r\n\r\n\r\nexport interface SqlTransaction {\r\n /**\r\n * Executes SQL statement via current transaction.\r\n * @param sql SQL statement to execute.\r\n * @param params SQL stetement arguments.\r\n * @param successCallback Called in case of query has been successfully done.\r\n * @param errorCallback Called, when query fails. Return false to continue transaction; true or no return to rollback.\r\n */\r\n executeSql(sql: string,\r\n params?: any[],\r\n successCallback?: (transaction: SqlTransaction, resultSet: SqlResultSet) => void,\r\n errorCallback?: (transaction: SqlTransaction, error: SqlError) => any): void;\r\n}\r\n\r\nexport interface SqlResultSet {\r\n insertId: number;\r\n rowsAffected: number;\r\n rows: SqlResultSetRowList;\r\n}\r\n\r\nexport interface SqlResultSetRowList {\r\n length: number;\r\n item(index: number): Object;\r\n}\r\n\r\nexport interface SqlError {\r\n code: number;\r\n message: string;\r\n}\r\n\r\n/**\r\n * Interfaz con la configuración de websql\r\n */\r\nexport interface DbConfig {\r\n /**\r\n * nombre de la base de datos\r\n */\r\n dbName: string;\r\n /**\r\n * default 'default'\r\n */\r\n location?: string;\r\n /**\r\n * default 'Library'\r\n */\r\n iosDatabaseLocation?: string;\r\n}\r\n\r\n/**\r\n * Intefaz para definir un constraint unique\r\n *\r\n */\r\nexport interface DBUnique {\r\n name: string; /** nombre */\r\n fields: string | string[]; /** lista de campos */\r\n}\r\n\r\nexport interface DBForeign {\r\n name: string;\r\n foreignKey: string | string[];\r\n referenceTable: string;\r\n primaryKey: string | string[];\r\n}\r\n\r\nexport interface DBColumn {\r\n name: string;\r\n type: DataType;\r\n length?: number;\r\n isNullable?: boolean;\r\n default?: DefaultType | string;\r\n}\r\n\r\nexport interface DBTable {\r\n name: string;\r\n columns: DBColumn[];\r\n primary: string | string[];\r\n uniques?: DBUnique[];\r\n foreigns?: DBForeign[];\r\n sync?: string;\r\n}\r\n\r\n\r\nexport interface DBView {\r\n name: string;\r\n sql: string;\r\n}\r\n\r\nexport interface DBSchema {\r\n tables: DBTable[],\r\n views?: DBView[]\r\n}\r\n\r\n"],"names":["Injectable","InjectionToken","NgModule","DataType","DefaultType"],"mappings":"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"}
@@ -1,2 +1,16 @@
1
- !function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports,require("@angular/core")):"function"==typeof define&&define.amd?define("db-wrapper",["exports","@angular/core"],n):n(e["db-wrapper"]={},e.ng.core)}(this,function(e,n){"use strict";function c(r,o){var i,a,u,e,c={label:0,sent:function(){if(1&u[0])throw u[1];return u[1]},trys:[],ops:[]};return e={next:n(0),"throw":n(1),"return":n(2)},"function"==typeof Symbol&&(e[Symbol.iterator]=function(){return this}),e;function n(n){return function(e){return function t(e){if(i)throw new TypeError("Generator is already executing.");for(;c;)try{if(i=1,a&&(u=2&e[0]?a["return"]:e[0]?a["throw"]||((u=a["return"])&&u.call(a),0):a.next)&&!(u=u.call(a,e[1])).done)return u;switch(a=0,u&&(e=[2&e[0],u.value]),e[0]){case 0:case 1:u=e;break;case 4:return c.label++,{value:e[1],done:!1};case 5:c.label++,a=e[1],e=[0];continue;case 7:e=c.ops.pop(),c.trys.pop();continue;default:if(!(u=0<(u=c.trys).length&&u[u.length-1])&&(6===e[0]||2===e[0])){c=0;continue}if(3===e[0]&&(!u||e[1]>u[0]&&e[1]<u[3])){c.label=e[1];break}if(6===e[0]&&c.label<u[1]){c.label=u[1],u=e;break}if(u&&c.label<u[2]){c.label=u[2],c.ops.push(e);break}u[2]&&c.ops.pop(),c.trys.pop();continue}e=o.call(r,c)}catch(n){e=[6,n],a=0}finally{i=u=0}if(5&e[0])throw e[1];return{value:e[0]?e[1]:void 0,done:!0}}([n,e])}}}var i=function(){function e(){}return Object.defineProperty(e.prototype,"nativeWindow",{get:function(){return function e(){return"undefined"!=typeof window?window:undefined}()},enumerable:!0,configurable:!0}),e.decorators=[{type:n.Injectable}],e}();var r=function(){function e(e,t){var r=this;this._dbName=e.dbName,this._location=e.location||"default",this._iosDatabaseLocation=e.iosDatabaseLocation||"Library";var o=(new i).nativeWindow;t&&(this.schema=t),this._readyPromise=new Promise(function(e,n){"undefined"==typeof o.cordova?setTimeout(function(){r.init(t).then(function(){e()})["catch"](function(e){n(e)})},500):document.addEventListener("deviceready",function(){console.log("dbWrapper: device ready."),r.initDevice(t).then(function(){return e()})["catch"](function(e){return n(e)})})})}return e.prototype.ready=function(){return this._readyPromise},e.prototype.initDevice=function(t){var r=this,o=(new i).nativeWindow;return new Promise(function(e,n){r.db=o.sqlitePlugin.openDatabase({name:r._dbName,location:r._location,androidLockWorkaround:1}),t?r.generate(t)["catch"](function(e){n(e)}).then(function(){e()}):e()})},e.prototype.init=function(t){var r=this,o=(new i).nativeWindow;return new Promise(function(e,n){r.db=o.openDatabase(r._dbName,"1.0","database",-1),t?r.generate(t)["catch"](function(e){n(e)}).then(function(){e()}):e()})},e.prototype.generate=function(e){var n=this,t=[];if((this.schema=e).tables&&e.tables.forEach(function(e){t.push(n.createTable(e))}),e.views&&e.views.forEach(function(e){t.push(n.createView(e))}),0===t.length)throw new Error("Esquema de la base de datos vacia.");return Promise.all(t)},e.prototype.createTable=function(u){return function e(n,a,u,c){return new(u||(u=Promise))(function(e,t){function r(e){try{i(c.next(e))}catch(n){t(n)}}function o(e){try{i(c["throw"](e))}catch(n){t(n)}}function i(n){n.done?e(n.value):new u(function(e){e(n.value)}).then(r,o)}i((c=c.apply(n,a||[])).next())})}(this,void 0,void 0,function(){var n,t,r,o,i,a=this;return c(this,function(e){switch(e.label){case 0:return n="",r=[],o=[],[4,this.tableExists(u.name)];case 1:return(i=e.sent())?u.columns.forEach(function(e){a.columnExists(i,e.name)||o.push(a.addColumn(u.name,e))}):u.columns.forEach(function(e){r.push(a.defColumn(e))}),t="on conflict fail",Array.isArray(u.primary)&&r.push(" CONSTRAINT identificador PRIMARY KEY ("+u.primary.join(",")+") "+t),"string"==typeof u.primary&&r.push(" CONSTRAINT identificador PRIMARY KEY ("+u.primary+") "+t),u.uniques&&u.uniques.forEach(function(e){r.push(a.defUnique(e))}),u.foreigns&&u.foreigns.forEach(function(e){r.push(a.defForeign(e))}),i&&0!==o.length?[2,Promise.all(o).then(function(){console.log("Table "+u.name+" altered.")})["catch"](function(e){throw console.error("Table "+u.name+": "+e.message),new Error("Table "+u.name+": "+e.message)})]:i?[2,Promise.resolve().then(function(){console.log("Table "+u.name+" initialized.")})]:(n="CREATE TABLE IF NOT EXISTS "+u.name+" ("+r.join(",")+")",[2,this.query(n).then(function(){console.log("Table "+u.name+" created.")})["catch"](function(e){throw console.error("Table "+u.name+": "+e.message),new Error("Table "+u.name+": "+e.message)})])}})})},e.prototype.createView=function(e){var n;return n="CREATE VIEW IF NOT EXISTS "+e.name+" AS "+e.sql,this.query(n)},e.prototype.getSchemaTable=function(n){var t;return this.schema.tables.forEach(function(e){e.name===n&&(t=e)}),t},e.prototype.getUniquesTable=function(e){e.uniques.forEach(function(e){(void 0)[e.name]=e})},e.prototype.query=function(n,o){var e=this;return void 0===o&&(o=[]),new Promise(function(t,r){0===n.indexOf("select")?e.db.readTransaction(function(e){e.executeSql(n,o,function(e,n){t(n)},function(e,n){r(n)})},function(e){return r(e)}):e.db.transaction(function(e){e.executeSql(n,o,function(e,n){t(n)},function(e,n){r(n)})},function(e){return r(e)})})},e.prototype.Count=function(e,n){var t=this;return void 0===n&&(n=[]),this.query(e,n).then(function(e){return t.rowsCount(e)})},e.prototype.insert=function(e,n){var o=this,i="",t=[],r=[],a=[];for(var u in i=i+"insert into "+e+" ",n)n.hasOwnProperty(u)&&(r.push(u),a.push(n[u]),t.push("?"));return i=i+"("+r.join(",")+") values ("+t.join(",")+")",new Promise(function(t,r){o.db.transaction(function(e){e.executeSql(i,a,function(e,n){t(n)},function(e,n){r(n)})})})},e.prototype.update=function(e,n,t){var o=this,i="",r=[],a=[],u=[];for(var c in i=i+"update "+e+" set ",n)if(n.hasOwnProperty(c)){var s=n[c];"object"==typeof s&&null!==s?(u.push(s.value),s.ifnull?r.push(c+" = ifnull( "+c+",0) + ?"):s.operator?r.push(c+" = "+c+s.operator+" ?"):r.push(c+" = ?")):(r.push(c+" = ?"),u.push(n[c]))}for(var c in t)t.hasOwnProperty(c)&&("object"==typeof t[c]&&null!==t[c]?(a.push(c+" "+t[c].operator+" ?"),u.push(t[c].value)):(a.push(c+" = ?"),u.push(t[c])));return i=i+r.join(",")+" where "+a.join(" and "),new Promise(function(t,r){o.db.transaction(function(e){e.executeSql(i,u,function(e,n){t(n)},function(e,n){r(n)})})})},e.prototype.dropTable=function(e){var r=this,o=1;return o=e.length,new Promise(function(n,t){e.some(function(e){if(0!==o)return r.query("DROP TABLE "+e).then(function(){1===o?n():o--},function(e){return o=0,t(e),!0}),!1})})},e.prototype.fetchAll=function(e){for(var n=[],t=0;t<e.rows.length;t++)n.push(e.rows.item(t));return n},e.prototype.fetch=function(e){var n=undefined,t=undefined;if(0!==e.rows.length){n=e.rows.item(0),t={};var r=Object.keys(n);for(var o in r)t[r[o]]=n[r[o]]}return t},e.prototype.rowsCount=function(e){return e.rows.length},e.prototype.defColumn=function(e){var n;return n=e.name+" "+e.type,e.isNullable||(n+=" NOT NULL "),e["default"]&&(n+=" DEFAULT "+e["default"]+" "),"text"===e.type&&e.length&&(n+=" CONSTRAINT "+e.name+"_length CHECK ( ",e.isNullable&&(n+=e.name+" is null OR "),n+="length("+e.name+") <= "+e.length+" )"),n},e.prototype.defUnique=function(e){var n,t="on conflict fail";return Array.isArray(e.fields)&&(n=" CONSTRAINT "+e.name+" UNIQUE ( "+e.fields.join(",")+" ) "+t+" "),"string"==typeof e.fields&&(n=" CONSTRAINT "+e.name+" UNIQUE ( "+e.fields+" ) "+t+" "),n},e.prototype.defForeign=function(e){var n;return Array.isArray(e.foreignKey)&&(n=" FOREIGN KEY ( "+e.foreignKey.join(",")+" ) "),"string"==typeof e.foreignKey&&(n=" FOREIGN KEY ( "+e.foreignKey+" ) "),Array.isArray(e.primaryKey)&&(n=" REFERENCES "+e.referenceTable+" ( "+e.primaryKey.join(",")+" ) "),"string"==typeof e.primaryKey&&(n=" REFERENCES "+e.referenceTable+" ( "+e.primaryKey+" ) "),n},e.prototype.tableExists=function(e){var n=this;return this.query("select sql from sqlite_master where type='table' and name='"+e+"'").then(function(e){return 1===n.rowsCount(e)&&n.fetch(e).sql})},e.prototype.columnExists=function(e,n){return-1!==e.indexOf(n)},e.prototype.addColumn=function(e,n){var t="alter TABLE "+e+" add COLUMN "+this.defColumn(n);return this.query(t)},e}(),o=new n.InjectionToken("dbWrapperConfig"),a=new n.InjectionToken("dbWrapperSchema");function t(){return{dbName:"db.sqlite",location:"default",iosDatabaseLocation:"Library"}}function u(e,n){return new r(e||{dbName:"db.sqlite",location:"default",iosDatabaseLocation:"Library"},n)}var s=function(){function t(){}return t.forRoot=function(e,n){return{ngModule:t,providers:[{provide:o,useValue:e},{provide:a,useValue:n},{provide:r,useFactory:u,deps:[o,a]}]}},t.decorators=[{type:n.NgModule}],t}();e.getDefaultDbConfig=t,e.provideDbWrapper=u,e.DbWrapperService=r,e.DB_CONFIG=o,e.DB_SCHEMA=a,e.DbWrapperModule=s,e.DataType={Integer:"integer",Int:"integer",TinyInt:"integer",SmallInt:"integer",BigInt:"integer",Text:"text",Char:"text",NChar:"text",VarChar:"text",NVarChar:"text",CLOB:"text",BLOB:"blob",Real:"real",Double:"real",Decimal:"real",Float:"real",Boolean:"integer",DateTime:"text",Date:"text"},e.DefaultType={Integer:"0",Int:"0",TinyInt:"0",SmallInt:"0",BigInt:"0",Text:"''",Char:"''",NChar:"''",VarChar:"''",NVarChar:"''",CLOB:"''",BLOB:"0",Real:"0.0",Double:"0.0",Decimal:"0.0",Float:"0.0",Boolean:"0",DateTime:"(datetime('now', 'localtime'))",Date:"(date('now', 'localtime'))"},Object.defineProperty(e,"__esModule",{value:!0})});
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core")):"function"==typeof define&&define.amd?define("db-wrapper",["exports","@angular/core"],t):t((e=e||self)["db-wrapper"]={},e.ng.core)}(this,(function(e,t){"use strict";
2
+ /*! *****************************************************************************
3
+ Copyright (c) Microsoft Corporation.
4
+
5
+ Permission to use, copy, modify, and/or distribute this software for any
6
+ purpose with or without fee is hereby granted.
7
+
8
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
9
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
10
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
11
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
12
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
13
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14
+ PERFORMANCE OF THIS SOFTWARE.
15
+ ***************************************************************************** */function n(e,t,n,r){var o,i=arguments.length,a=i<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,r);else for(var u=e.length-1;u>=0;u--)(o=e[u])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}function r(e,t,n,r){return new(n||(n=Promise))((function(o,i){function a(e){try{c(r.next(e))}catch(e){i(e)}}function u(e){try{c(r.throw(e))}catch(e){i(e)}}function c(e){var t;e.done?o(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(a,u)}c((r=r.apply(e,t||[])).next())}))}function o(e,t){var n,r,o,i,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return i={next:u(0),throw:u(1),return:u(2)},"function"==typeof Symbol&&(i[Symbol.iterator]=function(){return this}),i;function u(i){return function(u){return function(i){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(o=2&i[0]?r.return:i[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,i[1])).done)return o;switch(r=0,o&&(i=[2&i[0],o.value]),i[0]){case 0:case 1:o=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,r=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!(o=a.trys,(o=o.length>0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]<o[3])){a.label=i[1];break}if(6===i[0]&&a.label<o[1]){a.label=o[1],o=i;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(i);break}o[2]&&a.ops.pop(),a.trys.pop();continue}i=t.call(e,a)}catch(e){i=[6,e],r=0}finally{n=o=0}if(5&i[0])throw i[1];return{value:i[0]?i[1]:void 0,done:!0}}([i,u])}}}var i=function(){function e(){}return Object.defineProperty(e.prototype,"nativeWindow",{get:function(){return"undefined"!=typeof window?window:void 0},enumerable:!0,configurable:!0}),e=n([t.Injectable()],e)}();var a=function(){function e(e,t){var n=this;this._dbName=e.dbName,this._location=e.location||"default",this._iosDatabaseLocation=e.iosDatabaseLocation||"Library";var r=(new i).nativeWindow;t&&(this.schema=t),this._readyPromise=new Promise((function(e,o){void 0===r.cordova?setTimeout((function(){n.init(t).then((function(){e()})).catch((function(e){o(e)}))}),500):document.addEventListener("deviceready",(function(){console.log("dbWrapper: device ready."),n.initDevice(t).then((function(){return e()})).catch((function(e){return o(e)}))}))}))}return e.prototype.ready=function(){return this._readyPromise},e.prototype.initDevice=function(e){var t=this,n=(new i).nativeWindow;return new Promise((function(r,o){t.db=n.sqlitePlugin.openDatabase({name:t._dbName,location:t._location,androidLockWorkaround:1}),e?t.generate(e).catch((function(e){o(e)})).then((function(){r()})):r()}))},e.prototype.init=function(e){var t=this,n=(new i).nativeWindow;return new Promise((function(r,o){t.db=n.openDatabase(t._dbName,"1.0","database",-1),e?t.generate(e).catch((function(e){o(e)})).then((function(){r()})):r()}))},e.prototype.generate=function(e){var t=this,n=[];if(this.schema=e,e.tables&&e.tables.forEach((function(e){n.push(t.createTable(e))})),e.views&&e.views.forEach((function(e){n.push(t.createView(e))})),0===n.length)throw new Error("Esquema de la base de datos vacia.");return Promise.all(n)},e.prototype.createTable=function(e){return r(this,void 0,void 0,(function(){var t,n,r,i,a=this;return o(this,(function(o){switch(o.label){case 0:return t="",n=[],r=[],[4,this._tableExists(e.name)];case 1:return(i=o.sent())?e.columns.forEach((function(t){a._columnExists(i,t.name)||r.push(a.addColumn(e.name,t))})):e.columns.forEach((function(e){n.push(a.defColumn(e))})),"on conflict fail",Array.isArray(e.primary)&&n.push(" CONSTRAINT identificador PRIMARY KEY ("+e.primary.join(",")+") on conflict fail"),"string"==typeof e.primary&&n.push(" CONSTRAINT identificador PRIMARY KEY ("+e.primary+") on conflict fail"),e.uniques&&e.uniques.forEach((function(e){n.push(a.defUnique(e))})),e.foreigns&&e.foreigns.forEach((function(e){n.push(a.defForeign(e))})),i&&0!==r.length?[2,Promise.all(r).then((function(){console.log("Table "+e.name+" altered.")})).catch((function(t){throw console.error("Table "+e.name+": "+t.message),new Error("Table "+e.name+": "+t.message)}))]:i?[2,Promise.resolve().then((function(){console.log("Table "+e.name+" initialized.")}))]:(t="CREATE TABLE IF NOT EXISTS "+e.name+" ("+n.join(",")+")",[2,this.query(t).then((function(){console.log("Table "+e.name+" created.")})).catch((function(t){throw console.error("Table "+e.name+": "+t.message),new Error("Table "+e.name+": "+t.message)}))])}}))}))},e.prototype.createView=function(e){var t;return t="CREATE VIEW IF NOT EXISTS "+e.name+" AS "+e.sql,this.query(t)},e.prototype.getSchemaTable=function(e){var t;return this.schema.tables.forEach((function(n){n.name===e&&(t=n)})),t},e.prototype.getUniquesTable=function(e){e.uniques.forEach((function(e){(void 0)[e.name]=e}))},e.prototype.query=function(e,t){var n=this;return void 0===t&&(t=[]),new Promise((function(r,o){0===e.indexOf("select")?n.db.readTransaction((function(n){n.executeSql(e,t,(function(e,t){r(t)}),(function(e,t){o(t)}))}),(function(e){return o(e)})):n.db.transaction((function(n){n.executeSql(e,t,(function(e,t){r(t)}),(function(e,t){o(t)}))}),(function(e){return o(e)}))}))},e.prototype.Count=function(e,t){var n=this;return void 0===t&&(t=[]),this.query(e,t).then((function(e){return n.rowsCount(e)}))},e.prototype.insert=function(e,t){var n=this,r="",o=[],i=[],a=[];for(var u in r=r+"insert into "+e+" ",t)t.hasOwnProperty(u)&&(i.push(u),a.push(t[u]),o.push("?"));return r=r+"("+i.join(",")+") values ("+o.join(",")+")",new Promise((function(e,t){n.db.transaction((function(n){n.executeSql(r,a,(function(t,n){e(n)}),(function(e,n){t(n)}))}))}))},e.prototype.update=function(e,t,n){var r=this,o="",i=[],a=[],u=[];for(var c in o=o+"update "+e+" set ",t)if(t.hasOwnProperty(c)){var s=t[c];"object"==typeof s&&null!==s?(u.push(s.value),s.ifnull?i.push(c+" = ifnull( "+c+",0) + ?"):s.operator?i.push(c+" = "+c+s.operator+" ?"):i.push(c+" = ?")):(i.push(c+" = ?"),u.push(t[c]))}for(var c in n)n.hasOwnProperty(c)&&("object"==typeof n[c]&&null!==n[c]?(a.push(c+" "+n[c].operator+" ?"),u.push(n[c].value)):(a.push(c+" = ?"),u.push(n[c])));return o=o+i.join(",")+" where "+a.join(" and "),new Promise((function(e,t){r.db.transaction((function(n){n.executeSql(o,u,(function(t,n){e(n)}),(function(e,n){t(n)}))}))}))},e.prototype.dropTable=function(e){var t=this,n=1;return n=e.length,new Promise((function(r,o){e.some((function(e){if(0!==n)return t.query("DROP TABLE "+e).then((function(){1===n?r():n--}),(function(e){return n=0,o(e),!0})),!1}))}))},e.prototype.fetchAll=function(e){for(var t=[],n=0;n<e.rows.length;n++)t.push(e.rows.item(n));return t},e.prototype.fetch=function(e){var t=void 0,n=void 0;if(0!==e.rows.length){t=e.rows.item(0),n={};var r=Object.keys(t);for(var o in r)n[r[o]]=t[r[o]]}return n},e.prototype.rowsCount=function(e){return e.rows.length},e.prototype.tableExists=function(e){var t=this;return this.query("select sql from sqlite_master where type='table' and name='"+e+"'").then((function(e){return 1===t.rowsCount(e)}))},e.prototype.columnExists=function(e,t){var n=this;return this._tableExists(e).then((function(e){return!!e&&n._columnExists(e,t)}))},e.prototype.defColumn=function(e){var t;return t=e.name+" "+e.type,e.isNullable||(t+=" NOT NULL "),e.default&&(t+=" DEFAULT "+e.default+" "),"text"===e.type&&e.length&&(t+=" CONSTRAINT "+e.name+"_length CHECK ( ",e.isNullable&&(t+=e.name+" is null OR "),t+="length("+e.name+") <= "+e.length+" )"),t},e.prototype.defUnique=function(e){var t;return Array.isArray(e.fields)&&(t=" CONSTRAINT "+e.name+" UNIQUE ( "+e.fields.join(",")+" ) on conflict replace "),"string"==typeof e.fields&&(t=" CONSTRAINT "+e.name+" UNIQUE ( "+e.fields+" ) on conflict replace "),t},e.prototype.defForeign=function(e){var t;return Array.isArray(e.foreignKey)&&(t=" FOREIGN KEY ( "+e.foreignKey.join(",")+" ) "),"string"==typeof e.foreignKey&&(t=" FOREIGN KEY ( "+e.foreignKey+" ) "),Array.isArray(e.primaryKey)&&(t=" REFERENCES "+e.referenceTable+" ( "+e.primaryKey.join(",")+" ) "),"string"==typeof e.primaryKey&&(t=" REFERENCES "+e.referenceTable+" ( "+e.primaryKey+" ) "),t},e.prototype._tableExists=function(e){var t=this;return this.query("select sql from sqlite_master where type='table' and name='"+e+"'").then((function(e){return 1===t.rowsCount(e)&&t.fetch(e).sql}))},e.prototype._columnExists=function(e,t){return-1!==e.indexOf(t)},e.prototype.addColumn=function(e,t){var n="alter TABLE "+e+" add COLUMN "+this.defColumn(t);return this.query(n)},e}(),u=new t.InjectionToken("dbWrapperConfig"),c=new t.InjectionToken("dbWrapperSchema");function s(){return{dbName:"db.sqlite",location:"default",iosDatabaseLocation:"Library"}}function l(e,t){return new a(e||{dbName:"db.sqlite",location:"default",iosDatabaseLocation:"Library"},t)}var f,p,h=function(){function e(){}var r;return r=e,e.forRoot=function(e,t){return{ngModule:r,providers:[{provide:u,useValue:e},{provide:c,useValue:t},{provide:a,useFactory:l,deps:[u,c]}]}},e=r=n([t.NgModule()],e)}();(f=e.DataType||(e.DataType={})).Integer="integer",f.Int="integer",f.TinyInt="integer",f.SmallInt="integer",f.BigInt="integer",f.Text="text",f.Char="text",f.NChar="text",f.VarChar="text",f.NVarChar="text",f.CLOB="text",f.BLOB="blob",f.Real="real",f.Double="real",f.Decimal="real",f.Float="real",f.Boolean="integer",f.DateTime="text",f.Date="text",(p=e.DefaultType||(e.DefaultType={})).Integer="0",p.Int="0",p.TinyInt="0",p.SmallInt="0",p.BigInt="0",p.Text="''",p.Char="''",p.NChar="''",p.VarChar="''",p.NVarChar="''",p.CLOB="''",p.BLOB="0",p.Real="0.0",p.Double="0.0",p.Decimal="0.0",p.Float="0.0",p.Boolean="0",p.DateTime="(datetime('now', 'localtime'))",p.Date="(date('now', 'localtime'))",e.DB_CONFIG=u,e.DB_SCHEMA=c,e.DbWrapperModule=h,e.DbWrapperService=a,e.getDefaultDbConfig=s,e.provideDbWrapper=l,Object.defineProperty(e,"__esModule",{value:!0})}));
2
16
  //# sourceMappingURL=db-wrapper.umd.min.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["node_modules/tslib/tslib.es6.js","ng://db-wrapper/lib/window.service.ts","ng://db-wrapper/lib/db-wrapper.service.ts","ng://db-wrapper/lib/db-wrapper.module.ts","ng://db-wrapper/lib/db-wrapper.models.ts"],"names":["__generator","thisArg","body","f","y","t","g","_","label","sent","trys","ops","next","verb","throw","return","Symbol","iterator","this","n","v","step","op","TypeError","call","done","value","pop","length","push","e","WindowService","Object","defineProperty","prototype","_window","window","undefined","Injectable","DbWrapperService","dbConfig","dbSchema","_this","_dbName","dbName","_location","location","_iosDatabaseLocation","iosDatabaseLocation","nativeWindow","schema","_readyPromise","Promise","resolve","reject","cordova","setTimeout","init","then","catch","err","document","addEventListener","console","log","initDevice","ready","db","sqlitePlugin","openDatabase","name","androidLockWorkaround","generate","sentences","tables","forEach","table","createTable","views","view","createView","Error","all","__awaiter","_arguments","P","generator","fulfilled","rejected","result","apply","sql","newColumns","tableExists","tableDDL","_a","columns","col","columnExists","addColumn","defColumn","onConflictPrimary","Array","isArray","primary","join","uniques","uniq","defUnique","foreigns","fore","defForeign","error","message","query","getSchemaTable","tableName","res","getUniquesTable","bindings","indexOf","readTransaction","transaction","executeSql","Count","rows","rowsCount","insert","sqlBinds","sqlKeys","sqlValues","index","hasOwnProperty","update","where","newObj","ifnull","operator","dropTable","cont","some","fetchAll","output","i","item","fetch","objeto","keys","key","colSql","type","isNullable","default","unique","uniqSql","onConflictUnique","fields","foreSql","foreignKey","primaryKey","referenceTable","column","DB_CONFIG","InjectionToken","DB_SCHEMA","getDefaultDbConfig","provideDbWrapper","DbWrapperModule","forRoot","ngModule","providers","provide","useValue","useFactory","deps","NgModule","Integer","Int","TinyInt","SmallInt","BigInt","Text","Char","NChar","VarChar","NVarChar","CLOB","BLOB","Real","Double","Decimal","Float","Boolean","DateTime","Date"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class WindowService {\r\n\r\n get nativeWindow(): any {\r\n return _window();\r\n }\r\n}\r\n\r\nfunction _window(): any {\r\n // Return the global native browser window object\r\n return typeof window !== 'undefined' ? window : undefined;\r\n}","import { InjectionToken } from '@angular/core';\r\nimport { WindowService } from './window.service';\r\nimport { DBTable, DbConfig, DBSchema, DBView,\r\n DBColumn, DBUnique, DBForeign, SqlTransaction, SqlResultSet, SqlError, DefaultType } from './db-wrapper.models';\r\n\r\nexport class DbWrapperService {\r\n private _dbName: string;\r\n private _location: string;\r\n private _iosDatabaseLocation: string;\r\n private _readyPromise: Promise<void>;\r\n schema: DBSchema;\r\n db: any;\r\n\r\n constructor(dbConfig: DbConfig, dbSchema?: DBSchema) {\r\n\r\n this._dbName = dbConfig.dbName;\r\n this._location = dbConfig.location || 'default';\r\n this._iosDatabaseLocation = dbConfig.iosDatabaseLocation || 'Library';\r\n const window = (new WindowService()).nativeWindow;\r\n if (dbSchema) { this.schema = dbSchema; }\r\n this._readyPromise = new Promise ( (resolve, reject) => {\r\n if (typeof window.cordova === 'undefined') {\r\n setTimeout( () => {\r\n this.init(dbSchema).then (\r\n () => {\r\n resolve();\r\n } )\r\n .catch ( (err) => {\r\n reject(err);\r\n } );\r\n }, 500);\r\n } else {\r\n document.addEventListener('deviceready', () => {\r\n console.log('dbWrapper: device ready.');\r\n this.initDevice(dbSchema).then ( () => resolve() ).catch ( (err) => reject(err) );\r\n });\r\n }\r\n });\r\n }\r\n\r\n ready(): Promise<void> {\r\n return this._readyPromise;\r\n }\r\n\r\n initDevice(dbSchema: DBSchema): Promise<void> {\r\n const window = (new WindowService()).nativeWindow;\r\n return new Promise( (resolve, reject) => {\r\n this.db = window.sqlitePlugin.openDatabase({\r\n name: this._dbName,\r\n location: this._location,\r\n androidLockWorkaround: 1\r\n });\r\n\r\n if (dbSchema) {\r\n this.generate(dbSchema).catch(err => {\r\n reject(err);\r\n }).then(() => { resolve(); });\r\n } else {\r\n resolve();\r\n }\r\n });\r\n }\r\n\r\n init(dbSchema: DBSchema): Promise<void> {\r\n const window = (new WindowService()).nativeWindow;\r\n return new Promise ( (resolve, reject) => {\r\n this.db = window.openDatabase(this._dbName, '1.0', 'database', -1);\r\n if (dbSchema) {\r\n this.generate(dbSchema).catch(err => {\r\n reject(err);\r\n }).then( () => {\r\n resolve();\r\n });\r\n } else {\r\n resolve();\r\n }\r\n });\r\n }\r\n\r\n generate(schema: DBSchema): Promise<any> {\r\n\r\n const sentences = [];\r\n this.schema = schema;\r\n\r\n if (schema.tables) {\r\n schema.tables.forEach(table => {\r\n sentences.push(this.createTable(table));\r\n });\r\n }\r\n if (schema.views) {\r\n schema.views.forEach( view => {\r\n sentences.push(this.createView(view));\r\n });\r\n }\r\n if (sentences.length === 0) {\r\n throw new Error('Esquema de la base de datos vacia.');\r\n }\r\n return Promise.all(sentences);\r\n }\r\n\r\n async createTable(table: DBTable): Promise<any> {\r\n let sql = '', onConflictPrimary;\r\n const sentences = [], newColumns = []\r\n\r\n const tableDDL = await this.tableExists(table.name);\r\n if (tableDDL) {\r\n table.columns.forEach( col => {\r\n if (!this.columnExists(tableDDL as string, col.name) ) {\r\n newColumns.push(this.addColumn(table.name, col));\r\n }\r\n });\r\n } else {\r\n table.columns.forEach( col => {\r\n sentences.push(this.defColumn(col));\r\n });\r\n }\r\n onConflictPrimary = 'on conflict fail';\r\n\r\n if (Array.isArray(table.primary) ) {\r\n sentences.push (' CONSTRAINT identificador PRIMARY KEY (' + table.primary.join(',') + ') ' + onConflictPrimary );\r\n }\r\n if (typeof table.primary === 'string') {\r\n sentences.push (' CONSTRAINT identificador PRIMARY KEY (' + table.primary + ') ' + onConflictPrimary );\r\n }\r\n if (table.uniques) {\r\n table.uniques.forEach( uniq => {\r\n sentences.push(this.defUnique(uniq));\r\n });\r\n }\r\n\r\n if (table.foreigns) {\r\n table.foreigns.forEach ( fore => {\r\n sentences.push(this.defForeign(fore));\r\n });\r\n }\r\n\r\n if (tableDDL && newColumns.length !== 0) {\r\n return Promise.all(newColumns)\r\n .then( () => { console.log(`Table ${table.name} altered.`); } )\r\n .catch( (err) => {\r\n console.error (`Table ${table.name}: ${err.message}`);\r\n throw new Error(`Table ${table.name}: ${err.message}`);\r\n });\r\n\r\n } else if (!tableDDL) {\r\n sql = 'CREATE TABLE IF NOT EXISTS ' + table.name + ' (' + sentences.join(',') + ')';\r\n return this.query(sql)\r\n .then( () => { console.log(`Table ${table.name} created.`); })\r\n .catch( (err) => {\r\n console.error (`Table ${table.name}: ${err.message}`);\r\n throw new Error(`Table ${table.name}: ${err.message}`);\r\n });\r\n } else {\r\n return Promise.resolve().then( () => { console.log(`Table ${table.name} initialized.`); });\r\n }\r\n }\r\n\r\n\r\n createView(view: DBView): Promise<any> {\r\n let sql: string;\r\n\r\n sql = 'CREATE VIEW IF NOT EXISTS ' + view.name\r\n + ' AS ' + view.sql;\r\n\r\n return this.query(sql);\r\n\r\n }\r\n\r\n getSchemaTable(tableName: string): DBTable {\r\n let res: DBTable;\r\n\r\n this.schema.tables.forEach( table => {\r\n if (table.name === tableName) {\r\n res = table;\r\n }\r\n });\r\n return res;\r\n\r\n }\r\n\r\n getUniquesTable(table: DBTable): object {\r\n let res: {};\r\n table.uniques.forEach(uniq => {\r\n res[uniq.name] = uniq;\r\n });\r\n return res;\r\n }\r\n\r\n query(query: string, bindings: any[]= []): Promise<SqlResultSet> {\r\n return new Promise((resolve, reject) => {\r\n if (query.indexOf('select') === 0) {\r\n this.db.readTransaction((transaction: SqlTransaction) => {\r\n transaction.executeSql(query, bindings, (transaction: SqlTransaction, result: SqlResultSet) => {\r\n resolve(result);\r\n }, (transaction: SqlTransaction, error: SqlError) => {\r\n reject(error);\r\n });\r\n }, (err: SqlError) => reject(err) );\r\n } else {\r\n this.db.transaction((transaction: SqlTransaction) => {\r\n transaction.executeSql(query, bindings, (transaction: SqlTransaction, result: SqlResultSet) => {\r\n resolve(result);\r\n }, (transaction: SqlTransaction, error: SqlError) => {\r\n reject(error);\r\n });\r\n }, (err: SqlError) => reject(err) );\r\n }\r\n });\r\n }\r\n\r\n Count(query: string, bindings: any[]= []): Promise<number> {\r\n return this.query(query, bindings).then(rows => {\r\n return this.rowsCount(rows);\r\n });\r\n }\r\n\r\n insert(table: string, bindings: {}): Promise<SqlResultSet> {\r\n let sql = '', sqlBinds = [], sqlKeys = [], sqlValues = [] ;\r\n\r\n sql = sql + 'insert into ' + table + ' ';\r\n\r\n for (const index in bindings) {\r\n if (bindings.hasOwnProperty(index)) {\r\n sqlKeys.push(index);\r\n sqlValues.push(bindings[index]);\r\n sqlBinds.push('?');\r\n }\r\n }\r\n\r\n sql = sql + '(' + sqlKeys.join(',') + ') values (' + sqlBinds.join(',') + ')';\r\n return new Promise((resolve, reject) => {\r\n this.db.transaction(transaction => {\r\n transaction.executeSql(sql, sqlValues, (transaction: SqlTransaction, result: SqlResultSet) => {\r\n resolve(result);\r\n }, (transaction: SqlTransaction, error: SqlError) => {\r\n reject(error);\r\n });\r\n });\r\n });\r\n }\r\n\r\n update(table: string, bindings: {}, where: {}): Promise<SqlResultSet> {\r\n let sql = '', sqlBinds = [], sqlKeys =[], sqlValues = [] ;\r\n\r\n sql = sql + 'update ' + table + ' set ';\r\n\r\n for (let index in bindings) {\r\n if (bindings.hasOwnProperty(index)) {\r\n let newObj = bindings[index];\r\n if (typeof newObj === 'object' && newObj !== null) {\r\n sqlValues.push(newObj.value);\r\n if (newObj.ifnull) {\r\n sqlBinds.push(index + ' = ifnull( ' + index + ',0) + ?');\r\n } else if (newObj.operator) {\r\n sqlBinds.push(index + ' = ' + index + newObj.operator + ' ?');\r\n } else {\r\n sqlBinds.push(index + ' = ?');\r\n }\r\n\r\n } else {\r\n sqlBinds.push(index + ' = ?');\r\n sqlValues.push(bindings[index]);\r\n\r\n }\r\n }\r\n }\r\n\r\n for (let index in where) {\r\n if (where.hasOwnProperty(index)) {\r\n if (typeof where[index] === 'object' && where[index] !== null){\r\n sqlKeys.push(index + ' ' + where[index].operator + ' ?');\r\n sqlValues.push(where[index].value);\r\n } else {\r\n sqlKeys.push(index + ' = ?');\r\n sqlValues.push(where[index]);\r\n }\r\n }\r\n }\r\n\r\n sql = sql + sqlBinds.join(',') + ' where ' + sqlKeys.join(' and ');\r\n return new Promise((resolve, reject) => {\r\n this.db.transaction(transaction => {\r\n transaction.executeSql(sql, sqlValues, (transaction: SqlTransaction, result: SqlResultSet) => {\r\n resolve(result);\r\n }, (transaction: SqlTransaction, error: SqlError) => {\r\n reject(error);\r\n });\r\n });\r\n });\r\n }\r\n\r\n dropTable (tables: string[]): Promise<void> {\r\n let cont = 1;\r\n\r\n cont = tables.length;\r\n return new Promise((resolve, reject) => {\r\n tables.some( table => {\r\n if (cont !== 0) {\r\n this.query('DROP TABLE ' + table)\r\n .then( () => {\r\n if (cont === 1 ) { resolve();\r\n } else { cont--; }\r\n }, err => {\r\n cont = 0;\r\n reject(err);\r\n return true;\r\n });\r\n return false;\r\n }\r\n });\r\n })\r\n }\r\n\r\n fetchAll(result: SqlResultSet): object[] {\r\n let output = [];\r\n\r\n for (let i = 0; i < result.rows.length; i++) {\r\n output.push(result.rows.item(i));\r\n }\r\n\r\n return output;\r\n }\r\n\r\n fetch(result: SqlResultSet): object {\r\n let objeto = undefined, newObj= undefined;\r\n if (result.rows.length !== 0) {\r\n objeto = result.rows.item(0);\r\n newObj = {};\r\n const keys = Object.keys(objeto);\r\n for (let key in keys) {\r\n newObj[keys[key]] = objeto[keys[key]];\r\n }\r\n }\r\n return newObj;\r\n }\r\n\r\n\r\n rowsCount(result: SqlResultSet): number {\r\n return result.rows.length;\r\n }\r\n\r\n/* Private */\r\n\r\n private defColumn(col: DBColumn): string {\r\n let colSql: string;\r\n\r\n colSql = col.name + ' ' + col.type;\r\n if (!col.isNullable) {\r\n colSql += ' NOT NULL ';\r\n }\r\n if (col.default) {\r\n colSql += ' DEFAULT ' + col.default + ' ';\r\n }\r\n if (col.type === 'text' && col.length) {\r\n colSql += ` CONSTRAINT ${col.name}_length CHECK ( `;\r\n if (col.isNullable) {\r\n colSql += `${col.name} is null OR `;\r\n }\r\n colSql += `length(${col.name}) <= ${col.length} )`;\r\n\r\n }\r\n\r\n return colSql;\r\n\r\n }\r\n\r\n private defUnique(unique: DBUnique): string {\r\n let uniqSql: string;\r\n\r\n // depende del entorno, producción o desarrollo\r\n const onConflictUnique = 'on conflict fail';\r\n\r\n if (Array.isArray(unique.fields) ) {\r\n uniqSql = ` CONSTRAINT ${unique.name} UNIQUE ( ${unique.fields.join(',')} ) ${onConflictUnique} `;\r\n }\r\n if (typeof unique.fields === 'string') {\r\n uniqSql = ` CONSTRAINT ${unique.name} UNIQUE ( ${unique.fields} ) ${onConflictUnique} `;\r\n }\r\n\r\n return uniqSql;\r\n }\r\n\r\n private defForeign(fore: DBForeign): string {\r\n let foreSql: string;\r\n\r\n if (Array.isArray(fore.foreignKey) ) {\r\n foreSql = ` FOREIGN KEY ( ${fore.foreignKey.join(',')} ) `;\r\n }\r\n\r\n if (typeof fore.foreignKey === 'string') {\r\n foreSql = ` FOREIGN KEY ( ${fore.foreignKey} ) `;\r\n }\r\n\r\n if (Array.isArray(fore.primaryKey) ) {\r\n foreSql = ` REFERENCES ${fore.referenceTable} ( ${fore.primaryKey.join(',')} ) `;\r\n }\r\n\r\n if (typeof fore.primaryKey === 'string') {\r\n foreSql = ` REFERENCES ${fore.referenceTable} ( ${fore.primaryKey} ) `;\r\n }\r\n\r\n return foreSql;\r\n }\r\n\r\n private tableExists(table: string): Promise<boolean | string> {\r\n return this.query('select sql from sqlite_master ' +\r\n 'where type=\\'table\\' and name=\\'' + table + '\\'')\r\n .then(result => {\r\n if (this.rowsCount(result) === 1) { return (this.fetch(result) as any).sql as string; } else { return false; }\r\n });\r\n }\r\n\r\n private columnExists(tableDDL: string, column: string): boolean {\r\n\r\n if (tableDDL.indexOf(column) === -1) { return false; } else { return true; }\r\n }\r\n\r\n private addColumn(table: string, col: DBColumn): Promise<any> {\r\n const colSql = this.defColumn(col);\r\n const query = 'alter TABLE ' + table + ' add COLUMN ' + colSql;\r\n return this.query(query);\r\n }\r\n\r\n}\r\n\r\n\r\n\r\nexport const DB_CONFIG = new InjectionToken<DbConfig>('dbWrapperConfig');\r\nexport const DB_SCHEMA = new InjectionToken<DBSchema>('dbWrapperSchema');\r\n\r\nexport function getDefaultDbConfig(): DbConfig {\r\n return {\r\n dbName: 'db.sqlite',\r\n location: 'default',\r\n iosDatabaseLocation: 'Library'\r\n };\r\n}\r\n\r\nexport function provideDbWrapper(dbConfig: DbConfig, dbSchema?: DBSchema): DbWrapperService {\r\n const config = !!dbConfig ? dbConfig : getDefaultDbConfig();\r\n return new DbWrapperService(config, dbSchema);\r\n}\r\n\r\n\r\n\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { DbConfig, DBSchema } from './db-wrapper.models';\r\nimport { DB_CONFIG, provideDbWrapper, DbWrapperService, DB_SCHEMA } from './db-wrapper.service';\r\n\r\n@NgModule()\r\nexport class DbWrapperModule {\r\n static forRoot(dbConfig: DbConfig, schema?: DBSchema): ModuleWithProviders {\r\n return {\r\n ngModule: DbWrapperModule,\r\n providers: [\r\n { provide: DB_CONFIG, useValue: dbConfig },\r\n { provide: DB_SCHEMA, useValue: schema },\r\n { provide: DbWrapperService, useFactory: provideDbWrapper, deps: [DB_CONFIG, DB_SCHEMA] }\r\n ]\r\n };\r\n }\r\n\r\n}\r\n","\r\nexport enum DataType {\r\n Integer = 'integer',\r\n Int = 'integer',\r\n TinyInt = 'integer',\r\n SmallInt = 'integer',\r\n BigInt = 'integer',\r\n Text = 'text',\r\n Char = 'text',\r\n NChar = 'text',\r\n VarChar = 'text',\r\n NVarChar = 'text',\r\n CLOB = 'text',\r\n BLOB = 'blob',\r\n Real = 'real',\r\n Double = 'real',\r\n Decimal = 'real',\r\n Float = 'real',\r\n Boolean = 'integer',\r\n DateTime = 'text',\r\n Date = 'text'\r\n\r\n}\r\n\r\nexport enum DefaultType {\r\n Integer = '0',\r\n Int = '0',\r\n TinyInt = '0',\r\n SmallInt = '0',\r\n BigInt = '0',\r\n Text = '\\'\\'',\r\n Char = '\\'\\'',\r\n NChar = '\\'\\'',\r\n VarChar = '\\'\\'',\r\n NVarChar = '\\'\\'',\r\n CLOB = '\\'\\'',\r\n BLOB = '0',\r\n Real = '0.0',\r\n Double = '0.0',\r\n Decimal = '0.0',\r\n Float = '0.0',\r\n Boolean = '0',\r\n DateTime = '(datetime(\\'now\\', \\'localtime\\'))',\r\n Date = '(date(\\'now\\', \\'localtime\\'))'\r\n}\r\n\r\n\r\nexport interface SqlTransaction {\r\n /**\r\n * Executes SQL statement via current transaction.\r\n * @param sql SQL statement to execute.\r\n * @param params SQL stetement arguments.\r\n * @param successCallback Called in case of query has been successfully done.\r\n * @param errorCallback Called, when query fails. Return false to continue transaction; true or no return to rollback.\r\n */\r\n executeSql(sql: string,\r\n params?: any[],\r\n successCallback?: (transaction: SqlTransaction, resultSet: SqlResultSet) => void,\r\n errorCallback?: (transaction: SqlTransaction, error: SqlError) => any): void;\r\n}\r\n\r\nexport interface SqlResultSet {\r\n insertId: number;\r\n rowsAffected: number;\r\n rows: SqlResultSetRowList;\r\n}\r\n\r\nexport interface SqlResultSetRowList {\r\n length: number;\r\n item(index: number): Object;\r\n}\r\n\r\nexport interface SqlError {\r\n code: number;\r\n message: string;\r\n}\r\n\r\n/**\r\n * Interfaz con la configuración de websql\r\n */\r\nexport interface DbConfig {\r\n /**\r\n * nombre de la base de datos\r\n */\r\n dbName: string;\r\n /**\r\n * default 'default'\r\n */\r\n location?: string;\r\n /**\r\n * default 'Library'\r\n */\r\n iosDatabaseLocation?: string;\r\n}\r\n\r\n/**\r\n * Intefaz para definir un constraint unique\r\n *\r\n */\r\nexport interface DBUnique {\r\n name: string; /** nombre */\r\n fields: string | string[]; /** lista de campos */\r\n}\r\n\r\nexport interface DBForeign {\r\n name: string;\r\n foreignKey: string | string[];\r\n referenceTable: string;\r\n primaryKey: string | string[];\r\n}\r\n\r\nexport interface DBColumn {\r\n name: string;\r\n type: DataType;\r\n length?: number;\r\n isNullable?: boolean;\r\n default?: DefaultType | string;\r\n}\r\n\r\nexport interface DBTable {\r\n name: string;\r\n columns: DBColumn[];\r\n primary: string | string[];\r\n uniques?: DBUnique[];\r\n foreigns?: DBForeign[];\r\n sync?: string;\r\n}\r\n\r\n\r\nexport interface DBView {\r\n name: string;\r\n sql: string;\r\n}\r\n\r\nexport interface DBSchema {\r\n tables: DBTable[],\r\n views?: DBView[]\r\n}\r\n\r\n"]}
1
+ {"version":3,"sources":["../../../node_modules/tslib/tslib.es6.js","ng://db-wrapper/lib/window.service.ts","ng://db-wrapper/lib/db-wrapper.service.ts","ng://db-wrapper/lib/db-wrapper.models.ts","ng://db-wrapper/lib/db-wrapper.module.ts"],"names":["__decorate","decorators","target","key","desc","d","c","arguments","length","r","Object","getOwnPropertyDescriptor","Reflect","decorate","i","defineProperty","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","apply","__generator","body","f","y","t","g","_","label","sent","trys","ops","verb","throw","return","Symbol","iterator","this","n","v","op","TypeError","call","pop","push","WindowService","prototype","window","undefined","Injectable","DbWrapperService","dbConfig","dbSchema","_this","_dbName","dbName","_location","location","_iosDatabaseLocation","iosDatabaseLocation","nativeWindow","schema","_readyPromise","cordova","setTimeout","init","catch","err","document","addEventListener","console","log","initDevice","ready","db","sqlitePlugin","openDatabase","name","androidLockWorkaround","generate","sentences","tables","forEach","table","createTable","views","view","createView","Error","all","sql","newColumns","_tableExists","tableDDL","_a","columns","col","_columnExists","addColumn","defColumn","Array","isArray","primary","join","uniques","uniq","defUnique","foreigns","fore","defForeign","error","message","query","getSchemaTable","tableName","res","getUniquesTable","bindings","indexOf","readTransaction","transaction","executeSql","Count","rows","rowsCount","insert","sqlBinds","sqlKeys","sqlValues","index","hasOwnProperty","update","where","newObj","ifnull","operator","dropTable","cont","some","fetchAll","output","item","fetch","objeto","keys","tableExists","columnExists","column","colSql","type","isNullable","default","unique","uniqSql","fields","foreSql","foreignKey","primaryKey","referenceTable","DB_CONFIG","InjectionToken","DB_SCHEMA","getDefaultDbConfig","provideDbWrapper","DataType","DefaultType","DbWrapperModule","forRoot","ngModule","DbWrapperModule_1","providers","provide","useValue","useFactory","deps","NgModule"],"mappings":"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","sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (p !== \"default\" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to get private field on non-instance\");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError(\"attempted to set private field on non-instance\");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class WindowService {\r\n\r\n get nativeWindow(): any {\r\n return _window();\r\n }\r\n}\r\n\r\nfunction _window(): any {\r\n // Return the global native browser window object\r\n return typeof window !== 'undefined' ? window : undefined;\r\n}","import { InjectionToken } from '@angular/core';\r\nimport { WindowService } from './window.service';\r\nimport { DBTable, DbConfig, DBSchema, DBView,\r\n DBColumn, DBUnique, DBForeign, SqlTransaction, SqlResultSet, SqlError, DefaultType } from './db-wrapper.models';\r\n\r\nexport class DbWrapperService {\r\n private _dbName: string;\r\n private _location: string;\r\n private _iosDatabaseLocation: string;\r\n private _readyPromise: Promise<void>;\r\n schema: DBSchema;\r\n db: any;\r\n\r\n constructor(dbConfig: DbConfig, dbSchema?: DBSchema) {\r\n\r\n this._dbName = dbConfig.dbName;\r\n this._location = dbConfig.location || 'default';\r\n this._iosDatabaseLocation = dbConfig.iosDatabaseLocation || 'Library';\r\n const window = (new WindowService()).nativeWindow;\r\n if (dbSchema) { this.schema = dbSchema; }\r\n this._readyPromise = new Promise ( (resolve, reject) => {\r\n if (typeof window.cordova === 'undefined') {\r\n setTimeout( () => {\r\n this.init(dbSchema).then (\r\n () => {\r\n resolve();\r\n } )\r\n .catch ( (err) => {\r\n reject(err);\r\n } );\r\n }, 500);\r\n } else {\r\n document.addEventListener('deviceready', () => {\r\n console.log('dbWrapper: device ready.');\r\n this.initDevice(dbSchema).then ( () => resolve() ).catch ( (err) => reject(err) );\r\n });\r\n }\r\n });\r\n }\r\n\r\n ready(): Promise<void> {\r\n return this._readyPromise;\r\n }\r\n\r\n initDevice(dbSchema: DBSchema): Promise<void> {\r\n const window = (new WindowService()).nativeWindow;\r\n return new Promise( (resolve, reject) => {\r\n this.db = window.sqlitePlugin.openDatabase({\r\n name: this._dbName,\r\n location: this._location,\r\n androidLockWorkaround: 1\r\n });\r\n\r\n if (dbSchema) {\r\n this.generate(dbSchema).catch(err => {\r\n reject(err);\r\n }).then(() => { resolve(); });\r\n } else {\r\n resolve();\r\n }\r\n });\r\n }\r\n\r\n init(dbSchema: DBSchema): Promise<void> {\r\n const window = (new WindowService()).nativeWindow;\r\n return new Promise ( (resolve, reject) => {\r\n this.db = window.openDatabase(this._dbName, '1.0', 'database', -1);\r\n if (dbSchema) {\r\n this.generate(dbSchema).catch(err => {\r\n reject(err);\r\n }).then( () => {\r\n resolve();\r\n });\r\n } else {\r\n resolve();\r\n }\r\n });\r\n }\r\n\r\n generate(schema: DBSchema): Promise<any> {\r\n\r\n const sentences = [];\r\n this.schema = schema;\r\n\r\n if (schema.tables) {\r\n schema.tables.forEach(table => {\r\n sentences.push(this.createTable(table));\r\n });\r\n }\r\n if (schema.views) {\r\n schema.views.forEach( view => {\r\n sentences.push(this.createView(view));\r\n });\r\n }\r\n if (sentences.length === 0) {\r\n throw new Error('Esquema de la base de datos vacia.');\r\n }\r\n return Promise.all(sentences);\r\n }\r\n\r\n async createTable(table: DBTable): Promise<any> {\r\n let sql = '', onConflictPrimary;\r\n const sentences = [], newColumns = []\r\n\r\n const tableDDL = await this._tableExists(table.name);\r\n if (tableDDL) {\r\n table.columns.forEach( col => {\r\n if (!this._columnExists(tableDDL as string, col.name) ) {\r\n newColumns.push(this.addColumn(table.name, col));\r\n }\r\n });\r\n } else {\r\n table.columns.forEach( col => {\r\n sentences.push(this.defColumn(col));\r\n });\r\n }\r\n onConflictPrimary = 'on conflict fail';\r\n\r\n if (Array.isArray(table.primary) ) {\r\n sentences.push (' CONSTRAINT identificador PRIMARY KEY (' + table.primary.join(',') + ') ' + onConflictPrimary );\r\n }\r\n if (typeof table.primary === 'string') {\r\n sentences.push (' CONSTRAINT identificador PRIMARY KEY (' + table.primary + ') ' + onConflictPrimary );\r\n }\r\n if (table.uniques) {\r\n table.uniques.forEach( uniq => {\r\n sentences.push(this.defUnique(uniq));\r\n });\r\n }\r\n\r\n if (table.foreigns) {\r\n table.foreigns.forEach ( fore => {\r\n sentences.push(this.defForeign(fore));\r\n });\r\n }\r\n\r\n if (tableDDL && newColumns.length !== 0) {\r\n return Promise.all(newColumns)\r\n .then( () => { console.log(`Table ${table.name} altered.`); } )\r\n .catch( (err) => {\r\n console.error (`Table ${table.name}: ${err.message}`);\r\n throw new Error(`Table ${table.name}: ${err.message}`);\r\n });\r\n\r\n } else if (!tableDDL) {\r\n sql = 'CREATE TABLE IF NOT EXISTS ' + table.name + ' (' + sentences.join(',') + ')';\r\n return this.query(sql)\r\n .then( () => { console.log(`Table ${table.name} created.`); })\r\n .catch( (err) => {\r\n console.error (`Table ${table.name}: ${err.message}`);\r\n throw new Error(`Table ${table.name}: ${err.message}`);\r\n });\r\n } else {\r\n return Promise.resolve().then( () => { console.log(`Table ${table.name} initialized.`); });\r\n }\r\n }\r\n\r\n\r\n createView(view: DBView): Promise<any> {\r\n let sql: string;\r\n\r\n sql = 'CREATE VIEW IF NOT EXISTS ' + view.name\r\n + ' AS ' + view.sql;\r\n\r\n return this.query(sql);\r\n\r\n }\r\n\r\n getSchemaTable(tableName: string): DBTable {\r\n let res: DBTable;\r\n\r\n this.schema.tables.forEach( table => {\r\n if (table.name === tableName) {\r\n res = table;\r\n }\r\n });\r\n return res;\r\n\r\n }\r\n\r\n getUniquesTable(table: DBTable): object {\r\n let res: {};\r\n table.uniques.forEach(uniq => {\r\n res[uniq.name] = uniq;\r\n });\r\n return res;\r\n }\r\n\r\n query(query: string, bindings: any[]= []): Promise<SqlResultSet> {\r\n return new Promise((resolve, reject) => {\r\n if (query.indexOf('select') === 0) {\r\n this.db.readTransaction((transaction: SqlTransaction) => {\r\n transaction.executeSql(query, bindings, (transaction: SqlTransaction, result: SqlResultSet) => {\r\n resolve(result);\r\n }, (transaction: SqlTransaction, error: SqlError) => {\r\n reject(error);\r\n });\r\n }, (err: SqlError) => reject(err) );\r\n } else {\r\n this.db.transaction((transaction: SqlTransaction) => {\r\n transaction.executeSql(query, bindings, (transaction: SqlTransaction, result: SqlResultSet) => {\r\n resolve(result);\r\n }, (transaction: SqlTransaction, error: SqlError) => {\r\n reject(error);\r\n });\r\n }, (err: SqlError) => reject(err) );\r\n }\r\n });\r\n }\r\n\r\n Count(query: string, bindings: any[]= []): Promise<number> {\r\n return this.query(query, bindings).then(rows => {\r\n return this.rowsCount(rows);\r\n });\r\n }\r\n\r\n insert(table: string, bindings: {}): Promise<SqlResultSet> {\r\n let sql = '', sqlBinds = [], sqlKeys = [], sqlValues = [] ;\r\n\r\n sql = sql + 'insert into ' + table + ' ';\r\n\r\n for (const index in bindings) {\r\n if (bindings.hasOwnProperty(index)) {\r\n sqlKeys.push(index);\r\n sqlValues.push(bindings[index]);\r\n sqlBinds.push('?');\r\n }\r\n }\r\n\r\n sql = sql + '(' + sqlKeys.join(',') + ') values (' + sqlBinds.join(',') + ')';\r\n return new Promise((resolve, reject) => {\r\n this.db.transaction(transaction => {\r\n transaction.executeSql(sql, sqlValues, (transaction: SqlTransaction, result: SqlResultSet) => {\r\n resolve(result);\r\n }, (transaction: SqlTransaction, error: SqlError) => {\r\n reject(error);\r\n });\r\n });\r\n });\r\n }\r\n\r\n update(table: string, bindings: {}, where: {}): Promise<SqlResultSet> {\r\n let sql = '', sqlBinds = [], sqlKeys =[], sqlValues = [] ;\r\n\r\n sql = sql + 'update ' + table + ' set ';\r\n\r\n for (let index in bindings) {\r\n if (bindings.hasOwnProperty(index)) {\r\n let newObj = bindings[index];\r\n if (typeof newObj === 'object' && newObj !== null) {\r\n sqlValues.push(newObj.value);\r\n if (newObj.ifnull) {\r\n sqlBinds.push(index + ' = ifnull( ' + index + ',0) + ?');\r\n } else if (newObj.operator) {\r\n sqlBinds.push(index + ' = ' + index + newObj.operator + ' ?');\r\n } else {\r\n sqlBinds.push(index + ' = ?');\r\n }\r\n\r\n } else {\r\n sqlBinds.push(index + ' = ?');\r\n sqlValues.push(bindings[index]);\r\n\r\n }\r\n }\r\n }\r\n\r\n for (let index in where) {\r\n if (where.hasOwnProperty(index)) {\r\n if (typeof where[index] === 'object' && where[index] !== null){\r\n sqlKeys.push(index + ' ' + where[index].operator + ' ?');\r\n sqlValues.push(where[index].value);\r\n } else {\r\n sqlKeys.push(index + ' = ?');\r\n sqlValues.push(where[index]);\r\n }\r\n }\r\n }\r\n\r\n sql = sql + sqlBinds.join(',') + ' where ' + sqlKeys.join(' and ');\r\n return new Promise((resolve, reject) => {\r\n this.db.transaction(transaction => {\r\n transaction.executeSql(sql, sqlValues, (transaction: SqlTransaction, result: SqlResultSet) => {\r\n resolve(result);\r\n }, (transaction: SqlTransaction, error: SqlError) => {\r\n reject(error);\r\n });\r\n });\r\n });\r\n }\r\n\r\n dropTable (tables: string[]): Promise<void> {\r\n let cont = 1;\r\n\r\n cont = tables.length;\r\n return new Promise((resolve, reject) => {\r\n tables.some( table => {\r\n if (cont !== 0) {\r\n this.query('DROP TABLE ' + table)\r\n .then( () => {\r\n if (cont === 1 ) { resolve();\r\n } else { cont--; }\r\n }, err => {\r\n cont = 0;\r\n reject(err);\r\n return true;\r\n });\r\n return false;\r\n }\r\n });\r\n })\r\n }\r\n\r\n fetchAll(result: SqlResultSet): object[] {\r\n let output = [];\r\n\r\n for (let i = 0; i < result.rows.length; i++) {\r\n output.push(result.rows.item(i));\r\n }\r\n\r\n return output;\r\n }\r\n\r\n fetch(result: SqlResultSet): object {\r\n let objeto = undefined, newObj= undefined;\r\n if (result.rows.length !== 0) {\r\n objeto = result.rows.item(0);\r\n newObj = {};\r\n const keys = Object.keys(objeto);\r\n for (let key in keys) {\r\n newObj[keys[key]] = objeto[keys[key]];\r\n }\r\n }\r\n return newObj;\r\n }\r\n\r\n\r\n rowsCount(result: SqlResultSet): number {\r\n return result.rows.length;\r\n }\r\n\r\n tableExists(table: string): Promise<boolean> {\r\n return this.query('select sql from sqlite_master ' +\r\n 'where type=\\'table\\' and name=\\'' + table + '\\'')\r\n .then(result => (this.rowsCount(result) === 1) );\r\n } \r\n\r\n columnExists(table: string, column: string): Promise<boolean> {\r\n return this._tableExists(table)\r\n .then((tableDDL) => {\r\n if (tableDDL) {\r\n return this._columnExists((tableDDL as string), column);\r\n } else { return false; }\r\n });\r\n }\r\n\r\n/* Private */\r\n\r\n private defColumn(col: DBColumn): string {\r\n let colSql: string;\r\n\r\n colSql = col.name + ' ' + col.type;\r\n if (!col.isNullable) {\r\n colSql += ' NOT NULL ';\r\n }\r\n if (col.default) {\r\n colSql += ' DEFAULT ' + col.default + ' ';\r\n }\r\n if (col.type === 'text' && col.length) {\r\n colSql += ` CONSTRAINT ${col.name}_length CHECK ( `;\r\n if (col.isNullable) {\r\n colSql += `${col.name} is null OR `;\r\n }\r\n colSql += `length(${col.name}) <= ${col.length} )`;\r\n\r\n }\r\n\r\n return colSql;\r\n\r\n }\r\n\r\n private defUnique(unique: DBUnique): string {\r\n let uniqSql: string;\r\n\r\n // depende del entorno, producción o desarrollo\r\n const onConflictUnique = 'on conflict replace';\r\n\r\n if (Array.isArray(unique.fields) ) {\r\n uniqSql = ` CONSTRAINT ${unique.name} UNIQUE ( ${unique.fields.join(',')} ) ${onConflictUnique} `;\r\n }\r\n if (typeof unique.fields === 'string') {\r\n uniqSql = ` CONSTRAINT ${unique.name} UNIQUE ( ${unique.fields} ) ${onConflictUnique} `;\r\n }\r\n\r\n return uniqSql;\r\n }\r\n\r\n private defForeign(fore: DBForeign): string {\r\n let foreSql: string;\r\n\r\n if (Array.isArray(fore.foreignKey) ) {\r\n foreSql = ` FOREIGN KEY ( ${fore.foreignKey.join(',')} ) `;\r\n }\r\n\r\n if (typeof fore.foreignKey === 'string') {\r\n foreSql = ` FOREIGN KEY ( ${fore.foreignKey} ) `;\r\n }\r\n\r\n if (Array.isArray(fore.primaryKey) ) {\r\n foreSql = ` REFERENCES ${fore.referenceTable} ( ${fore.primaryKey.join(',')} ) `;\r\n }\r\n\r\n if (typeof fore.primaryKey === 'string') {\r\n foreSql = ` REFERENCES ${fore.referenceTable} ( ${fore.primaryKey} ) `;\r\n }\r\n\r\n return foreSql;\r\n }\r\n\r\n private _tableExists(table: string): Promise<boolean | string> {\r\n return this.query('select sql from sqlite_master ' +\r\n 'where type=\\'table\\' and name=\\'' + table + '\\'')\r\n .then(result => {\r\n if (this.rowsCount(result) === 1) { return (this.fetch(result) as any).sql as string; } else { return false; }\r\n });\r\n }\r\n\r\n private _columnExists(tableDDL: string, column: string): boolean {\r\n\r\n if (tableDDL.indexOf(column) === -1) { return false; } else { return true; }\r\n }\r\n\r\n private addColumn(table: string, col: DBColumn): Promise<any> {\r\n const colSql = this.defColumn(col);\r\n const query = 'alter TABLE ' + table + ' add COLUMN ' + colSql;\r\n return this.query(query);\r\n }\r\n\r\n}\r\n\r\n\r\n\r\nexport const DB_CONFIG = new InjectionToken<DbConfig>('dbWrapperConfig');\r\nexport const DB_SCHEMA = new InjectionToken<DBSchema>('dbWrapperSchema');\r\n\r\nexport function getDefaultDbConfig(): DbConfig {\r\n return {\r\n dbName: 'db.sqlite',\r\n location: 'default',\r\n iosDatabaseLocation: 'Library'\r\n };\r\n}\r\n\r\nexport function provideDbWrapper(dbConfig: DbConfig, dbSchema?: DBSchema): DbWrapperService {\r\n const config = !!dbConfig ? dbConfig : getDefaultDbConfig();\r\n return new DbWrapperService(config, dbSchema);\r\n}\r\n\r\n\r\n\r\n","\r\nexport enum DataType {\r\n Integer = 'integer',\r\n Int = 'integer',\r\n TinyInt = 'integer',\r\n SmallInt = 'integer',\r\n BigInt = 'integer',\r\n Text = 'text',\r\n Char = 'text',\r\n NChar = 'text',\r\n VarChar = 'text',\r\n NVarChar = 'text',\r\n CLOB = 'text',\r\n BLOB = 'blob',\r\n Real = 'real',\r\n Double = 'real',\r\n Decimal = 'real',\r\n Float = 'real',\r\n Boolean = 'integer',\r\n DateTime = 'text',\r\n Date = 'text'\r\n\r\n}\r\n\r\nexport enum DefaultType {\r\n Integer = '0',\r\n Int = '0',\r\n TinyInt = '0',\r\n SmallInt = '0',\r\n BigInt = '0',\r\n Text = '\\'\\'',\r\n Char = '\\'\\'',\r\n NChar = '\\'\\'',\r\n VarChar = '\\'\\'',\r\n NVarChar = '\\'\\'',\r\n CLOB = '\\'\\'',\r\n BLOB = '0',\r\n Real = '0.0',\r\n Double = '0.0',\r\n Decimal = '0.0',\r\n Float = '0.0',\r\n Boolean = '0',\r\n DateTime = '(datetime(\\'now\\', \\'localtime\\'))',\r\n Date = '(date(\\'now\\', \\'localtime\\'))'\r\n}\r\n\r\n\r\nexport interface SqlTransaction {\r\n /**\r\n * Executes SQL statement via current transaction.\r\n * @param sql SQL statement to execute.\r\n * @param params SQL stetement arguments.\r\n * @param successCallback Called in case of query has been successfully done.\r\n * @param errorCallback Called, when query fails. Return false to continue transaction; true or no return to rollback.\r\n */\r\n executeSql(sql: string,\r\n params?: any[],\r\n successCallback?: (transaction: SqlTransaction, resultSet: SqlResultSet) => void,\r\n errorCallback?: (transaction: SqlTransaction, error: SqlError) => any): void;\r\n}\r\n\r\nexport interface SqlResultSet {\r\n insertId: number;\r\n rowsAffected: number;\r\n rows: SqlResultSetRowList;\r\n}\r\n\r\nexport interface SqlResultSetRowList {\r\n length: number;\r\n item(index: number): Object;\r\n}\r\n\r\nexport interface SqlError {\r\n code: number;\r\n message: string;\r\n}\r\n\r\n/**\r\n * Interfaz con la configuración de websql\r\n */\r\nexport interface DbConfig {\r\n /**\r\n * nombre de la base de datos\r\n */\r\n dbName: string;\r\n /**\r\n * default 'default'\r\n */\r\n location?: string;\r\n /**\r\n * default 'Library'\r\n */\r\n iosDatabaseLocation?: string;\r\n}\r\n\r\n/**\r\n * Intefaz para definir un constraint unique\r\n *\r\n */\r\nexport interface DBUnique {\r\n name: string; /** nombre */\r\n fields: string | string[]; /** lista de campos */\r\n}\r\n\r\nexport interface DBForeign {\r\n name: string;\r\n foreignKey: string | string[];\r\n referenceTable: string;\r\n primaryKey: string | string[];\r\n}\r\n\r\nexport interface DBColumn {\r\n name: string;\r\n type: DataType;\r\n length?: number;\r\n isNullable?: boolean;\r\n default?: DefaultType | string;\r\n}\r\n\r\nexport interface DBTable {\r\n name: string;\r\n columns: DBColumn[];\r\n primary: string | string[];\r\n uniques?: DBUnique[];\r\n foreigns?: DBForeign[];\r\n sync?: string;\r\n}\r\n\r\n\r\nexport interface DBView {\r\n name: string;\r\n sql: string;\r\n}\r\n\r\nexport interface DBSchema {\r\n tables: DBTable[],\r\n views?: DBView[]\r\n}\r\n\r\n","import { NgModule, ModuleWithProviders } from '@angular/core';\r\nimport { DbConfig, DBSchema } from './db-wrapper.models';\r\nimport { DB_CONFIG, provideDbWrapper, DbWrapperService, DB_SCHEMA } from './db-wrapper.service';\r\n\r\n@NgModule()\r\nexport class DbWrapperModule {\r\n static forRoot(dbConfig: DbConfig, schema?: DBSchema): ModuleWithProviders {\r\n return {\r\n ngModule: DbWrapperModule,\r\n providers: [\r\n { provide: DB_CONFIG, useValue: dbConfig },\r\n { provide: DB_SCHEMA, useValue: schema },\r\n { provide: DbWrapperService, useFactory: provideDbWrapper, deps: [DB_CONFIG, DB_SCHEMA] }\r\n ]\r\n };\r\n }\r\n\r\n}\r\n"]}
@@ -1 +1 @@
1
- {"__symbolic":"module","version":4,"metadata":{"DbWrapperService":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DbConfig"},{"__symbolic":"reference","name":"DBSchema"}]}],"ready":[{"__symbolic":"method"}],"initDevice":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"generate":[{"__symbolic":"method"}],"createTable":[{"__symbolic":"method"}],"createView":[{"__symbolic":"method"}],"getSchemaTable":[{"__symbolic":"method"}],"getUniquesTable":[{"__symbolic":"method"}],"query":[{"__symbolic":"method"}],"Count":[{"__symbolic":"method"}],"insert":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"dropTable":[{"__symbolic":"method"}],"fetchAll":[{"__symbolic":"method"}],"fetch":[{"__symbolic":"method"}],"rowsCount":[{"__symbolic":"method"}],"defColumn":[{"__symbolic":"method"}],"defUnique":[{"__symbolic":"method"}],"defForeign":[{"__symbolic":"method"}],"tableExists":[{"__symbolic":"method"}],"columnExists":[{"__symbolic":"method"}],"addColumn":[{"__symbolic":"method"}]}},"DB_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":427,"character":29},"arguments":["dbWrapperConfig"]},"DB_SCHEMA":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":428,"character":29},"arguments":["dbWrapperSchema"]},"getDefaultDbConfig":{"__symbolic":"function","parameters":[],"value":{"dbName":"db.sqlite","location":"default","iosDatabaseLocation":"Library"}},"provideDbWrapper":{"__symbolic":"function"},"DbWrapperModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":4,"character":1}}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["dbConfig","schema"],"value":{"ngModule":{"__symbolic":"reference","name":"DbWrapperModule"},"providers":[{"provide":{"__symbolic":"reference","name":"DB_CONFIG"},"useValue":{"__symbolic":"reference","name":"dbConfig"}},{"provide":{"__symbolic":"reference","name":"DB_SCHEMA"},"useValue":{"__symbolic":"reference","name":"schema"}},{"provide":{"__symbolic":"reference","name":"DbWrapperService"},"useFactory":{"__symbolic":"reference","name":"provideDbWrapper"},"deps":[{"__symbolic":"reference","name":"DB_CONFIG"},{"__symbolic":"reference","name":"DB_SCHEMA"}]}]}}}},"DataType":{"Integer":"integer","Int":"integer","TinyInt":"integer","SmallInt":"integer","BigInt":"integer","Text":"text","Char":"text","NChar":"text","VarChar":"text","NVarChar":"text","CLOB":"text","BLOB":"blob","Real":"real","Double":"real","Decimal":"real","Float":"real","Boolean":"integer","DateTime":"text","Date":"text"},"DefaultType":{"Integer":"0","Int":"0","TinyInt":"0","SmallInt":"0","BigInt":"0","Text":"''","Char":"''","NChar":"''","VarChar":"''","NVarChar":"''","CLOB":"''","BLOB":"0","Real":"0.0","Double":"0.0","Decimal":"0.0","Float":"0.0","Boolean":"0","DateTime":"(datetime('now', 'localtime'))","Date":"(date('now', 'localtime'))"},"SqlTransaction":{"__symbolic":"interface"},"SqlResultSet":{"__symbolic":"interface"},"SqlResultSetRowList":{"__symbolic":"interface"},"SqlError":{"__symbolic":"interface"},"DbConfig":{"__symbolic":"interface"},"DBUnique":{"__symbolic":"interface"},"DBForeign":{"__symbolic":"interface"},"DBColumn":{"__symbolic":"interface"},"DBTable":{"__symbolic":"interface"},"DBView":{"__symbolic":"interface"},"DBSchema":{"__symbolic":"interface"}},"origins":{"DbWrapperService":"./lib/db-wrapper.service","DB_CONFIG":"./lib/db-wrapper.service","DB_SCHEMA":"./lib/db-wrapper.service","getDefaultDbConfig":"./lib/db-wrapper.service","provideDbWrapper":"./lib/db-wrapper.service","DbWrapperModule":"./lib/db-wrapper.module","DataType":"./lib/db-wrapper.models","DefaultType":"./lib/db-wrapper.models","SqlTransaction":"./lib/db-wrapper.models","SqlResultSet":"./lib/db-wrapper.models","SqlResultSetRowList":"./lib/db-wrapper.models","SqlError":"./lib/db-wrapper.models","DbConfig":"./lib/db-wrapper.models","DBUnique":"./lib/db-wrapper.models","DBForeign":"./lib/db-wrapper.models","DBColumn":"./lib/db-wrapper.models","DBTable":"./lib/db-wrapper.models","DBView":"./lib/db-wrapper.models","DBSchema":"./lib/db-wrapper.models"},"importAs":"db-wrapper"}
1
+ {"__symbolic":"module","version":4,"metadata":{"DbWrapperService":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"DbConfig"},{"__symbolic":"reference","name":"DBSchema"}]}],"ready":[{"__symbolic":"method"}],"initDevice":[{"__symbolic":"method"}],"init":[{"__symbolic":"method"}],"generate":[{"__symbolic":"method"}],"createTable":[{"__symbolic":"method"}],"createView":[{"__symbolic":"method"}],"getSchemaTable":[{"__symbolic":"method"}],"getUniquesTable":[{"__symbolic":"method"}],"query":[{"__symbolic":"method"}],"Count":[{"__symbolic":"method"}],"insert":[{"__symbolic":"method"}],"update":[{"__symbolic":"method"}],"dropTable":[{"__symbolic":"method"}],"fetchAll":[{"__symbolic":"method"}],"fetch":[{"__symbolic":"method"}],"rowsCount":[{"__symbolic":"method"}],"tableExists":[{"__symbolic":"method"}],"columnExists":[{"__symbolic":"method"}],"defColumn":[{"__symbolic":"method"}],"defUnique":[{"__symbolic":"method"}],"defForeign":[{"__symbolic":"method"}],"_tableExists":[{"__symbolic":"method"}],"_columnExists":[{"__symbolic":"method"}],"addColumn":[{"__symbolic":"method"}]}},"DB_CONFIG":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":442,"character":29},"arguments":["dbWrapperConfig"]},"DB_SCHEMA":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":443,"character":29},"arguments":["dbWrapperSchema"]},"getDefaultDbConfig":{"__symbolic":"function","parameters":[],"value":{"dbName":"db.sqlite","location":"default","iosDatabaseLocation":"Library"}},"provideDbWrapper":{"__symbolic":"function"},"DbWrapperModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":4,"character":1}}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["dbConfig","schema"],"value":{"ngModule":{"__symbolic":"reference","name":"DbWrapperModule"},"providers":[{"provide":{"__symbolic":"reference","name":"DB_CONFIG"},"useValue":{"__symbolic":"reference","name":"dbConfig"}},{"provide":{"__symbolic":"reference","name":"DB_SCHEMA"},"useValue":{"__symbolic":"reference","name":"schema"}},{"provide":{"__symbolic":"reference","name":"DbWrapperService"},"useFactory":{"__symbolic":"reference","name":"provideDbWrapper"},"deps":[{"__symbolic":"reference","name":"DB_CONFIG"},{"__symbolic":"reference","name":"DB_SCHEMA"}]}]}}}},"DataType":{"Integer":"integer","Int":"integer","TinyInt":"integer","SmallInt":"integer","BigInt":"integer","Text":"text","Char":"text","NChar":"text","VarChar":"text","NVarChar":"text","CLOB":"text","BLOB":"blob","Real":"real","Double":"real","Decimal":"real","Float":"real","Boolean":"integer","DateTime":"text","Date":"text"},"DefaultType":{"Integer":"0","Int":"0","TinyInt":"0","SmallInt":"0","BigInt":"0","Text":"''","Char":"''","NChar":"''","VarChar":"''","NVarChar":"''","CLOB":"''","BLOB":"0","Real":"0.0","Double":"0.0","Decimal":"0.0","Float":"0.0","Boolean":"0","DateTime":"(datetime('now', 'localtime'))","Date":"(date('now', 'localtime'))"},"SqlTransaction":{"__symbolic":"interface"},"SqlResultSet":{"__symbolic":"interface"},"SqlResultSetRowList":{"__symbolic":"interface"},"SqlError":{"__symbolic":"interface"},"DbConfig":{"__symbolic":"interface"},"DBUnique":{"__symbolic":"interface"},"DBForeign":{"__symbolic":"interface"},"DBColumn":{"__symbolic":"interface"},"DBTable":{"__symbolic":"interface"},"DBView":{"__symbolic":"interface"},"DBSchema":{"__symbolic":"interface"}},"origins":{"DbWrapperService":"./lib/db-wrapper.service","DB_CONFIG":"./lib/db-wrapper.service","DB_SCHEMA":"./lib/db-wrapper.service","getDefaultDbConfig":"./lib/db-wrapper.service","provideDbWrapper":"./lib/db-wrapper.service","DbWrapperModule":"./lib/db-wrapper.module","DataType":"./lib/db-wrapper.models","DefaultType":"./lib/db-wrapper.models","SqlTransaction":"./lib/db-wrapper.models","SqlResultSet":"./lib/db-wrapper.models","SqlResultSetRowList":"./lib/db-wrapper.models","SqlError":"./lib/db-wrapper.models","DbConfig":"./lib/db-wrapper.models","DBUnique":"./lib/db-wrapper.models","DBForeign":"./lib/db-wrapper.models","DBColumn":"./lib/db-wrapper.models","DBTable":"./lib/db-wrapper.models","DBView":"./lib/db-wrapper.models","DBSchema":"./lib/db-wrapper.models"},"importAs":"db-wrapper"}