{"ast":null,"code":"import _asyncToGenerator from \"C:/Users/eudes.inacio/GabineteDigital/gabinete-digital-fo/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\";\nvar _a;\nimport { hashCode, uniqueGenerator } from '../utils.js';\nimport { ModelAPIRequest } from './model-manager.js';\nimport { models, modelsConfig, modelsConfigLocalStorage } from './register-model.js';\nimport { FieldType } from '../sql/query/interface.js';\nimport * as Fields from './field/allFields.js';\nimport { taskHolder } from '../connection/taskHolder.js';\nimport { transactionOnCommit } from '../triggers/transaction.js';\nimport { ReactiveList } from '../reactive/DynamicList.js';\nlet methods = ({} = {});\n// inspire by https://github.com/brianschardt/browser-orm\nexport class Model {\n constructor(obg) {\n Object.assign(this, obg);\n }\n get(arg) {\n return Model.get(arg);\n }\n getDBSchema() {\n const modelName = this.constructor.name;\n return modelsConfig[modelName].DatabaseSchema;\n }\n getModelName() {\n return this.constructor.name;\n }\n filter(...arg) {\n return Model.filter(arg);\n }\n getTableSchema() {\n const modelName = this.constructor.name;\n return modelsConfig[modelName].TableSchema;\n }\n getPrimaryKeyValue() {\n const TableSchema = this.getTableSchema();\n const idFieldName = TableSchema.id.keyPath;\n return this[idFieldName];\n }\n save() {\n var _this = this;\n return _asyncToGenerator(function* () {\n const DBconfig = _this.getDBSchema();\n const tableSchema = _this.getTableSchema();\n const fiendsName = tableSchema.fields.map(field => field.name);\n fiendsName.push(tableSchema.id.keyPath);\n const Fields = {};\n for (let name of fiendsName) {\n Fields[name] = _this[name];\n }\n const methods = [{\n methodName: 'save',\n arguments: Fields\n }];\n const queryId = uniqueGenerator();\n yield ModelAPIRequest.obj(DBconfig, tableSchema).save(methods, queryId);\n taskHolder.finish(queryId);\n })();\n }\n delete() {\n var _this2 = this;\n return _asyncToGenerator(function* () {\n const DBconfig = _this2.getDBSchema();\n const TableSchema = _this2.getTableSchema();\n const idFieldName = TableSchema.id.keyPath;\n const createArg = {};\n createArg[idFieldName] = _this2[idFieldName];\n const _methods = [{\n methodName: 'delete',\n arguments: createArg\n }];\n const queryId = uniqueGenerator();\n yield ModelAPIRequest.obj(DBconfig, TableSchema).delete(_methods, queryId);\n taskHolder.finish(queryId);\n })();\n }\n static deleteAll() {\n var _this3 = this;\n return _asyncToGenerator(function* () {\n const DBconfig = _this3.getDBSchema();\n const TableSchema = _this3.getTableSchema();\n const idFieldName = TableSchema.id.keyPath;\n const createArg = {};\n createArg[idFieldName] = _this3[idFieldName];\n const _methods = [{\n methodName: 'delete',\n arguments: '*'\n }];\n const queryId = uniqueGenerator();\n yield ModelAPIRequest.obj(DBconfig, TableSchema).delete(_methods, queryId);\n taskHolder.finish(queryId);\n })();\n }\n all() {\n var _this4 = this;\n return _asyncToGenerator(function* () {\n const DBconfig = _this4.getDBSchema();\n const TableSchema = _this4.getTableSchema();\n const queryId = uniqueGenerator();\n const result = yield Model.object({\n queryId,\n DBconfig,\n TableSchema\n }).all();\n taskHolder.finish(queryId);\n return result;\n })();\n }\n getFields(arg) {\n return Model.getFields(arg);\n }\n formValidation(data) {\n return Model.formValidation(data);\n }\n Value(args) {\n return Model.Value(args);\n }\n static Value(args) {\n return '';\n }\n static formValidation(data) {\n const TableSchema = this.getTableSchema();\n for (let field of TableSchema.fields) {\n const Field = new Fields[field.className](field.fieldAttributes);\n const FieldValue = data[field.name];\n if (!Field.valid(FieldValue)) {\n throw 'invalid insert into ' + TableSchema.name + ', invalid value for field ' + field.name + ' = ' + JSON.stringify(FieldValue);\n }\n }\n return true;\n }\n static getModelsFields(arg) {\n var _this5 = this;\n return _asyncToGenerator(function* () {\n var _b;\n const newArgs = {};\n const TableSchema = _this5.getTableSchema();\n if ((_b = TableSchema.id) === null || _b === void 0 ? void 0 : _b.autoIncrement) {\n TableSchema.fields.push({\n keyPath: TableSchema.id.keyPath,\n name: TableSchema.id.keyPath,\n options: {\n type: FieldType.INT,\n unique: true\n }\n });\n }\n for (const fieldName in TableSchema.fields) {\n newArgs[fieldName] = arg[fieldName];\n }\n })();\n }\n static all() {\n var _this6 = this;\n return _asyncToGenerator(function* () {\n const DBconfig = _this6.getDBSchema();\n const TableSchema = _this6.getTableSchema();\n const queryId = uniqueGenerator();\n const result = yield Model.object({\n queryId,\n DBconfig,\n TableSchema\n }).all();\n taskHolder.finish(queryId);\n return result;\n })();\n }\n static get(arg) {\n var _this7 = this;\n return _asyncToGenerator(function* () {\n const _methods = [{\n methodName: 'get',\n arguments: arg\n }];\n const DBconfig = _this7.getDBSchema();\n const TableSchema = _this7.getTableSchema();\n const queryId = uniqueGenerator();\n const foundObj = yield ModelAPIRequest.obj(DBconfig, TableSchema).get(_methods, queryId);\n taskHolder.finish(queryId);\n if (!foundObj) {\n return false;\n }\n const ModelName = _this7.getModelName();\n let newInstance = _this7.newInstance({\n TableSchema,\n DBconfig,\n ModelName,\n dataToMerge: foundObj\n });\n return newInstance;\n })();\n }\n static getOrCreate(arg) {\n var _this8 = this;\n return _asyncToGenerator(function* () {\n const object = yield _this8.get(arg);\n if (!object) {\n return yield _this8.create(arg);\n } else {\n return object;\n }\n })();\n }\n static getId() {\n return hashCode(this.toString());\n }\n static getModelName() {\n return this.toString().split('(' || /s+/)[0].split(' ' || /s+/)[1];\n }\n static filter(...arg) {\n const queryId = uniqueGenerator();\n const DBconfig = this.getDBSchema();\n const TableSchema = this.getTableSchema();\n const newInstanceModel = this.NewModelInstance();\n const result = Object.assign(newInstanceModel, this.object({\n queryId,\n DBconfig,\n TableSchema,\n some: ['filter', arg]\n }));\n taskHolder.finish(queryId);\n return result;\n }\n static NewModelInstance() {\n class newInstanceModel {}\n Object.assign(newInstanceModel, this);\n return newInstanceModel;\n }\n static getDBSchema() {\n const modalName = this.getModelName();\n return modelsConfig[modalName].DatabaseSchema;\n }\n static getTableSchema() {\n const modalName = this.getModelName();\n return modelsConfig[modalName].TableSchema;\n }\n static getEmptyFields() {\n var _this9 = this;\n return _asyncToGenerator(function* () {\n const TableSchema = _this9.getTableSchema();\n const emptyFields = {};\n const fieldsName = TableSchema.fields.map(field => field.name);\n for (let fieldName of fieldsName) {\n emptyFields[fieldName] = null;\n }\n return emptyFields;\n })();\n }\n static getFields(arg) {\n const TableSchema = this.getTableSchema();\n const filteredArgs = {};\n const fieldsName = TableSchema.fields.map(field => field.name);\n for (let fieldName of fieldsName) {\n if (arg.hasOwnProperty(fieldName)) {\n filteredArgs[fieldName] = arg[fieldName];\n }\n }\n return filteredArgs;\n }\n static create(arg) {\n var _this10 = this;\n return _asyncToGenerator(function* () {\n return new Promise( /*#__PURE__*/function () {\n var _ref = _asyncToGenerator(function* (resolve, reject) {\n if (arg.constructor.name != 'Array') {\n arg = [arg];\n }\n const emptyFields = yield _this10.getEmptyFields();\n const TableSchema = _this10.getTableSchema();\n const ModelName = TableSchema.name;\n for (let i in arg) {\n arg[i] = Object.assign(Object.assign({}, emptyFields), _this10.getFields(arg[i]));\n if (!_this10.formValidation(arg[i])) {\n throw 'invalid ' + JSON.stringify(arg[i]);\n }\n }\n for (let i in arg) {\n if (TableSchema.attributes.foreignKey) {\n for (let field of TableSchema.attributes.foreignKey) {\n try {\n arg[i][field] = arg[i][field].getPrimaryKeyValue();\n } catch (error) {}\n }\n }\n }\n const _methods = [{\n methodName: 'create',\n arguments: arg\n }];\n const DBconfig = _this10.getDBSchema();\n const queryId = uniqueGenerator();\n const result = [];\n yield ModelAPIRequest.obj(DBconfig, TableSchema).create(_methods, queryId, ({\n id,\n index\n }) => {\n const insert = arg[index];\n insert[TableSchema.id.keyPath] = id;\n const instance = _this10.newInstance({\n TableSchema,\n DBconfig,\n ModelName,\n dataToMerge: insert\n });\n result.push(instance);\n });\n taskHolder.updateFunction(queryId, \"done\", () => {\n if (arg.length == 1) {\n resolve(result[0]);\n } else {\n resolve(result);\n }\n taskHolder.finish(queryId);\n });\n });\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }());\n })();\n }\n static newInstance({\n TableSchema,\n DBconfig,\n ModelName,\n dataToMerge\n }) {\n let newInstance = new models[ModelName]();\n delete newInstance[TableSchema.id.keyPath];\n if (TableSchema.fieldTypes.ManyToManyField) {\n for (let field of TableSchema.fieldTypes.ManyToManyField) {\n newInstance[field] = null;\n }\n }\n if (TableSchema.fieldTypes.OneToOneField) {\n for (let field of TableSchema.fieldTypes.ManyToManyField) {\n newInstance[field] = null;\n }\n }\n Object.assign(newInstance, dataToMerge);\n if (newInstance[TableSchema.id.keyPath]) {\n Object.defineProperty(newInstance, TableSchema.id.keyPath, {\n configurable: false,\n writable: false\n });\n }\n delete newInstance.obj;\n return newInstance;\n }\n static createOrFind(getArg, defaultCreate) {\n var _this11 = this;\n return _asyncToGenerator(function* () {\n const result = yield _this11.filter(getArg).execute();\n const TableSchema = _this11.getTableSchema();\n const DBconfig = _this11.getDBSchema();\n const ModelName = _this11.getModelName();\n let instance;\n let created;\n if (result.length == 1) {\n created = false;\n instance = yield _this11.newInstance({\n TableSchema,\n DBconfig,\n ModelName,\n dataToMerge: result[0]\n });\n } else {\n created = true;\n instance = yield _this11.create(Object.assign(getArg, defaultCreate));\n }\n return [instance, created];\n })();\n }\n static updateOrCreate(argToFind, argsToUpdate) {\n var _this12 = this;\n return _asyncToGenerator(function* () {\n let [instance, created] = yield _this12.createOrFind(argToFind, argsToUpdate);\n if (!created) {\n const params = Object.assign(argToFind, argsToUpdate);\n instance = Object.assign(instance, params);\n yield instance.save();\n }\n return instance;\n })();\n }\n static update(arg) {\n var _this13 = this;\n return _asyncToGenerator(function* () {\n arg = _this13.getFields(arg);\n const DBconfig = _this13.getDBSchema();\n const TableSchema = _this13.getTableSchema();\n const _methods = [{\n methodName: 'update',\n arguments: arg\n }];\n const queryId = uniqueGenerator();\n const result = yield ModelAPIRequest.obj(DBconfig, TableSchema).update(_methods, queryId);\n taskHolder.finish(queryId);\n return result;\n })();\n }\n static transactionOnCommit(callback) {\n return transactionOnCommit.subscribe(this, callback);\n }\n static ReactiveList(callback) {\n return ReactiveList.subscribe(this, callback);\n }\n}\n_a = Model;\nModel.object = ({\n queryId,\n DBconfig,\n TableSchema,\n some = null\n}) => {\n const ModelName = TableSchema.name;\n if (!methods[queryId]) {\n methods[queryId] = [];\n }\n if (some) {\n const methodName = some[0];\n const methodArgs = some[1];\n _a.object({\n queryId,\n DBconfig,\n TableSchema\n })[methodName](...methodArgs);\n }\n return {\n filter: (...args) => {\n methods[queryId].push({\n methodName: 'filter',\n arguments: args\n });\n const newInstanceModel = _a.NewModelInstance();\n return Object.assign(newInstanceModel, _a.object({\n DBconfig,\n TableSchema,\n queryId\n }));\n },\n execute: function () {\n var _ref2 = _asyncToGenerator(function* () {\n return new Promise( /*#__PURE__*/function () {\n var _ref3 = _asyncToGenerator(function* (resolve, reject) {\n methods[queryId].push({\n methodName: 'execute',\n arguments: null\n });\n const _methods = methods[queryId];\n methods[queryId] = [];\n const result = yield ModelAPIRequest.obj(DBconfig, TableSchema).execute(_methods, queryId);\n resolve(result);\n for (let i of result) {\n result[i] = _a.newInstance({\n TableSchema,\n DBconfig,\n ModelName,\n dataToMerge: result[i]\n });\n }\n });\n return function (_x3, _x4) {\n return _ref3.apply(this, arguments);\n };\n }());\n });\n return function execute() {\n return _ref2.apply(this, arguments);\n };\n }(),\n update: function () {\n var _ref4 = _asyncToGenerator(function* (args) {\n methods[queryId].push({\n methodName: 'update',\n arguments: args\n });\n const _methods = methods[queryId];\n methods[queryId] = [];\n return yield ModelAPIRequest.obj(DBconfig, TableSchema).update(_methods, queryId);\n });\n return function update(_x5) {\n return _ref4.apply(this, arguments);\n };\n }(),\n delete: function () {\n var _ref5 = _asyncToGenerator(function* () {\n methods[queryId].push({\n methodName: 'delete',\n arguments: null\n });\n const _methods = methods[queryId];\n methods[queryId] = [];\n return yield ModelAPIRequest.obj(DBconfig, TableSchema).delete(_methods, queryId);\n });\n return function _delete() {\n return _ref5.apply(this, arguments);\n };\n }(),\n all: function () {\n var _ref6 = _asyncToGenerator(function* () {\n return new Promise( /*#__PURE__*/function () {\n var _ref7 = _asyncToGenerator(function* (resolve, reject) {\n methods[queryId].push({\n methodName: 'all',\n arguments: null\n });\n const _methods = methods[queryId];\n methods[queryId] = [];\n const result = yield ModelAPIRequest.obj(DBconfig, TableSchema).all(_methods, queryId);\n resolve(result);\n for (let i of result) {\n result[i] = _a.newInstance({\n TableSchema,\n DBconfig,\n ModelName,\n dataToMerge: result[i]\n });\n }\n });\n return function (_x6, _x7) {\n return _ref7.apply(this, arguments);\n };\n }());\n });\n return function all() {\n return _ref6.apply(this, arguments);\n };\n }()\n };\n};\nexport class LocalStorage {\n constructor() {}\n static save(data = {}) {\n const dataToSave = this.getFields(Object.assign(this, Object.assign({}, data)));\n const key = this.getTableSchema().id;\n localStorage.setItem(key.keyPath, JSON.stringify(dataToSave));\n }\n static get() {\n const key = this.getTableSchema().id;\n const restedData = JSON.parse(localStorage.getItem(key.keyPath));\n Object.assign(this, Object.assign({}, restedData));\n return restedData;\n }\n static getModelName() {\n return this.toString().split('(' || /s+/)[0].split(' ' || /s+/)[1];\n }\n static getDBSchema() {\n const modalName = this.getModelName();\n return modelsConfigLocalStorage[modalName].DatabaseSchema;\n }\n static getTableSchema() {\n const modalName = this.getModelName();\n return modelsConfigLocalStorage[modalName].TableSchema;\n }\n static getIgnoreAttributes() {\n return false;\n }\n static ignoreAttributes(attributesStartWidth = []) {\n if (!this.getIgnoreAttributes()) {\n this.getIgnoreAttributes = () => {\n return attributesStartWidth;\n };\n }\n }\n static getFields(arg) {\n const TableSchema = this.getTableSchema();\n const filteredArgs = {};\n const fieldsName = TableSchema.fields.map(field => field.name);\n const Attributes = this.getIgnoreAttributes();\n const fieldNameFilter = fieldsName.filter(fieldName => {\n if (Attributes) {\n for (let Attribute of Attributes) {\n if (fieldName.startsWith(Attribute)) {\n return false;\n }\n }\n }\n return true;\n });\n for (let fieldName of fieldNameFilter) {\n if (arg.hasOwnProperty(fieldName)) {\n filteredArgs[fieldName] = arg[fieldName];\n }\n }\n return filteredArgs;\n }\n static formValidation(data) {\n const TableSchema = this.getTableSchema();\n for (let field of TableSchema.fields) {\n const Field = new Fields[field.className](field.fieldAttributes);\n const FieldValue = data[field.name];\n if (!Field.valid(FieldValue)) {\n throw 'invalid insert into ' + TableSchema.name + ', invalid value for field ' + field.name + ' = ' + JSON.stringify(FieldValue);\n }\n }\n return true;\n }\n static clear() {\n this.clearComponent();\n this.clearStorage();\n }\n static clearComponent() {\n const key = this.getTableSchema().id;\n }\n static clearStorage() {\n const key = this.getTableSchema().id;\n localStorage.removeItem(key.keyPath);\n }\n}","map":{"version":3,"names":["_a","hashCode","uniqueGenerator","ModelAPIRequest","models","modelsConfig","modelsConfigLocalStorage","FieldType","Fields","taskHolder","transactionOnCommit","ReactiveList","methods","Model","constructor","obg","Object","assign","get","arg","getDBSchema","modelName","name","DatabaseSchema","getModelName","filter","getTableSchema","TableSchema","getPrimaryKeyValue","idFieldName","id","keyPath","save","_this","_asyncToGenerator","DBconfig","tableSchema","fiendsName","fields","map","field","push","methodName","arguments","queryId","obj","finish","delete","_this2","createArg","_methods","deleteAll","_this3","all","_this4","result","object","getFields","formValidation","data","Value","args","Field","className","fieldAttributes","FieldValue","valid","JSON","stringify","getModelsFields","_this5","_b","newArgs","autoIncrement","options","type","INT","unique","fieldName","_this6","_this7","foundObj","ModelName","newInstance","dataToMerge","getOrCreate","_this8","create","getId","toString","split","newInstanceModel","NewModelInstance","some","modalName","getEmptyFields","_this9","emptyFields","fieldsName","filteredArgs","hasOwnProperty","_this10","Promise","_ref","resolve","reject","i","attributes","foreignKey","error","index","insert","instance","updateFunction","length","_x","_x2","apply","fieldTypes","ManyToManyField","OneToOneField","defineProperty","configurable","writable","createOrFind","getArg","defaultCreate","_this11","execute","created","updateOrCreate","argToFind","argsToUpdate","_this12","params","update","_this13","callback","subscribe","methodArgs","_ref2","_ref3","_x3","_x4","_ref4","_x5","_ref5","_delete","_ref6","_ref7","_x6","_x7","LocalStorage","dataToSave","key","localStorage","setItem","restedData","parse","getItem","getIgnoreAttributes","ignoreAttributes","attributesStartWidth","Attributes","fieldNameFilter","Attribute","startsWith","clear","clearComponent","clearStorage","removeItem"],"sources":["C:/Users/eudes.inacio/GabineteDigital/gabinete-digital-fo/node_modules/beast-orm/dist/src/models/model.js"],"sourcesContent":["var _a;\r\nimport { hashCode, uniqueGenerator } from '../utils.js';\r\nimport { ModelAPIRequest } from './model-manager.js';\r\nimport { models, modelsConfig, modelsConfigLocalStorage } from './register-model.js';\r\nimport { FieldType } from '../sql/query/interface.js';\r\nimport * as Fields from './field/allFields.js';\r\nimport { taskHolder } from '../connection/taskHolder.js';\r\nimport { transactionOnCommit } from '../triggers/transaction.js';\r\nimport { ReactiveList } from '../reactive/DynamicList.js';\r\nlet methods = {} = {};\r\n// inspire by https://github.com/brianschardt/browser-orm\r\nexport class Model {\r\n constructor(obg) {\r\n Object.assign(this, obg);\r\n }\r\n get(arg) {\r\n return Model.get(arg);\r\n }\r\n getDBSchema() {\r\n const modelName = this.constructor.name;\r\n return modelsConfig[modelName].DatabaseSchema;\r\n }\r\n getModelName() {\r\n return this.constructor.name;\r\n }\r\n filter(...arg) {\r\n return Model.filter(arg);\r\n }\r\n getTableSchema() {\r\n const modelName = this.constructor.name;\r\n return modelsConfig[modelName].TableSchema;\r\n }\r\n getPrimaryKeyValue() {\r\n const TableSchema = this.getTableSchema();\r\n const idFieldName = TableSchema.id.keyPath;\r\n return this[idFieldName];\r\n }\r\n async save() {\r\n const DBconfig = this.getDBSchema();\r\n const tableSchema = this.getTableSchema();\r\n const fiendsName = tableSchema.fields.map((field) => field.name);\r\n fiendsName.push(tableSchema.id.keyPath);\r\n const Fields = {};\r\n for (let name of fiendsName) {\r\n Fields[name] = this[name];\r\n }\r\n const methods = [{ methodName: 'save', arguments: Fields }];\r\n const queryId = uniqueGenerator();\r\n await ModelAPIRequest.obj(DBconfig, tableSchema).save(methods, queryId);\r\n taskHolder.finish(queryId);\r\n }\r\n async delete() {\r\n const DBconfig = this.getDBSchema();\r\n const TableSchema = this.getTableSchema();\r\n const idFieldName = TableSchema.id.keyPath;\r\n const createArg = {};\r\n createArg[idFieldName] = this[idFieldName];\r\n const _methods = [{ methodName: 'delete', arguments: createArg }];\r\n const queryId = uniqueGenerator();\r\n await ModelAPIRequest.obj(DBconfig, TableSchema).delete(_methods, queryId);\r\n taskHolder.finish(queryId);\r\n }\r\n static async deleteAll() {\r\n const DBconfig = this.getDBSchema();\r\n const TableSchema = this.getTableSchema();\r\n const idFieldName = TableSchema.id.keyPath;\r\n const createArg = {};\r\n createArg[idFieldName] = this[idFieldName];\r\n const _methods = [{ methodName: 'delete', arguments: '*' }];\r\n const queryId = uniqueGenerator();\r\n await ModelAPIRequest.obj(DBconfig, TableSchema).delete(_methods, queryId);\r\n taskHolder.finish(queryId);\r\n }\r\n async all() {\r\n const DBconfig = this.getDBSchema();\r\n const TableSchema = this.getTableSchema();\r\n const queryId = uniqueGenerator();\r\n const result = await Model.object({ queryId, DBconfig, TableSchema }).all();\r\n taskHolder.finish(queryId);\r\n return result;\r\n }\r\n getFields(arg) {\r\n return Model.getFields(arg);\r\n }\r\n formValidation(data) {\r\n return Model.formValidation(data);\r\n }\r\n Value(args) {\r\n return Model.Value(args);\r\n }\r\n static Value(args) {\r\n return '';\r\n }\r\n static formValidation(data) {\r\n const TableSchema = this.getTableSchema();\r\n for (let field of TableSchema.fields) {\r\n const Field = new Fields[field.className](field.fieldAttributes);\r\n const FieldValue = data[field.name];\r\n if (!Field.valid(FieldValue)) {\r\n throw ('invalid insert into ' + TableSchema.name + ', invalid value for field ' + field.name + ' = ' + JSON.stringify(FieldValue));\r\n }\r\n }\r\n return true;\r\n }\r\n static async getModelsFields(arg) {\r\n var _b;\r\n const newArgs = {};\r\n const TableSchema = this.getTableSchema();\r\n if ((_b = TableSchema.id) === null || _b === void 0 ? void 0 : _b.autoIncrement) {\r\n TableSchema.fields.push({\r\n keyPath: TableSchema.id.keyPath,\r\n name: TableSchema.id.keyPath,\r\n options: {\r\n type: FieldType.INT,\r\n unique: true\r\n }\r\n });\r\n }\r\n for (const fieldName in TableSchema.fields) {\r\n newArgs[fieldName] = arg[fieldName];\r\n }\r\n }\r\n static async all() {\r\n const DBconfig = this.getDBSchema();\r\n const TableSchema = this.getTableSchema();\r\n const queryId = uniqueGenerator();\r\n const result = await Model.object({ queryId, DBconfig, TableSchema }).all();\r\n taskHolder.finish(queryId);\r\n return result;\r\n }\r\n static async get(arg) {\r\n const _methods = [{ methodName: 'get', arguments: arg }];\r\n const DBconfig = this.getDBSchema();\r\n const TableSchema = this.getTableSchema();\r\n const queryId = uniqueGenerator();\r\n const foundObj = await ModelAPIRequest.obj(DBconfig, TableSchema).get(_methods, queryId);\r\n taskHolder.finish(queryId);\r\n if (!foundObj) {\r\n return false;\r\n }\r\n const ModelName = this.getModelName();\r\n let newInstance = this.newInstance({ TableSchema, DBconfig, ModelName, dataToMerge: foundObj });\r\n return newInstance;\r\n }\r\n static async getOrCreate(arg) {\r\n const object = await this.get(arg);\r\n if (!object) {\r\n return await this.create(arg);\r\n }\r\n else {\r\n return object;\r\n }\r\n }\r\n static getId() {\r\n return hashCode(this.toString());\r\n }\r\n static getModelName() {\r\n return this.toString().split('(' || /s+/)[0].split(' ' || /s+/)[1];\r\n }\r\n static filter(...arg) {\r\n const queryId = uniqueGenerator();\r\n const DBconfig = this.getDBSchema();\r\n const TableSchema = this.getTableSchema();\r\n const newInstanceModel = this.NewModelInstance();\r\n const result = Object.assign(newInstanceModel, this.object({ queryId, DBconfig, TableSchema, some: ['filter', arg] }));\r\n taskHolder.finish(queryId);\r\n return result;\r\n }\r\n static NewModelInstance() {\r\n class newInstanceModel {\r\n }\r\n Object.assign(newInstanceModel, this);\r\n return newInstanceModel;\r\n }\r\n static getDBSchema() {\r\n const modalName = this.getModelName();\r\n return modelsConfig[modalName].DatabaseSchema;\r\n }\r\n static getTableSchema() {\r\n const modalName = this.getModelName();\r\n return modelsConfig[modalName].TableSchema;\r\n }\r\n static async getEmptyFields() {\r\n const TableSchema = this.getTableSchema();\r\n const emptyFields = {};\r\n const fieldsName = TableSchema.fields.map((field) => field.name);\r\n for (let fieldName of fieldsName) {\r\n emptyFields[fieldName] = null;\r\n }\r\n return emptyFields;\r\n }\r\n static getFields(arg) {\r\n const TableSchema = this.getTableSchema();\r\n const filteredArgs = {};\r\n const fieldsName = TableSchema.fields.map((field) => field.name);\r\n for (let fieldName of fieldsName) {\r\n if (arg.hasOwnProperty(fieldName)) {\r\n filteredArgs[fieldName] = arg[fieldName];\r\n }\r\n }\r\n return filteredArgs;\r\n }\r\n static async create(arg) {\r\n return new Promise(async (resolve, reject) => {\r\n if (arg.constructor.name != 'Array') {\r\n arg = [arg];\r\n }\r\n const emptyFields = await this.getEmptyFields();\r\n const TableSchema = this.getTableSchema();\r\n const ModelName = TableSchema.name;\r\n for (let i in arg) {\r\n arg[i] = Object.assign(Object.assign({}, emptyFields), this.getFields(arg[i]));\r\n if (!this.formValidation(arg[i])) {\r\n throw ('invalid ' + JSON.stringify(arg[i]));\r\n }\r\n }\r\n for (let i in arg) {\r\n if (TableSchema.attributes.foreignKey) {\r\n for (let field of TableSchema.attributes.foreignKey) {\r\n try {\r\n arg[i][field] = arg[i][field].getPrimaryKeyValue();\r\n }\r\n catch (error) { }\r\n }\r\n }\r\n }\r\n const _methods = [{ methodName: 'create', arguments: arg }];\r\n const DBconfig = this.getDBSchema();\r\n const queryId = uniqueGenerator();\r\n const result = [];\r\n await ModelAPIRequest.obj(DBconfig, TableSchema).create(_methods, queryId, ({ id, index }) => {\r\n const insert = arg[index];\r\n insert[TableSchema.id.keyPath] = id;\r\n const instance = this.newInstance({ TableSchema, DBconfig, ModelName, dataToMerge: insert });\r\n result.push(instance);\r\n });\r\n taskHolder.updateFunction(queryId, \"done\", () => {\r\n if (arg.length == 1) {\r\n resolve(result[0]);\r\n }\r\n else {\r\n resolve(result);\r\n }\r\n taskHolder.finish(queryId);\r\n });\r\n });\r\n }\r\n static newInstance({ TableSchema, DBconfig, ModelName, dataToMerge }) {\r\n let newInstance = new models[ModelName]();\r\n delete newInstance[TableSchema.id.keyPath];\r\n if (TableSchema.fieldTypes.ManyToManyField) {\r\n for (let field of TableSchema.fieldTypes.ManyToManyField) {\r\n newInstance[field] = null;\r\n }\r\n }\r\n if (TableSchema.fieldTypes.OneToOneField) {\r\n for (let field of TableSchema.fieldTypes.ManyToManyField) {\r\n newInstance[field] = null;\r\n }\r\n }\r\n Object.assign(newInstance, dataToMerge);\r\n if (newInstance[TableSchema.id.keyPath]) {\r\n Object.defineProperty(newInstance, TableSchema.id.keyPath, {\r\n configurable: false,\r\n writable: false\r\n });\r\n }\r\n delete newInstance.obj;\r\n return newInstance;\r\n }\r\n static async createOrFind(getArg, defaultCreate) {\r\n const result = await this.filter(getArg).execute();\r\n const TableSchema = this.getTableSchema();\r\n const DBconfig = this.getDBSchema();\r\n const ModelName = this.getModelName();\r\n let instance;\r\n let created;\r\n if (result.length == 1) {\r\n created = false;\r\n instance = await this.newInstance({ TableSchema, DBconfig, ModelName, dataToMerge: result[0] });\r\n }\r\n else {\r\n created = true;\r\n instance = await this.create(Object.assign(getArg, defaultCreate));\r\n }\r\n return [instance, created];\r\n }\r\n static async updateOrCreate(argToFind, argsToUpdate) {\r\n let [instance, created] = await this.createOrFind(argToFind, argsToUpdate);\r\n if (!created) {\r\n const params = Object.assign(argToFind, argsToUpdate);\r\n instance = Object.assign(instance, params);\r\n await instance.save();\r\n }\r\n return instance;\r\n }\r\n static async update(arg) {\r\n arg = this.getFields(arg);\r\n const DBconfig = this.getDBSchema();\r\n const TableSchema = this.getTableSchema();\r\n const _methods = [{ methodName: 'update', arguments: arg }];\r\n const queryId = uniqueGenerator();\r\n const result = await ModelAPIRequest.obj(DBconfig, TableSchema).update(_methods, queryId);\r\n taskHolder.finish(queryId);\r\n return result;\r\n }\r\n static transactionOnCommit(callback) {\r\n return transactionOnCommit.subscribe(this, callback);\r\n }\r\n static ReactiveList(callback) {\r\n return ReactiveList.subscribe(this, callback);\r\n }\r\n}\r\n_a = Model;\r\nModel.object = ({ queryId, DBconfig, TableSchema, some = null }) => {\r\n const ModelName = TableSchema.name;\r\n if (!methods[queryId]) {\r\n methods[queryId] = [];\r\n }\r\n if (some) {\r\n const methodName = some[0];\r\n const methodArgs = some[1];\r\n _a.object({ queryId, DBconfig, TableSchema })[methodName](...methodArgs);\r\n }\r\n return {\r\n filter: (...args) => {\r\n methods[queryId].push({ methodName: 'filter', arguments: args });\r\n const newInstanceModel = _a.NewModelInstance();\r\n return Object.assign(newInstanceModel, _a.object({ DBconfig, TableSchema, queryId }));\r\n },\r\n execute: async () => {\r\n return new Promise(async (resolve, reject) => {\r\n methods[queryId].push({ methodName: 'execute', arguments: null });\r\n const _methods = methods[queryId];\r\n methods[queryId] = [];\r\n const result = await ModelAPIRequest.obj(DBconfig, TableSchema).execute(_methods, queryId);\r\n resolve(result);\r\n for (let i of result) {\r\n result[i] = _a.newInstance({ TableSchema, DBconfig, ModelName, dataToMerge: result[i] });\r\n }\r\n });\r\n },\r\n update: async (args) => {\r\n methods[queryId].push({ methodName: 'update', arguments: args });\r\n const _methods = methods[queryId];\r\n methods[queryId] = [];\r\n return await ModelAPIRequest.obj(DBconfig, TableSchema).update(_methods, queryId);\r\n },\r\n delete: async () => {\r\n methods[queryId].push({ methodName: 'delete', arguments: null });\r\n const _methods = methods[queryId];\r\n methods[queryId] = [];\r\n return await ModelAPIRequest.obj(DBconfig, TableSchema).delete(_methods, queryId);\r\n },\r\n all: async () => {\r\n return new Promise(async (resolve, reject) => {\r\n methods[queryId].push({ methodName: 'all', arguments: null });\r\n const _methods = methods[queryId];\r\n methods[queryId] = [];\r\n const result = await ModelAPIRequest.obj(DBconfig, TableSchema).all(_methods, queryId);\r\n resolve(result);\r\n for (let i of result) {\r\n result[i] = _a.newInstance({ TableSchema, DBconfig, ModelName, dataToMerge: result[i] });\r\n }\r\n });\r\n }\r\n };\r\n};\r\nexport class LocalStorage {\r\n constructor() { }\r\n static save(data = {}) {\r\n const dataToSave = this.getFields(Object.assign(this, Object.assign({}, data)));\r\n const key = this.getTableSchema().id;\r\n localStorage.setItem(key.keyPath, JSON.stringify(dataToSave));\r\n }\r\n static get() {\r\n const key = this.getTableSchema().id;\r\n const restedData = JSON.parse(localStorage.getItem(key.keyPath));\r\n Object.assign(this, Object.assign({}, restedData));\r\n return restedData;\r\n }\r\n static getModelName() {\r\n return this.toString().split('(' || /s+/)[0].split(' ' || /s+/)[1];\r\n }\r\n static getDBSchema() {\r\n const modalName = this.getModelName();\r\n return modelsConfigLocalStorage[modalName].DatabaseSchema;\r\n }\r\n static getTableSchema() {\r\n const modalName = this.getModelName();\r\n return modelsConfigLocalStorage[modalName].TableSchema;\r\n }\r\n static getIgnoreAttributes() {\r\n return false;\r\n }\r\n static ignoreAttributes(attributesStartWidth = []) {\r\n if (!this.getIgnoreAttributes()) {\r\n this.getIgnoreAttributes = () => {\r\n return attributesStartWidth;\r\n };\r\n }\r\n }\r\n static getFields(arg) {\r\n const TableSchema = this.getTableSchema();\r\n const filteredArgs = {};\r\n const fieldsName = TableSchema.fields.map((field) => field.name);\r\n const Attributes = this.getIgnoreAttributes();\r\n const fieldNameFilter = fieldsName.filter((fieldName) => {\r\n if (Attributes) {\r\n for (let Attribute of Attributes) {\r\n if (fieldName.startsWith(Attribute)) {\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n });\r\n for (let fieldName of fieldNameFilter) {\r\n if (arg.hasOwnProperty(fieldName)) {\r\n filteredArgs[fieldName] = arg[fieldName];\r\n }\r\n }\r\n return filteredArgs;\r\n }\r\n static formValidation(data) {\r\n const TableSchema = this.getTableSchema();\r\n for (let field of TableSchema.fields) {\r\n const Field = new Fields[field.className](field.fieldAttributes);\r\n const FieldValue = data[field.name];\r\n if (!Field.valid(FieldValue)) {\r\n throw ('invalid insert into ' + TableSchema.name + ', invalid value for field ' + field.name + ' = ' + JSON.stringify(FieldValue));\r\n }\r\n }\r\n return true;\r\n }\r\n static clear() {\r\n this.clearComponent();\r\n this.clearStorage();\r\n }\r\n static clearComponent() {\r\n const key = this.getTableSchema().id;\r\n }\r\n static clearStorage() {\r\n const key = this.getTableSchema().id;\r\n localStorage.removeItem(key.keyPath);\r\n }\r\n}\r\n"],"mappings":"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"},"metadata":{},"sourceType":"module"}