ngx-ionic-zone 2.0.1 → 2.0.2
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/database/index.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ declare class DbSqliteService implements DbService {
|
|
|
12
12
|
private _isDbInitialized;
|
|
13
13
|
private dbInitialized;
|
|
14
14
|
constructor(config: DbServiceConfig, schemaSvc: SchemaService);
|
|
15
|
+
deleteDatabase(): Promise<void>;
|
|
15
16
|
open(): Promise<void>;
|
|
16
17
|
initializeDb(): void;
|
|
17
18
|
getAllRx<T>(store: string, opt?: DbFilter): Observable<T>;
|
|
@@ -13,11 +13,16 @@ class DbSqliteService {
|
|
|
13
13
|
this.dbInitialized = new Subject();
|
|
14
14
|
this.dbInitialized$ = this.dbInitialized.asObservable();
|
|
15
15
|
this._dbName = config.dbName;
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
16
|
+
this.open();
|
|
17
|
+
this.initializeDb();
|
|
18
|
+
}
|
|
19
|
+
async deleteDatabase() {
|
|
20
|
+
try {
|
|
21
|
+
await CapacitorSQLite.deleteDatabase({ database: this._dbName });
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
throw error;
|
|
25
|
+
}
|
|
21
26
|
}
|
|
22
27
|
async open() {
|
|
23
28
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-ionic-zone-database.mjs","sources":["../../../projects/ngx-ionic-zone/database/db-sql.service.ts","../../../projects/ngx-ionic-zone/database/db.module.ts","../../../projects/ngx-ionic-zone/database/ngx-ionic-zone-database.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\nimport { SchemaService, DbService, DbServiceConfig, DbFilter } from 'ngx-universal-zone/database';\n\nimport { CapacitorSQLite, SQLiteConnection, SQLiteDBConnection } from '@capacitor-community/sqlite';\n@Injectable()\nexport class DbSqliteService implements DbService {\n private _dbName: string;\n private _db: SQLiteDBConnection;\n private _isDbInitialized = false;\n private dbInitialized = new Subject<any>();\n\n constructor(\n private config: DbServiceConfig, private schemaSvc: SchemaService\n ) {\n this._dbName = config.dbName;\n\n CapacitorSQLite.deleteDatabase({ database: this._dbName })\n .then(() => {\n\n this.open();\n this.initializeDb();\n });\n\n }\n \n async open() {\n try {\n const sqlite: SQLiteConnection = new SQLiteConnection(CapacitorSQLite);\n const ret = await sqlite.checkConnectionsConsistency();\n const isConnConsistent = ret.result;\n if (isConnConsistent) {\n this._db = await sqlite.retrieveConnection(this._dbName, false);\n } else {\n this._db = await sqlite.createConnection(\n this._dbName,\n false,\n 'no-encryption',\n 1,\n false\n );\n }\n\n await this._db.open();\n // await this._prepareTables();\n // this.dbInitialized.next(this._db);\n this._isDbInitialized = true;\n } catch (error) {\n this._dbError(error);\n }\n }\n\n initializeDb() {\n const delay = 50;\n //workaround: don't proceed unless db is initialized...wait everytime 50ms\n const _self = this;\n let timerId: any = setTimeout(async function request() {\n if (!_self._isDbInitialized) {\n //retry\n timerId = setTimeout(request, delay);\n } else {\n //clear timeout\n clearTimeout(timerId);\n timerId = null;\n\n await _self._prepareTables.call(_self);\n\n // heavy database operations should start from this...\n _self.dbInitialized.next(_self._db);\n }\n }, delay);\n }\n\n getAllRx<T>(store: string, opt?: DbFilter): Observable<T> {\n return new Observable((observer) => {\n this.getAll<T>(store, opt).then((result) => {\n observer.next(result);\n observer.complete();\n }, (error) => {\n observer.error(error);\n });\n });\n }\n\n dbInitialized$ = this.dbInitialized.asObservable();\n get Db() {\n return this._db;\n }\n\n async putLocal(store, data: any): Promise<{ rowsAffected; insertId }> {\n let sql = ``;\n const values: any[] = [];\n\n const total = await this.count(store);\n if (total) {\n //update\n sql = `UPDATE ${store} SET `;\n //columns\n for (let prop in data) {\n if (data.hasOwnProperty(prop)) {\n sql += `${prop}='${data[prop]}',`;\n }\n }\n //remove extra ',' at the end\n sql = sql.substr(0, sql.length - 1);\n } else {\n //insert\n sql = `INSERT INTO ${store} `;\n //columns\n sql += `(`;\n for (let prop in data) {\n if (data.hasOwnProperty(prop)) {\n sql += `${prop},`;\n }\n }\n //remove extra ',' at the end\n sql = sql.substr(0, sql.length - 1);\n sql += `)`;\n\n //values\n sql += ` VALUES (`;\n for (let prop in data) {\n sql += `?,`;\n values.push(data[prop]);\n }\n sql = sql.substr(0, sql.length - 1);\n sql += `)`;\n }\n\n console.log('putLocal executing: ', sql, values);\n const result = await this._db.run(sql, values);\n console.log('putLocal result: ', result);\n\n return {\n rowsAffected: result.changes.changes,\n insertId: result.changes.lastId,\n };\n // this._db.transaction(async (tx) => {\n // const res = await this._executeSql<{ rowsAffected, insertId }>(tx, sql, values);\n // resolve(res);\n // }, (error) => reject(error));\n }\n\n putLocalRx(store, data) {\n return new Observable((observer) => {\n this.putLocal(store, data).then((result) => {\n observer.next(result);\n observer.complete();\n });\n });\n }\n\n async get<T>(store: string, key: any): Promise<T> {\n //get primary key field form schema\n const table: any = this.schemaSvc.schema.stores.filter(\n (s) => s.name === store\n )[0];\n const pk = table.columns.filter((c) => c.isPrimaryKey)[0];\n const pkName = pk.name;\n\n let sql = `SELECT * FROM ${store} WHERE ${pkName} = '${key}' LIMIT 1`;\n const { values } = await this._db.query(sql);\n \n return values[0] as T;\n }\n\n getRx<T>(store: string, key: any): Observable<T> {\n return new Observable((observer) => {\n this.get<T>(store, key).then((result) => {\n observer.next(result);\n observer.complete();\n }, (e) => {\n observer.error(e);\n });\n });\n }\n\n getAll<T>(store: string, opt?: DbFilter): Promise<T> {\n return new Promise(async (resolve, reject) => {\n let sql = `SELECT * FROM ${store}`;\n\n try {\n let data;\n const { values } = await this._db.query(sql);\n resolve(values as any);\n } catch (e) {\n reject(e);\n }\n });\n }\n\n remove(store, key): Promise<any> {\n return new Promise((resolve, reject) => {\n throw 'remove not impleted in db-sql yet';\n });\n }\n\n removeRx(store, key): Observable<any> {\n throw 'remove not impleted in db-sql yet';\n }\n\n removeAll(store) {\n return new Promise((resolve, reject) => {\n throw 'removeAll not impleted in db-sql yet';\n });\n }\n\n removeAllRx(store: string): Observable<any> {\n throw 'removeAllRx not impleted in db-sql yet';\n }\n\n count(store, opts?: { key }): Promise<number> {\n return new Promise(async (resolve, reject) => {\n let sql = `SELECT count(*) AS total FROM ${store} `;\n\n try {\n const { values } = await this._db.query(sql);\n resolve(values[0].total);\n } catch (e) {\n reject(e);\n } });\n }\n\n countRx(store, opts?: { key }) {\n return new Observable<number>((observer) => {\n this.count(store, opts).then((result) => {\n observer.next(result);\n observer.complete();\n }, (error) => observer.error(error));\n });\n }\n\n async deleteDb() {\n }\n\n \n deleteTable(store): Observable<void> {\n throw 'deleteTable not impleted in db-sql yet';\n }\n\n private async _prepareTables() {\n const schemas = this.schemaSvc.schema.stores;\n\n const promises: any[] = [];\n for (let schema of schemas) {\n // let sql = `BEGIN TRANSACTION;`;\n let sql = '';\n\n sql += `CREATE TABLE IF NOT EXISTS ${schema.name} `;\n sql += `(`;\n\n for (let col of schema.columns) {\n //TODO: need to fix primary key\n // const ikPkTypeNumber = col['type'] == 'INTEGER';\n sql += `${col.name}${col.type ? ' ' + col.type : ''}${\n col['isPrimaryKey'] ? ' PRIMARY KEY' : ''\n },`;\n }\n\n //remove extra ',' at the end\n sql = sql.substr(0, sql.length - 1);\n sql += `)`;\n\n // sql += `COMMIT TRANSACTION;`;\n\n const promise = this._db.execute(sql);\n promises.push(promise); \n await Promise.all(promises);\n }\n}\n\n private _dbError(err) {\n alert('Open database ERROR: ' + JSON.stringify(err));\n }\n\n}","import { EnvironmentProviders, makeEnvironmentProviders, Provider } from '@angular/core';\nimport { SchemaService } from 'ngx-universal-zone/database';\nimport { DbService } from 'ngx-universal-zone/database';\nimport { DbSqliteService } from './db-sql.service';\n\nexport function dbSqliteFactory(schemaSvc: SchemaService) {\n const dbConfig = schemaSvc.config;\n return new DbSqliteService(dbConfig, schemaSvc);\n}\n\nexport const provideDbSqlite = (): EnvironmentProviders => {\n const providers: Provider[] = [\n SchemaService,\n {\n provide: DbService,\n useFactory: dbSqliteFactory,\n deps: [SchemaService],\n }\n ];\n\n return makeEnvironmentProviders(providers);\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MAOa,eAAe,CAAA;IAM1B,WAAA,CACU,MAAuB,EAAU,SAAwB,EAAA;QAAzD,IAAA,CAAA,MAAM,GAAN,MAAM;QAA2B,IAAA,CAAA,SAAS,GAAT,SAAS;QAJ5C,IAAA,CAAA,gBAAgB,GAAG,KAAK;AACxB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAO;AA0E1C,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;AArEhD,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM;QAE5B,eAAe,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE;aACxD,IAAI,CAAC,MAAK;YAET,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,YAAY,EAAE;AACrB,QAAA,CAAC,CAAC;IAEJ;AAEA,IAAA,MAAM,IAAI,GAAA;AACR,QAAA,IAAI;AACF,YAAA,MAAM,MAAM,GAAqB,IAAI,gBAAgB,CAAC,eAAe,CAAC;AACtE,YAAA,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,2BAA2B,EAAE;AACtD,YAAA,MAAM,gBAAgB,GAAG,GAAG,CAAC,MAAM;YACnC,IAAI,gBAAgB,EAAE;AACpB,gBAAA,IAAI,CAAC,GAAG,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;YACjE;iBAAO;gBACL,IAAI,CAAC,GAAG,GAAG,MAAM,MAAM,CAAC,gBAAgB,CACtC,IAAI,CAAC,OAAO,EACZ,KAAK,EACL,eAAe,EACf,CAAC,EACD,KAAK,CACN;YACH;AAEA,YAAA,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;;;AAGrB,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;QAC9B;QAAE,OAAO,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtB;IACF;IAEA,YAAY,GAAA;QACV,MAAM,KAAK,GAAG,EAAE;;QAEhB,MAAM,KAAK,GAAG,IAAI;AAClB,QAAA,IAAI,OAAO,GAAQ,UAAU,CAAC,eAAe,OAAO,GAAA;AAClD,YAAA,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;;AAE3B,gBAAA,OAAO,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC;YACtC;iBAAO;;gBAEL,YAAY,CAAC,OAAO,CAAC;gBACrB,OAAO,GAAG,IAAI;gBAEd,MAAM,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;;gBAGtC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;YACrC;QACF,CAAC,EAAE,KAAK,CAAC;IACX;IAEA,QAAQ,CAAI,KAAa,EAAE,GAAc,EAAA;AACvC,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAAQ,KAAI;AACjC,YAAA,IAAI,CAAC,MAAM,CAAI,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;AACzC,gBAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;gBACrB,QAAQ,CAAC,QAAQ,EAAE;AACrB,YAAA,CAAC,EAAE,CAAC,KAAK,KAAI;AACX,gBAAA,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;AACvB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAGA,IAAA,IAAI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG;IACjB;AAEA,IAAA,MAAM,QAAQ,CAAC,KAAK,EAAE,IAAS,EAAA;QAC7B,IAAI,GAAG,GAAG,CAAA,CAAE;QACZ,MAAM,MAAM,GAAU,EAAE;QAExB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QACrC,IAAI,KAAK,EAAE;;AAET,YAAA,GAAG,GAAG,CAAA,OAAA,EAAU,KAAK,CAAA,KAAA,CAAO;;AAE5B,YAAA,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE;AACrB,gBAAA,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;oBAC7B,GAAG,IAAI,GAAG,IAAI,CAAA,EAAA,EAAK,IAAI,CAAC,IAAI,CAAC,CAAA,EAAA,CAAI;gBACnC;YACF;;AAEA,YAAA,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QACrC;aAAO;;AAEL,YAAA,GAAG,GAAG,CAAA,YAAA,EAAe,KAAK,CAAA,CAAA,CAAG;;YAE7B,GAAG,IAAI,GAAG;AACV,YAAA,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE;AACrB,gBAAA,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;AAC7B,oBAAA,GAAG,IAAI,CAAA,EAAG,IAAI,CAAA,CAAA,CAAG;gBACnB;YACF;;AAEA,YAAA,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;YACnC,GAAG,IAAI,GAAG;;YAGV,GAAG,IAAI,WAAW;AAClB,YAAA,KAAK,IAAI,IAAI,IAAI,IAAI,EAAE;gBACrB,GAAG,IAAI,IAAI;gBACX,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB;AACA,YAAA,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;YACnC,GAAG,IAAI,GAAG;QACZ;QAEA,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAAE,GAAG,EAAE,MAAM,CAAC;AAChD,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;AAC9C,QAAA,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC;QAExC,OAAO;AACL,YAAA,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO;AACpC,YAAA,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;SAChC;;;;;IAKH;IAEA,UAAU,CAAC,KAAK,EAAE,IAAI,EAAA;AACpB,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAAQ,KAAI;AACjC,YAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;AACzC,gBAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;gBACrB,QAAQ,CAAC,QAAQ,EAAE;AACrB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,MAAM,GAAG,CAAI,KAAa,EAAE,GAAQ,EAAA;;QAEhC,MAAM,KAAK,GAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CACpD,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CACxB,CAAC,CAAC,CAAC;QACJ,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AACzD,QAAA,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI;QAEtB,IAAI,GAAG,GAAG,CAAA,cAAA,EAAiB,KAAK,UAAU,MAAM,CAAA,IAAA,EAAO,GAAG,CAAA,SAAA,CAAW;AACrE,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AAE5C,QAAA,OAAO,MAAM,CAAC,CAAC,CAAM;IACzB;IAEA,KAAK,CAAI,KAAa,EAAE,GAAQ,EAAA;AAC9B,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAAQ,KAAI;AACjC,YAAA,IAAI,CAAC,GAAG,CAAI,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;AACtC,gBAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;gBACrB,QAAQ,CAAC,QAAQ,EAAE;AACrB,YAAA,CAAC,EAAE,CAAC,CAAC,KAAI;AACP,gBAAA,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACnB,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,MAAM,CAAI,KAAa,EAAE,GAAc,EAAA;QACrC,OAAO,IAAI,OAAO,CAAC,OAAO,OAAO,EAAE,MAAM,KAAI;AAC3C,YAAA,IAAI,GAAG,GAAG,CAAA,cAAA,EAAiB,KAAK,EAAE;AAElC,YAAA,IAAI;AACF,gBAAA,IAAI,IAAI;AACR,gBAAA,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;gBAC5C,OAAO,CAAC,MAAa,CAAC;YACxB;YAAE,OAAO,CAAC,EAAE;gBACV,MAAM,CAAC,CAAC,CAAC;YACX;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,MAAM,CAAC,KAAK,EAAE,GAAG,EAAA;QACf,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,MAAM,mCAAmC;AAC3C,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAA;AACjB,QAAA,MAAM,mCAAmC;IAC3C;AAEA,IAAA,SAAS,CAAC,KAAK,EAAA;QACb,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AACrC,YAAA,MAAM,sCAAsC;AAC9C,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,MAAM,wCAAwC;IAChD;IAEA,KAAK,CAAC,KAAK,EAAE,IAAc,EAAA;QACzB,OAAO,IAAI,OAAO,CAAC,OAAO,OAAO,EAAE,MAAM,KAAI;AAC3C,YAAA,IAAI,GAAG,GAAG,CAAA,8BAAA,EAAiC,KAAK,GAAG;AAEnD,YAAA,IAAI;AACF,gBAAA,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;gBAC5C,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAC1B;YAAE,OAAO,CAAC,EAAE;gBACV,MAAM,CAAC,CAAC,CAAC;YACX;AAAK,QAAA,CAAC,CAAC;IACX;IAEA,OAAO,CAAC,KAAK,EAAE,IAAc,EAAA;AAC3B,QAAA,OAAO,IAAI,UAAU,CAAS,CAAC,QAAQ,KAAI;AACzC,YAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;AACtC,gBAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;gBACrB,QAAQ,CAAC,QAAQ,EAAE;AACrB,YAAA,CAAC,EAAE,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACtC,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,MAAM,QAAQ,GAAA;IACd;AAGA,IAAA,WAAW,CAAC,KAAK,EAAA;AACf,QAAA,MAAM,wCAAwC;IAChD;AAEQ,IAAA,MAAM,cAAc,GAAA;QACxB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM;QAE5C,MAAM,QAAQ,GAAU,EAAE;AAC1B,QAAA,KAAK,IAAI,MAAM,IAAI,OAAO,EAAE;;YAE1B,IAAI,GAAG,GAAG,EAAE;AAEZ,YAAA,GAAG,IAAI,CAAA,2BAAA,EAA8B,MAAM,CAAC,IAAI,GAAG;YACnD,GAAG,IAAI,GAAG;AAEV,YAAA,KAAK,IAAI,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE;;;AAG9B,gBAAA,GAAG,IAAI,CAAA,EAAG,GAAG,CAAC,IAAI,CAAA,EAAG,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,GAAG,EAAE,CAAA,EACjD,GAAG,CAAC,cAAc,CAAC,GAAG,cAAc,GAAG,EACzC,GAAG;YACL;;AAGA,YAAA,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;YACnC,GAAG,IAAI,GAAG;;YAIV,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC;AACrC,YAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AACtB,YAAA,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QACjC;IACF;AAEU,IAAA,QAAQ,CAAC,GAAG,EAAA;QAClB,KAAK,CAAC,uBAAuB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACtD;8GA3QW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAf,eAAe,EAAA,CAAA,CAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B;;;ACDK,SAAU,eAAe,CAAC,SAAwB,EAAA;AACtD,IAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM;AACjC,IAAA,OAAO,IAAI,eAAe,CAAC,QAAQ,EAAE,SAAS,CAAC;AACjD;AAEO,MAAM,eAAe,GAAG,MAA2B;AACxD,IAAA,MAAM,SAAS,GAAe;QAC5B,aAAa;AACb,QAAA;AACE,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,UAAU,EAAE,eAAe;YAC3B,IAAI,EAAE,CAAC,aAAa,CAAC;AACtB;KACF;AAED,IAAA,OAAO,wBAAwB,CAAC,SAAS,CAAC;AAC5C;;ACrBA;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ngx-ionic-zone-database.mjs","sources":["../../../projects/ngx-ionic-zone/database/db-sql.service.ts","../../../projects/ngx-ionic-zone/database/db.module.ts","../../../projects/ngx-ionic-zone/database/ngx-ionic-zone-database.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\nimport { Observable, Subject } from 'rxjs';\nimport { SchemaService, DbService, DbServiceConfig, DbFilter } from 'ngx-universal-zone/database';\n\nimport { CapacitorSQLite, SQLiteConnection, SQLiteDBConnection } from '@capacitor-community/sqlite';\n@Injectable()\nexport class DbSqliteService implements DbService {\n private _dbName: string;\n private _db: SQLiteDBConnection;\n private _isDbInitialized = false;\n private dbInitialized = new Subject<any>();\n\n constructor(\n private config: DbServiceConfig, private schemaSvc: SchemaService\n ) {\n this._dbName = config.dbName;\n\n this.open();\n this.initializeDb();\n }\n \n async deleteDatabase(): Promise<void> {\n try {\n await CapacitorSQLite.deleteDatabase({ database: this._dbName });\n } catch (error) {\n throw error;\n }\n }\n\n async open() {\n try {\n const sqlite: SQLiteConnection = new SQLiteConnection(CapacitorSQLite);\n const ret = await sqlite.checkConnectionsConsistency();\n const isConnConsistent = ret.result;\n if (isConnConsistent) {\n this._db = await sqlite.retrieveConnection(this._dbName, false);\n } else {\n this._db = await sqlite.createConnection(\n this._dbName,\n false,\n 'no-encryption',\n 1,\n false\n );\n }\n\n await this._db.open();\n // await this._prepareTables();\n // this.dbInitialized.next(this._db);\n this._isDbInitialized = true;\n } catch (error) {\n this._dbError(error);\n }\n }\n\n initializeDb() {\n const delay = 50;\n //workaround: don't proceed unless db is initialized...wait everytime 50ms\n const _self = this;\n let timerId: any = setTimeout(async function request() {\n if (!_self._isDbInitialized) {\n //retry\n timerId = setTimeout(request, delay);\n } else {\n //clear timeout\n clearTimeout(timerId);\n timerId = null;\n\n await _self._prepareTables.call(_self);\n\n // heavy database operations should start from this...\n _self.dbInitialized.next(_self._db);\n }\n }, delay);\n }\n\n getAllRx<T>(store: string, opt?: DbFilter): Observable<T> {\n return new Observable((observer) => {\n this.getAll<T>(store, opt).then((result) => {\n observer.next(result);\n observer.complete();\n }, (error) => {\n observer.error(error);\n });\n });\n }\n\n dbInitialized$ = this.dbInitialized.asObservable();\n get Db() {\n return this._db;\n }\n\n async putLocal(store, data: any): Promise<{ rowsAffected; insertId }> {\n let sql = ``;\n const values: any[] = [];\n\n const total = await this.count(store);\n if (total) {\n //update\n sql = `UPDATE ${store} SET `;\n //columns\n for (let prop in data) {\n if (data.hasOwnProperty(prop)) {\n sql += `${prop}='${data[prop]}',`;\n }\n }\n //remove extra ',' at the end\n sql = sql.substr(0, sql.length - 1);\n } else {\n //insert\n sql = `INSERT INTO ${store} `;\n //columns\n sql += `(`;\n for (let prop in data) {\n if (data.hasOwnProperty(prop)) {\n sql += `${prop},`;\n }\n }\n //remove extra ',' at the end\n sql = sql.substr(0, sql.length - 1);\n sql += `)`;\n\n //values\n sql += ` VALUES (`;\n for (let prop in data) {\n sql += `?,`;\n values.push(data[prop]);\n }\n sql = sql.substr(0, sql.length - 1);\n sql += `)`;\n }\n\n console.log('putLocal executing: ', sql, values);\n const result = await this._db.run(sql, values);\n console.log('putLocal result: ', result);\n\n return {\n rowsAffected: result.changes.changes,\n insertId: result.changes.lastId,\n };\n // this._db.transaction(async (tx) => {\n // const res = await this._executeSql<{ rowsAffected, insertId }>(tx, sql, values);\n // resolve(res);\n // }, (error) => reject(error));\n }\n\n putLocalRx(store, data) {\n return new Observable((observer) => {\n this.putLocal(store, data).then((result) => {\n observer.next(result);\n observer.complete();\n });\n });\n }\n\n async get<T>(store: string, key: any): Promise<T> {\n //get primary key field form schema\n const table: any = this.schemaSvc.schema.stores.filter(\n (s) => s.name === store\n )[0];\n const pk = table.columns.filter((c) => c.isPrimaryKey)[0];\n const pkName = pk.name;\n\n let sql = `SELECT * FROM ${store} WHERE ${pkName} = '${key}' LIMIT 1`;\n const { values } = await this._db.query(sql);\n \n return values[0] as T;\n }\n\n getRx<T>(store: string, key: any): Observable<T> {\n return new Observable((observer) => {\n this.get<T>(store, key).then((result) => {\n observer.next(result);\n observer.complete();\n }, (e) => {\n observer.error(e);\n });\n });\n }\n\n getAll<T>(store: string, opt?: DbFilter): Promise<T> {\n return new Promise(async (resolve, reject) => {\n let sql = `SELECT * FROM ${store}`;\n\n try {\n let data;\n const { values } = await this._db.query(sql);\n resolve(values as any);\n } catch (e) {\n reject(e);\n }\n });\n }\n\n remove(store, key): Promise<any> {\n return new Promise((resolve, reject) => {\n throw 'remove not impleted in db-sql yet';\n });\n }\n\n removeRx(store, key): Observable<any> {\n throw 'remove not impleted in db-sql yet';\n }\n\n removeAll(store) {\n return new Promise((resolve, reject) => {\n throw 'removeAll not impleted in db-sql yet';\n });\n }\n\n removeAllRx(store: string): Observable<any> {\n throw 'removeAllRx not impleted in db-sql yet';\n }\n\n count(store, opts?: { key }): Promise<number> {\n return new Promise(async (resolve, reject) => {\n let sql = `SELECT count(*) AS total FROM ${store} `;\n\n try {\n const { values } = await this._db.query(sql);\n resolve(values[0].total);\n } catch (e) {\n reject(e);\n } });\n }\n\n countRx(store, opts?: { key }) {\n return new Observable<number>((observer) => {\n this.count(store, opts).then((result) => {\n observer.next(result);\n observer.complete();\n }, (error) => observer.error(error));\n });\n }\n\n async deleteDb() {\n }\n\n \n deleteTable(store): Observable<void> {\n throw 'deleteTable not impleted in db-sql yet';\n }\n\n private async _prepareTables() {\n const schemas = this.schemaSvc.schema.stores;\n\n const promises: any[] = [];\n for (let schema of schemas) {\n // let sql = `BEGIN TRANSACTION;`;\n let sql = '';\n\n sql += `CREATE TABLE IF NOT EXISTS ${schema.name} `;\n sql += `(`;\n\n for (let col of schema.columns) {\n //TODO: need to fix primary key\n // const ikPkTypeNumber = col['type'] == 'INTEGER';\n sql += `${col.name}${col.type ? ' ' + col.type : ''}${\n col['isPrimaryKey'] ? ' PRIMARY KEY' : ''\n },`;\n }\n\n //remove extra ',' at the end\n sql = sql.substr(0, sql.length - 1);\n sql += `)`;\n\n // sql += `COMMIT TRANSACTION;`;\n\n const promise = this._db.execute(sql);\n promises.push(promise); \n await Promise.all(promises);\n }\n}\n\n private _dbError(err) {\n alert('Open database ERROR: ' + JSON.stringify(err));\n }\n}","import { EnvironmentProviders, makeEnvironmentProviders, Provider } from '@angular/core';\nimport { SchemaService } from 'ngx-universal-zone/database';\nimport { DbService } from 'ngx-universal-zone/database';\nimport { DbSqliteService } from './db-sql.service';\n\nexport function dbSqliteFactory(schemaSvc: SchemaService) {\n const dbConfig = schemaSvc.config;\n return new DbSqliteService(dbConfig, schemaSvc);\n}\n\nexport const provideDbSqlite = (): EnvironmentProviders => {\n const providers: Provider[] = [\n SchemaService,\n {\n provide: DbService,\n useFactory: dbSqliteFactory,\n deps: [SchemaService],\n }\n ];\n\n return makeEnvironmentProviders(providers);\n};\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|