tspace-mysql 1.1.9 → 1.2.0

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/README.md CHANGED
@@ -32,6 +32,8 @@ npm install tspace-mysql --save
32
32
  - [Make Model](#make-model)
33
33
  - [Make Migration](#make-migration)
34
34
  - [Migrate](#migrate)
35
+ - [Query](#query)
36
+ - [Menerate Models](#generate-models)
35
37
  - [Blueprint](#blueprint)
36
38
 
37
39
  ## Configuration
@@ -667,7 +669,6 @@ you may use a basic cli :
667
669
  npm install tspace-mysql -g
668
670
 
669
671
  ```
670
-
671
672
  ## Make Model
672
673
  Command will be placed Model in the specific directory
673
674
  ```js
@@ -745,6 +746,20 @@ tspace-mysql migrate --dir=App/Models/Migrations --type=js
745
746
  // => migrate all schemas in folder <Migrations>. created into database
746
747
  ```
747
748
 
749
+ # Query
750
+ Command will be execute a query
751
+ ```js
752
+ tspace-mysql query "SELECT * FROM users"
753
+
754
+ ```
755
+
756
+ # Generate Models
757
+ Command will be generate models from table in database
758
+ ```js
759
+ tspace-mysql generate:models
760
+
761
+ ```
762
+
748
763
  ## Blueprint
749
764
  Schema table created by command make:migration, you may use the:
750
765
  ```js
@@ -20,21 +20,20 @@ exports.default = (cmd) => {
20
20
  });
21
21
  }
22
22
  }
23
- const snake2Pascal = (data) => {
23
+ const snakeCaseToPascal = (data) => {
24
24
  let str = data.split('_');
25
25
  for (let i = 0; i < str.length; i++) {
26
26
  str[i] = str[i].slice(0, 1).toUpperCase() + str[i].slice(1, str[i].length);
27
27
  }
28
28
  return str.join('');
29
29
  };
30
- new lib_1.DB().rawQuery('SHOW TABLES')
31
- .then(tables => {
30
+ new lib_1.DB().rawQuery('SHOW TABLES').then(tables => {
32
31
  var _a;
33
32
  for (let i = 0; i < tables.length; i++) {
34
33
  const table = String((_a = Object.values(tables[i])) === null || _a === void 0 ? void 0 : _a.shift());
35
- const model = snake2Pascal(pluralize_1.default.singular(table));
34
+ const model = snakeCaseToPascal(pluralize_1.default.singular(table));
36
35
  const data = (0, model_1.default)(model, npm);
37
- fs.writeFile(`${dir}/${model}.${type !== null && type !== void 0 ? type : 'ts'}`, data, (err) => {
36
+ fs.writeFile(`${cwd}/${dir}/${model}${type !== null && type !== void 0 ? type : '.ts'}`, data, (err) => {
38
37
  if (err)
39
38
  throw err;
40
39
  });
package/dist/cli/index.js CHANGED
@@ -47,5 +47,12 @@ try {
47
47
  commands[process.argv[2]](cmd);
48
48
  }
49
49
  catch (err) {
50
- console.log(`Readme https://www.npmjs.com/package/tspace-mysql`);
50
+ console.log(`
51
+ tspace-mysql make:model User --m --dir=app/Models
52
+ tspace-mysql make:migration users --dir=app/Models/Migrations
53
+ tspace-mysql migrate --dir=App/Models/Migrations --type=js
54
+ tspace-mysql query "SELECT * FROM users"
55
+ tspace-mysql generate:models --dir=app/Models
56
+ `);
57
+ console.log(`Read more https://www.npmjs.com/package/tspace-mysql`);
51
58
  }
@@ -3,5 +3,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const lib_1 = require("../../lib");
4
4
  exports.default = (cmd) => {
5
5
  const { sql } = cmd;
6
- new lib_1.DB().rawQuery(sql).then(result => console.log(result));
6
+ new lib_1.DB().rawQuery(sql === null || sql === void 0 ? void 0 : sql.replace(/`/g, '')).then(result => console.log(result));
7
7
  };
@@ -98,6 +98,22 @@ class PoolConnection {
98
98
  }
99
99
  _loadOptions() {
100
100
  try {
101
+ /**
102
+ *
103
+ * @Json connection
104
+ *
105
+ "host" : "",
106
+ "port" : "",
107
+ "database" : "",
108
+ "user" : "",
109
+ "password" : "",
110
+ "connectionLimit" : "",
111
+ "dateStrings" : "",
112
+ "connectTimeout" : "",
113
+ "waitForConnections" : "",
114
+ "queueLimit" : "",
115
+ "charset" : ""
116
+ */
101
117
  const jsonPath = path_1.default.join(path_1.default.resolve(), 'tspace-mysql.json');
102
118
  const jsonOptionsExists = fs_1.default.existsSync(jsonPath);
103
119
  if (!jsonOptionsExists)
@@ -1,8 +1,8 @@
1
1
  declare const CONSTANTS: {
2
- [x: string]: string | Object;
2
+ [key: string]: string | Object;
3
3
  };
4
4
  export { CONSTANTS };
5
5
  declare const _default: Readonly<{
6
- [x: string]: string | Object;
6
+ [key: string]: string | Object;
7
7
  }>;
8
8
  export default _default;
@@ -1,4 +1,5 @@
1
1
  import Database from './Database';
2
+ import { Connection, ConnectionOptions } from './Interface';
2
3
  declare abstract class AbstractDB extends Database {
3
4
  abstract table(tableName: string): void;
4
5
  abstract beginTransaction(): Promise<any>;
@@ -11,6 +12,7 @@ declare abstract class AbstractDB extends Database {
11
12
  when: string;
12
13
  then: string;
13
14
  }[], final?: string): string | [];
15
+ abstract getConnection(options: ConnectionOptions): Connection;
14
16
  }
15
17
  export { AbstractDB };
16
18
  export default AbstractDB;
@@ -23,7 +23,7 @@ declare abstract class AbstractDatabase {
23
23
  };
24
24
  protected $attributes: {
25
25
  [key: string]: any;
26
- };
26
+ } | null;
27
27
  abstract void(): this;
28
28
  abstract debug(): this;
29
29
  abstract dd(): this;
@@ -28,7 +28,7 @@ class AbstractDatabase {
28
28
  set: (value) => { },
29
29
  check: (value) => true || false
30
30
  };
31
- this.$attributes = {};
31
+ this.$attributes = null;
32
32
  }
33
33
  }
34
34
  exports.default = AbstractDatabase;
@@ -32,6 +32,7 @@ declare abstract class AbstractModel extends Database {
32
32
  abstract with(...nameRelations: string[]): this;
33
33
  abstract withQuery(nameRelations: string, callback: Function): this;
34
34
  abstract withExists(...nameRelations: string[]): this;
35
+ abstract has(...nameRelations: string[]): this;
35
36
  abstract relations(...nameRelations: string[]): this;
36
37
  abstract relationQuery(nameRelations: string, callback: Function): this;
37
38
  abstract relationsExists(...nameRelations: string[]): this;
@@ -336,7 +336,7 @@ declare class Database extends AbstractDatabase {
336
336
  */
337
337
  dd(debug?: boolean): this;
338
338
  /**
339
- * hook when execute returned result to callback function
339
+ * hook function when execute returned result to callback function
340
340
  * @param {Function} func function for callback result
341
341
  * @return {this}
342
342
  */
@@ -654,7 +654,6 @@ declare class Database extends AbstractDatabase {
654
654
  * @return {Promise<boolean>}
655
655
  */
656
656
  backupToFile({ filePath, database, connection }: BackupToFile): Promise<void>;
657
- genrateModel(): Promise<void>;
658
657
  /**
659
658
  *
660
659
  * fake data
@@ -25,7 +25,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.Database = void 0;
27
27
  const fs_1 = __importDefault(require("fs"));
28
- const pluralize_1 = __importDefault(require("pluralize"));
29
28
  const sql_formatter_1 = require("sql-formatter");
30
29
  const AbstractDatabase_1 = __importDefault(require("./AbstractDatabase"));
31
30
  const utils_1 = __importDefault(require("../utils"));
@@ -938,7 +937,7 @@ class Database extends AbstractDatabase_1.default {
938
937
  return this;
939
938
  }
940
939
  /**
941
- * hook when execute returned result to callback function
940
+ * hook function when execute returned result to callback function
942
941
  * @param {Function} func function for callback result
943
942
  * @return {this}
944
943
  */
@@ -1654,10 +1653,9 @@ class Database extends AbstractDatabase_1.default {
1654
1653
  * @return {Promise<any>} promise
1655
1654
  */
1656
1655
  save() {
1657
- var _a;
1658
1656
  return __awaiter(this, void 0, void 0, function* () {
1659
1657
  const attributes = this.$attributes;
1660
- if ((_a = Object.keys(attributes)) === null || _a === void 0 ? void 0 : _a.length) {
1658
+ if (attributes != null) {
1661
1659
  while (true) {
1662
1660
  if (this.$state.get('WHERE')) {
1663
1661
  const query = this._queryUpdate(attributes);
@@ -1903,39 +1901,6 @@ class Database extends AbstractDatabase_1.default {
1903
1901
  return;
1904
1902
  });
1905
1903
  }
1906
- genrateModel() {
1907
- return __awaiter(this, void 0, void 0, function* () {
1908
- const tables = yield this.queryStatement(this.$constants('SHOW_TABLES'));
1909
- fs_1.default.mkdirSync('Model', {
1910
- recursive: true
1911
- });
1912
- const snake2Pascal = (data) => {
1913
- let str = data.split('_');
1914
- for (let i = 0; i < str.length; i++) {
1915
- str[i] = str[i].slice(0, 1).toUpperCase() + str[i].slice(1, str[i].length);
1916
- }
1917
- return str.join('');
1918
- };
1919
- new DB_1.default().rawQuery('SHOW TABLES')
1920
- .then(tables => {
1921
- var _a;
1922
- const models = [];
1923
- for (let i = 0; i < tables.length; i++) {
1924
- const table = String((_a = Object.values(tables[i])) === null || _a === void 0 ? void 0 : _a.shift());
1925
- const model = snake2Pascal(pluralize_1.default.singular(table));
1926
- fs_1.default.writeFileSync(`Model/${model}.ts`, `import { ${model} } from 'tspace-mysql'`);
1927
- // console.log(`Model : '${model}' created successfully`)
1928
- models.push(`'${model}' created successfully`);
1929
- }
1930
- console.table(models.map((m, i) => {
1931
- return { model: i, name: m };
1932
- }));
1933
- console.log('\nGenerate Models has completed');
1934
- })
1935
- .catch(err => console.log(err));
1936
- return;
1937
- });
1938
- }
1939
1904
  /**
1940
1905
  *
1941
1906
  * fake data
@@ -592,6 +592,7 @@ declare class Model extends AbstractModel {
592
592
  private _assertError;
593
593
  private _functionRelationName;
594
594
  private _handleRelationsQuery;
595
+ private _validateMethod;
595
596
  private _initialModel;
596
597
  }
597
598
  export { Model };
@@ -37,7 +37,8 @@ class Model extends AbstractModel_1.AbstractModel {
37
37
  * define for initialize of models
38
38
  * @return {void} void
39
39
  */
40
- define() { }
40
+ define() {
41
+ }
41
42
  /**
42
43
  *
43
44
  * Assign function callback in model
@@ -863,6 +864,7 @@ class Model extends AbstractModel_1.AbstractModel {
863
864
  first() {
864
865
  var _a;
865
866
  return __awaiter(this, void 0, void 0, function* () {
867
+ this._validateMethod('first');
866
868
  if ((_a = this.$state.get('EXCEPT')) === null || _a === void 0 ? void 0 : _a.length)
867
869
  this.select(yield this.exceptColumns());
868
870
  let sql = this._buildQueryModel();
@@ -902,6 +904,7 @@ class Model extends AbstractModel_1.AbstractModel {
902
904
  firstOrError(message, options) {
903
905
  var _a;
904
906
  return __awaiter(this, void 0, void 0, function* () {
907
+ this._validateMethod('firstOrError');
905
908
  if ((_a = this.$state.get('EXCEPT')) === null || _a === void 0 ? void 0 : _a.length)
906
909
  this.select(yield this.exceptColumns());
907
910
  let sql = this._buildQueryModel();
@@ -922,8 +925,21 @@ class Model extends AbstractModel_1.AbstractModel {
922
925
  * @return {promise<any>}
923
926
  */
924
927
  findOneOrError(message, options) {
928
+ var _a;
925
929
  return __awaiter(this, void 0, void 0, function* () {
926
- return this.firstOrError(message, options);
930
+ this._validateMethod('findOneOrError');
931
+ if ((_a = this.$state.get('EXCEPT')) === null || _a === void 0 ? void 0 : _a.length)
932
+ this.select(yield this.exceptColumns());
933
+ let sql = this._buildQueryModel();
934
+ if (!sql.includes(this.$constants('LIMIT'))) {
935
+ sql = `${sql} ${this.$constants('LIMIT')} 1`;
936
+ return yield this._execute({ sql, type: 'FIRST_OR_ERROR', message, options });
937
+ }
938
+ sql = sql.replace(this.$state.get('LIMIT'), `${this.$constants('LIMIT')} 1`);
939
+ if (this.$state.get('WITH_EXISTS')) {
940
+ sql = this._queryRelationsExists();
941
+ }
942
+ return yield this._execute({ sql, type: 'FIRST_OR_ERROR', message, options });
927
943
  });
928
944
  }
929
945
  /**
@@ -950,6 +966,8 @@ class Model extends AbstractModel_1.AbstractModel {
950
966
  */
951
967
  find(id) {
952
968
  return __awaiter(this, void 0, void 0, function* () {
969
+ this._validateMethod('find');
970
+ this._handleSoftDelete();
953
971
  const sql = [
954
972
  `${this.$constants('SELECT')}`,
955
973
  `*`,
@@ -970,6 +988,7 @@ class Model extends AbstractModel_1.AbstractModel {
970
988
  get() {
971
989
  var _a;
972
990
  return __awaiter(this, void 0, void 0, function* () {
991
+ this._validateMethod('get');
973
992
  if ((_a = this.$state.get('EXCEPT')) === null || _a === void 0 ? void 0 : _a.length)
974
993
  this.select(yield this.exceptColumns());
975
994
  let sql = this._buildQueryModel();
@@ -989,6 +1008,7 @@ class Model extends AbstractModel_1.AbstractModel {
989
1008
  findMany() {
990
1009
  var _a;
991
1010
  return __awaiter(this, void 0, void 0, function* () {
1011
+ this._validateMethod('findMany');
992
1012
  if ((_a = this.$state.get('EXCEPT')) === null || _a === void 0 ? void 0 : _a.length)
993
1013
  this.select(yield this.exceptColumns());
994
1014
  const sql = this._buildQueryModel();
@@ -1006,6 +1026,7 @@ class Model extends AbstractModel_1.AbstractModel {
1006
1026
  pagination(paginationOptions) {
1007
1027
  var _a, _b;
1008
1028
  return __awaiter(this, void 0, void 0, function* () {
1029
+ this._validateMethod('pagination');
1009
1030
  let limit = 15;
1010
1031
  let page = 1;
1011
1032
  if (paginationOptions != null) {
@@ -1050,14 +1071,42 @@ class Model extends AbstractModel_1.AbstractModel {
1050
1071
  * @return {promise<Pagination>}
1051
1072
  */
1052
1073
  paginate(paginationOptions) {
1074
+ var _a, _b;
1053
1075
  return __awaiter(this, void 0, void 0, function* () {
1076
+ this._validateMethod('paginate');
1054
1077
  let limit = 15;
1055
1078
  let page = 1;
1056
1079
  if (paginationOptions != null) {
1057
1080
  limit = (paginationOptions === null || paginationOptions === void 0 ? void 0 : paginationOptions.limit) || limit;
1058
1081
  page = (paginationOptions === null || paginationOptions === void 0 ? void 0 : paginationOptions.page) || page;
1059
1082
  }
1060
- return yield this.pagination({ limit, page });
1083
+ this._assertError((_a = this.$logger) === null || _a === void 0 ? void 0 : _a.check('limit'), `this '[pagination]' can't support '[limit]' method`);
1084
+ if ((_b = this.$state.get('EXCEPT')) === null || _b === void 0 ? void 0 : _b.length)
1085
+ this.select(yield this.exceptColumns());
1086
+ const offset = (page - 1) * limit;
1087
+ this.$state.set('PER_PAGE', limit);
1088
+ this.$state.set('PAGE', page);
1089
+ let sql = this._buildQueryModel();
1090
+ if (this.$state.get('WITH_EXISTS')) {
1091
+ sql = this._queryRelationsExists();
1092
+ }
1093
+ if (!sql.includes(this.$constants('LIMIT'))) {
1094
+ sql = [
1095
+ `${sql}`,
1096
+ `${this.$constants('LIMIT')}`,
1097
+ `${limit}`,
1098
+ `${this.$constants('OFFSET')}`,
1099
+ `${offset}`
1100
+ ].join(' ');
1101
+ return yield this._execute({ sql, type: 'PAGINATION' });
1102
+ }
1103
+ sql = sql.replace(this.$state.get('LIMIT'), [
1104
+ `${this.$constants('LIMIT')}`,
1105
+ `${limit}`,
1106
+ `${this.$constants('OFFSET')}`,
1107
+ `${offset}`
1108
+ ].join(' '));
1109
+ return yield this._execute({ sql, type: 'PAGINATION' });
1061
1110
  });
1062
1111
  }
1063
1112
  /**
@@ -1264,10 +1313,9 @@ class Model extends AbstractModel_1.AbstractModel {
1264
1313
  * @return {Promise<any>}
1265
1314
  */
1266
1315
  save() {
1267
- var _a;
1268
1316
  return __awaiter(this, void 0, void 0, function* () {
1269
1317
  const attributes = this.$attributes;
1270
- if ((_a = Object.keys(attributes)) === null || _a === void 0 ? void 0 : _a.length) {
1318
+ if (attributes != null) {
1271
1319
  while (true) {
1272
1320
  if (this.$state.get('WHERE')) {
1273
1321
  const query = this._queryUpdateModel(attributes);
@@ -1371,54 +1419,48 @@ class Model extends AbstractModel_1.AbstractModel {
1371
1419
  }
1372
1420
  _valueInRelation(relationModel) {
1373
1421
  var _a, _b;
1374
- try {
1375
- const relation = relationModel.relation;
1376
- const model = (_a = relationModel.model) === null || _a === void 0 ? void 0 : _a.name;
1377
- const table = relationModel.freezeTable
1378
- ? relationModel.freezeTable
1379
- : (_b = relationModel.query) === null || _b === void 0 ? void 0 : _b._tableName();
1380
- const name = relationModel.name;
1381
- const as = relationModel.as;
1382
- this._assertError(!model || model == null, 'not found model');
1383
- let localKey = relationModel.localKey
1384
- ? relationModel.localKey
1385
- : this.$state.get('PRIMARY_KEY');
1386
- let foreignKey = relationModel.foreignKey
1387
- ? relationModel.foreignKey
1388
- : this._valuePattern([
1389
- `${pluralize_1.default.singular(this.$state.get('TABLE_NAME').replace(/\`/g, ''))}`,
1390
- `${this.$state.get('PRIMARY_KEY')}`
1391
- ].join('_'));
1392
- const checkRelationIsBelongsTo = [
1393
- relationModel.localKey == null,
1394
- relationModel.foreignKey == null,
1395
- relation === this.$constants('RELATIONSHIP').belongsTo
1396
- // || relation === this.$constants('RELATIONSHIP').belongsToMany
1397
- ].every(r => r);
1398
- if (checkRelationIsBelongsTo) {
1399
- foreignKey = localKey;
1400
- localKey = this._valuePattern([
1401
- `${pluralize_1.default.singular(table !== null && table !== void 0 ? table : '')}`,
1402
- `${this.$state.get('PRIMARY_KEY')}`
1403
- ].join('_'));
1404
- }
1405
- const checkRelationIsBelongsToMany = [
1406
- relationModel.localKey == null,
1407
- relationModel.foreignKey == null,
1408
- relation === this.$constants('RELATIONSHIP').belongsToMany
1409
- ].every(r => r);
1410
- if (checkRelationIsBelongsToMany) {
1411
- localKey = this._valuePattern([
1412
- `${pluralize_1.default.singular(table !== null && table !== void 0 ? table : '')}`,
1413
- `${this.$state.get('PRIMARY_KEY')}`
1414
- ].join('_'));
1415
- foreignKey = 'id';
1416
- }
1417
- return { name, as, relation, table, localKey, foreignKey, model };
1422
+ const relation = relationModel.relation;
1423
+ const model = (_a = relationModel.model) === null || _a === void 0 ? void 0 : _a.name;
1424
+ const table = relationModel.freezeTable
1425
+ ? relationModel.freezeTable
1426
+ : (_b = relationModel.query) === null || _b === void 0 ? void 0 : _b._tableName();
1427
+ const name = relationModel.name;
1428
+ const as = relationModel.as;
1429
+ this._assertError(!model || model == null, 'not found model');
1430
+ let localKey = relationModel.localKey
1431
+ ? relationModel.localKey
1432
+ : this.$state.get('PRIMARY_KEY');
1433
+ let foreignKey = relationModel.foreignKey
1434
+ ? relationModel.foreignKey
1435
+ : this._valuePattern([
1436
+ `${pluralize_1.default.singular(this.$state.get('TABLE_NAME').replace(/\`/g, ''))}`,
1437
+ `${this.$state.get('PRIMARY_KEY')}`
1438
+ ].join('_'));
1439
+ const checkRelationIsBelongsTo = [
1440
+ relationModel.localKey == null,
1441
+ relationModel.foreignKey == null,
1442
+ relation === this.$constants('RELATIONSHIP').belongsTo
1443
+ ].every(r => r);
1444
+ if (checkRelationIsBelongsTo) {
1445
+ foreignKey = localKey;
1446
+ localKey = this._valuePattern([
1447
+ `${pluralize_1.default.singular(table !== null && table !== void 0 ? table : '')}`,
1448
+ `${this.$state.get('PRIMARY_KEY')}`
1449
+ ].join('_'));
1418
1450
  }
1419
- catch (e) {
1420
- throw new Error('invalid callback query');
1451
+ const checkRelationIsBelongsToMany = [
1452
+ relationModel.localKey == null,
1453
+ relationModel.foreignKey == null,
1454
+ relation === this.$constants('RELATIONSHIP').belongsToMany
1455
+ ].every(r => r);
1456
+ if (checkRelationIsBelongsToMany) {
1457
+ localKey = this._valuePattern([
1458
+ `${pluralize_1.default.singular(table !== null && table !== void 0 ? table : '')}`,
1459
+ `${this.$state.get('PRIMARY_KEY')}`
1460
+ ].join('_'));
1461
+ foreignKey = 'id';
1421
1462
  }
1463
+ return { name, as, relation, table, localKey, foreignKey, model };
1422
1464
  }
1423
1465
  _handleSoftDelete() {
1424
1466
  if (this.$state.get('SOFT_DELETE')) {
@@ -1617,7 +1659,7 @@ class Model extends AbstractModel_1.AbstractModel {
1617
1659
  const localKeyId = parents.map((parent) => {
1618
1660
  const data = parent[localKey];
1619
1661
  if (!parent.hasOwnProperty(localKey)) {
1620
- this._assertError(data == null, "unknown relationship without primary or foreign key");
1662
+ this._assertError(data == null, `unknown relationship without primary or foreign key in relation : [${relation === null || relation === void 0 ? void 0 : relation.name}]`);
1621
1663
  }
1622
1664
  return data;
1623
1665
  }).filter((data) => data != null);
@@ -1625,7 +1667,7 @@ class Model extends AbstractModel_1.AbstractModel {
1625
1667
  if (!dataPerentId.length && this.$state.get('WITH_EXISTS'))
1626
1668
  return [];
1627
1669
  const query = yield relation.query;
1628
- this._assertError(query == null, `unknown callback query in [relation : '${relation.name}']`);
1670
+ this._assertError(query == null, `unknown callback query in [relation : ${relation.name}]`);
1629
1671
  const dataFromRelation = yield query
1630
1672
  .bind(this.$pool.get())
1631
1673
  .whereIn(foreignKey, dataPerentId)
@@ -1871,12 +1913,12 @@ class Model extends AbstractModel_1.AbstractModel {
1871
1913
  var _a, _b, _c, _d, _e;
1872
1914
  return __awaiter(this, void 0, void 0, function* () {
1873
1915
  if ((_a = Object.keys(this.$state.get('REGISTRY'))) === null || _a === void 0 ? void 0 : _a.length) {
1874
- data === null || data === void 0 ? void 0 : data.forEach((d) => {
1916
+ for (const d of data) {
1875
1917
  for (const name in this.$state.get('REGISTRY')) {
1876
1918
  const registry = this.$state.get('REGISTRY');
1877
1919
  d[name] = registry[name];
1878
1920
  }
1879
- });
1921
+ }
1880
1922
  }
1881
1923
  if ((_b = this.$state.get('ONLY')) === null || _b === void 0 ? void 0 : _b.length) {
1882
1924
  data = this._showOnly(data);
@@ -1944,16 +1986,14 @@ class Model extends AbstractModel_1.AbstractModel {
1944
1986
  return result;
1945
1987
  });
1946
1988
  }
1947
- _hiddenColumnModel(object) {
1948
- const hidden = this.$state.get('HIDDEN');
1949
- if (object === null || object === void 0 ? void 0 : object.length) {
1950
- hidden.forEach((column) => {
1951
- object.forEach((objColumn) => {
1952
- delete objColumn[column];
1953
- });
1954
- });
1989
+ _hiddenColumnModel(data) {
1990
+ const hiddens = this.$state.get('HIDDEN');
1991
+ for (const hidden of hiddens) {
1992
+ for (const objColumn of data) {
1993
+ delete objColumn[hidden];
1994
+ }
1955
1995
  }
1956
- return object;
1996
+ return data;
1957
1997
  }
1958
1998
  _attach(name, dataId, fields) {
1959
1999
  var _a;
@@ -2316,6 +2356,31 @@ class Model extends AbstractModel_1.AbstractModel {
2316
2356
  this._assertError(!Object.values(this.$constants('RELATIONSHIP')).includes(r.relation), `unknown relationship in [${this.$constants('RELATIONSHIP')}] !`);
2317
2357
  return r;
2318
2358
  }
2359
+ _validateMethod(method) {
2360
+ switch (method.toLocaleLowerCase()) {
2361
+ case 'paginate':
2362
+ case 'pagination':
2363
+ case 'findOneOrError':
2364
+ case 'firstOrError':
2365
+ case 'findOne':
2366
+ case 'findMany':
2367
+ case 'first':
2368
+ case 'get': {
2369
+ const methodCallings = this.$logger.get();
2370
+ const methodsNotAllowed = [
2371
+ 'create',
2372
+ 'createNotExists',
2373
+ 'updateOrCreate',
2374
+ 'updateOrInsert',
2375
+ 'insertOrUpdate',
2376
+ 'update'
2377
+ ];
2378
+ const findMethodNotAllowed = methodCallings.find((methodCalling) => methodsNotAllowed.includes(methodCalling));
2379
+ this._assertError(methodCallings.some((methodCalling) => methodsNotAllowed.includes(methodCalling)), `this method ${method} can't using method : [ ${findMethodNotAllowed} ]`);
2380
+ break;
2381
+ }
2382
+ }
2383
+ }
2319
2384
  _initialModel() {
2320
2385
  this.$state = (() => {
2321
2386
  let db = new Map(Object.entries(Object.assign({}, this.$constants('MODEL'))));
@@ -10,7 +10,6 @@ declare const utils: {
10
10
  covertBooleanToNumber: (data: any) => any;
11
11
  snakeCase: (obj: any) => any;
12
12
  camelCase: (obj: any) => any;
13
- test: (testName: string, callback: Function) => Promise<void>;
14
13
  };
15
14
  export { utils };
16
15
  export default utils;
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.utils = void 0;
13
4
  const timestamp = () => {
@@ -157,22 +148,6 @@ const faker = (value) => {
157
148
  return Buffer.from(Math.random().toString(36).substring(7)).toString('base64');
158
149
  return 'fake data';
159
150
  };
160
- const test = (testName, callback) => __awaiter(void 0, void 0, void 0, function* () {
161
- const startTime = process.hrtime();
162
- const diffTimeSs = (hrtime) => {
163
- if (hrtime == null)
164
- return;
165
- const [start, end] = process.hrtime(hrtime);
166
- return (start + (end / 1e9)).toFixed(4);
167
- };
168
- try {
169
- yield callback();
170
- console.log(`Test : \x1b[34m ${testName} \x1b[0m ==> \x1b[32m PASSED \x1b[0m ${diffTimeSs(startTime)} s`);
171
- }
172
- catch (err) {
173
- console.log(`Test : \x1b[34m ${testName} \x1b[0m ==> \x1b[31m FAILED \x1b[0m (${err.message}) , ${diffTimeSs(startTime)} s`);
174
- }
175
- });
176
151
  const utils = {
177
152
  consoleDebug,
178
153
  faker,
@@ -184,8 +159,7 @@ const utils = {
184
159
  generateUUID,
185
160
  covertBooleanToNumber,
186
161
  snakeCase,
187
- camelCase,
188
- test
162
+ camelCase
189
163
  };
190
164
  exports.utils = utils;
191
165
  exports.default = utils;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tspace-mysql",
3
- "version": "1.1.9",
3
+ "version": "1.2.0",
4
4
  "description": "mysql query builder object relational mapping",
5
5
  "main": "dist/lib/index.js",
6
6
  "types": "dist/lib/index.d.ts",