@joktec/mysql 0.2.14 → 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 (95) hide show
  1. package/README.md +212 -2
  2. package/dist/__tests__/mysql.column.decorator.spec.js +474 -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
@@ -3,30 +3,176 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.PrimaryGeneratedColumn = void 0;
4
4
  exports.Column = Column;
5
5
  exports.PrimaryColumn = PrimaryColumn;
6
+ const core_1 = require("@joktec/core");
7
+ const utils_1 = require("@joktec/utils");
6
8
  const typeorm_1 = require("typeorm");
9
+ const mysql_exception_1 = require("../mysql.exception");
7
10
  const columns_1 = require("./columns");
8
11
  function Column(...args) {
9
12
  const { type, options } = (0, columns_1.parseColumnArgs)(args);
10
13
  return (target, propertyKey) => {
11
- const designType = Reflect.getMetadata('design:type', target, propertyKey);
12
- const typeormOptions = (0, columns_1.toTypeormOptions)(options);
13
- const typeormDecorator = type ? typeorm_1.Column(type, typeormOptions) : (0, typeorm_1.Column)(typeormOptions);
14
- (0, columns_1.applyPropertyDecorators)(target, propertyKey, [typeormDecorator, ...(0, columns_1.buildColumnDecorators)(options, designType)]);
14
+ const designType = (Reflect.getMetadata('design:returntype', target, propertyKey) ||
15
+ Reflect.getMetadata('design:type', target, propertyKey));
16
+ (0, columns_1.applyPropertyDecorators)(target, propertyKey, buildMysqlColumnDecorators(type, options, designType));
17
+ };
18
+ }
19
+ const getColumnKind = (options) => {
20
+ if (options.kind)
21
+ return options.kind;
22
+ if ('virtual' in options && options.virtual === true)
23
+ return 'virtual';
24
+ return 'normal';
25
+ };
26
+ function buildMysqlColumnDecorators(type, options, designType) {
27
+ const kind = getColumnKind(options);
28
+ if (kind === 'virtual') {
29
+ return isSqlVirtualColumnOptions(options)
30
+ ? buildSqlVirtualDecorators(type, options, designType)
31
+ : (0, columns_1.buildVirtualColumnDecorators)(options, designType);
32
+ }
33
+ if (kind === 'view')
34
+ return buildViewColumnDecorators(options, designType);
35
+ if (kind === 'version') {
36
+ return [
37
+ ...(0, columns_1.buildVersionColumnDecorators)(options),
38
+ ...buildColumnExtraDecorators(options),
39
+ ];
40
+ }
41
+ if (kind === 'relation')
42
+ return buildRelationColumnDecorators(options, designType);
43
+ if (kind === 'relation-id') {
44
+ return buildRelationIdColumnDecorators(options, designType);
45
+ }
46
+ if (kind === 'tree')
47
+ return buildTreeColumnDecorators(options, designType);
48
+ const typeormOptions = (0, columns_1.toTypeormOptions)(options);
49
+ const typeormDecorator = type ? typeorm_1.Column(type, typeormOptions) : (0, typeorm_1.Column)(typeormOptions);
50
+ return [
51
+ typeormDecorator,
52
+ ...buildColumnExtraDecorators(options),
53
+ ...(0, columns_1.buildColumnDecorators)(options, designType),
54
+ ];
55
+ }
56
+ const isSqlVirtualColumnOptions = (options) => {
57
+ const rawOptions = options;
58
+ return (options.kind === 'virtual' && ('query' in options || rawOptions.mode === 'sql' || rawOptions.virtual === 'sql'));
59
+ };
60
+ function buildSqlVirtualDecorators(type, options, designType) {
61
+ const sqlVirtualOptions = (0, columns_1.cloneColumnOptions)({ ...options, immutable: options.immutable ?? true });
62
+ const typeormOptions = (0, columns_1.toTypeormOptions)(sqlVirtualOptions);
63
+ const columnType = type || sqlVirtualOptions.type || sqlVirtualOptions.columnType;
64
+ const typeormDecorator = columnType
65
+ ? typeorm_1.VirtualColumn(columnType, typeormOptions)
66
+ : (0, typeorm_1.VirtualColumn)(typeormOptions);
67
+ return [typeormDecorator, ...(0, columns_1.buildColumnDecorators)(sqlVirtualOptions, designType)];
68
+ }
69
+ function buildViewColumnDecorators(options, designType) {
70
+ const viewOptions = (0, columns_1.cloneColumnOptions)({ ...options, immutable: options.immutable ?? true });
71
+ return [(0, typeorm_1.ViewColumn)((0, columns_1.toTypeormOptions)(viewOptions)), ...(0, columns_1.buildColumnDecorators)(viewOptions, designType)];
72
+ }
73
+ function buildRelationColumnDecorators(options, designType) {
74
+ const relationOptions = options.relationOptions ?? { nullable: options.nullable };
75
+ const relationDecorator = (() => {
76
+ if (options.relation === 'many-to-one')
77
+ return (0, typeorm_1.ManyToOne)(options.type, options.inverseSide, relationOptions);
78
+ if (options.relation === 'one-to-many')
79
+ return (0, typeorm_1.OneToMany)(options.type, options.inverseSide, relationOptions);
80
+ if (options.relation === 'one-to-one')
81
+ return (0, typeorm_1.OneToOne)(options.type, options.inverseSide, relationOptions);
82
+ return (0, typeorm_1.ManyToMany)(options.type, options.inverseSide, relationOptions);
83
+ })();
84
+ const decorators = [relationDecorator, ...buildRelationMetadataDecorators(options, designType)];
85
+ decorators.push(...buildColumnExtraDecorators(options));
86
+ if (options.joinColumn)
87
+ decorators.push(options.joinColumn === true ? (0, typeorm_1.JoinColumn)() : (0, typeorm_1.JoinColumn)(options.joinColumn));
88
+ if (options.joinTable)
89
+ decorators.push(options.joinTable === true ? (0, typeorm_1.JoinTable)() : (0, typeorm_1.JoinTable)(options.joinTable));
90
+ return decorators;
91
+ }
92
+ function buildRelationIdColumnDecorators(options, designType) {
93
+ const relationIdOptions = { ...options, immutable: options.immutable ?? true };
94
+ return [
95
+ (0, typeorm_1.RelationId)(relationIdOptions.relationId, relationIdOptions.relationIdAlias, relationIdOptions.relationIdQuery),
96
+ ...buildColumnExtraDecorators(relationIdOptions),
97
+ ...(0, columns_1.buildColumnDecorators)(relationIdOptions, designType),
98
+ ];
99
+ }
100
+ function buildColumnExtraDecorators(options) {
101
+ return [...buildColumnIndexDecorators(options.index), ...buildColumnCheckDecorators(options.check)];
102
+ }
103
+ function buildColumnIndexDecorators(index) {
104
+ if (!index)
105
+ return [];
106
+ if (index === true)
107
+ return [(0, typeorm_1.Index)()];
108
+ if (typeof index === 'string')
109
+ return [(0, typeorm_1.Index)(index)];
110
+ if ('options' in index || 'name' in index) {
111
+ const namedIndex = index;
112
+ return [namedIndex.name ? (0, typeorm_1.Index)(namedIndex.name, namedIndex.options) : (0, typeorm_1.Index)(namedIndex.options)];
113
+ }
114
+ return [(0, typeorm_1.Index)(index)];
115
+ }
116
+ function buildColumnCheckDecorators(check) {
117
+ if (!check)
118
+ return [];
119
+ if (typeof check === 'string')
120
+ return [(0, typeorm_1.Check)(check)];
121
+ return [check.name ? (0, typeorm_1.Check)(check.name, check.expression) : (0, typeorm_1.Check)(check.expression)];
122
+ }
123
+ function buildRelationMetadataDecorators(options, designType) {
124
+ const decorators = [...(options.decorators || [])];
125
+ const target = typeof options.type === 'function' ? options.type() : undefined;
126
+ const isArray = designType === Array || ('relation' in options && ['one-to-many', 'many-to-many'].includes(options.relation));
127
+ const required = (0, columns_1.resolveRequired)(options).required;
128
+ if (target)
129
+ decorators.push((0, utils_1.Type)(() => target), (0, utils_1.ValidateNested)({ each: isArray }));
130
+ if (options.hidden)
131
+ return [...decorators, (0, utils_1.Exclude)({ toPlainOnly: true }), (0, core_1.ApiHideProperty)()];
132
+ decorators.push(options.groups?.length ? (0, utils_1.Expose)({ groups: options.groups }) : (0, utils_1.Expose)());
133
+ const swaggerOptions = {
134
+ type: target || designType,
135
+ isArray,
136
+ required,
137
+ nullable: options.nullable === true,
138
+ description: options.comment,
139
+ example: options.example,
140
+ deprecated: options.deprecated,
141
+ readOnly: options.immutable,
142
+ ...options.swagger,
15
143
  };
144
+ decorators.push(required ? (0, core_1.ApiProperty)(swaggerOptions) : (0, core_1.ApiPropertyOptional)(swaggerOptions));
145
+ return decorators;
146
+ }
147
+ function buildTreeColumnDecorators(options, designType) {
148
+ if (options.tree === 'level') {
149
+ const levelOptions = { ...options, immutable: options.immutable ?? true };
150
+ return [(0, typeorm_1.TreeLevelColumn)(), ...buildRelationMetadataDecorators(levelOptions, designType)];
151
+ }
152
+ if (options.tree === 'children') {
153
+ return [(0, typeorm_1.TreeChildren)({ cascade: options.cascade }), ...buildRelationMetadataDecorators(options, Array)];
154
+ }
155
+ return [(0, typeorm_1.TreeParent)({ onDelete: options.onDelete }), ...buildRelationMetadataDecorators(options, designType)];
16
156
  }
17
157
  function PrimaryColumn(strategyOrOptions = 'increment', options = {}) {
18
158
  return (target, propertyKey) => {
19
159
  const designType = Reflect.getMetadata('design:type', target, propertyKey);
20
160
  const strategy = typeof strategyOrOptions === 'string' ? strategyOrOptions : 'increment';
21
161
  const primaryOptions = (0, columns_1.cloneColumnOptions)(typeof strategyOrOptions === 'string' ? options : strategyOrOptions);
162
+ if (String(strategy).toLowerCase() === 'objectid') {
163
+ throw new mysql_exception_1.MysqlException('MYSQL_MONGO_PRIMARY_UNSUPPORTED', {
164
+ reason: '@joktec/mysql does not support Mongo ObjectId primary columns. Use @joktec/mongo.',
165
+ });
166
+ }
167
+ (0, columns_1.assertNoMongoColumn)(primaryOptions);
22
168
  const primaryDecorator = (0, columns_1.buildPrimaryDecorator)(strategy, primaryOptions, target, propertyKey);
23
169
  (0, columns_1.applyPropertyDecorators)(target, propertyKey, [
24
170
  primaryDecorator,
25
171
  ...(0, columns_1.buildColumnDecorators)({
26
172
  ...primaryOptions,
173
+ immutable: primaryOptions.immutable ?? true,
27
174
  nullable: false,
28
175
  required: primaryOptions.required ?? false,
29
- swagger: { readOnly: true, ...primaryOptions.swagger },
30
176
  }, designType),
31
177
  ]);
32
178
  };
@@ -1 +1 @@
1
- {"version":3,"file":"column.decorator.js","sourceRoot":"","sources":["../../src/decorators/column.decorator.ts"],"names":[],"mappings":";;;AA4BA,wBASC;AAQD,sCAuBC;AApED,qCAA8D;AAC9D,uCAWmB;AAgBnB,SAAgB,MAAM,CAAC,GAAG,IAAyB;IACjD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAA,yBAAe,EAAC,IAAI,CAAC,CAAC;IAChD,OAAO,CAAC,MAAc,EAAE,WAA4B,EAAE,EAAE;QACtD,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAC3E,MAAM,cAAc,GAAG,IAAA,0BAAgB,EAAC,OAAO,CAAC,CAAC;QACjD,MAAM,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAE,gBAAqB,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,IAAA,gBAAa,EAAC,cAAc,CAAC,CAAC;QAE7G,IAAA,iCAAuB,EAAC,MAAM,EAAE,WAAW,EAAE,CAAC,gBAAgB,EAAE,GAAG,IAAA,+BAAqB,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC;IAClH,CAAC,CAAC;AACJ,CAAC;AAQD,SAAgB,aAAa,CAC3B,oBAAwE,WAAW,EACnF,UAAsC,EAAE;IAExC,OAAO,CAAC,MAAc,EAAE,WAA4B,EAAE,EAAE;QACtD,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAC3E,MAAM,QAAQ,GAAG,OAAO,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC;QACzF,MAAM,cAAc,GAAG,IAAA,4BAAkB,EAAC,OAAO,iBAAiB,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;QAC/G,MAAM,gBAAgB,GAAG,IAAA,+BAAqB,EAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QAE9F,IAAA,iCAAuB,EAAC,MAAM,EAAE,WAAW,EAAE;YAC3C,gBAAgB;YAChB,GAAG,IAAA,+BAAqB,EACtB;gBACE,GAAG,cAAc;gBACjB,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,cAAc,CAAC,QAAQ,IAAI,KAAK;gBAC1C,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,OAAO,EAAE;aACvD,EACD,UAAU,CACX;SACF,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAEY,QAAA,sBAAsB,GAAG,aAAa,CAAC"}
1
+ {"version":3,"file":"column.decorator.js","sourceRoot":"","sources":["../../src/decorators/column.decorator.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
- export declare function ArrayColumn(): PropertyDecorator[];
1
+ import { IMysqlColumnBuildOptions } from './column.type';
2
+ export declare function ArrayColumn(options: IMysqlColumnBuildOptions): PropertyDecorator[];
2
3
  //# sourceMappingURL=array.column.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"array.column.d.ts","sourceRoot":"","sources":["../../../src/decorators/columns/array.column.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,IAAI,iBAAiB,EAAE,CAEjD"}
1
+ {"version":3,"file":"array.column.d.ts","sourceRoot":"","sources":["../../../src/decorators/columns/array.column.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAGzD,wBAAgB,WAAW,CAAC,OAAO,EAAE,wBAAwB,GAAG,iBAAiB,EAAE,CAQlF"}
@@ -2,7 +2,12 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ArrayColumn = ArrayColumn;
4
4
  const utils_1 = require("@joktec/utils");
5
- function ArrayColumn() {
6
- return [(0, utils_1.IsArray)()];
5
+ const string_column_1 = require("./string.column");
6
+ function ArrayColumn(options) {
7
+ const decorators = [(0, utils_1.IsArray)()];
8
+ if (options.columnType === 'simple-array') {
9
+ decorators.push(...(0, string_column_1.StringColumn)({ ...options, each: true }));
10
+ }
11
+ return decorators;
7
12
  }
8
13
  //# sourceMappingURL=array.column.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"array.column.js","sourceRoot":"","sources":["../../../src/decorators/columns/array.column.ts"],"names":[],"mappings":";;AAEA,kCAEC;AAJD,yCAAwC;AAExC,SAAgB,WAAW;IACzB,OAAO,CAAC,IAAA,eAAO,GAAE,CAAC,CAAC;AACrB,CAAC"}
1
+ {"version":3,"file":"array.column.js","sourceRoot":"","sources":["../../../src/decorators/columns/array.column.ts"],"names":[],"mappings":";;AAIA,kCAQC;AAZD,yCAAwC;AAExC,mDAA+C;AAE/C,SAAgB,WAAW,CAAC,OAAiC;IAC3D,MAAM,UAAU,GAAwB,CAAC,IAAA,eAAO,GAAE,CAAC,CAAC;IAEpD,IAAI,OAAO,CAAC,UAAU,KAAK,cAAc,EAAE,CAAC;QAC1C,UAAU,CAAC,IAAI,CAAC,GAAG,IAAA,4BAAY,EAAC,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { Constructor } from '@joktec/core';
2
- import { IMysqlColumnOptions } from './column.type';
3
- export declare function buildValidationDecorators(options: IMysqlColumnOptions, designType: Constructor<any>): PropertyDecorator[];
4
- export declare function buildColumnDecorators(options: IMysqlColumnOptions, designType: Constructor<any>): PropertyDecorator[];
2
+ import { IMysqlColumnBuildOptions } from './column.type';
3
+ export declare function buildValidationDecorators(options: IMysqlColumnBuildOptions, designType: Constructor<any>): PropertyDecorator[];
4
+ export declare function buildColumnDecorators(options: IMysqlColumnBuildOptions, designType: Constructor<any>): PropertyDecorator[];
5
5
  //# sourceMappingURL=column.factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"column.factory.d.ts","sourceRoot":"","sources":["../../../src/decorators/columns/column.factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAI3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAYpD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,mBAAmB,EAC5B,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,GAC3B,iBAAiB,EAAE,CAiBrB;AAKD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,iBAAiB,EAAE,CAGrH"}
1
+ {"version":3,"file":"column.factory.d.ts","sourceRoot":"","sources":["../../../src/decorators/columns/column.factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAI3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAazD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,wBAAwB,EACjC,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,GAC3B,iBAAiB,EAAE,CAiBrB;AAKD,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,wBAAwB,EACjC,UAAU,EAAE,WAAW,CAAC,GAAG,CAAC,GAC3B,iBAAiB,EAAE,CAGrB"}
@@ -10,6 +10,7 @@ const date_column_1 = require("./date.column");
10
10
  const enum_column_1 = require("./enum.column");
11
11
  const nested_column_1 = require("./nested.column");
12
12
  const number_column_1 = require("./number.column");
13
+ const object_column_1 = require("./object.column");
13
14
  const string_column_1 = require("./string.column");
14
15
  const transform_column_1 = require("./transform.column");
15
16
  function buildValidationDecorators(options, designType) {
@@ -27,8 +28,9 @@ function buildValidationDecorators(options, designType) {
27
28
  decorators.push(...(0, bool_column_1.BoolColumn)());
28
29
  if (designType === Date)
29
30
  decorators.push(...(0, date_column_1.DateColumn)());
30
- if (designType === Array)
31
- decorators.push(...(0, array_column_1.ArrayColumn)());
31
+ if ((0, column_util_1.isArrayColumn)(options, designType))
32
+ decorators.push(...(0, array_column_1.ArrayColumn)(options));
33
+ decorators.push(...(0, object_column_1.ObjectColumn)(options, designType));
32
34
  decorators.push(...(0, enum_column_1.EnumColumn)(options));
33
35
  decorators.push(...(0, nested_column_1.NestedColumn)(options, designType));
34
36
  return decorators;
@@ -1 +1 @@
1
- {"version":3,"file":"column.factory.js","sourceRoot":"","sources":["../../../src/decorators/columns/column.factory.ts"],"names":[],"mappings":";;AAgBA,8DAoBC;AAKD,sDAGC;AA3CD,yCAAuD;AACvD,iDAA6C;AAC7C,+CAA2C;AAE3C,+CAAgD;AAChD,+CAA2C;AAC3C,+CAA2C;AAC3C,mDAA+C;AAC/C,mDAA+C;AAC/C,mDAA+C;AAC/C,yDAAqD;AAKrD,SAAgB,yBAAyB,CACvC,OAA4B,EAC5B,UAA4B;IAE5B,MAAM,UAAU,GAAwB,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,IAAA,6BAAe,EAAC,OAAO,CAAC,CAAC;IAE1C,IAAI,QAAQ,CAAC,QAAQ;QAAE,UAAU,CAAC,IAAI,CAAC,IAAA,kBAAU,EAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;;QAC5G,UAAU,CAAC,IAAI,CAAC,IAAA,kBAAU,GAAE,CAAC,CAAC;IAEnC,IAAI,UAAU,KAAK,MAAM;QAAE,UAAU,CAAC,IAAI,CAAC,GAAG,IAAA,4BAAY,EAAC,OAAO,CAAC,CAAC,CAAC;IACrE,IAAI,UAAU,KAAK,MAAM;QAAE,UAAU,CAAC,IAAI,CAAC,GAAG,IAAA,4BAAY,EAAC,OAAO,CAAC,CAAC,CAAC;IACrE,IAAI,UAAU,KAAK,OAAO;QAAE,UAAU,CAAC,IAAI,CAAC,GAAG,IAAA,wBAAU,GAAE,CAAC,CAAC;IAC7D,IAAI,UAAU,KAAK,IAAI;QAAE,UAAU,CAAC,IAAI,CAAC,GAAG,IAAA,wBAAU,GAAE,CAAC,CAAC;IAC1D,IAAI,UAAU,KAAK,KAAK;QAAE,UAAU,CAAC,IAAI,CAAC,GAAG,IAAA,0BAAW,GAAE,CAAC,CAAC;IAE5D,UAAU,CAAC,IAAI,CAAC,GAAG,IAAA,wBAAU,EAAC,OAAO,CAAC,CAAC,CAAC;IACxC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAA,4BAAY,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAEtD,OAAO,UAAU,CAAC;AACpB,CAAC;AAKD,SAAgB,qBAAqB,CAAC,OAA4B,EAAE,UAA4B;IAC9F,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,6BAAe,EAAC,OAAO,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,yBAAyB,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,GAAG,IAAA,kCAAe,EAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAChH,CAAC"}
1
+ {"version":3,"file":"column.factory.js","sourceRoot":"","sources":["../../../src/decorators/columns/column.factory.ts"],"names":[],"mappings":";;AAiBA,8DAoBC;AAKD,sDAMC;AA/CD,yCAAuD;AACvD,iDAA6C;AAC7C,+CAA2C;AAE3C,+CAA+D;AAC/D,+CAA2C;AAC3C,+CAA2C;AAC3C,mDAA+C;AAC/C,mDAA+C;AAC/C,mDAA+C;AAC/C,mDAA+C;AAC/C,yDAAqD;AAKrD,SAAgB,yBAAyB,CACvC,OAAiC,EACjC,UAA4B;IAE5B,MAAM,UAAU,GAAwB,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,IAAA,6BAAe,EAAC,OAAO,CAAC,CAAC;IAE1C,IAAI,QAAQ,CAAC,QAAQ;QAAE,UAAU,CAAC,IAAI,CAAC,IAAA,kBAAU,EAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;;QAC5G,UAAU,CAAC,IAAI,CAAC,IAAA,kBAAU,GAAE,CAAC,CAAC;IAEnC,IAAI,UAAU,KAAK,MAAM;QAAE,UAAU,CAAC,IAAI,CAAC,GAAG,IAAA,4BAAY,EAAC,OAAO,CAAC,CAAC,CAAC;IACrE,IAAI,UAAU,KAAK,MAAM;QAAE,UAAU,CAAC,IAAI,CAAC,GAAG,IAAA,4BAAY,EAAC,OAAO,CAAC,CAAC,CAAC;IACrE,IAAI,UAAU,KAAK,OAAO;QAAE,UAAU,CAAC,IAAI,CAAC,GAAG,IAAA,wBAAU,GAAE,CAAC,CAAC;IAC7D,IAAI,UAAU,KAAK,IAAI;QAAE,UAAU,CAAC,IAAI,CAAC,GAAG,IAAA,wBAAU,GAAE,CAAC,CAAC;IAC1D,IAAI,IAAA,2BAAa,EAAC,OAAO,EAAE,UAAU,CAAC;QAAE,UAAU,CAAC,IAAI,CAAC,GAAG,IAAA,0BAAW,EAAC,OAAO,CAAC,CAAC,CAAC;IACjF,UAAU,CAAC,IAAI,CAAC,GAAG,IAAA,4BAAY,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IACtD,UAAU,CAAC,IAAI,CAAC,GAAG,IAAA,wBAAU,EAAC,OAAO,CAAC,CAAC,CAAC;IACxC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAA,4BAAY,EAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAEtD,OAAO,UAAU,CAAC;AACpB,CAAC;AAKD,SAAgB,qBAAqB,CACnC,OAAiC,EACjC,UAA4B;IAE5B,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAA,6BAAe,EAAC,OAAO,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,yBAAyB,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,GAAG,IAAA,kCAAe,EAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAChH,CAAC"}
@@ -1,20 +1,51 @@
1
1
  import { ApiPropertyOptions, Constructor } from '@joktec/core';
2
- import { ColumnOptions, ColumnType } from 'typeorm';
2
+ import { ExposeOptions } from '@joktec/utils';
3
+ import { ColumnOptions, ColumnType, IndexOptions, JoinColumnOptions, JoinTableOptions, RelationOptions, SelectQueryBuilder, ValueTransformer } from 'typeorm';
3
4
  export type RequiredOption = boolean | [boolean, string];
4
5
  export type PrimaryColumnStrategy = 'increment' | 'uuid' | 'uuidv7' | 'rowid' | 'identity';
5
- export interface IMysqlColumnOptions extends ColumnOptions {
6
+ export type MysqlFieldDecorator = PropertyDecorator & MethodDecorator;
7
+ type AllKeys<T> = T extends unknown ? keyof T : never;
8
+ type StrictUnionHelper<T, TAll> = T extends unknown ? T & Partial<Record<Exclude<AllKeys<TAll>, keyof T>, never>> : never;
9
+ export type StrictUnion<T> = StrictUnionHelper<T, T>;
10
+ export type MysqlColumnKind = 'normal' | 'virtual' | 'view' | 'version' | 'relation' | 'relation-id' | 'tree';
11
+ export type MysqlVirtualColumnMode = 'getter' | 'sql';
12
+ export type MysqlRelationKind = 'many-to-one' | 'one-to-many' | 'one-to-one' | 'many-to-many';
13
+ export type MysqlTreePropertyKind = 'parent' | 'children' | 'level';
14
+ export type MysqlRelationTarget = string | (() => Function);
15
+ export type MysqlRelationInverseSide<T = any> = string | ((object: T) => any);
16
+ export type MysqlRelationIdFactory<T = any> = string | ((object: T) => any);
17
+ export type MysqlColumnIndexOptions = boolean | string | IndexOptions | {
18
+ name?: string;
19
+ options?: IndexOptions;
20
+ };
21
+ export type MysqlColumnCheckOptions = string | {
22
+ name?: string;
23
+ expression: string;
24
+ };
25
+ export interface IMysqlColumnCommonOptions {
6
26
  hidden?: boolean;
7
- nested?: boolean | Constructor<any>;
27
+ optional?: boolean;
28
+ expose?: ExposeOptions;
8
29
  example?: any;
9
30
  deprecated?: boolean;
31
+ immutable?: boolean;
10
32
  groups?: string[];
11
33
  decorators?: PropertyDecorator[];
12
34
  swagger?: ApiPropertyOptions;
13
35
  required?: RequiredOption;
36
+ comment?: string;
37
+ nullable?: boolean;
38
+ }
39
+ export interface IMysqlColumnValidationOptions {
40
+ nested?: boolean | Constructor<any>;
41
+ each?: boolean;
14
42
  isEmail?: boolean;
15
43
  isPhone?: boolean;
16
44
  isHexColor?: boolean;
17
45
  isUrl?: boolean;
46
+ isInt?: boolean;
47
+ isUUID?: boolean;
48
+ isObject?: boolean;
18
49
  minlength?: number;
19
50
  maxlength?: number;
20
51
  minLength?: number;
@@ -22,12 +53,84 @@ export interface IMysqlColumnOptions extends ColumnOptions {
22
53
  min?: number;
23
54
  max?: number;
24
55
  }
25
- export interface IMysqlPrimaryColumnOptions extends Omit<IMysqlColumnOptions, 'primary' | 'nullable'> {
56
+ export interface IMysqlColumnDatabaseOptions {
57
+ index?: MysqlColumnIndexOptions;
58
+ check?: MysqlColumnCheckOptions;
59
+ }
60
+ export interface IMysqlNormalColumnOptions extends ColumnOptions, IMysqlColumnCommonOptions, IMysqlColumnValidationOptions, IMysqlColumnDatabaseOptions {
61
+ kind?: 'normal';
62
+ virtual?: false;
63
+ columnType?: ColumnType;
64
+ }
65
+ export interface IMysqlVirtualGetterColumnOptions extends IMysqlColumnCommonOptions {
66
+ kind?: 'virtual';
67
+ mode?: 'getter';
68
+ virtual?: true | 'getter';
69
+ }
70
+ export interface IMysqlSqlVirtualColumnOptions extends IMysqlColumnCommonOptions, IMysqlColumnValidationOptions {
71
+ kind: 'virtual';
72
+ mode: 'sql';
73
+ virtual?: 'sql';
74
+ type?: ColumnType;
75
+ columnType?: ColumnType;
76
+ select?: boolean;
77
+ hstoreType?: 'object' | 'string';
78
+ query: (alias: string) => string;
79
+ transformer?: ValueTransformer | ValueTransformer[];
80
+ }
81
+ export interface IMysqlViewColumnOptions extends IMysqlColumnCommonOptions, IMysqlColumnValidationOptions {
82
+ kind: 'view';
83
+ name?: string;
84
+ transformer?: ValueTransformer | ValueTransformer[];
85
+ }
86
+ export interface IMysqlVersionColumnOptions extends IMysqlColumnCommonOptions, IMysqlColumnValidationOptions {
87
+ kind?: 'version';
88
+ name?: string;
89
+ type?: ColumnType;
90
+ default?: any;
91
+ select?: boolean;
92
+ index?: MysqlColumnIndexOptions;
93
+ check?: MysqlColumnCheckOptions;
94
+ transformer?: ValueTransformer | ValueTransformer[];
95
+ }
96
+ export interface IMysqlRelationColumnOptions extends IMysqlColumnCommonOptions {
97
+ kind: 'relation';
98
+ relation: MysqlRelationKind;
99
+ type: MysqlRelationTarget;
100
+ inverseSide?: MysqlRelationInverseSide;
101
+ relationOptions?: RelationOptions;
102
+ joinColumn?: boolean | JoinColumnOptions | JoinColumnOptions[];
103
+ joinTable?: boolean | JoinTableOptions | any;
104
+ index?: MysqlColumnIndexOptions;
105
+ }
106
+ export interface IMysqlRelationIdColumnOptions extends IMysqlColumnCommonOptions, IMysqlColumnValidationOptions, IMysqlColumnDatabaseOptions {
107
+ kind: 'relation-id';
108
+ relationId: MysqlRelationIdFactory;
109
+ relationIdAlias?: string;
110
+ relationIdQuery?: (qb: SelectQueryBuilder<any>) => SelectQueryBuilder<any>;
111
+ }
112
+ export interface IMysqlTreeColumnOptions extends IMysqlColumnCommonOptions {
113
+ kind: 'tree';
114
+ tree: MysqlTreePropertyKind;
115
+ type?: MysqlRelationTarget;
116
+ cascade?: boolean | ('insert' | 'update' | 'remove' | 'soft-remove' | 'recover')[];
117
+ onDelete?: 'RESTRICT' | 'CASCADE' | 'SET NULL' | 'DEFAULT' | 'NO ACTION';
118
+ }
119
+ export type IMysqlColumnOptions = StrictUnion<IMysqlNormalColumnOptions | IMysqlVirtualGetterColumnOptions | IMysqlSqlVirtualColumnOptions | IMysqlViewColumnOptions | IMysqlVersionColumnOptions | IMysqlRelationColumnOptions | IMysqlRelationIdColumnOptions | IMysqlTreeColumnOptions>;
120
+ export type IMysqlColumnBuildOptions = Partial<ColumnOptions> & IMysqlColumnCommonOptions & IMysqlColumnValidationOptions & {
121
+ kind?: MysqlColumnKind;
122
+ virtual?: boolean | MysqlVirtualColumnMode;
123
+ columnType?: ColumnType;
124
+ };
125
+ export interface IMysqlPrimaryColumnOptions extends Omit<IMysqlNormalColumnOptions, 'primary' | 'nullable' | 'kind'> {
26
126
  nullable?: false;
27
127
  }
128
+ export interface IMysqlTimestampColumnOptions extends Omit<IMysqlNormalColumnOptions, 'columnType' | 'kind'> {
129
+ }
28
130
  export type ColumnDecoratorArgs = [IMysqlColumnOptions?] | [ColumnType, IMysqlColumnOptions?];
29
131
  export interface RequiredResult {
30
132
  required: boolean;
31
133
  message?: string;
32
134
  }
135
+ export {};
33
136
  //# sourceMappingURL=column.type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"column.type.d.ts","sourceRoot":"","sources":["../../../src/decorators/columns/column.type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEpD,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACzD,MAAM,MAAM,qBAAqB,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;AAE3F,MAAM,WAAW,mBAAoB,SAAQ,aAAa;IACxD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACjC,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,0BAA2B,SAAQ,IAAI,CAAC,mBAAmB,EAAE,SAAS,GAAG,UAAU,CAAC;IACnG,QAAQ,CAAC,EAAE,KAAK,CAAC;CAClB;AAED,MAAM,MAAM,mBAAmB,GAAG,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAE9F,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
1
+ {"version":3,"file":"column.type.d.ts","sourceRoot":"","sources":["../../../src/decorators/columns/column.type.ts"],"names":[],"mappings":"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"}
@@ -1,15 +1,22 @@
1
1
  import { Constructor } from '@joktec/core';
2
2
  import { ColumnOptions, ColumnType } from 'typeorm';
3
- import { ColumnDecoratorArgs, IMysqlColumnOptions, RequiredResult } from './column.type';
3
+ import { ColumnDecoratorArgs, IMysqlColumnBuildOptions, IMysqlColumnOptions, RequiredResult } from './column.type';
4
4
  export declare const applyPropertyDecorators: (target: object, propertyKey: string | symbol, decorators: PropertyDecorator[]) => void;
5
5
  export declare const cloneColumnOptions: <T extends IMysqlColumnOptions>(options?: T) => T;
6
- export declare const toTypeormOptions: <T extends IMysqlColumnOptions>(options: T) => ColumnOptions;
6
+ export declare const toTypeormOptions: <T extends Record<string, any>>(options: T) => ColumnOptions;
7
7
  export declare const parseColumnArgs: (args: ColumnDecoratorArgs) => {
8
8
  type?: ColumnType;
9
9
  options: IMysqlColumnOptions;
10
10
  };
11
- export declare const resolveRequired: (options: IMysqlColumnOptions) => RequiredResult;
12
- export declare const getLengthValue: (value: string | number | undefined) => number;
13
- export declare const enumValues: (enumLike: IMysqlColumnOptions["enum"]) => any[] | undefined;
14
- export declare const resolveNestedType: (nested: IMysqlColumnOptions["nested"], designType: Constructor<any>) => Constructor<any>;
11
+ export declare const resolveRequired: (options: Pick<IMysqlColumnOptions, "optional" | "required" | "nullable">) => RequiredResult;
12
+ export declare const getLengthValue: (value: string | number | undefined) => number | undefined;
13
+ export declare const enumValues: (enumLike: ColumnOptions["enum"]) => any[] | undefined;
14
+ export declare const resolveNestedType: (nested: IMysqlColumnBuildOptions["nested"], designType: Constructor<any>) => Constructor<any>;
15
+ export declare const isCustomClass: (designType: Constructor<any>) => boolean;
16
+ export declare const resolveTransformType: (options: IMysqlColumnBuildOptions, designType: Constructor<any>) => Constructor<any> | undefined;
17
+ export declare const shouldValidateNested: (options: IMysqlColumnBuildOptions, designType: Constructor<any>) => boolean;
18
+ export declare const isArrayColumn: (options: IMysqlColumnBuildOptions, designType?: Constructor<any>) => boolean;
19
+ export declare const isJsonColumn: (options: IMysqlColumnBuildOptions) => boolean;
20
+ export declare const isIntegerColumn: (options: IMysqlColumnBuildOptions) => boolean;
21
+ export declare const assertNoMongoColumn: (options: IMysqlColumnOptions) => void;
15
22
  //# sourceMappingURL=column.util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"column.util.d.ts","sourceRoot":"","sources":["../../../src/decorators/columns/column.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAmB,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAuBzF,eAAO,MAAM,uBAAuB,WAC1B,MAAM,eACD,MAAM,GAAG,MAAM,cAChB,iBAAiB,EAAE,KAC9B,IAEF,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,mBAAmB,YAAW,CAAC,KAAa,CAExF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,mBAAmB,WAAW,CAAC,KAAG,aAM5E,CAAC;AAEF,eAAO,MAAM,eAAe,SAAU,mBAAmB,KAAG;IAAE,IAAI,CAAC,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,mBAAmB,CAAA;CAO5G,CAAC;AAEF,eAAO,MAAM,eAAe,YAAa,mBAAmB,KAAG,cAI9D,CAAC;AAEF,eAAO,MAAM,cAAc,UAAW,MAAM,GAAG,MAAM,GAAG,SAAS,KAAG,MAOnE,CAAC;AAEF,eAAO,MAAM,UAAU,aAAc,mBAAmB,CAAC,MAAM,CAAC,KAAG,GAAG,EAAE,GAAG,SAI1E,CAAC;AAEF,eAAO,MAAM,iBAAiB,WACpB,mBAAmB,CAAC,QAAQ,CAAC,cACzB,WAAW,CAAC,GAAG,CAAC,KAC3B,WAAW,CAAC,GAAG,CAEjB,CAAC"}
1
+ {"version":3,"file":"column.util.d.ts","sourceRoot":"","sources":["../../../src/decorators/columns/column.util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAmB,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEpD,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AA+CnH,eAAO,MAAM,uBAAuB,WAC1B,MAAM,eACD,MAAM,GAAG,MAAM,cAChB,iBAAiB,EAAE,KAC9B,IAEF,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,mBAAmB,YAAW,CAAC,KAAa,CAExF,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,WAAW,CAAC,KAAG,aAM5E,CAAC;AAEF,eAAO,MAAM,eAAe,SAAU,mBAAmB,KAAG;IAAE,IAAI,CAAC,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,mBAAmB,CAAA;CAY5G,CAAC;AAEF,eAAO,MAAM,eAAe,YACjB,IAAI,CAAC,mBAAmB,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC,KACvE,cAKF,CAAC;AAEF,eAAO,MAAM,cAAc,UAAW,MAAM,GAAG,MAAM,GAAG,SAAS,KAAG,MAAM,GAAG,SAO5E,CAAC;AAEF,eAAO,MAAM,UAAU,aAAc,aAAa,CAAC,MAAM,CAAC,KAAG,GAAG,EAAE,GAAG,SAIpE,CAAC;AAEF,eAAO,MAAM,iBAAiB,WACpB,wBAAwB,CAAC,QAAQ,CAAC,cAC9B,WAAW,CAAC,GAAG,CAAC,KAC3B,WAAW,CAAC,GAAG,CAGjB,CAAC;AAKF,eAAO,MAAM,aAAa,eAAgB,WAAW,CAAC,GAAG,CAAC,KAAG,OAE5D,CAAC;AAEF,eAAO,MAAM,oBAAoB,YACtB,wBAAwB,cACrB,WAAW,CAAC,GAAG,CAAC,KAC3B,WAAW,CAAC,GAAG,CAAC,GAAG,SAIrB,CAAC;AAEF,eAAO,MAAM,oBAAoB,YAAa,wBAAwB,cAAc,WAAW,CAAC,GAAG,CAAC,KAAG,OAItG,CAAC;AAEF,eAAO,MAAM,aAAa,YAAa,wBAAwB,eAAe,WAAW,CAAC,GAAG,CAAC,KAAG,OAEhG,CAAC;AAEF,eAAO,MAAM,YAAY,YAAa,wBAAwB,KAAG,OAGhE,CAAC;AAIF,eAAO,MAAM,eAAe,YAAa,wBAAwB,KAAG,OAGnE,CAAC;AAEF,eAAO,MAAM,mBAAmB,YAAa,mBAAmB,KAAG,IAQlE,CAAC"}
@@ -1,12 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.resolveNestedType = exports.enumValues = exports.getLengthValue = exports.resolveRequired = exports.parseColumnArgs = exports.toTypeormOptions = exports.cloneColumnOptions = exports.applyPropertyDecorators = void 0;
3
+ exports.assertNoMongoColumn = exports.isIntegerColumn = exports.isJsonColumn = exports.isArrayColumn = exports.shouldValidateNested = exports.resolveTransformType = exports.isCustomClass = exports.resolveNestedType = exports.enumValues = exports.getLengthValue = exports.resolveRequired = exports.parseColumnArgs = exports.toTypeormOptions = exports.cloneColumnOptions = exports.applyPropertyDecorators = void 0;
4
4
  const core_1 = require("@joktec/core");
5
+ const mysql_exception_1 = require("../../mysql.exception");
5
6
  const MYSQL_COLUMN_OPTION_KEYS = new Set([
7
+ 'virtual',
8
+ 'kind',
9
+ 'mode',
6
10
  'hidden',
11
+ 'optional',
12
+ 'expose',
7
13
  'nested',
14
+ 'each',
8
15
  'example',
9
16
  'deprecated',
17
+ 'immutable',
10
18
  'groups',
11
19
  'decorators',
12
20
  'swagger',
@@ -15,12 +23,29 @@ const MYSQL_COLUMN_OPTION_KEYS = new Set([
15
23
  'isPhone',
16
24
  'isHexColor',
17
25
  'isUrl',
26
+ 'isInt',
27
+ 'isUUID',
28
+ 'isObject',
18
29
  'minlength',
19
30
  'maxlength',
20
31
  'minLength',
21
32
  'maxLength',
22
33
  'min',
23
34
  'max',
35
+ 'columnType',
36
+ 'index',
37
+ 'check',
38
+ 'relation',
39
+ 'relationOptions',
40
+ 'inverseSide',
41
+ 'joinColumn',
42
+ 'joinTable',
43
+ 'relationId',
44
+ 'relationIdAlias',
45
+ 'relationIdQuery',
46
+ 'tree',
47
+ 'cascade',
48
+ 'onDelete',
24
49
  ]);
25
50
  const applyPropertyDecorators = (target, propertyKey, decorators) => {
26
51
  (0, core_1.applyDecorators)(...decorators)(target, propertyKey);
@@ -44,12 +69,19 @@ const parseColumnArgs = (args) => {
44
69
  return { options: {} };
45
70
  const [first, second] = args;
46
71
  if (typeof first === 'string' || typeof first === 'function') {
47
- return { type: first, options: (0, exports.cloneColumnOptions)(second || {}) };
72
+ const type = first;
73
+ const options = { ...(0, exports.cloneColumnOptions)(second || {}), columnType: type };
74
+ (0, exports.assertNoMongoColumn)(options);
75
+ return { type, options };
48
76
  }
49
- return { options: (0, exports.cloneColumnOptions)((first || {})) };
77
+ const options = (0, exports.cloneColumnOptions)((first || {}));
78
+ (0, exports.assertNoMongoColumn)(options);
79
+ return { options };
50
80
  };
51
81
  exports.parseColumnArgs = parseColumnArgs;
52
82
  const resolveRequired = (options) => {
83
+ if (options.optional)
84
+ return { required: false };
53
85
  if (Array.isArray(options.required))
54
86
  return { required: options.required[0], message: options.required[1] };
55
87
  if (typeof options.required === 'boolean')
@@ -76,7 +108,56 @@ const enumValues = (enumLike) => {
76
108
  };
77
109
  exports.enumValues = enumValues;
78
110
  const resolveNestedType = (nested, designType) => {
79
- return typeof nested === 'function' ? nested : designType;
111
+ if (typeof nested === 'function')
112
+ return nested;
113
+ return designType;
80
114
  };
81
115
  exports.resolveNestedType = resolveNestedType;
116
+ const AUTO_TRANSFORM_TYPES = new Set([String, Number, Boolean, Date]);
117
+ const NON_CLASS_TYPES = new Set([String, Number, Boolean, Date, Array, Object]);
118
+ const isCustomClass = (designType) => {
119
+ return typeof designType === 'function' && !NON_CLASS_TYPES.has(designType);
120
+ };
121
+ exports.isCustomClass = isCustomClass;
122
+ const resolveTransformType = (options, designType) => {
123
+ if (AUTO_TRANSFORM_TYPES.has(designType))
124
+ return designType;
125
+ if ((0, exports.isJsonColumn)(options) && (0, exports.isCustomClass)(designType))
126
+ return designType;
127
+ return undefined;
128
+ };
129
+ exports.resolveTransformType = resolveTransformType;
130
+ const shouldValidateNested = (options, designType) => {
131
+ if (options.nested)
132
+ return true;
133
+ if (!(0, exports.isJsonColumn)(options))
134
+ return false;
135
+ return (0, exports.isCustomClass)(designType);
136
+ };
137
+ exports.shouldValidateNested = shouldValidateNested;
138
+ const isArrayColumn = (options, designType) => {
139
+ return designType === Array || options.array === true || options.columnType === 'simple-array';
140
+ };
141
+ exports.isArrayColumn = isArrayColumn;
142
+ const isJsonColumn = (options) => {
143
+ const type = options.type || options.columnType;
144
+ return type === 'simple-json' || type === 'json' || type === 'jsonb';
145
+ };
146
+ exports.isJsonColumn = isJsonColumn;
147
+ const INTEGER_COLUMN_TYPES = new Set(['int', 'integer', 'tinyint', 'smallint', 'mediumint', 'bigint']);
148
+ const isIntegerColumn = (options) => {
149
+ const type = options.type || options.columnType;
150
+ return options.isInt === true || INTEGER_COLUMN_TYPES.has(String(type));
151
+ };
152
+ exports.isIntegerColumn = isIntegerColumn;
153
+ const assertNoMongoColumn = (options) => {
154
+ const rawOptions = options;
155
+ const type = String(rawOptions.type || rawOptions.columnType || '').toLowerCase();
156
+ if (rawOptions.isObjectId || type === 'objectid' || type === 'object-id') {
157
+ throw new mysql_exception_1.MysqlException('MYSQL_MONGO_COLUMN_UNSUPPORTED', {
158
+ reason: '@joktec/mysql does not support Mongo ObjectId columns. Use @joktec/mongo for Mongo schemas.',
159
+ });
160
+ }
161
+ };
162
+ exports.assertNoMongoColumn = assertNoMongoColumn;
82
163
  //# sourceMappingURL=column.util.js.map