db-wrapper 0.0.8 → 0.0.9
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.
- package/LICENSE +201 -201
- package/README.md +24 -24
- package/bundles/db-wrapper.umd.js +510 -508
- package/bundles/db-wrapper.umd.js.map +1 -1
- package/bundles/db-wrapper.umd.min.js +1 -1
- package/bundles/db-wrapper.umd.min.js.map +1 -1
- package/db-wrapper.d.ts +4 -4
- package/db-wrapper.metadata.json +1 -1
- package/esm2015/db-wrapper.js +4 -4
- package/esm2015/lib/db-wrapper.models.js +45 -45
- package/esm2015/lib/db-wrapper.module.js +21 -21
- package/esm2015/lib/db-wrapper.service.js +410 -408
- package/esm2015/lib/window.service.js +16 -16
- package/esm2015/public-api.js +7 -7
- package/esm5/db-wrapper.js +4 -4
- package/esm5/lib/db-wrapper.models.js +45 -45
- package/esm5/lib/db-wrapper.module.js +25 -25
- package/esm5/lib/db-wrapper.service.js +436 -434
- package/esm5/lib/window.service.js +23 -23
- package/esm5/public-api.js +7 -7
- package/fesm2015/db-wrapper.js +478 -476
- package/fesm2015/db-wrapper.js.map +1 -1
- package/fesm5/db-wrapper.js +514 -512
- package/fesm5/db-wrapper.js.map +1 -1
- package/lib/db-wrapper.models.d.ts +123 -119
- package/lib/db-wrapper.module.d.ts +5 -5
- package/lib/db-wrapper.service.d.ts +40 -39
- package/lib/window.service.d.ts +3 -3
- package/package.json +1 -1
- package/public-api.d.ts +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db-wrapper.js","sources":["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","ng://db-wrapper/public-api.ts","ng://db-wrapper/db-wrapper.ts"],"sourcesContent":["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","\r\n\r\n/*\r\n * Public API Surface of db-wrapper\r\n */\r\n\r\nexport * from './lib/db-wrapper.service';\r\nexport * from './lib/db-wrapper.module';\r\nexport * from './lib/db-wrapper.models';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"db-wrapper.js","sources":["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","ng://db-wrapper/public-api.ts","ng://db-wrapper/db-wrapper.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class WindowService {\n\n get nativeWindow(): any {\n return _window();\n }\n}\n\nfunction _window(): any {\n // Return the global native browser window object\n return typeof window !== 'undefined' ? window : undefined;\n}","import { InjectionToken } from '@angular/core';\nimport { WindowService } from './window.service';\nimport { DBTable, DbConfig, DBSchema, DBView,\n DBColumn, DBUnique, DBForeign, SqlTransaction, SqlResultSet, SqlError, DefaultType } from './db-wrapper.models';\n\nexport class DbWrapperService {\n private _dbName: string;\n private _location: string;\n private _iosDatabaseLocation: string;\n private _androidDatabaseProvider: string;\n private _readyPromise: Promise<void>;\n schema: DBSchema;\n db: any;\n\n constructor(dbConfig: DbConfig, dbSchema?: DBSchema) {\n\n this._dbName = dbConfig.dbName;\n this._location = dbConfig.location || 'default';\n this._iosDatabaseLocation = dbConfig.iosDatabaseLocation || 'Library';\n this._androidDatabaseProvider = dbConfig.androidDatabaseProvider || 'default';\n const window = (new WindowService()).nativeWindow;\n if (dbSchema) { this.schema = dbSchema; }\n this._readyPromise = new Promise ( (resolve, reject) => {\n if (typeof window.cordova === 'undefined') {\n setTimeout( () => {\n this.init(dbSchema).then (\n () => {\n resolve();\n } )\n .catch ( (err) => {\n reject(err);\n } );\n }, 500);\n } else {\n document.addEventListener('deviceready', () => {\n console.log('dbWrapper: device ready.');\n this.initDevice(dbSchema).then ( () => resolve() ).catch ( (err) => reject(err) );\n });\n }\n });\n }\n\n ready(): Promise<void> {\n return this._readyPromise;\n }\n\n initDevice(dbSchema: DBSchema): Promise<void> {\n const window = (new WindowService()).nativeWindow;\n return new Promise( (resolve, reject) => {\n this.db = window.sqlitePlugin.openDatabase({\n name: this._dbName,\n location: this._location,\n androidLockWorkaround: 1,\n androidDatabaseProvider: this._androidDatabaseProvider,\n });\n\n if (dbSchema) {\n this.generate(dbSchema).catch(err => {\n reject(err);\n }).then(() => { resolve(); });\n } else {\n resolve();\n }\n });\n }\n\n init(dbSchema: DBSchema): Promise<void> {\n const window = (new WindowService()).nativeWindow;\n return new Promise ( (resolve, reject) => {\n this.db = window.openDatabase(this._dbName, '1.0', 'database', -1);\n if (dbSchema) {\n this.generate(dbSchema).catch(err => {\n reject(err);\n }).then( () => {\n resolve();\n });\n } else {\n resolve();\n }\n });\n }\n\n generate(schema: DBSchema): Promise<any> {\n\n const sentences = [];\n this.schema = schema;\n\n if (schema.tables) {\n schema.tables.forEach(table => {\n sentences.push(this.createTable(table));\n });\n }\n if (schema.views) {\n schema.views.forEach( view => {\n sentences.push(this.createView(view));\n });\n }\n if (sentences.length === 0) {\n throw new Error('Esquema de la base de datos vacia.');\n }\n return Promise.all(sentences);\n }\n\n async createTable(table: DBTable): Promise<any> {\n let sql = '', onConflictPrimary;\n const sentences = [], newColumns = []\n\n const tableDDL = await this._tableExists(table.name);\n if (tableDDL) {\n table.columns.forEach( col => {\n if (!this._columnExists(tableDDL as string, col.name) ) {\n newColumns.push(this.addColumn(table.name, col));\n }\n });\n } else {\n table.columns.forEach( col => {\n sentences.push(this.defColumn(col));\n });\n }\n onConflictPrimary = 'on conflict fail';\n\n if (Array.isArray(table.primary) ) {\n sentences.push (' CONSTRAINT identificador PRIMARY KEY (' + table.primary.join(',') + ') ' + onConflictPrimary );\n }\n if (typeof table.primary === 'string') {\n sentences.push (' CONSTRAINT identificador PRIMARY KEY (' + table.primary + ') ' + onConflictPrimary );\n }\n if (table.uniques) {\n table.uniques.forEach( uniq => {\n sentences.push(this.defUnique(uniq));\n });\n }\n\n if (table.foreigns) {\n table.foreigns.forEach ( fore => {\n sentences.push(this.defForeign(fore));\n });\n }\n\n if (tableDDL && newColumns.length !== 0) {\n return Promise.all(newColumns)\n .then( () => { console.log(`Table ${table.name} altered.`); } )\n .catch( (err) => {\n console.error (`Table ${table.name}: ${err.message}`);\n throw new Error(`Table ${table.name}: ${err.message}`);\n });\n\n } else if (!tableDDL) {\n sql = 'CREATE TABLE IF NOT EXISTS ' + table.name + ' (' + sentences.join(',') + ')';\n return this.query(sql)\n .then( () => { console.log(`Table ${table.name} created.`); })\n .catch( (err) => {\n console.error (`Table ${table.name}: ${err.message}`);\n throw new Error(`Table ${table.name}: ${err.message}`);\n });\n } else {\n return Promise.resolve().then( () => { console.log(`Table ${table.name} initialized.`); });\n }\n }\n\n\n createView(view: DBView): Promise<any> {\n let sql: string;\n\n sql = 'CREATE VIEW IF NOT EXISTS ' + view.name\n + ' AS ' + view.sql;\n\n return this.query(sql);\n\n }\n\n getSchemaTable(tableName: string): DBTable {\n let res: DBTable;\n\n this.schema.tables.forEach( table => {\n if (table.name === tableName) {\n res = table;\n }\n });\n return res;\n\n }\n\n getUniquesTable(table: DBTable): object {\n let res: {};\n table.uniques.forEach(uniq => {\n res[uniq.name] = uniq;\n });\n return res;\n }\n\n query(query: string, bindings: any[]= []): Promise<SqlResultSet> {\n return new Promise((resolve, reject) => {\n if (query.indexOf('select') === 0) {\n this.db.readTransaction((transaction: SqlTransaction) => {\n transaction.executeSql(query, bindings, (transaction: SqlTransaction, result: SqlResultSet) => {\n resolve(result);\n }, (transaction: SqlTransaction, error: SqlError) => {\n reject(error);\n });\n }, (err: SqlError) => reject(err) );\n } else {\n this.db.transaction((transaction: SqlTransaction) => {\n transaction.executeSql(query, bindings, (transaction: SqlTransaction, result: SqlResultSet) => {\n resolve(result);\n }, (transaction: SqlTransaction, error: SqlError) => {\n reject(error);\n });\n }, (err: SqlError) => reject(err) );\n }\n });\n }\n\n Count(query: string, bindings: any[]= []): Promise<number> {\n return this.query(query, bindings).then(rows => {\n return this.rowsCount(rows);\n });\n }\n\n insert(table: string, bindings: {}): Promise<SqlResultSet> {\n let sql = '', sqlBinds = [], sqlKeys = [], sqlValues = [] ;\n\n sql = sql + 'insert into ' + table + ' ';\n\n for (const index in bindings) {\n if (bindings.hasOwnProperty(index)) {\n sqlKeys.push(index);\n sqlValues.push(bindings[index]);\n sqlBinds.push('?');\n }\n }\n\n sql = sql + '(' + sqlKeys.join(',') + ') values (' + sqlBinds.join(',') + ')';\n return new Promise((resolve, reject) => {\n this.db.transaction(transaction => {\n transaction.executeSql(sql, sqlValues, (transaction: SqlTransaction, result: SqlResultSet) => {\n resolve(result);\n }, (transaction: SqlTransaction, error: SqlError) => {\n reject(error);\n });\n });\n });\n }\n\n update(table: string, bindings: {}, where: {}): Promise<SqlResultSet> {\n let sql = '', sqlBinds = [], sqlKeys =[], sqlValues = [] ;\n\n sql = sql + 'update ' + table + ' set ';\n\n for (let index in bindings) {\n if (bindings.hasOwnProperty(index)) {\n let newObj = bindings[index];\n if (typeof newObj === 'object' && newObj !== null) {\n sqlValues.push(newObj.value);\n if (newObj.ifnull) {\n sqlBinds.push(index + ' = ifnull( ' + index + ',0) + ?');\n } else if (newObj.operator) {\n sqlBinds.push(index + ' = ' + index + newObj.operator + ' ?');\n } else {\n sqlBinds.push(index + ' = ?');\n }\n\n } else {\n sqlBinds.push(index + ' = ?');\n sqlValues.push(bindings[index]);\n\n }\n }\n }\n\n for (let index in where) {\n if (where.hasOwnProperty(index)) {\n if (typeof where[index] === 'object' && where[index] !== null){\n sqlKeys.push(index + ' ' + where[index].operator + ' ?');\n sqlValues.push(where[index].value);\n } else {\n sqlKeys.push(index + ' = ?');\n sqlValues.push(where[index]);\n }\n }\n }\n\n sql = sql + sqlBinds.join(',') + ' where ' + sqlKeys.join(' and ');\n return new Promise((resolve, reject) => {\n this.db.transaction(transaction => {\n transaction.executeSql(sql, sqlValues, (transaction: SqlTransaction, result: SqlResultSet) => {\n resolve(result);\n }, (transaction: SqlTransaction, error: SqlError) => {\n reject(error);\n });\n });\n });\n }\n\n dropTable (tables: string[]): Promise<void> {\n let cont = 1;\n\n cont = tables.length;\n return new Promise((resolve, reject) => {\n tables.some( table => {\n if (cont !== 0) {\n this.query('DROP TABLE ' + table)\n .then( () => {\n if (cont === 1 ) { resolve();\n } else { cont--; }\n }, err => {\n cont = 0;\n reject(err);\n return true;\n });\n return false;\n }\n });\n })\n }\n\n fetchAll(result: SqlResultSet): object[] {\n let output = [];\n\n for (let i = 0; i < result.rows.length; i++) {\n output.push(result.rows.item(i));\n }\n\n return output;\n }\n\n fetch(result: SqlResultSet): object {\n let objeto = undefined, newObj= undefined;\n if (result.rows.length !== 0) {\n objeto = result.rows.item(0);\n newObj = {};\n const keys = Object.keys(objeto);\n for (let key in keys) {\n newObj[keys[key]] = objeto[keys[key]];\n }\n }\n return newObj;\n }\n\n\n rowsCount(result: SqlResultSet): number {\n return result.rows.length;\n }\n\n tableExists(table: string): Promise<boolean> {\n return this.query('select sql from sqlite_master ' +\n 'where type=\\'table\\' and name=\\'' + table + '\\'')\n .then(result => (this.rowsCount(result) === 1) );\n } \n\n columnExists(table: string, column: string): Promise<boolean> {\n return this._tableExists(table)\n .then((tableDDL) => {\n if (tableDDL) {\n return this._columnExists((tableDDL as string), column);\n } else { return false; }\n });\n }\n\n/* Private */\n\n private defColumn(col: DBColumn): string {\n let colSql: string;\n\n colSql = col.name + ' ' + col.type;\n if (!col.isNullable) {\n colSql += ' NOT NULL ';\n }\n if (col.default) {\n colSql += ' DEFAULT ' + col.default + ' ';\n }\n if (col.type === 'text' && col.length) {\n colSql += ` CONSTRAINT ${col.name}_length CHECK ( `;\n if (col.isNullable) {\n colSql += `${col.name} is null OR `;\n }\n colSql += `length(${col.name}) <= ${col.length} )`;\n\n }\n\n return colSql;\n\n }\n\n private defUnique(unique: DBUnique): string {\n let uniqSql: string;\n\n // depende del entorno, producción o desarrollo\n const onConflictUnique = 'on conflict replace';\n\n if (Array.isArray(unique.fields) ) {\n uniqSql = ` CONSTRAINT ${unique.name} UNIQUE ( ${unique.fields.join(',')} ) ${onConflictUnique} `;\n }\n if (typeof unique.fields === 'string') {\n uniqSql = ` CONSTRAINT ${unique.name} UNIQUE ( ${unique.fields} ) ${onConflictUnique} `;\n }\n\n return uniqSql;\n }\n\n private defForeign(fore: DBForeign): string {\n let foreSql: string;\n\n if (Array.isArray(fore.foreignKey) ) {\n foreSql = ` FOREIGN KEY ( ${fore.foreignKey.join(',')} ) `;\n }\n\n if (typeof fore.foreignKey === 'string') {\n foreSql = ` FOREIGN KEY ( ${fore.foreignKey} ) `;\n }\n\n if (Array.isArray(fore.primaryKey) ) {\n foreSql = ` REFERENCES ${fore.referenceTable} ( ${fore.primaryKey.join(',')} ) `;\n }\n\n if (typeof fore.primaryKey === 'string') {\n foreSql = ` REFERENCES ${fore.referenceTable} ( ${fore.primaryKey} ) `;\n }\n\n return foreSql;\n }\n\n private _tableExists(table: string): Promise<boolean | string> {\n return this.query('select sql from sqlite_master ' +\n 'where type=\\'table\\' and name=\\'' + table + '\\'')\n .then(result => {\n if (this.rowsCount(result) === 1) { return (this.fetch(result) as any).sql as string; } else { return false; }\n });\n }\n\n private _columnExists(tableDDL: string, column: string): boolean {\n\n if (tableDDL.indexOf(column) === -1) { return false; } else { return true; }\n }\n\n private addColumn(table: string, col: DBColumn): Promise<any> {\n const colSql = this.defColumn(col);\n const query = 'alter TABLE ' + table + ' add COLUMN ' + colSql;\n return this.query(query);\n }\n\n}\n\n\n\nexport const DB_CONFIG = new InjectionToken<DbConfig>('dbWrapperConfig');\nexport const DB_SCHEMA = new InjectionToken<DBSchema>('dbWrapperSchema');\n\nexport function getDefaultDbConfig(): DbConfig {\n return {\n dbName: 'db.sqlite',\n location: 'default',\n iosDatabaseLocation: 'Library'\n };\n}\n\nexport function provideDbWrapper(dbConfig: DbConfig, dbSchema?: DBSchema): DbWrapperService {\n const config = !!dbConfig ? dbConfig : getDefaultDbConfig();\n return new DbWrapperService(config, dbSchema);\n}\n\n\n\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { DbConfig, DBSchema } from './db-wrapper.models';\nimport { DB_CONFIG, provideDbWrapper, DbWrapperService, DB_SCHEMA } from './db-wrapper.service';\n\n@NgModule()\nexport class DbWrapperModule {\n static forRoot(dbConfig: DbConfig, schema?: DBSchema): ModuleWithProviders {\n return {\n ngModule: DbWrapperModule,\n providers: [\n { provide: DB_CONFIG, useValue: dbConfig },\n { provide: DB_SCHEMA, useValue: schema },\n { provide: DbWrapperService, useFactory: provideDbWrapper, deps: [DB_CONFIG, DB_SCHEMA] }\n ]\n };\n }\n\n}\n","\nexport enum DataType {\n Integer = 'integer',\n Int = 'integer',\n TinyInt = 'integer',\n SmallInt = 'integer',\n BigInt = 'integer',\n Text = 'text',\n Char = 'text',\n NChar = 'text',\n VarChar = 'text',\n NVarChar = 'text',\n CLOB = 'text',\n BLOB = 'blob',\n Real = 'real',\n Double = 'real',\n Decimal = 'real',\n Float = 'real',\n Boolean = 'integer',\n DateTime = 'text',\n Date = 'text'\n\n}\n\nexport enum DefaultType {\n Integer = '0',\n Int = '0',\n TinyInt = '0',\n SmallInt = '0',\n BigInt = '0',\n Text = '\\'\\'',\n Char = '\\'\\'',\n NChar = '\\'\\'',\n VarChar = '\\'\\'',\n NVarChar = '\\'\\'',\n CLOB = '\\'\\'',\n BLOB = '0',\n Real = '0.0',\n Double = '0.0',\n Decimal = '0.0',\n Float = '0.0',\n Boolean = '0',\n DateTime = '(datetime(\\'now\\', \\'localtime\\'))',\n Date = '(date(\\'now\\', \\'localtime\\'))'\n}\n\n\nexport interface SqlTransaction {\n /**\n * Executes SQL statement via current transaction.\n * @param sql SQL statement to execute.\n * @param params SQL stetement arguments.\n * @param successCallback Called in case of query has been successfully done.\n * @param errorCallback Called, when query fails. Return false to continue transaction; true or no return to rollback.\n */\n executeSql(sql: string,\n params?: any[],\n successCallback?: (transaction: SqlTransaction, resultSet: SqlResultSet) => void,\n errorCallback?: (transaction: SqlTransaction, error: SqlError) => any): void;\n}\n\nexport interface SqlResultSet {\n insertId: number;\n rowsAffected: number;\n rows: SqlResultSetRowList;\n}\n\nexport interface SqlResultSetRowList {\n length: number;\n item(index: number): Object;\n}\n\nexport interface SqlError {\n code: number;\n message: string;\n}\n\n/**\n * Interfaz con la configuración de websql\n */\nexport interface DbConfig {\n /**\n * nombre de la base de datos\n */\n dbName: string;\n /**\n * default 'default'\n */\n location?: string;\n /**\n * default 'Library'\n */\n iosDatabaseLocation?: string;\n /**\n * default 'default'\n */ \n androidDatabaseProvider?: string;\n}\n\n/**\n * Intefaz para definir un constraint unique\n *\n */\nexport interface DBUnique {\n name: string; /** nombre */\n fields: string | string[]; /** lista de campos */\n}\n\nexport interface DBForeign {\n name: string;\n foreignKey: string | string[];\n referenceTable: string;\n primaryKey: string | string[];\n}\n\nexport interface DBColumn {\n name: string;\n type: DataType;\n length?: number;\n isNullable?: boolean;\n default?: DefaultType | string;\n}\n\nexport interface DBTable {\n name: string;\n columns: DBColumn[];\n primary: string | string[];\n uniques?: DBUnique[];\n foreigns?: DBForeign[];\n sync?: string;\n}\n\n\nexport interface DBView {\n name: string;\n sql: string;\n}\n\nexport interface DBSchema {\n tables: DBTable[],\n views?: DBView[]\n}\n\n","\n\n/*\n * Public API Surface of db-wrapper\n */\n\nexport * from './lib/db-wrapper.service';\nexport * from './lib/db-wrapper.module';\nexport * from './lib/db-wrapper.models';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|