Files
doneit-web/version/git-version.ts
T
2023-02-23 18:06:27 +01:00

12 lines
54 KiB
TypeScript

export let versionData = {
"shortSHA": "a034747db",
"SHA": "a034747db0425232d717e1c47ed6ae63e9adbfdd",
"branch": "no_bug_movemente",
"lastCommitAuthor": "'Peter Maquiran'",
"lastCommitTime": "'Thu Feb 23 18:05:15 2023 +0100'",
"lastCommitMessage": "debugging",
"lastCommitNumber": "4825",
"change": "diff --git a/src/app/models/beast-orm.ts b/src/app/models/beast-orm.ts\nindex 7ed0f9c1c..f6ac4f7b1 100644\n--- a/src/app/models/beast-orm.ts\n+++ b/src/app/models/beast-orm.ts\n@@ -1,4 +1,5 @@\n-import { models } from 'beast-orm'\n+//import { models } from 'beast-orm'\n+import { models } from 'src/plugin/src'\n import { environment } from 'src/environments/environment'\n const { ArrayField, JsonField} = models.indexedDB.fields\n \ndiff --git a/src/app/shared/gabinete-digital/events-to-approve/events-to-approve.page.ts b/src/app/shared/gabinete-digital/events-to-approve/events-to-approve.page.ts\nindex 1aec8d2c0..689a63134 100644\n--- a/src/app/shared/gabinete-digital/events-to-approve/events-to-approve.page.ts\n+++ b/src/app/shared/gabinete-digital/events-to-approve/events-to-approve.page.ts\n@@ -103,7 +103,7 @@ export class EventsToApprovePage implements OnInit {\n \n this.color = 'pr'\n \n- let allEvents = await this.processes.eventsToApprove(segment).toPromise()\n+ let allEvents = await this.processes.eventsToApprove(segment, 'gabinete').toPromise()\n try {\n this.eventsList = this.sortService.sortArrayByDate(allEvents).reverse();\n } catch(error) {\ndiff --git a/src/plugin/src/connection/dbSwtich.d.ts b/src/plugin/src/connection/dbSwtich.d.ts\nindex a459450c4..08694b748 100644\n--- a/src/plugin/src/connection/dbSwtich.d.ts\n+++ b/src/plugin/src/connection/dbSwtich.d.ts\n@@ -2,4 +2,5 @@ import { DatabaseSchema, TableSchema } from '../models/register-modal.interface.\n import { actionParam, dbType } from './intreface.js';\n export declare class DBSwitch {\n static requestHandler(TableSchema: TableSchema, DBconfig: DatabaseSchema, dbType: dbType, action: actionParam, arg: any, queryId: any): Promise<any>;\n+ static callBackRequestHandler(TableSchema: TableSchema, DBconfig: DatabaseSchema, dbType: dbType, action: actionParam, arg: any, queryId: any): Promise<void>;\n }\ndiff --git a/src/plugin/src/connection/dbSwtich.js b/src/plugin/src/connection/dbSwtich.js\nindex f8ec1ce40..e7f3c6e68 100644\n--- a/src/plugin/src/connection/dbSwtich.js\n+++ b/src/plugin/src/connection/dbSwtich.js\n@@ -7,12 +7,10 @@ export class DBSwitch {\n return new Promise(async (resolve, reject) => {\n const request = IndexedDBWorkerQueue.register({\n params: { TableSchema, DBconfig, queryId, action, arg, dbType },\n+ queryId: queryId,\n method: 'execute',\n func: (message) => {\n- if (message.queryId == queryId) {\n- resolve(message === null || message === void 0 ? void 0 : message.value);\n- return true;\n- }\n+ resolve(message === null || message === void 0 ? void 0 : message.value);\n },\n });\n if (request == false) {\n@@ -26,4 +24,25 @@ export class DBSwitch {\n return result === null || result === void 0 ? void 0 : result.value;\n }\n }\n+ static async callBackRequestHandler(TableSchema, DBconfig, dbType, action, arg, queryId) {\n+ if (typeof (Worker) !== \"undefined\" && IndexedDBWorkerQueue.webWorkerModuleSupport) {\n+ //great, your browser supports web workers\n+ const request = IndexedDBWorkerQueue.register({\n+ params: { TableSchema, DBconfig, queryId, action, arg, dbType },\n+ queryId: queryId,\n+ method: 'execute',\n+ func: (message) => {\n+ arg.callback(message === null || message === void 0 ? void 0 : message.value);\n+ },\n+ });\n+ if (request == false) {\n+ const result = await indexedDB.requestHandler(TableSchema, DBconfig, queryId)[action](arg);\n+ arg.callback(result === null || result === void 0 ? void 0 : result.value);\n+ }\n+ }\n+ else {\n+ const result = await indexedDB.requestHandler(TableSchema, DBconfig, queryId)[action](arg);\n+ arg.callback(result === null || result === void 0 ? void 0 : result.value);\n+ }\n+ }\n }\ndiff --git a/src/plugin/src/connection/indexedDb/connector.d.ts b/src/plugin/src/connection/indexedDb/connector.d.ts\nindex 1fb933e57..2b0715571 100644\n--- a/src/plugin/src/connection/indexedDb/connector.d.ts\n+++ b/src/plugin/src/connection/indexedDb/connector.d.ts\n@@ -1,7 +1,47 @@\n import { DatabaseSchema } from '../../models/register-modal.interface.js';\n-export declare class IndexedDBConnection {\n+import { transaction } from './transaction.js';\n+export declare class IndexedDB {\n+ static transactions: {\n+ [key: string]: {\n+ [key: string]: {\n+ callback: Function;\n+ queryId: string;\n+ mode: string;\n+ config: DatabaseSchema;\n+ }[];\n+ };\n+ };\n+ static dbInstance: {\n+ [dbNmae: string]: IDBDatabase;\n+ };\n+ static dbInstanceUsing: {\n+ [dbNmae: string]: {\n+ [store: string]: boolean;\n+ };\n+ };\n+ static txInstance: {\n+ [dbNmae: string]: {\n+ [store: string]: IDBTransaction;\n+ };\n+ };\n constructor();\n static connect(config: DatabaseSchema): Promise<IDBDatabase>;\n static migrate(config: DatabaseSchema): Promise<boolean>;\n- private runMigrations;\n+ static run(config: any): boolean;\n+ static request({ queryId }: {\n+ queryId: any;\n+ }, callback: Function): void;\n+ private static runMigrations;\n+ static executingTransaction: {\n+ [key: string]: {\n+ [key: string]: boolean;\n+ };\n+ };\n+ static executeTransaction(currentStore: any, databaseName: any): void;\n+ static getOrCreateTransaction({ currentStore, queryId, config }: {\n+ currentStore: any;\n+ queryId: any;\n+ config: any;\n+ }, mode: any, callback: (transaction: transaction) => void): void;\n+ private static createTransaction;\n }\ndiff --git a/src/plugin/src/connection/indexedDb/connector.js b/src/plugin/src/connection/indexedDb/connector.js\nindex abc57da00..e56385aa3 100644\n--- a/src/plugin/src/connection/indexedDb/connector.js\n+++ b/src/plugin/src/connection/indexedDb/connector.js\n@@ -1,12 +1,17 @@\n+import { transaction } from './transaction.js';\n // inspire by https://github.com/hc-oss/use-indexeddb\n-export class IndexedDBConnection {\n+export class IndexedDB {\n constructor() { }\n- connect(config) {\n+ static connect(config) {\n return new Promise((resolve, reject) => {\n+ if (this.dbInstance[config.databaseName]) {\n+ resolve(this.dbInstance[config.databaseName]);\n+ }\n const idbInstance = indexedDB || self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB;\n if (idbInstance) {\n const request = idbInstance.open(config.databaseName, config.version);\n request.onsuccess = () => {\n+ this.dbInstance[config.databaseName] = request.result;\n resolve(request.result);\n };\n request.onerror = (e) => {\n@@ -26,12 +31,13 @@ export class IndexedDBConnection {\n }\n });\n }\n- migrate(config) {\n+ static migrate(config) {\n return new Promise((resolve, reject) => {\n const idbInstance = indexedDB || self.indexedDB || self.mozIndexedDB || self.webkitIndexedDB || self.msIndexedDB;\n if (idbInstance) {\n const request = idbInstance.open(config.databaseName, config.version);\n request.onsuccess = () => {\n+ // request.result.close()\n resolve(false);\n };\n request.onerror = (e) => {\n@@ -47,9 +53,35 @@ export class IndexedDBConnection {\n else {\n reject(\"Failed to connect\");\n }\n+ // if(!this.transactions[config.databaseName]) {\n+ // this.transactions[config.databaseName] = {}\n+ // for( const storeName of config.stores) {\n+ // if(!this.transactions[config.databaseName][storeName.name]) { \n+ // this.transactions[config.databaseName][storeName.name] = []\n+ // }\n+ // }\n+ // }\n });\n }\n- async runMigrations(db, config) {\n+ static run(config) {\n+ if (!this.transactions[config.databaseName]) {\n+ this.transactions[config.databaseName] = {};\n+ this.executingTransaction[config.databaseName] = {};\n+ this.txInstance[config.databaseName] = {};\n+ this.dbInstanceUsing[config.databaseName] = {};\n+ for (const storeName of config.stores) {\n+ if (!this.transactions[config.databaseName][storeName.name]) {\n+ this.transactions[config.databaseName][storeName.name] = [];\n+ this.executingTransaction[config.databaseName][storeName.name] = false;\n+ this.txInstance[config.databaseName][storeName.name] = null;\n+ }\n+ }\n+ }\n+ return true;\n+ }\n+ static request({ queryId }, callback) {\n+ }\n+ static async runMigrations(db, config) {\n await config.stores.forEach(async (storeSchema) => {\n if (!db.objectStoreNames.contains(storeSchema.name)) {\n const ObjectStore = db.createObjectStore(storeSchema.name, storeSchema.id);\n@@ -59,4 +91,61 @@ export class IndexedDBConnection {\n }\n });\n }\n+ static executeTransaction(currentStore, databaseName) {\n+ const { mode, callback, config } = this.transactions[databaseName][currentStore].shift();\n+ const done = () => {\n+ var _a, _b;\n+ if (this.transactions[config.databaseName][currentStore].length == 0) {\n+ this.executingTransaction[databaseName][currentStore] = false;\n+ try {\n+ (_b = (_a = this.txInstance[databaseName][currentStore]) === null || _a === void 0 ? void 0 : _a.commit) === null || _b === void 0 ? void 0 : _b.call(_a);\n+ }\n+ catch (error) { }\n+ this.dbInstance[config.databaseName].close();\n+ delete this.dbInstanceUsing[config.databaseName][currentStore];\n+ if (Object.keys(this.dbInstanceUsing[config.databaseName]).length == 0) {\n+ delete this.dbInstance[config.databaseName];\n+ }\n+ }\n+ else {\n+ this.executeTransaction(currentStore, databaseName);\n+ }\n+ };\n+ const transactionInstance = new transaction({\n+ store: currentStore,\n+ done,\n+ db: this.dbInstance[config.databaseName],\n+ tx: this.txInstance[databaseName][currentStore]\n+ });\n+ // console.log('execute')\n+ callback(transactionInstance);\n+ }\n+ static getOrCreateTransaction({ currentStore, queryId, config }, mode, callback) {\n+ this.transactions[config.databaseName][currentStore].push({ config, queryId, mode, callback });\n+ if (this.executingTransaction[config.databaseName][currentStore] == false) {\n+ this.executingTransaction[config.databaseName][currentStore] = true;\n+ // console.log('start')\n+ this.connect(config).then(() => {\n+ const tx = this.createTransaction(this.dbInstance[config.databaseName], \"readwrite\", currentStore, () => { });\n+ this.txInstance[config.databaseName][currentStore] = tx;\n+ this.executeTransaction(currentStore, config.databaseName);\n+ this.dbInstanceUsing[config.databaseName][currentStore] = true;\n+ });\n+ }\n+ else {\n+ // console.log('padding '+this.transactions[config.databaseName][currentStore].length)\n+ }\n+ }\n+ static createTransaction(db, dbMode, currentStore, resolve, reject, abort) {\n+ let tx = db.transaction(currentStore, dbMode);\n+ tx.onerror = reject;\n+ tx.oncomplete = resolve;\n+ tx.onabort = abort;\n+ return tx;\n+ }\n }\n+IndexedDB.transactions = {};\n+IndexedDB.dbInstance = {};\n+IndexedDB.dbInstanceUsing = {};\n+IndexedDB.txInstance = {};\n+IndexedDB.executingTransaction = {};\n\\ No newline at end of file\ndiff --git a/src/plugin/src/connection/indexedDb/dynamicChange.js b/src/plugin/src/connection/indexedDb/dynamicChange.js\nindex 461d6a3fc..a620ee453 100644\n--- a/src/plugin/src/connection/indexedDb/dynamicChange.js\n+++ b/src/plugin/src/connection/indexedDb/dynamicChange.js\n@@ -1,8 +1,8 @@\n-import { IndexedDBConnection } from './connector';\n+import { IndexedDB } from './connector';\n export class IndexedDBConnectionDynamicChange {\n changeSchema(db, schemaChanges) {\n db.close();\n- const newDb = new IndexedDBConnection().connect({\n+ const newDb = IndexedDB.connect({\n databaseName: 'databaseName',\n type: 'indexedDB',\n version: 0\ndiff --git a/src/plugin/src/connection/indexedDb/indexedb.d.ts b/src/plugin/src/connection/indexedDb/indexedb.d.ts\nindex f8e32357a..08a3d355c 100644\n--- a/src/plugin/src/connection/indexedDb/indexedb.d.ts\n+++ b/src/plugin/src/connection/indexedDb/indexedb.d.ts\n@@ -1,18 +1,25 @@\n import { DatabaseSchema, TableSchema } from \"../../models/register-modal.interface.js\";\n import { Method } from \"../../models/model.interface.js\";\n-declare class _indexedDB {\n+declare class indexedDBInterface {\n private validateStore;\n private validateBeforeTransaction;\n private createTransaction;\n migrate(config: DatabaseSchema): Promise<boolean>;\n getConnection(config: DatabaseSchema): Promise<IDBDatabase>;\n- getActions: (currentStore: any, config: any) => {\n+ getActions: (currentStore: any, config: any, queryId: any) => {\n getByID: (id: string | number) => Promise<any>;\n getOneByIndex: (keyPath: string, value: string | number) => Promise<any>;\n getManyByIndex: (keyPath: string, value: string | number) => Promise<any[]>;\n getAll: () => Promise<any[]>;\n- add: (value: Object, key?: any) => Promise<number | Object>;\n- update: (value: any, key?: any) => Promise<any>;\n+ add: ({ value, key, func }: {\n+ value: any;\n+ key: any;\n+ func: any;\n+ }) => void;\n+ update: ({ value, key }: {\n+ value: any;\n+ key?: any;\n+ }) => Promise<any>;\n deleteByID: (id: any) => Promise<any>;\n deleteAll: () => Promise<any>;\n openCursor: (cursorCallback: any, keyRange?: IDBKeyRange) => Promise<void | IDBCursorWithValue>;\n@@ -29,11 +36,11 @@ declare class _indexedDB {\n queryId: any;\n value: any;\n }>;\n- insert: (methods: Method[]) => Promise<{\n+ insert: (methods: Method[]) => Promise<unknown>;\n+ migrate: () => Promise<{\n queryId: any;\n- value: any;\n }>;\n };\n }\n-export declare const indexedDB: _indexedDB;\n+export declare const indexedDB: indexedDBInterface;\n export {};\ndiff --git a/src/plugin/src/connection/indexedDb/indexedb.js b/src/plugin/src/connection/indexedDb/indexedb.js\nindex 010e45a94..1e30c97ef 100644\n--- a/src/plugin/src/connection/indexedDb/indexedb.js\n+++ b/src/plugin/src/connection/indexedDb/indexedb.js\n@@ -1,39 +1,30 @@\n-import { IndexedDBConnection } from \"./connector.js\";\n+import { IndexedDB } from \"./connector.js\";\n import { SqlObject } from \"../../sql/sqlObject/sqlObject.js\";\n // inspire by https://github.com/hc-oss/use-indexeddb\n-class _indexedDB {\n+class indexedDBInterface {\n constructor() {\n- this.getActions = (currentStore, config) => {\n+ this.getActions = (currentStore, config, queryId) => {\n return {\n getByID: (id) => {\n return new Promise((resolve, reject) => {\n- this.getConnection(config)\n- .then(db => {\n- this.validateBeforeTransaction(db, currentStore, reject);\n- let tx = this.createTransaction(db, \"readonly\", currentStore, resolve, reject);\n- let objectStore = tx.objectStore(currentStore);\n- let request = objectStore.get(id);\n+ IndexedDB.getOrCreateTransaction({ currentStore, queryId, config }, 'readonly', (transaction) => {\n+ let objectStore = transaction.objectStore(currentStore);\n+ let request = objectStore.get({ id, config });\n request.onsuccess = (e) => {\n resolve(e.target.result);\n };\n- })\n- .catch(reject);\n+ });\n });\n },\n getOneByIndex: (keyPath, value) => {\n return new Promise((resolve, reject) => {\n- this.getConnection(config)\n- .then(db => {\n- this.validateBeforeTransaction(db, currentStore, reject);\n- let tx = this.createTransaction(db, \"readonly\", currentStore, resolve, reject);\n- let objectStore = tx.objectStore(currentStore);\n- let index = objectStore.index(keyPath);\n- let request = index.get(value);\n+ IndexedDB.getOrCreateTransaction({ currentStore, queryId, config }, 'readonly', (transaction) => {\n+ let objectStore = transaction.objectStore(currentStore);\n+ let request = objectStore.index({ keyPath, value, config });\n request.onsuccess = (e) => {\n resolve(e.target.result);\n };\n- })\n- .catch(reject);\n+ });\n });\n },\n getManyByIndex: (keyPath, value) => {\n@@ -54,30 +45,39 @@ class _indexedDB {\n },\n getAll: () => {\n return new Promise((resolve, reject) => {\n- this.getConnection(config).then(db => {\n- this.validateBeforeTransaction(db, currentStore, reject);\n- let tx = this.createTransaction(db, \"readonly\", currentStore, resolve, reject);\n- let objectStore = tx.objectStore(currentStore);\n- let request = objectStore.getAll();\n+ IndexedDB.getOrCreateTransaction({ currentStore, queryId, config }, 'readonly', (transaction) => {\n+ let objectStore = transaction.objectStore(currentStore);\n+ let request = objectStore.getAll(config);\n request.onsuccess = (e) => {\n+ // console.log('all', e.target.results)\n resolve(e.target.result);\n };\n- })\n- .catch(reject);\n+ });\n });\n },\n- add: (value, key) => {\n+ add: ({ value, key, func }) => {\n+ IndexedDB.getOrCreateTransaction({ currentStore, queryId, config }, 'readwrite', (transaction) => {\n+ let objectStore = transaction.objectStore(currentStore);\n+ let request = objectStore.add({ value, key, config });\n+ request.onsuccess = (e) => {\n+ func(e.target.result);\n+ };\n+ request.onerror = (e) => {\n+ // console.log(e)\n+ let data = {\n+ error: e.target['error']\n+ };\n+ func(data);\n+ };\n+ });\n+ },\n+ update: ({ value, key = undefined }) => {\n return new Promise((resolve, reject) => {\n- this.getConnection(config).then(db => {\n- this.validateBeforeTransaction(db, currentStore, reject);\n- let tx = this.createTransaction(db, \"readwrite\", currentStore, resolve, reject);\n- let objectStore = tx.objectStore(currentStore);\n- let request = objectStore.add(value, key);\n+ IndexedDB.getOrCreateTransaction({ currentStore, queryId, config }, 'readwrite', (transaction) => {\n+ let objectStore = transaction.objectStore(currentStore);\n+ let request = objectStore.put({ value, key, config });\n request.onsuccess = (e) => {\n- var _a, _b;\n- (_b = (_a = tx) === null || _a === void 0 ? void 0 : _a.commit) === null || _b === void 0 ? void 0 : _b.call(_a);\n resolve(e.target.result);\n- db.transaction;\n };\n request.onerror = (e) => {\n let data = {\n@@ -85,62 +85,35 @@ class _indexedDB {\n };\n resolve(data);\n };\n- })\n- .catch(reject);\n+ });\n });\n },\n- update: (value, key) => {\n+ deleteByID: (id) => {\n return new Promise((resolve, reject) => {\n- this.getConnection(config).then(db => {\n- this.validateBeforeTransaction(db, currentStore, reject);\n- let tx = this.createTransaction(db, \"readwrite\", currentStore, resolve, reject);\n- let objectStore = tx.objectStore(currentStore);\n- let request = objectStore.put(value, key);\n+ IndexedDB.getOrCreateTransaction({ currentStore, queryId, config }, 'readwrite', (transaction) => {\n+ let objectStore = transaction.objectStore(currentStore);\n+ let request = objectStore.delete({ id, config });\n request.onsuccess = (e) => {\n- var _a, _b;\n- (_b = (_a = tx) === null || _a === void 0 ? void 0 : _a.commit) === null || _b === void 0 ? void 0 : _b.call(_a);\n resolve(e.target.result);\n };\n- })\n- .catch(reject);\n- });\n- },\n- deleteByID: (id) => {\n- return new Promise((resolve, reject) => {\n- this.getConnection(config).then(db => {\n- this.validateBeforeTransaction(db, currentStore, reject);\n- let tx = this.createTransaction(db, \"readwrite\", currentStore, resolve, reject);\n- let objectStore = tx.objectStore(currentStore);\n- let request = objectStore.delete(id);\n- request.onsuccess = (e) => {\n- var _a, _b;\n- (_b = (_a = tx) === null || _a === void 0 ? void 0 : _a.commit) === null || _b === void 0 ? void 0 : _b.call(_a);\n- resolve(e);\n+ request.onerror = (e) => {\n+ let data = {\n+ error: e.target['error']\n+ };\n+ resolve(data);\n };\n- })\n- .catch(reject);\n+ });\n });\n },\n deleteAll: () => {\n return new Promise((resolve, reject) => {\n- this.getConnection(config)\n- .then(db => {\n- this.validateBeforeTransaction(db, currentStore, reject);\n- let tx = this.createTransaction(db, \"readwrite\", currentStore, resolve, reject);\n- let objectStore = tx.objectStore(currentStore);\n- objectStore.clear();\n- tx.oncomplete = (e) => {\n- var _a, _b;\n- try {\n- (_b = (_a = tx) === null || _a === void 0 ? void 0 : _a.commit) === null || _b === void 0 ? void 0 : _b.call(_a);\n- resolve(e);\n- }\n- catch (error) {\n- resolve(e);\n- }\n+ IndexedDB.getOrCreateTransaction({ currentStore, queryId, config }, 'readwrite', (transaction) => {\n+ let objectStore = transaction.objectStore(currentStore);\n+ let request = objectStore.clear({ config });\n+ request.onsuccess = (e) => {\n+ resolve(e.target.result);\n };\n- })\n- .catch(reject);\n+ });\n });\n },\n openCursor: (cursorCallback, keyRange) => {\n@@ -154,7 +127,7 @@ class _indexedDB {\n request.onsuccess = e => {\n cursorCallback(e);\n resolve();\n- // db.close();\n+ db.close();\n };\n })\n .catch(reject);\n@@ -168,7 +141,7 @@ class _indexedDB {\n if (methods[0].methodName == 'all') {\n return {\n queryId: queryId,\n- value: await this.getActions(TableSchema.name, config).getAll()\n+ value: await this.getActions(TableSchema.name, config, queryId).getAll()\n };\n }\n else if (methods[0].methodName == 'get') {\n@@ -179,13 +152,13 @@ class _indexedDB {\n if (TableSchema.id.keyPath == key) {\n return {\n queryId: queryId,\n- value: await this.getActions(TableSchema.name, config).getByID(value)\n+ value: await this.getActions(TableSchema.name, config, queryId).getByID(value)\n };\n }\n else {\n return {\n queryId: queryId,\n- value: await this.getActions(TableSchema.name, config).getOneByIndex(key, value)\n+ value: await this.getActions(TableSchema.name, config, queryId).getOneByIndex(key, value)\n };\n }\n }\n@@ -193,28 +166,30 @@ class _indexedDB {\n else if (methods[methods.length - 1].methodName == 'execute') {\n return new Promise(async (resolve, reject) => {\n const sqlObject = new SqlObject(TableSchema, methods);\n- await this.getActions(TableSchema.name, config).openCursor(async (event) => {\n- var cursor = event.target.result;\n- if (cursor) {\n- const row = cursor.value;\n- await sqlObject.runFirstMethod(row);\n- cursor.continue();\n- }\n- else {\n- sqlObject.doneRunFirstMethod();\n- sqlObject.run();\n- resolve({\n- queryId: queryId,\n- value: sqlObject.firstMethod.rows\n- });\n- }\n+ //await this.getActions(TableSchema.name, config, queryId).openCursor(async(event: any) => {\n+ //var cursor = event.target.result;\n+ //if(cursor) {\n+ const rows = await this.getActions(TableSchema.name, config, queryId).getAll();\n+ for (const row of rows) {\n+ //const row = cursor.value\n+ await sqlObject.runFirstMethod(row);\n+ //cursor.continue();\n+ }\n+ //} else {\n+ sqlObject.doneRunFirstMethod();\n+ sqlObject.run();\n+ resolve({\n+ queryId: queryId,\n+ value: sqlObject.firstMethod.rows\n });\n+ //}\n+ //})\n });\n }\n else if (methods[methods.length - 1].methodName == 'first') {\n return new Promise(async (resolve, reject) => {\n const sqlObject = new SqlObject(TableSchema, methods);\n- await this.getActions(TableSchema.name, config).openCursor(async (event) => {\n+ await this.getActions(TableSchema.name, config, queryId).openCursor(async (event) => {\n var cursor = event.target.result;\n if (cursor) {\n const row = cursor.value;\n@@ -239,10 +214,10 @@ class _indexedDB {\n const idFieldName = TableSchema.id.keyPath;\n const idValue = args[idFieldName];\n if (idValue) {\n- await this.getActions(TableSchema.name, config).update(args);\n+ await this.getActions(TableSchema.name, config, queryId).update({ value: args });\n }\n else {\n- await this.getActions(TableSchema.name, config).update(args, idValue);\n+ await this.getActions(TableSchema.name, config, queryId).update({ value: args, key: idValue });\n }\n return {\n queryId\n@@ -256,7 +231,7 @@ class _indexedDB {\n const rows = result.value;\n for (let row of rows) {\n const updateRow = Object.assign(row, argsToUpdate);\n- await this.getActions(TableSchema.name, config).update(updateRow);\n+ await this.getActions(TableSchema.name, config, queryId).update({ value: updateRow });\n }\n return {\n queryId\n@@ -268,10 +243,10 @@ class _indexedDB {\n //await this.getActions(TableSchema.name, config).update(argsToUpdate)\n const idValue = argsToUpdate[idFieldName];\n if (idValue) {\n- await this.getActions(TableSchema.name, config).update(argsToUpdate);\n+ await this.getActions(TableSchema.name, config, queryId).update({ value: argsToUpdate });\n }\n else {\n- await this.getActions(TableSchema.name, config).update(argsToUpdate, idValue);\n+ await this.getActions(TableSchema.name, config, queryId).update({ value: argsToUpdate, key: idValue });\n }\n return {\n queryId\n@@ -287,7 +262,7 @@ class _indexedDB {\n const rows = result.value;\n for (let row of rows) {\n const id = row[TableSchema.id.keyPath];\n- await this.getActions(TableSchema.name, config).deleteByID(id);\n+ await this.getActions(TableSchema.name, config, queryId).deleteByID(id);\n }\n return {\n queryId\n@@ -299,37 +274,36 @@ class _indexedDB {\n const idValue = IdInObject[TableSchema.id.keyPath];\n return {\n queryId: queryId,\n- value: await this.getActions(TableSchema.name, config).deleteByID(idValue)\n+ value: await this.getActions(TableSchema.name, config, queryId).deleteByID(idValue)\n };\n }\n else if (methods[methods.length - 1].methodName == 'delete' &&\n methods[methods.length - 1].arguments == '*') {\n return {\n queryId: queryId,\n- value: await this.getActions(TableSchema.name, config).deleteAll()\n+ value: await this.getActions(TableSchema.name, config, queryId).deleteAll()\n };\n }\n },\n insert: async (methods) => {\n- const createdObjKeys = [];\n- const rows = methods[0].arguments;\n- for (let insert of rows) {\n- const id = await this.getActions(TableSchema.name, config).add(insert);\n- insert[TableSchema.id.keyPath] = id;\n- }\n- // return first element\n- if (rows.length == 1) {\n- return {\n- queryId: queryId,\n- value: rows[0]\n- };\n- }\n- else {\n- return {\n- queryId: queryId,\n- value: rows\n- };\n- }\n+ return new Promise((resolve, reject) => {\n+ const rows = methods[0].arguments;\n+ for (let insert of rows) {\n+ this.getActions(TableSchema.name, config, queryId).add({ value: insert, key: null, func: (id) => {\n+ insert[TableSchema.id.keyPath] = id;\n+ resolve({\n+ queryId: queryId,\n+ value: insert\n+ });\n+ } });\n+ }\n+ });\n+ },\n+ migrate: async () => {\n+ await IndexedDB.run(config);\n+ return {\n+ queryId: queryId\n+ };\n }\n };\n };\n@@ -353,10 +327,10 @@ class _indexedDB {\n return tx;\n }\n migrate(config) {\n- return new IndexedDBConnection().migrate(config);\n+ return IndexedDB.migrate(config);\n }\n getConnection(config) {\n- return new IndexedDBConnection().connect(config);\n+ return IndexedDB.connect(config);\n }\n }\n-export const indexedDB = new _indexedDB();\n+export const indexedDB = new indexedDBInterface();\ndiff --git a/src/plugin/src/connection/intreface.d.ts b/src/plugin/src/connection/intreface.d.ts\nindex 5d31fbfcc..25f0f8ec3 100644\n--- a/src/plugin/src/connection/intreface.d.ts\n+++ b/src/plugin/src/connection/intreface.d.ts\n@@ -1,2 +1,2 @@\n-export declare type actionParam = 'insert' | 'update' | 'delete' | 'select';\n+export declare type actionParam = 'insert' | 'update' | 'delete' | 'select' | 'migrate' | 'trigger';\n export declare type dbType = 'indexedDB' | 'localStorage';\ndiff --git a/src/plugin/src/connection/worker.js b/src/plugin/src/connection/worker.js\nindex 174c12cc3..0390c8962 100644\n--- a/src/plugin/src/connection/worker.js\n+++ b/src/plugin/src/connection/worker.js\n@@ -11,7 +11,7 @@ onmessage = async (oEvent) => {\n value: undefined\n });\n }\n- }).catch((result)=> {\n+ }).catch((result) => {\n try {\n postMessage(result);\n }\n@@ -21,6 +21,5 @@ onmessage = async (oEvent) => {\n value: undefined\n });\n }\n- })\n-\n+ });\n };\ndiff --git a/src/plugin/src/connection/worker.queue.d.ts b/src/plugin/src/connection/worker.queue.d.ts\nindex 4e4898c29..6ccb3060c 100644\n--- a/src/plugin/src/connection/worker.queue.d.ts\n+++ b/src/plugin/src/connection/worker.queue.d.ts\n@@ -1,7 +1,7 @@\n interface WsRegister {\n type?: 'response' | 'Register';\n func: Function;\n- queryId?: string;\n+ queryId: string;\n params: any;\n method: 'execute' | 'migrate';\n }\n@@ -13,7 +13,7 @@ export declare class _IndexedDBWorkerQueue {\n private workerQueues;\n register(data: WsRegister): string | false;\n onmessage(data: any): Promise<void>;\n- requestHandler(): void;\n+ finish(queryId: any): void;\n }\n export declare const IndexedDBWorkerQueue: _IndexedDBWorkerQueue;\n export {};\ndiff --git a/src/plugin/src/connection/worker.queue.js b/src/plugin/src/connection/worker.queue.js\nindex e9a3f67c3..e1b50159b 100644\n--- a/src/plugin/src/connection/worker.queue.js\n+++ b/src/plugin/src/connection/worker.queue.js\n@@ -10,7 +10,7 @@ export class _IndexedDBWorkerQueue {\n this.onmessage(data);\n };\n this.myWorker.onerror = (error) => {\n- console.log(error, 'erroror');\n+ console.log('myWorker', error);\n };\n }\n }\n@@ -38,14 +38,14 @@ export class _IndexedDBWorkerQueue {\n }\n }\n async onmessage(data) {\n- for (const [key, value] of Object.entries(this.workerQueues)) {\n- const dontRepeat = await value.func(data);\n- if (dontRepeat || !data.queryId) {\n- delete this.workerQueues[key];\n- }\n- }\n+ const value = this.workerQueues[data.queryId];\n+ await value.func(data);\n }\n- requestHandler() {\n+ finish(queryId) {\n+ try {\n+ delete this.workerQueues[queryId];\n+ }\n+ catch (error) { }\n }\n }\n export const IndexedDBWorkerQueue = new _IndexedDBWorkerQueue();\ndiff --git a/src/plugin/src/models/mode-migrations.js b/src/plugin/src/models/mode-migrations.js\nindex fd236f610..8c550e061 100644\n--- a/src/plugin/src/models/mode-migrations.js\n+++ b/src/plugin/src/models/mode-migrations.js\n@@ -8,7 +8,6 @@ export class _ModelMigrations {\n if (this.isMigrationsReady) {\n this.callback.forEach((item, index, object) => {\n item();\n- object.splice(index, 1);\n });\n }\n }\ndiff --git a/src/plugin/src/models/model-manager.d.ts b/src/plugin/src/models/model-manager.d.ts\nindex c778c6040..a10e28e1b 100644\n--- a/src/plugin/src/models/model-manager.d.ts\n+++ b/src/plugin/src/models/model-manager.d.ts\n@@ -10,5 +10,7 @@ export declare class ModelManager {\n update: (arg: any, queryId: string) => Promise<any>;\n delete: (arg: any, queryId: string) => Promise<any>;\n all: (arg: any, queryId: string) => Promise<any>;\n+ migrate: (queryId?: string) => Promise<any>;\n+ trigger: (args: any, Subscription: any) => Promise<void>;\n };\n }\ndiff --git a/src/plugin/src/models/model-manager.js b/src/plugin/src/models/model-manager.js\nindex a1884ee7d..1c0386594 100644\n--- a/src/plugin/src/models/model-manager.js\n+++ b/src/plugin/src/models/model-manager.js\n@@ -1,6 +1,7 @@\n var _a;\n import { DBSwitch } from '../connection/dbSwtich.js';\n import { ModelMigrations } from './mode-migrations.js';\n+import { uniqueGenerator } from '../utils.js';\n export class ModelManager {\n constructor() { }\n }\n@@ -35,5 +36,10 @@ ModelManager.obj = (DatabaseSchema, TableSchema) => {\n await ModelMigrations.waitMigration();\n return await DBSwitch.requestHandler(TableSchema, DatabaseSchema, DatabaseSchema.type, 'select', arg, queryId);\n },\n+ migrate: async (queryId = uniqueGenerator()) => {\n+ return await DBSwitch.requestHandler(TableSchema, DatabaseSchema, DatabaseSchema.type, 'migrate', {}, queryId);\n+ }, trigger: async (args, Subscription) => {\n+ DBSwitch.callBackRequestHandler(TableSchema, DatabaseSchema, DatabaseSchema.type, 'trigger', args, Subscription);\n+ }\n };\n };\ndiff --git a/src/plugin/src/models/model.d.ts b/src/plugin/src/models/model.d.ts\nindex 1574ec608..99b7da85f 100644\n--- a/src/plugin/src/models/model.d.ts\n+++ b/src/plugin/src/models/model.d.ts\n@@ -35,7 +35,7 @@ export declare class Model extends ModelManager {\n static updateOrCreate(argToFind: any, argsToUpdate: any): Promise<any>;\n static update(arg: any): Promise<any>;\n static object: ({ queryId, DBconfig, TableSchema, some }: {\n- queryId?: string;\n+ queryId: any;\n DBconfig: any;\n TableSchema: any;\n some?: any;\ndiff --git a/src/plugin/src/models/model.js b/src/plugin/src/models/model.js\nindex 9ed0a8a30..0290a32d2 100644\n--- a/src/plugin/src/models/model.js\n+++ b/src/plugin/src/models/model.js\n@@ -4,6 +4,7 @@ import { ModelManager } from './model-manager.js';\n import { models, modelsConfig, modelsConfigLocalStorage } from './register-model.js';\n import { FieldType } from '../sql/query/interface.js';\n import * as Fields from './field/allFields.js';\n+import { IndexedDBWorkerQueue } from '../connection/worker.queue.js';\n let methods = {} = {};\n // inspire by https://github.com/brianschardt/browser-orm\n export class Model extends (_b = ModelManager) {\n@@ -45,6 +46,7 @@ export class Model extends (_b = ModelManager) {\n const methods = [{ methodName: 'save', arguments: Fields }];\n const queryId = uniqueGenerator();\n await Model.obj(DBconfig, tableSchema).save(methods, queryId);\n+ IndexedDBWorkerQueue.finish(queryId);\n }\n async delete() {\n const DBconfig = this.getDBSchema();\n@@ -55,6 +57,7 @@ export class Model extends (_b = ModelManager) {\n const _methods = [{ methodName: 'delete', arguments: createArg }];\n const queryId = uniqueGenerator();\n await Model.obj(DBconfig, TableSchema).delete(_methods, queryId);\n+ IndexedDBWorkerQueue.finish(queryId);\n }\n static async deleteAll() {\n const DBconfig = this.getDBSchema();\n@@ -65,11 +68,15 @@ export class Model extends (_b = ModelManager) {\n const _methods = [{ methodName: 'delete', arguments: '*' }];\n const queryId = uniqueGenerator();\n await Model.obj(DBconfig, TableSchema).delete(_methods, queryId);\n+ IndexedDBWorkerQueue.finish(queryId);\n }\n async all() {\n const DBconfig = this.getDBSchema();\n const TableSchema = this.getTableSchema();\n- return await Model.object({ DBconfig, TableSchema }).all();\n+ const queryId = uniqueGenerator();\n+ const result = await Model.object({ queryId, DBconfig, TableSchema }).all();\n+ IndexedDBWorkerQueue.finish(queryId);\n+ return result;\n }\n getFields(arg) {\n return Model.getFields(arg);\n@@ -113,9 +120,13 @@ export class Model extends (_b = ModelManager) {\n }\n }\n static async all() {\n+ // console.log('trigger get')\n const DBconfig = this.getDBSchema();\n const TableSchema = this.getTableSchema();\n- return await Model.object({ DBconfig, TableSchema }).all();\n+ const queryId = uniqueGenerator();\n+ const result = await Model.object({ queryId, DBconfig, TableSchema }).all();\n+ IndexedDBWorkerQueue.finish(queryId);\n+ return result;\n }\n static async get(arg) {\n const _methods = [{ methodName: 'get', arguments: arg }];\n@@ -123,6 +134,7 @@ export class Model extends (_b = ModelManager) {\n const TableSchema = this.getTableSchema();\n const queryId = uniqueGenerator();\n const foundObj = await super.obj(DBconfig, TableSchema).get(_methods, queryId);\n+ IndexedDBWorkerQueue.finish(queryId);\n if (!foundObj) {\n return false;\n }\n@@ -152,7 +164,9 @@ export class Model extends (_b = ModelManager) {\n const DBconfig = this.getDBSchema();\n const TableSchema = this.getTableSchema();\n const newInstanceModel = this.NewModelInstance();\n- return Object.assign(newInstanceModel, this.object({ queryId, DBconfig, TableSchema, some: ['filter', arg] }));\n+ const result = Object.assign(newInstanceModel, this.object({ queryId, DBconfig, TableSchema, some: ['filter', arg] }));\n+ IndexedDBWorkerQueue.finish(queryId);\n+ return result;\n }\n static NewModelInstance() {\n class newInstanceModel {\n@@ -194,6 +208,7 @@ export class Model extends (_b = ModelManager) {\n }\n const emptyFields = await this.getEmptyFields();\n const TableSchema = this.getTableSchema();\n+ const ModelName = TableSchema.name;\n for (let i in arg) {\n arg[i] = Object.assign(Object.assign({}, emptyFields), this.getFields(arg[i]));\n if (!this.formValidation(arg[i])) {\n@@ -213,25 +228,49 @@ export class Model extends (_b = ModelManager) {\n const _methods = [{ methodName: 'create', arguments: arg }];\n const DBconfig = this.getDBSchema();\n const queryId = uniqueGenerator();\n- const createObject = await super.obj(DBconfig, TableSchema).create(_methods, queryId);\n+ const createObjectRequest = super.obj(DBconfig, TableSchema).create(_methods, queryId);\n+ for (let i in arg) {\n+ let newInstance = new models[ModelName]();\n+ Object.assign(newInstance, arg[i]);\n+ delete newInstance.obj;\n+ delete newInstance[TableSchema.id.keyPath];\n+ if (TableSchema.fieldTypes.ManyToManyField) {\n+ for (let field of TableSchema.fieldTypes.ManyToManyField) {\n+ // console.log(ModelName, field)\n+ newInstance[field] = null;\n+ }\n+ }\n+ if (TableSchema.fieldTypes.OneToOneField) {\n+ for (let field of TableSchema.fieldTypes.ManyToManyField) {\n+ // console.log(ModelName, field)\n+ newInstance[field] = null;\n+ }\n+ }\n+ arg[i] = newInstance;\n+ }\n+ const createObject = await createObjectRequest;\n+ IndexedDBWorkerQueue.finish(queryId);\n if (createObject) {\n if (typeof createObject[TableSchema.id.keyPath] == 'object') {\n throw (createObject[TableSchema.id.keyPath].error);\n }\n else {\n- const ModelName = this.getModelName();\n- let newInstance = new models[ModelName]();\n- Object.assign(newInstance, createObject);\n- delete newInstance.obj;\n- return newInstance;\n+ if (Array.isArray(createObject)) {\n+ for (let a in createObject) {\n+ arg[a][TableSchema.id.keyPath] = createObject[a][TableSchema.id.keyPath];\n+ }\n+ return arg;\n+ }\n+ else {\n+ arg[0][TableSchema.id.keyPath] = createObject[TableSchema.id.keyPath];\n+ return arg[0];\n+ }\n }\n }\n- else {\n- }\n }\n static newInstance({ TableSchema, DBconfig, ModelName, dataToMerge }) {\n let newInstance = new models[ModelName]();\n- Object.assign(newInstance, Object.assign({}, dataToMerge));\n+ Object.assign(newInstance, dataToMerge);\n delete newInstance.obj;\n return newInstance;\n }\n@@ -267,11 +306,13 @@ export class Model extends (_b = ModelManager) {\n const TableSchema = this.getTableSchema();\n const _methods = [{ methodName: 'update', arguments: arg }];\n const queryId = uniqueGenerator();\n- return await super.obj(DBconfig, TableSchema).update(_methods, queryId);\n+ const result = await super.obj(DBconfig, TableSchema).update(_methods, queryId);\n+ IndexedDBWorkerQueue.finish(queryId);\n+ return result;\n }\n }\n _a = Model;\n-Model.object = ({ queryId = uniqueGenerator(), DBconfig, TableSchema, some = null }) => {\n+Model.object = ({ queryId, DBconfig, TableSchema, some = null }) => {\n if (!methods[queryId]) {\n methods[queryId] = [];\n }\n@@ -305,6 +346,7 @@ Model.object = ({ queryId = uniqueGenerator(), DBconfig, TableSchema, some = nul\n return await Reflect.get(_b, \"obj\", _a).call(_a, DBconfig, TableSchema).delete(_methods, queryId);\n },\n all: async () => {\n+ // console.log('model all')\n methods[queryId].push({ methodName: 'all', arguments: null });\n const _methods = methods[queryId];\n methods[queryId] = [];\ndiff --git a/src/plugin/src/models/register-model.js b/src/plugin/src/models/register-model.js\nindex 4281870bb..37ec93cf3 100644\n--- a/src/plugin/src/models/register-model.js\n+++ b/src/plugin/src/models/register-model.js\n@@ -5,6 +5,7 @@ import { OneToOneField, ForeignKey, ManyToManyField } from './field/allFields.js\n import { uncapitalize } from '../utils.js';\n import { FieldType } from '../sql/query/interface.js';\n import { ModelMigrations } from './mode-migrations.js';\n+import { ModelManager } from './model-manager.js';\n export const models = {};\n export const modelsConfig = {};\n export const modelsLocalStorage = {};\n@@ -71,19 +72,23 @@ export class registerModel {\n }\n index++;\n }\n+ let tableSchema_;\n for (const modelClassRepresentations of entries.models) {\n const ModelName = modelClassRepresentations.getModelName();\n models[ModelName] = modelClassRepresentations;\n const tableSchema = databaseSchema.stores.find((e) => e.name == ModelName);\n+ tableSchema_ = tableSchema;\n modelsConfig[ModelName] = {\n DatabaseSchema: databaseSchema,\n TableSchema: tableSchema\n };\n }\n if (databaseSchema.type == 'indexedDB') {\n+ // console.log(JSON.stringify(databaseSchema))\n await indexedDB.migrate(databaseSchema);\n+ ModelMigrations.migrationsState(true);\n+ await ModelManager.obj(databaseSchema, tableSchema_).migrate();\n }\n- ModelMigrations.migrationsState(true);\n }\n static manyToManyRelationShip(foreignKeyField, FieldName, modelName, databaseSchema) {\n const foreignKeyFieldModel = foreignKeyField.model;",
"changeStatus": "On branch no_bug_movemente\nChanges to be committed:\n (use \"git restore --staged <file>...\" to unstage)\n\tmodified: src/environments/suport/doneIt.ts\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\tmodified: src/app/models/beast-orm.ts\n\tmodified: src/app/shared/gabinete-digital/events-to-approve/events-to-approve.page.ts\n\tmodified: src/plugin/src/connection/dbSwtich.d.ts\n\tmodified: src/plugin/src/connection/dbSwtich.js\n\tmodified: src/plugin/src/connection/indexedDb/connector.d.ts\n\tmodified: src/plugin/src/connection/indexedDb/connector.js\n\tmodified: src/plugin/src/connection/indexedDb/dynamicChange.js\n\tmodified: src/plugin/src/connection/indexedDb/indexedb.d.ts\n\tmodified: src/plugin/src/connection/indexedDb/indexedb.js\n\tmodified: src/plugin/src/connection/intreface.d.ts\n\tmodified: src/plugin/src/connection/worker.js\n\tmodified: src/plugin/src/connection/worker.queue.d.ts\n\tmodified: src/plugin/src/connection/worker.queue.js\n\tmodified: src/plugin/src/models/mode-migrations.js\n\tmodified: src/plugin/src/models/model-manager.d.ts\n\tmodified: src/plugin/src/models/model-manager.js\n\tmodified: src/plugin/src/models/model.d.ts\n\tmodified: src/plugin/src/models/model.js\n\tmodified: src/plugin/src/models/register-model.js",
"changeAuthor": "peter.maquiran"
}