@joktec/mysql 0.2.14 → 0.2.16

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 (95) hide show
  1. package/README.md +214 -2
  2. package/dist/__tests__/mysql.column.decorator.spec.js +515 -1
  3. package/dist/__tests__/mysql.column.decorator.spec.js.map +1 -1
  4. package/dist/__tests__/mysql.dialect.spec.js +1 -0
  5. package/dist/__tests__/mysql.dialect.spec.js.map +1 -1
  6. package/dist/decorators/column.decorator.d.ts +4 -5
  7. package/dist/decorators/column.decorator.d.ts.map +1 -1
  8. package/dist/decorators/column.decorator.js +151 -5
  9. package/dist/decorators/column.decorator.js.map +1 -1
  10. package/dist/decorators/columns/array.column.d.ts +2 -1
  11. package/dist/decorators/columns/array.column.d.ts.map +1 -1
  12. package/dist/decorators/columns/array.column.js +7 -2
  13. package/dist/decorators/columns/array.column.js.map +1 -1
  14. package/dist/decorators/columns/column.factory.d.ts +3 -3
  15. package/dist/decorators/columns/column.factory.d.ts.map +1 -1
  16. package/dist/decorators/columns/column.factory.js +4 -2
  17. package/dist/decorators/columns/column.factory.js.map +1 -1
  18. package/dist/decorators/columns/column.type.d.ts +107 -4
  19. package/dist/decorators/columns/column.type.d.ts.map +1 -1
  20. package/dist/decorators/columns/column.util.d.ts +13 -6
  21. package/dist/decorators/columns/column.util.d.ts.map +1 -1
  22. package/dist/decorators/columns/column.util.js +85 -4
  23. package/dist/decorators/columns/column.util.js.map +1 -1
  24. package/dist/decorators/columns/enum.column.d.ts +2 -2
  25. package/dist/decorators/columns/enum.column.d.ts.map +1 -1
  26. package/dist/decorators/columns/enum.column.js.map +1 -1
  27. package/dist/decorators/columns/index.d.ts +3 -0
  28. package/dist/decorators/columns/index.d.ts.map +1 -1
  29. package/dist/decorators/columns/index.js +3 -0
  30. package/dist/decorators/columns/index.js.map +1 -1
  31. package/dist/decorators/columns/nested.column.d.ts +2 -2
  32. package/dist/decorators/columns/nested.column.d.ts.map +1 -1
  33. package/dist/decorators/columns/nested.column.js +2 -2
  34. package/dist/decorators/columns/nested.column.js.map +1 -1
  35. package/dist/decorators/columns/number.column.d.ts +2 -2
  36. package/dist/decorators/columns/number.column.d.ts.map +1 -1
  37. package/dist/decorators/columns/number.column.js +2 -1
  38. package/dist/decorators/columns/number.column.js.map +1 -1
  39. package/dist/decorators/columns/object.column.d.ts +4 -0
  40. package/dist/decorators/columns/object.column.d.ts.map +1 -0
  41. package/dist/decorators/columns/object.column.js +13 -0
  42. package/dist/decorators/columns/object.column.js.map +1 -0
  43. package/dist/decorators/columns/string.column.d.ts +2 -2
  44. package/dist/decorators/columns/string.column.d.ts.map +1 -1
  45. package/dist/decorators/columns/string.column.js +10 -7
  46. package/dist/decorators/columns/string.column.js.map +1 -1
  47. package/dist/decorators/columns/swagger.column.d.ts +2 -2
  48. package/dist/decorators/columns/swagger.column.d.ts.map +1 -1
  49. package/dist/decorators/columns/swagger.column.js +10 -1
  50. package/dist/decorators/columns/swagger.column.js.map +1 -1
  51. package/dist/decorators/columns/timestamp.column.d.ts +6 -0
  52. package/dist/decorators/columns/timestamp.column.d.ts.map +1 -0
  53. package/dist/decorators/columns/timestamp.column.js +55 -0
  54. package/dist/decorators/columns/timestamp.column.js.map +1 -0
  55. package/dist/decorators/columns/transform.column.d.ts +2 -2
  56. package/dist/decorators/columns/transform.column.d.ts.map +1 -1
  57. package/dist/decorators/columns/transform.column.js +5 -2
  58. package/dist/decorators/columns/transform.column.js.map +1 -1
  59. package/dist/decorators/columns/virtual.column.d.ts +4 -0
  60. package/dist/decorators/columns/virtual.column.d.ts.map +1 -0
  61. package/dist/decorators/columns/virtual.column.js +23 -0
  62. package/dist/decorators/columns/virtual.column.js.map +1 -0
  63. package/dist/decorators/index.d.ts +2 -0
  64. package/dist/decorators/index.d.ts.map +1 -1
  65. package/dist/decorators/index.js +1 -0
  66. package/dist/decorators/index.js.map +1 -1
  67. package/dist/decorators/table.decorator.d.ts +31 -2
  68. package/dist/decorators/table.decorator.d.ts.map +1 -1
  69. package/dist/decorators/table.decorator.js +55 -24
  70. package/dist/decorators/table.decorator.js.map +1 -1
  71. package/dist/decorators/timestamp.decorator.d.ts +4 -0
  72. package/dist/decorators/timestamp.decorator.d.ts.map +1 -0
  73. package/dist/decorators/timestamp.decorator.js +19 -0
  74. package/dist/decorators/timestamp.decorator.js.map +1 -0
  75. package/dist/helpers/index.d.ts +0 -1
  76. package/dist/helpers/index.d.ts.map +1 -1
  77. package/dist/helpers/index.js +0 -1
  78. package/dist/helpers/index.js.map +1 -1
  79. package/dist/index.d.ts +1 -1
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +2 -1
  82. package/dist/index.js.map +1 -1
  83. package/dist/models/mysql.model.d.ts.map +1 -1
  84. package/dist/models/mysql.model.js +4 -11
  85. package/dist/models/mysql.model.js.map +1 -1
  86. package/dist/mysql.repo.d.ts +1 -2
  87. package/dist/mysql.repo.d.ts.map +1 -1
  88. package/dist/mysql.repo.js +0 -15
  89. package/dist/mysql.repo.js.map +1 -1
  90. package/dist/tsconfig.tsbuildinfo +1 -1
  91. package/package.json +2 -2
  92. package/dist/helpers/mysql.finder.d.ts +0 -15
  93. package/dist/helpers/mysql.finder.d.ts.map +0 -1
  94. package/dist/helpers/mysql.finder.js +0 -128
  95. 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.14",
4
+ "version": "0.2.16",
5
5
  "private": false,
6
6
  "license": "MIT",
7
7
  "author": "JokTec",
@@ -83,5 +83,5 @@
83
83
  "!**/*.{d,enum}.ts"
84
84
  ]
85
85
  },
86
- "gitHead": "be0788447571548f9ef0cb82cb13358d215f2aa5"
86
+ "gitHead": "a67dc921366ffa0c1e082397fbb4096366b0f800"
87
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;AAQtD,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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"}