@joktec/mysql 0.2.13 → 0.2.15

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.
Files changed (171) hide show
  1. package/README.md +419 -79
  2. package/dist/__tests__/mysql.column.decorator.spec.d.ts +2 -0
  3. package/dist/__tests__/mysql.column.decorator.spec.d.ts.map +1 -0
  4. package/dist/__tests__/mysql.column.decorator.spec.js +533 -0
  5. package/dist/__tests__/mysql.column.decorator.spec.js.map +1 -0
  6. package/dist/__tests__/mysql.dialect.spec.d.ts +2 -0
  7. package/dist/__tests__/mysql.dialect.spec.d.ts.map +1 -0
  8. package/dist/__tests__/mysql.dialect.spec.js +29 -0
  9. package/dist/__tests__/mysql.dialect.spec.js.map +1 -0
  10. package/dist/__tests__/mysql.exception.spec.d.ts +2 -0
  11. package/dist/__tests__/mysql.exception.spec.d.ts.map +1 -0
  12. package/dist/__tests__/mysql.exception.spec.js +42 -0
  13. package/dist/__tests__/mysql.exception.spec.js.map +1 -0
  14. package/dist/__tests__/mysql.helper.spec.d.ts +2 -0
  15. package/dist/__tests__/mysql.helper.spec.d.ts.map +1 -0
  16. package/dist/__tests__/mysql.helper.spec.js +80 -0
  17. package/dist/__tests__/mysql.helper.spec.js.map +1 -0
  18. package/dist/__tests__/mysql.module.integration.spec.d.ts +2 -0
  19. package/dist/__tests__/mysql.module.integration.spec.d.ts.map +1 -0
  20. package/dist/__tests__/mysql.module.integration.spec.js +67 -0
  21. package/dist/__tests__/mysql.module.integration.spec.js.map +1 -0
  22. package/dist/__tests__/mysql.repo.cursor.spec.d.ts +2 -0
  23. package/dist/__tests__/mysql.repo.cursor.spec.d.ts.map +1 -0
  24. package/dist/__tests__/mysql.repo.cursor.spec.js +146 -0
  25. package/dist/__tests__/mysql.repo.cursor.spec.js.map +1 -0
  26. package/dist/__tests__/mysql.service.spec.d.ts +2 -0
  27. package/dist/__tests__/mysql.service.spec.d.ts.map +1 -0
  28. package/dist/__tests__/mysql.service.spec.js +70 -0
  29. package/dist/__tests__/mysql.service.spec.js.map +1 -0
  30. package/dist/__tests__/mysql.utils.spec.d.ts +2 -0
  31. package/dist/__tests__/mysql.utils.spec.d.ts.map +1 -0
  32. package/dist/__tests__/mysql.utils.spec.js +21 -0
  33. package/dist/__tests__/mysql.utils.spec.js.map +1 -0
  34. package/dist/decorators/column.decorator.d.ts +10 -0
  35. package/dist/decorators/column.decorator.d.ts.map +1 -0
  36. package/dist/decorators/column.decorator.js +181 -0
  37. package/dist/decorators/column.decorator.js.map +1 -0
  38. package/dist/decorators/columns/array.column.d.ts +3 -0
  39. package/dist/decorators/columns/array.column.d.ts.map +1 -0
  40. package/dist/decorators/columns/array.column.js +13 -0
  41. package/dist/decorators/columns/array.column.js.map +1 -0
  42. package/dist/decorators/columns/bool.column.d.ts +2 -0
  43. package/dist/decorators/columns/bool.column.d.ts.map +1 -0
  44. package/dist/decorators/columns/bool.column.js +8 -0
  45. package/dist/decorators/columns/bool.column.js.map +1 -0
  46. package/dist/decorators/columns/column.factory.d.ts +5 -0
  47. package/dist/decorators/columns/column.factory.d.ts.map +1 -0
  48. package/dist/decorators/columns/column.factory.js +42 -0
  49. package/dist/decorators/columns/column.factory.js.map +1 -0
  50. package/dist/decorators/columns/column.type.d.ts +136 -0
  51. package/dist/decorators/columns/column.type.d.ts.map +1 -0
  52. package/dist/decorators/columns/column.type.js +3 -0
  53. package/dist/decorators/columns/column.type.js.map +1 -0
  54. package/dist/decorators/columns/column.util.d.ts +22 -0
  55. package/dist/decorators/columns/column.util.d.ts.map +1 -0
  56. package/dist/decorators/columns/column.util.js +163 -0
  57. package/dist/decorators/columns/column.util.js.map +1 -0
  58. package/dist/decorators/columns/date.column.d.ts +2 -0
  59. package/dist/decorators/columns/date.column.d.ts.map +1 -0
  60. package/dist/decorators/columns/date.column.js +8 -0
  61. package/dist/decorators/columns/date.column.js.map +1 -0
  62. package/dist/decorators/columns/enum.column.d.ts +3 -0
  63. package/dist/decorators/columns/enum.column.d.ts.map +1 -0
  64. package/dist/decorators/columns/enum.column.js +8 -0
  65. package/dist/decorators/columns/enum.column.js.map +1 -0
  66. package/dist/decorators/columns/index.d.ts +17 -0
  67. package/dist/decorators/columns/index.d.ts.map +1 -0
  68. package/dist/decorators/columns/index.js +33 -0
  69. package/dist/decorators/columns/index.js.map +1 -0
  70. package/dist/decorators/columns/nested.column.d.ts +4 -0
  71. package/dist/decorators/columns/nested.column.d.ts.map +1 -0
  72. package/dist/decorators/columns/nested.column.js +12 -0
  73. package/dist/decorators/columns/nested.column.js.map +1 -0
  74. package/dist/decorators/columns/number.column.d.ts +3 -0
  75. package/dist/decorators/columns/number.column.d.ts.map +1 -0
  76. package/dist/decorators/columns/number.column.js +16 -0
  77. package/dist/decorators/columns/number.column.js.map +1 -0
  78. package/dist/decorators/columns/object.column.d.ts +4 -0
  79. package/dist/decorators/columns/object.column.d.ts.map +1 -0
  80. package/dist/decorators/columns/object.column.js +13 -0
  81. package/dist/decorators/columns/object.column.js.map +1 -0
  82. package/dist/decorators/columns/primary.column.d.ts +3 -0
  83. package/dist/decorators/columns/primary.column.d.ts.map +1 -0
  84. package/dist/decorators/columns/primary.column.js +48 -0
  85. package/dist/decorators/columns/primary.column.js.map +1 -0
  86. package/dist/decorators/columns/string.column.d.ts +3 -0
  87. package/dist/decorators/columns/string.column.d.ts.map +1 -0
  88. package/dist/decorators/columns/string.column.js +28 -0
  89. package/dist/decorators/columns/string.column.js.map +1 -0
  90. package/dist/decorators/columns/swagger.column.d.ts +4 -0
  91. package/dist/decorators/columns/swagger.column.d.ts.map +1 -0
  92. package/dist/decorators/columns/swagger.column.js +49 -0
  93. package/dist/decorators/columns/swagger.column.js.map +1 -0
  94. package/dist/decorators/columns/timestamp.column.d.ts +6 -0
  95. package/dist/decorators/columns/timestamp.column.d.ts.map +1 -0
  96. package/dist/decorators/columns/timestamp.column.js +55 -0
  97. package/dist/decorators/columns/timestamp.column.js.map +1 -0
  98. package/dist/decorators/columns/transform.column.d.ts +4 -0
  99. package/dist/decorators/columns/transform.column.d.ts.map +1 -0
  100. package/dist/decorators/columns/transform.column.js +18 -0
  101. package/dist/decorators/columns/transform.column.js.map +1 -0
  102. package/dist/decorators/columns/virtual.column.d.ts +4 -0
  103. package/dist/decorators/columns/virtual.column.d.ts.map +1 -0
  104. package/dist/decorators/columns/virtual.column.js +23 -0
  105. package/dist/decorators/columns/virtual.column.js.map +1 -0
  106. package/dist/decorators/index.d.ts +3 -0
  107. package/dist/decorators/index.d.ts.map +1 -1
  108. package/dist/decorators/index.js +2 -0
  109. package/dist/decorators/index.js.map +1 -1
  110. package/dist/decorators/table.decorator.d.ts +31 -2
  111. package/dist/decorators/table.decorator.d.ts.map +1 -1
  112. package/dist/decorators/table.decorator.js +55 -18
  113. package/dist/decorators/table.decorator.js.map +1 -1
  114. package/dist/decorators/timestamp.decorator.d.ts +4 -0
  115. package/dist/decorators/timestamp.decorator.d.ts.map +1 -0
  116. package/dist/decorators/timestamp.decorator.js +19 -0
  117. package/dist/decorators/timestamp.decorator.js.map +1 -0
  118. package/dist/helpers/index.d.ts +0 -1
  119. package/dist/helpers/index.d.ts.map +1 -1
  120. package/dist/helpers/index.js +0 -1
  121. package/dist/helpers/index.js.map +1 -1
  122. package/dist/helpers/mysql.helper.d.ts +21 -6
  123. package/dist/helpers/mysql.helper.d.ts.map +1 -1
  124. package/dist/helpers/mysql.helper.js +152 -82
  125. package/dist/helpers/mysql.helper.js.map +1 -1
  126. package/dist/helpers/mysql.utils.d.ts.map +1 -1
  127. package/dist/helpers/mysql.utils.js +28 -11
  128. package/dist/helpers/mysql.utils.js.map +1 -1
  129. package/dist/index.d.ts +1 -0
  130. package/dist/index.d.ts.map +1 -1
  131. package/dist/index.js +6 -0
  132. package/dist/index.js.map +1 -1
  133. package/dist/models/mysql.model.d.ts.map +1 -1
  134. package/dist/models/mysql.model.js +4 -11
  135. package/dist/models/mysql.model.js.map +1 -1
  136. package/dist/models/mysql.option.d.ts +11 -2
  137. package/dist/models/mysql.option.d.ts.map +1 -1
  138. package/dist/mysql.config.d.ts +1 -17
  139. package/dist/mysql.config.d.ts.map +1 -1
  140. package/dist/mysql.config.js +1 -17
  141. package/dist/mysql.config.js.map +1 -1
  142. package/dist/mysql.exception.d.ts.map +1 -1
  143. package/dist/mysql.exception.js +48 -4
  144. package/dist/mysql.exception.js.map +1 -1
  145. package/dist/mysql.module.d.ts.map +1 -1
  146. package/dist/mysql.module.js.map +1 -1
  147. package/dist/mysql.repo.d.ts +9 -2
  148. package/dist/mysql.repo.d.ts.map +1 -1
  149. package/dist/mysql.repo.js +164 -48
  150. package/dist/mysql.repo.js.map +1 -1
  151. package/dist/mysql.service.d.ts.map +1 -1
  152. package/dist/mysql.service.js +8 -2
  153. package/dist/mysql.service.js.map +1 -1
  154. package/dist/services/index.d.ts +1 -0
  155. package/dist/services/index.d.ts.map +1 -1
  156. package/dist/services/index.js +1 -0
  157. package/dist/services/index.js.map +1 -1
  158. package/dist/services/mysql.dialect.d.ts +14 -0
  159. package/dist/services/mysql.dialect.d.ts.map +1 -0
  160. package/dist/services/mysql.dialect.js +50 -0
  161. package/dist/services/mysql.dialect.js.map +1 -0
  162. package/dist/services/mysql.strategy.d.ts +1 -1
  163. package/dist/services/mysql.strategy.d.ts.map +1 -1
  164. package/dist/services/mysql.strategy.js +1 -1
  165. package/dist/services/mysql.strategy.js.map +1 -1
  166. package/dist/tsconfig.tsbuildinfo +1 -1
  167. package/package.json +14 -10
  168. package/dist/helpers/mysql.finder.d.ts +0 -15
  169. package/dist/helpers/mysql.finder.d.ts.map +0 -1
  170. package/dist/helpers/mysql.finder.js +0 -128
  171. package/dist/helpers/mysql.finder.js.map +0 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@joktec/mysql",
3
3
  "description": "JokTec - MySql Service",
4
- "version": "0.2.13",
4
+ "version": "0.2.15",
5
5
  "private": false,
6
6
  "license": "MIT",
7
7
  "author": "JokTec",
@@ -41,18 +41,18 @@
41
41
  "test:e2e": "jest --config ./test/jest-e2e.json"
42
42
  },
43
43
  "dependencies": {
44
- "@joktec/core": "0.2.11",
45
- "@joktec/utils": "0.1.3",
46
- "lodash": "^4.17.21",
44
+ "@joktec/core": "0.2.12",
45
+ "@joktec/utils": "0.1.4",
46
+ "lodash": "^4.18.1",
47
47
  "mysql": "2.18.1",
48
- "mysql2": "^3.14.0",
48
+ "mysql2": "^3.22.5",
49
49
  "reflect-metadata": "0.2.2",
50
- "typeorm": "^0.3.26"
50
+ "typeorm": "^1.0.0"
51
51
  },
52
52
  "devDependencies": {
53
- "@types/lodash": "^4.17.16",
54
- "@types/mysql": "^2.15.26",
55
- "@types/validator": "^13.12.2"
53
+ "@types/lodash": "^4.17.24",
54
+ "@types/mysql": "^2.15.27",
55
+ "@types/validator": "^13.15.10"
56
56
  },
57
57
  "lint-staged": {
58
58
  "*.ts": [
@@ -72,6 +72,10 @@
72
72
  "transform": {
73
73
  "^.+\\.(t|s)s$": "ts-jest"
74
74
  },
75
+ "moduleNameMapper": {
76
+ "^slug$": "<rootDir>/../../../common/utils/src/__mocks__/slug.ts",
77
+ "^uuid$": "<rootDir>/../../../common/utils/src/__mocks__/uuid.ts"
78
+ },
75
79
  "coverageDirectory": "<rootDir>/../coverage/",
76
80
  "collectCoverageFrom": [
77
81
  "**/*.{ts,js}",
@@ -79,5 +83,5 @@
79
83
  "!**/*.{d,enum}.ts"
80
84
  ]
81
85
  },
82
- "gitHead": "60116851b5a6fed055c912f2ba9dbdb22ad1d8a6"
86
+ "gitHead": "5795379f82d9751ecf3b791c75784ee9b1e482ef"
83
87
  }
@@ -1,15 +0,0 @@
1
- import { IBaseRequest, ICondition, IPopulate } from '@joktec/core';
2
- import { FindManyOptions } from 'typeorm';
3
- import { IMysqlRequest, MysqlModel } from '../models';
4
- export declare class MysqlFinder {
5
- static parsePagination<T>(query?: IMysqlRequest<T>): {
6
- limit?: number;
7
- offset?: number;
8
- };
9
- static parseFilter<T>(query: IBaseRequest<T>): FindManyOptions<T>;
10
- static parseProjection<T extends MysqlModel>(select: string | string[] | Record<string, number | boolean>): FindManyOptions<T>['select'];
11
- static parseCondition<T>(condition: ICondition<T>): FindManyOptions<T>['where'];
12
- static parseOrder<T>(sort: any): FindManyOptions<T>['order'];
13
- static parseRelations<T>(populate: IPopulate<T>): FindManyOptions<T>['relations'];
14
- }
15
- //# sourceMappingURL=mysql.finder.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mysql.finder.d.ts","sourceRoot":"","sources":["../../src/helpers/mysql.finder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGnE,OAAO,EAGL,eAAe,EAShB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAGtD,qBAAa,WAAW;IACtB,MAAM,CAAC,eAAe,CAAC,CAAC,EAAE,KAAK,GAAE,aAAa,CAAC,CAAC,CAAM,GAAG;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;IAU5F,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC;IASjE,MAAM,CAAC,eAAe,CAAC,CAAC,SAAS,UAAU,EACzC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAC3D,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAc/B,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAqE/E,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAQ5D,MAAM,CAAC,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;CAalF"}
@@ -1,128 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MysqlFinder = void 0;
4
- const utils_1 = require("@joktec/utils");
5
- const lodash_1 = require("lodash");
6
- const typeorm_1 = require("typeorm");
7
- const mysql_exception_1 = require("../mysql.exception");
8
- class MysqlFinder {
9
- static parsePagination(query = {}) {
10
- const limit = typeof query.limit === 'number' && query.limit > 0 ? query.limit : undefined;
11
- const page = typeof query.page === 'number' && query.page > 0 ? query.page : undefined;
12
- const offset = typeof query.offset === 'number' && query.offset >= 0 ? query.offset : undefined;
13
- if (limit && page)
14
- return { limit, offset: (page - 1) * limit };
15
- if (limit)
16
- return { limit, offset: offset ?? 0 };
17
- return {};
18
- }
19
- static parseFilter(query) {
20
- const { condition = {}, keyword } = query;
21
- const where = MysqlFinder.parseCondition(condition);
22
- if (keyword && typeof where === 'object') {
23
- where['name'] = (0, typeorm_1.ILike)(`%${keyword}%`);
24
- }
25
- return { where };
26
- }
27
- static parseProjection(select) {
28
- if (typeof select === 'object') {
29
- return Object.entries(select).reduce((acc, [field, direction]) => {
30
- acc[field] = (0, utils_1.toBool)(direction);
31
- return acc;
32
- }, {});
33
- }
34
- return (0, utils_1.toArray)(select, { split: ',' }).reduce((acc, field) => {
35
- acc[field] = true;
36
- return acc;
37
- }, {});
38
- }
39
- static parseCondition(condition) {
40
- const where = {};
41
- for (const [key, value] of Object.entries(condition)) {
42
- if (key === '$and' || key === '$or') {
43
- where[key === '$and' ? 'AND' : 'OR'] = value.map((c) => MysqlFinder.parseCondition(c));
44
- continue;
45
- }
46
- if ((0, lodash_1.isNil)(value)) {
47
- where[key] = (0, typeorm_1.IsNull)();
48
- continue;
49
- }
50
- if (typeof value === 'object') {
51
- const conditions = [];
52
- for (const [op, val] of Object.entries(value)) {
53
- switch (op) {
54
- case '$eq':
55
- conditions.push((0, lodash_1.isNil)(val) ? (0, typeorm_1.IsNull)() : (0, typeorm_1.Equal)(val));
56
- break;
57
- case '$gt':
58
- conditions.push((0, typeorm_1.MoreThan)(val));
59
- break;
60
- case '$gte':
61
- conditions.push((0, typeorm_1.MoreThanOrEqual)(val));
62
- break;
63
- case '$lt':
64
- conditions.push((0, typeorm_1.LessThan)(val));
65
- break;
66
- case '$lte':
67
- conditions.push((0, typeorm_1.LessThanOrEqual)(val));
68
- break;
69
- case '$ne':
70
- conditions.push((0, lodash_1.isNil)(val) ? (0, typeorm_1.Not)((0, typeorm_1.IsNull)()) : (0, typeorm_1.Not)(val));
71
- break;
72
- case '$in':
73
- if ((0, utils_1.toArray)(val).length)
74
- conditions.push((0, typeorm_1.In)((0, utils_1.toArray)(val)));
75
- break;
76
- case '$nin':
77
- if ((0, utils_1.toArray)(val).length)
78
- conditions.push((0, typeorm_1.Not)((0, typeorm_1.In)((0, utils_1.toArray)(val))));
79
- break;
80
- case '$like':
81
- conditions.push((0, typeorm_1.ILike)(`%${val}%`));
82
- break;
83
- case '$begin':
84
- conditions.push((0, typeorm_1.ILike)(`${val}%`));
85
- break;
86
- case '$end':
87
- conditions.push((0, typeorm_1.ILike)(`%${val}`));
88
- break;
89
- case '$not':
90
- conditions.push((0, typeorm_1.Not)(this.parseCondition(val)));
91
- break;
92
- default:
93
- throw new mysql_exception_1.MysqlException(`Operator ${op} not supported`, { op, val });
94
- }
95
- }
96
- if (conditions.length > 1)
97
- where[key] = (0, typeorm_1.And)(...conditions);
98
- else
99
- where[key] = conditions[0];
100
- continue;
101
- }
102
- where[key] = value;
103
- }
104
- return where;
105
- }
106
- static parseOrder(sort) {
107
- const order = {};
108
- for (const [key, value] of Object.entries(sort)) {
109
- order[key] = value === 'asc' ? 'ASC' : 'DESC';
110
- }
111
- return order;
112
- }
113
- static parseRelations(populate) {
114
- const relations = {};
115
- for (const [path, value] of Object.entries(populate)) {
116
- if (value === '*') {
117
- relations[path] = true;
118
- continue;
119
- }
120
- if (typeof value === 'object') {
121
- relations[path] = MysqlFinder.parseRelations(value['populate'] || {});
122
- }
123
- }
124
- return relations;
125
- }
126
- }
127
- exports.MysqlFinder = MysqlFinder;
128
- //# sourceMappingURL=mysql.finder.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mysql.finder.js","sourceRoot":"","sources":["../../src/helpers/mysql.finder.ts"],"names":[],"mappings":"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"}