@solidstarters/solid-code-builder 1.0.11 → 1.0.12

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 (52) hide show
  1. package/dist/code-builder/lib/field/FieldManager.d.ts +2 -1
  2. package/dist/code-builder/lib/field/FieldManager.js +18 -5
  3. package/dist/code-builder/lib/field/FieldManager.js.map +1 -1
  4. package/dist/code-builder/lib/field/decorator-managers/entity/IndexDecoratorManager.js +1 -1
  5. package/dist/code-builder/lib/field/decorator-managers/entity/IndexDecoratorManager.js.map +1 -1
  6. package/dist/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.d.ts +3 -0
  7. package/dist/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.js +15 -3
  8. package/dist/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.js.map +1 -1
  9. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldHandler.d.ts +13 -0
  10. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldHandler.js +33 -0
  11. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldHandler.js.map +1 -0
  12. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldManagerForDto.d.ts +4 -0
  13. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldManagerForDto.js +9 -0
  14. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldManagerForDto.js.map +1 -0
  15. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldManagerForEntity.d.ts +4 -0
  16. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldManagerForEntity.js +8 -0
  17. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldManagerForEntity.js.map +1 -0
  18. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForDto.d.ts +1 -16
  19. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForDto.js +15 -156
  20. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForDto.js.map +1 -1
  21. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForEntity.d.ts +1 -20
  22. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForEntity.js +0 -109
  23. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForEntity.js.map +1 -1
  24. package/dist/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForDto.d.ts +2 -17
  25. package/dist/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForDto.js +4 -175
  26. package/dist/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForDto.js.map +1 -1
  27. package/dist/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForEntity.d.ts +1 -22
  28. package/dist/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForEntity.js +1 -133
  29. package/dist/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForEntity.js.map +1 -1
  30. package/dist/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldHandler.d.ts +13 -0
  31. package/dist/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldHandler.js +33 -0
  32. package/dist/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldHandler.js.map +1 -0
  33. package/dist/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldManagerForDto.d.ts +34 -0
  34. package/dist/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldManagerForDto.js +202 -0
  35. package/dist/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldManagerForDto.js.map +1 -0
  36. package/dist/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldManagerForEntity.d.ts +9 -0
  37. package/dist/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldManagerForEntity.js +43 -0
  38. package/dist/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldManagerForEntity.js.map +1 -0
  39. package/package.json +1 -1
  40. package/src/code-builder/lib/field/FieldManager.ts +19 -6
  41. package/src/code-builder/lib/field/decorator-managers/entity/IndexDecoratorManager.ts +1 -1
  42. package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.ts +19 -3
  43. package/src/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldHandler.ts +52 -0
  44. package/src/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldManagerForDto.ts +8 -0
  45. package/src/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldManagerForEntity.ts +8 -0
  46. package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForDto.ts +16 -189
  47. package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForEntity.ts +2 -147
  48. package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForDto.ts +6 -215
  49. package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForEntity.ts +3 -174
  50. package/src/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldHandler.ts +52 -0
  51. package/src/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldManagerForDto.ts +247 -0
  52. package/src/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldManagerForEntity.ts +51 -0
@@ -0,0 +1,202 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.OneToManyRelationFieldManagerForDto = void 0;
7
+ const strings_1 = require("@angular-devkit/core/src/utils/strings");
8
+ const typescript_1 = __importDefault(require("@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript"));
9
+ const ArrayDecoratorManager_1 = require("../../decorator-managers/dto/ArrayDecoratorManager");
10
+ const OptionalDecoratorManager_1 = require("../../decorator-managers/dto/OptionalDecoratorManager");
11
+ const StringDecoratorManager_1 = require("../../decorator-managers/dto/StringDecoratorManager");
12
+ const TransformDecoratorManager_1 = require("../../decorator-managers/dto/TransformDecoratorManager");
13
+ const FieldManager_1 = require("../../FieldManager");
14
+ const BaseFieldManagerForDto_1 = require("../base/BaseFieldManagerForDto");
15
+ class OneToManyRelationFieldManagerForDto extends BaseFieldManagerForDto_1.BaseFieldManagerForDto {
16
+ isJson() {
17
+ return false;
18
+ }
19
+ isBoolean() {
20
+ return false;
21
+ }
22
+ constructor(tree, moduleName, modelName, field, options) {
23
+ super(tree, moduleName, modelName, Object.assign(Object.assign({}, field), { required: false }), options);
24
+ this.decoratorManagers = [...this.decoratorManagers, ...this.getFieldDecoratorManagers(this.field, this.source, FieldManager_1.DecoratorType.Array, FieldManager_1.DecoratorType.ValidateNested)];
25
+ this.decoratorManagers.push(new TransformDecoratorManager_1.TransformDecoratorManager({ isTransform: true, type: this.transformType(), source: this.source, field: field }));
26
+ }
27
+ isString() {
28
+ return false;
29
+ }
30
+ isNumber() {
31
+ return false;
32
+ }
33
+ isInt() {
34
+ return false;
35
+ }
36
+ isDecimal() {
37
+ return false;
38
+ }
39
+ isApplyRegex() {
40
+ return false;
41
+ }
42
+ isApplyRequired() {
43
+ return false;
44
+ }
45
+ isApplyMin() {
46
+ return false;
47
+ }
48
+ isApplyMax() {
49
+ return false;
50
+ }
51
+ isDate() {
52
+ return false;
53
+ }
54
+ isTransform() {
55
+ return false;
56
+ }
57
+ // This field type is used in the case of one-to-many relation, when we generate the inverse field in the related entity
58
+ fieldType() {
59
+ const type = this.transformType(); //TODO Discuss if this needs to be Create Or Update DTO
60
+ const text = `${type}[]`;
61
+ return {
62
+ text: text,
63
+ node: (_field) => typescript_1.default.factory.createArrayTypeNode(typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier(type), undefined)),
64
+ };
65
+ }
66
+ transformType() {
67
+ return `Update${(0, strings_1.classify)(this.field.relationModelSingularName)}Dto`;
68
+ }
69
+ addField() {
70
+ const fieldChanges = super.addField();
71
+ if (fieldChanges.length > 0 && this.modelName !== this.field.relationModelSingularName) {
72
+ const mainField = fieldChanges[0];
73
+ mainField.changes.push(this.relatedFieldImport());
74
+ }
75
+ return fieldChanges;
76
+ }
77
+ addAdditionalField() {
78
+ const fieldChanges = [];
79
+ // Add the ids field to the main entity
80
+ fieldChanges.push(this.addAdditionalIdsField());
81
+ // Add the command field to the main entity
82
+ fieldChanges.push(this.addAdditionalCommandField());
83
+ return fieldChanges;
84
+ }
85
+ addAdditionalIdsField() {
86
+ const fieldName = `${this.field.name}Ids`;
87
+ const fieldType = "number[]";
88
+ const source = this.source;
89
+ const field = this.field;
90
+ const modelName = this.modelName;
91
+ const decoratorManagers = [
92
+ new OptionalDecoratorManager_1.OptionalDecoratorManager({ isApplyOptional: true, optional: true, source: source, field: field }),
93
+ new ArrayDecoratorManager_1.ArrayDecoratorManager({ isArray: true, source: source, field: field })
94
+ ];
95
+ return this.addFieldInternal(fieldName, fieldType, decoratorManagers, field, modelName, source);
96
+ }
97
+ addAdditionalCommandField() {
98
+ const fieldName = `${this.field.name}Command`;
99
+ const fieldType = "string";
100
+ const source = this.source;
101
+ const field = this.field;
102
+ const modelName = this.modelName;
103
+ const decoratorManagers = [
104
+ new StringDecoratorManager_1.StringDecoratorManager({ isString: true, source: source, field: field }),
105
+ new OptionalDecoratorManager_1.OptionalDecoratorManager({ isApplyOptional: true, optional: true, source: source, field: field }),
106
+ // TODO pending @IsEnum(RelationFieldsCommand)
107
+ ];
108
+ return this.addFieldInternal(fieldName, fieldType, decoratorManagers, field, modelName, source);
109
+ }
110
+ updateField() {
111
+ const fieldChanges = super.updateField();
112
+ //FIXME This might not be required, since addField might never be called from within updateField
113
+ // const containsAddFieldChanges = fieldChanges.filter((change) => !(change instanceof InsertChange));
114
+ // if (containsAddFieldChanges) return fieldChanges;
115
+ //This line is required to add import changes in the update context
116
+ // if (fieldChanges.length > 0 && this.modelName !== this.field.relationModelSingularName) {
117
+ const mainField = fieldChanges[0];
118
+ mainField.changes.push(this.relatedFieldImport());
119
+ // }
120
+ return fieldChanges;
121
+ }
122
+ addOrUpdateAdditionalField() {
123
+ const fieldChanges = [];
124
+ // Add or update the ids field
125
+ fieldChanges.push(this.updateAdditionalIdsField());
126
+ // Add or update the command field
127
+ fieldChanges.push(this.updateAdditionalCommandField());
128
+ return fieldChanges;
129
+ }
130
+ updateAdditionalIdsField() {
131
+ var _a;
132
+ const idsFieldName = `${this.field.name}Ids`;
133
+ const source = this.source;
134
+ const field = this.field;
135
+ // Handle the main source additional fields
136
+ // Add or update the ids field
137
+ const idsField = (_a = this.getFieldIdentifierNode(idsFieldName, source)) === null || _a === void 0 ? void 0 : _a.parent;
138
+ if (idsField == null) {
139
+ return this.addAdditionalIdsField();
140
+ }
141
+ else {
142
+ //Update the ids field
143
+ const fieldType = typescript_1.default.factory.createArrayTypeNode(typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.NumberKeyword));
144
+ const decoratorManagers = [
145
+ new OptionalDecoratorManager_1.OptionalDecoratorManager({ isApplyOptional: true, optional: true, source: source, field: field }),
146
+ new ArrayDecoratorManager_1.ArrayDecoratorManager({ isArray: true, source: source, field: field })
147
+ ];
148
+ return this.updateFieldInternal(idsFieldName, fieldType, decoratorManagers, field, source);
149
+ }
150
+ }
151
+ updateAdditionalCommandField() {
152
+ var _a;
153
+ const commandFieldName = `${this.field.name}Command`;
154
+ const source = this.source;
155
+ const field = this.field;
156
+ // Handle the main source additional fields
157
+ // Add or update the command field
158
+ const commandField = (_a = this.getFieldIdentifierNode(commandFieldName, source)) === null || _a === void 0 ? void 0 : _a.parent;
159
+ if (commandField == null) {
160
+ return this.addAdditionalCommandField();
161
+ }
162
+ else {
163
+ //Update the command field
164
+ const fieldType = typescript_1.default.factory.createKeywordTypeNode(typescript_1.default.SyntaxKind.StringKeyword);
165
+ const decoratorManagers = [
166
+ new StringDecoratorManager_1.StringDecoratorManager({ isString: true, source: source, field: field }),
167
+ new OptionalDecoratorManager_1.OptionalDecoratorManager({ isApplyOptional: true, optional: true, source: source, field: field }),
168
+ // TODO pending @IsEnum(RelationFieldsCommand)
169
+ ];
170
+ return this.updateFieldInternal(commandFieldName, fieldType, decoratorManagers, field, source);
171
+ }
172
+ }
173
+ removeAdditionalField() {
174
+ const fieldChanges = [];
175
+ // Add the ids field to the main entity
176
+ fieldChanges.push(this.removeAdditionalIdsField());
177
+ // Add the command field to the main entity
178
+ fieldChanges.push(this.removeAdditionalCommandField());
179
+ return fieldChanges;
180
+ }
181
+ removeAdditionalIdsField() {
182
+ const fieldName = `${this.field.name}Ids`;
183
+ const source = this.source;
184
+ return this.removeFieldFor(fieldName, source);
185
+ }
186
+ removeAdditionalCommandField() {
187
+ const fieldName = `${this.field.name}Command`;
188
+ const source = this.source;
189
+ return this.removeFieldFor(fieldName, source);
190
+ }
191
+ isAdditionalFieldRequired() {
192
+ return true;
193
+ }
194
+ relatedFieldImport() {
195
+ const relatedEntityImportName = `update-${(0, strings_1.dasherize)(this.field.relationModelSingularName)}.dto`;
196
+ const relatedEntityPath = this.field.relationModelModuleName ? `src/${this.field.relationModelModuleName}/dtos/${relatedEntityImportName}` : `./${relatedEntityImportName}`;
197
+ return (0, FieldManager_1.safeInsertImport)(this.source, `Update${(0, strings_1.classify)(this.field.relationModelSingularName)}Dto`, relatedEntityPath, this.moduleName);
198
+ // return insertImport(this.source, this.source.fileName, `Update${classify(this.field.relationModelSingularName)}Dto`, relatedEntityPath);
199
+ } //Uncomment this method while implementing many-to-many relation changes
200
+ }
201
+ exports.OneToManyRelationFieldManagerForDto = OneToManyRelationFieldManagerForDto;
202
+ //# sourceMappingURL=OneToManyRelationFieldManagerForDto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OneToManyRelationFieldManagerForDto.js","sourceRoot":"","sources":["../../../../../../src/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldManagerForDto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { Change } from '@schematics/angular/utility/change';
2
+ import { FieldChange, FieldManager, FieldType } from '../../FieldManager';
3
+ import { BaseFieldManagerForEntity } from '../base/BaseFieldManagerForEntity';
4
+ export declare class OneToManyRelationFieldManagerForEntity extends BaseFieldManagerForEntity implements FieldManager {
5
+ addField(): FieldChange[];
6
+ updateField(): FieldChange[];
7
+ relatedFieldImport(): Change;
8
+ fieldType(): FieldType;
9
+ }
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.OneToManyRelationFieldManagerForEntity = void 0;
7
+ const strings_1 = require("@angular-devkit/core/src/utils/strings");
8
+ const typescript_1 = __importDefault(require("@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript"));
9
+ const FieldManager_1 = require("../../FieldManager");
10
+ const BaseFieldManagerForEntity_1 = require("../base/BaseFieldManagerForEntity");
11
+ class OneToManyRelationFieldManagerForEntity extends BaseFieldManagerForEntity_1.BaseFieldManagerForEntity {
12
+ addField() {
13
+ const fieldChanges = super.addField();
14
+ if (fieldChanges.length > 0 && this.modelName !== this.field.relationModelSingularName) {
15
+ const mainField = fieldChanges[0]; // The 1st field change is the main field change, related to the entity source file
16
+ mainField.changes.push(this.relatedFieldImport());
17
+ }
18
+ return fieldChanges;
19
+ }
20
+ updateField() {
21
+ const fieldChanges = super.updateField();
22
+ if (fieldChanges.length > 0 && this.modelName !== this.field.relationModelSingularName) {
23
+ const mainField = fieldChanges[0]; // The 1st field change is the main field change, related to the entity source file
24
+ mainField.changes.push(this.relatedFieldImport());
25
+ }
26
+ return fieldChanges;
27
+ }
28
+ relatedFieldImport() {
29
+ const relatedEntityImportName = `${(0, strings_1.dasherize)(this.field.relationModelSingularName)}.entity`;
30
+ const relatedEntityPath = this.field.relationModelModuleName ? `src/${(0, strings_1.dasherize)(this.field.relationModelModuleName)}/entities/${relatedEntityImportName}` : `./${relatedEntityImportName}`;
31
+ return (0, FieldManager_1.safeInsertImport)(this.source, (0, strings_1.classify)(this.field.relationModelSingularName), relatedEntityPath, this.moduleName);
32
+ }
33
+ fieldType() {
34
+ const type = `${(0, strings_1.classify)(this.field.relationModelSingularName)}`;
35
+ const text = `${type}[]`;
36
+ return {
37
+ text: text,
38
+ node: (_field) => typescript_1.default.factory.createArrayTypeNode(typescript_1.default.factory.createTypeReferenceNode(typescript_1.default.factory.createIdentifier(type), undefined)),
39
+ };
40
+ }
41
+ }
42
+ exports.OneToManyRelationFieldManagerForEntity = OneToManyRelationFieldManagerForEntity;
43
+ //# sourceMappingURL=OneToManyRelationFieldManagerForEntity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OneToManyRelationFieldManagerForEntity.js","sourceRoot":"","sources":["../../../../../../src/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldManagerForEntity.ts"],"names":[],"mappings":";;;;;;AAAA,oEAA6E;AAC7E,gIAAgG;AAEhG,qDAA4F;AAC5F,iFAE2C;AAE3C,MAAa,sCACX,SAAQ,qDAAyB;IAGxB,QAAQ;QACf,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QACtC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC;YACvF,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,mFAAmF;YACtH,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,YAAY,CAAA;IACrB,CAAC;IAEQ,WAAW;QAClB,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC;YACvF,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,mFAAmF;YACtH,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,YAAY,CAAA;IACrB,CAAC;IAED,kBAAkB;QAChB,MAAM,uBAAuB,GAAG,GAAG,IAAA,mBAAS,EAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,SAAS,CAAC;QAC5F,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC,OAAO,IAAA,mBAAS,EAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,aAAa,uBAAuB,EAAE,CAAC,CAAC,CAAC,KAAK,uBAAuB,EAAE,CAAC;QAC3L,OAAO,IAAA,+BAAgB,EAAC,IAAI,CAAC,MAAM,EAAE,IAAA,kBAAQ,EAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,EAAE,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3H,CAAC;IAGD,SAAS;QACP,MAAM,IAAI,GAAG,GAAG,IAAA,kBAAQ,EAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,CAAC,EAAE,CAAA;QAChE,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,CAAA;QACxB,OAAO;YACL,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,CAAC,MAAW,EAAE,EAAE,CACpB,oBAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,oBAAE,CAAC,OAAO,CAAC,uBAAuB,CAC/D,oBAAE,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,EACjC,SAAS,CACV,CAAC;SACL,CAAC;IACJ,CAAC;CAEF;AA1CD,wFA0CC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@solidstarters/solid-code-builder",
3
- "version": "1.0.11",
3
+ "version": "1.0.12",
4
4
  "description": "This package is use to generate code for the @solidstarters projects",
5
5
  "private": false,
6
6
  "publishConfig": {
@@ -20,6 +20,8 @@ import { RichTextFieldHandler } from './field-managers/rich-text/RichTextFieldHa
20
20
  import { ShortTextFieldHandler } from './field-managers/short-text/ShortTextFieldHandler';
21
21
  import { UUIDFieldHandler } from './field-managers/uuid/UUIDFieldHandler';
22
22
  import { SOLID_CORE_MODULE_NAME, SOLID_CORE_MODULE_NPM_PACKAGE_NAME } from '../model/helpers';
23
+ import { OneToManyRelationFieldHandler } from './field-managers/relation/OneToManyRelationFieldHandler';
24
+ import { ManyToManyInverseRelationFieldHandler } from './field-managers/relation/ManyToManyInverseRelationFieldHandler';
23
25
 
24
26
  export const MAX_EMAIL_LENGTH = 254;
25
27
  export const UUID_REGEX = `^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$`;
@@ -212,13 +214,23 @@ export function getFieldHandler(
212
214
  case SolidFieldType.datetime:
213
215
  case SolidFieldType.time:
214
216
  return new DateFieldHandler(tree, moduleName, modelName, field);
215
- case SolidFieldType.relation:
216
- if (field.relationType === RelationType.ManyToMany) {
217
- return new ManyToManyRelationFieldHandler(tree, moduleName, modelName, field);
218
- }
219
- else {
217
+ case SolidFieldType.relation: {
218
+ if (field.relationType === RelationType.ManyToOne) {
220
219
  return new ManyToOneRelationFieldHandler(tree, moduleName, modelName, field);
221
220
  }
221
+ else if (field.relationType === RelationType.OneToMany) {
222
+ return new OneToManyRelationFieldHandler(tree, moduleName, modelName, field);
223
+ }
224
+ else if (field.relationType === RelationType.ManyToMany) {
225
+ if (field.isRelationManyToManyOwner) {
226
+ return new ManyToManyRelationFieldHandler(tree, moduleName, modelName, field);
227
+ }
228
+ else {
229
+ return new ManyToManyInverseRelationFieldHandler(tree, moduleName, modelName, field);
230
+ }
231
+ }
232
+ return new NoOpsFieldHandler(tree, moduleName, modelName, field);
233
+ }
222
234
  case SolidFieldType.mediaSingle:
223
235
  case SolidFieldType.mediaMultiple:
224
236
  return new NoOpsFieldHandler(tree, moduleName, modelName, field);
@@ -269,7 +281,8 @@ export function getClassExportKeywordNode (className: string, sourceFile: ts.Sou
269
281
 
270
282
  export enum RelationType {
271
283
  ManyToOne = 'many-to-one',
272
- ManyToMany = 'many-to-many'
284
+ ManyToMany = 'many-to-many',
285
+ OneToMany = "one-to-many"
273
286
  }
274
287
 
275
288
  export enum DtoSourceType {
@@ -13,7 +13,7 @@ export class IndexDecoratorManager implements DecoratorManager {
13
13
 
14
14
  constructor(public options: IndexDecoratorOptions, public fieldNode?: PropertyDeclaration) { }
15
15
  isApplyDecorator(): boolean {
16
- return this.options.index && this.options.field.relationType !== RelationType.ManyToMany;
16
+ return this.options.index && this.options.field.relationType !== RelationType.ManyToMany && this.options.field.relationType !== RelationType.OneToMany;
17
17
  }
18
18
  decoratorName(): string {
19
19
  return 'Index';
@@ -28,6 +28,7 @@ import { JoinTableDecoratorManager } from '../../decorator-managers/entity/JoinT
28
28
  import { RelationType } from "../../FieldManager";
29
29
  import { UniqueIndexDecoratorManager } from '../../decorator-managers/entity/UniqueIndexDecoratorManager';
30
30
  import { JoinColumnDecoratorManager } from '../../decorator-managers/entity/JoinColumnDecoratorManager';
31
+ import { OneToManyDecoratorManager } from '../../decorator-managers/entity/OneToManyDecoratorManager';
31
32
 
32
33
  export abstract class BaseFieldManagerForEntity implements FieldManager {
33
34
  source: SourceFile;
@@ -38,6 +39,7 @@ export abstract class BaseFieldManagerForEntity implements FieldManager {
38
39
  manyToManyDecoratorManager: DecoratorManager;
39
40
  joinTableDecoratorManager: DecoratorManager;
40
41
  uniqueIndexDecoratorManager: UniqueIndexDecoratorManager;
42
+ oneToManyDecoratorManager: OneToManyDecoratorManager;
41
43
  constructor(
42
44
  tree: Tree,
43
45
  protected readonly moduleName: string,
@@ -88,7 +90,7 @@ export abstract class BaseFieldManagerForEntity implements FieldManager {
88
90
  );
89
91
  this.joinColumnDecoratorManager = new JoinColumnDecoratorManager(
90
92
  {
91
- isManyToOneRelationOwner: this.field.relationType === RelationType.ManyToOne,
93
+ isManyToOneRelationOwner: this.isManyToOne(),
92
94
  source: this.source,
93
95
  field: this.field,
94
96
  fieldName: this.fieldName(),
@@ -101,7 +103,7 @@ export abstract class BaseFieldManagerForEntity implements FieldManager {
101
103
  relationModelName: this.field.relationModelSingularName,
102
104
  relationInverseFieldName: this.field.relationModelFieldName,
103
105
  relationCascade: this.field.relationCascade,
104
- owner: true,
106
+ owner: this.field.isRelationManyToManyOwner,
105
107
  source: this.source,
106
108
  field: this.field,
107
109
  fieldName: this.fieldName(),
@@ -110,7 +112,7 @@ export abstract class BaseFieldManagerForEntity implements FieldManager {
110
112
  );
111
113
  this.joinTableDecoratorManager = new JoinTableDecoratorManager(
112
114
  {
113
- isManyToManyRelationOwner: this.field.relationType === RelationType.ManyToMany,
115
+ isManyToManyRelationOwner: this.isManyToMany() && this.field.isRelationManyToManyOwner,
114
116
  source: this.source,
115
117
  field: this.field,
116
118
  fieldName: this.fieldName(),
@@ -124,6 +126,17 @@ export abstract class BaseFieldManagerForEntity implements FieldManager {
124
126
  { unique: this.field.unique, fieldName: this.fieldName(), source: this.source, field: this.field },
125
127
  this.getClassNode(this.modelName, this.source)
126
128
  );
129
+ this.oneToManyDecoratorManager = new OneToManyDecoratorManager(
130
+ {
131
+ isOneToMany: this.isOneToMany(),
132
+ relationCascade: this.field.relationCascade,
133
+ source: this.source,
134
+ field: this.field,
135
+ fieldName: this.fieldName(),
136
+ modelName: this.modelName,
137
+ },
138
+ );
139
+
127
140
  }
128
141
 
129
142
  protected addFieldInternal(fieldName: string, fieldType: string, decoratorManagers: DecoratorManager[], field: any, modelName: any, source: ts.SourceFile): FieldChange {
@@ -452,6 +465,9 @@ export abstract class BaseFieldManagerForEntity implements FieldManager {
452
465
  return (this.field.type === 'relation' && this.field.relationType === RelationType.ManyToOne);
453
466
  }
454
467
 
468
+ private isOneToMany(): boolean {
469
+ return (this.field.type === 'relation' && this.field.relationType === RelationType.OneToMany);
470
+ }
455
471
 
456
472
 
457
473
  protected isAdditionalFieldRequired(): boolean {
@@ -0,0 +1,52 @@
1
+ import { DtoSourceType, FieldChange, FieldHandler, FieldManager, ManagerForDtoOptions } from '../../FieldManager';
2
+ import { ManyToManyInverseRelationFieldManagerForDto } from './ManyToManyInverseRelationFieldManagerForDto';
3
+ import { ManyToManyInverseRelationFieldManagerForEntity } from './ManyToManyInverseRelationFieldManagerForEntity';
4
+
5
+
6
+ export class ManyToManyInverseRelationFieldHandler implements FieldHandler {
7
+ entityFieldManager: FieldManager;
8
+ createDtoFieldManager: FieldManager;
9
+ updateDtoFieldManager: FieldManager;
10
+ constructor(tree: any, moduleName: string, modelName: string, field: any) {
11
+ this.entityFieldManager = new ManyToManyInverseRelationFieldManagerForEntity(
12
+ tree,
13
+ moduleName,
14
+ modelName,
15
+ field,
16
+ );
17
+ this.createDtoFieldManager = new ManyToManyInverseRelationFieldManagerForDto(
18
+ tree,
19
+ moduleName,
20
+ modelName,
21
+ field,
22
+ new ManagerForDtoOptions(DtoSourceType.Create),
23
+ );
24
+ this.updateDtoFieldManager = new ManyToManyInverseRelationFieldManagerForDto(
25
+ tree,
26
+ moduleName,
27
+ modelName,
28
+ field,
29
+ new ManagerForDtoOptions(DtoSourceType.Update),
30
+ );
31
+ }
32
+ updateEntityField(): FieldChange[] {
33
+ return this.entityFieldManager.updateField();
34
+ }
35
+ updateDtoField(): FieldChange[] {
36
+ return [...this.createDtoFieldManager.updateField(), ...this.updateDtoFieldManager.updateField()];
37
+ }
38
+ removeEntityField(): FieldChange[] {
39
+ return this.entityFieldManager.removeField();
40
+ }
41
+ removeDtoField(): FieldChange[] {
42
+ return [...this.createDtoFieldManager.removeField(), ...this.updateDtoFieldManager.removeField()];
43
+ }
44
+
45
+ addEntityField(): FieldChange[] {
46
+ return this.entityFieldManager.addField();
47
+ }
48
+
49
+ addDtoField(): FieldChange[] {
50
+ return [...this.createDtoFieldManager.addField(), ...this.updateDtoFieldManager.addField()];
51
+ }
52
+ }
@@ -0,0 +1,8 @@
1
+ import { FieldManager } from '../../FieldManager';
2
+ import { ManyToManyRelationFieldManagerForDto } from './ManyToManyRelationFieldManagerForDto';
3
+
4
+ // For DTO's, the inverse relation behaivour is the same as the normal relation
5
+ export class ManyToManyInverseRelationFieldManagerForDto
6
+ extends ManyToManyRelationFieldManagerForDto
7
+ implements FieldManager {
8
+ }
@@ -0,0 +1,8 @@
1
+ import { FieldManager } from '../../FieldManager';
2
+ import { ManyToManyRelationFieldManagerForEntity } from './ManyToManyRelationFieldManagerForEntity';
3
+
4
+ export class ManyToManyInverseRelationFieldManagerForEntity
5
+ extends ManyToManyRelationFieldManagerForEntity
6
+ implements FieldManager {
7
+
8
+ }