@solidstarters/solid-code-builder 1.0.13 → 1.0.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 (173) hide show
  1. package/dist/code-builder/lib/field/FieldManager.d.ts +1 -1
  2. package/dist/code-builder/lib/field/FieldManager.js +20 -21
  3. package/dist/code-builder/lib/field/FieldManager.js.map +1 -1
  4. package/dist/code-builder/lib/field/decorator-managers/entity/IndexDecoratorManager.d.ts +3 -0
  5. package/dist/code-builder/lib/field/decorator-managers/entity/IndexDecoratorManager.js +38 -3
  6. package/dist/code-builder/lib/field/decorator-managers/entity/IndexDecoratorManager.js.map +1 -1
  7. package/dist/code-builder/lib/field/decorator-managers/entity/JoinColumnDecoratorManager.d.ts +1 -1
  8. package/dist/code-builder/lib/field/decorator-managers/entity/JoinColumnDecoratorManager.js +4 -4
  9. package/dist/code-builder/lib/field/decorator-managers/entity/JoinColumnDecoratorManager.js.map +1 -1
  10. package/dist/code-builder/lib/field/decorator-managers/entity/ManyToManyDecoratorManager.d.ts +1 -2
  11. package/dist/code-builder/lib/field/decorator-managers/entity/ManyToManyDecoratorManager.js.map +1 -1
  12. package/dist/code-builder/lib/field/decorator-managers/entity/ManyToOneDecoratorManager.d.ts +1 -1
  13. package/dist/code-builder/lib/field/decorator-managers/entity/ManyToOneDecoratorManager.js +2 -2
  14. package/dist/code-builder/lib/field/decorator-managers/entity/ManyToOneDecoratorManager.js.map +1 -1
  15. package/dist/code-builder/lib/field/decorator-managers/entity/OneToManyDecoratorManager.d.ts +1 -2
  16. package/dist/code-builder/lib/field/decorator-managers/entity/OneToManyDecoratorManager.js.map +1 -1
  17. package/dist/code-builder/lib/field/decorator-managers/entity/UniqueIndexDecoratorManager.d.ts +1 -0
  18. package/dist/code-builder/lib/field/decorator-managers/entity/UniqueIndexDecoratorManager.js +3 -1
  19. package/dist/code-builder/lib/field/decorator-managers/entity/UniqueIndexDecoratorManager.js.map +1 -1
  20. package/dist/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.d.ts +2 -1
  21. package/dist/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.js +11 -12
  22. package/dist/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.js.map +1 -1
  23. package/dist/code-builder/lib/field/field-managers/bigint/BigIntFieldHandler.d.ts +1 -1
  24. package/dist/code-builder/lib/field/field-managers/bigint/BigIntFieldHandler.js +2 -2
  25. package/dist/code-builder/lib/field/field-managers/bigint/BigIntFieldHandler.js.map +1 -1
  26. package/dist/code-builder/lib/field/field-managers/bigint/BigIntFieldManagerForEntity.d.ts +1 -1
  27. package/dist/code-builder/lib/field/field-managers/bigint/BigIntFieldManagerForEntity.js +2 -2
  28. package/dist/code-builder/lib/field/field-managers/bigint/BigIntFieldManagerForEntity.js.map +1 -1
  29. package/dist/code-builder/lib/field/field-managers/boolean/BooleanFieldHandler.d.ts +1 -1
  30. package/dist/code-builder/lib/field/field-managers/boolean/BooleanFieldHandler.js +2 -2
  31. package/dist/code-builder/lib/field/field-managers/boolean/BooleanFieldHandler.js.map +1 -1
  32. package/dist/code-builder/lib/field/field-managers/boolean/BooleanFieldManagerForEntity.d.ts +1 -1
  33. package/dist/code-builder/lib/field/field-managers/boolean/BooleanFieldManagerForEntity.js +2 -2
  34. package/dist/code-builder/lib/field/field-managers/boolean/BooleanFieldManagerForEntity.js.map +1 -1
  35. package/dist/code-builder/lib/field/field-managers/computed/ComputedFieldHandler.d.ts +1 -1
  36. package/dist/code-builder/lib/field/field-managers/computed/ComputedFieldHandler.js +2 -2
  37. package/dist/code-builder/lib/field/field-managers/computed/ComputedFieldHandler.js.map +1 -1
  38. package/dist/code-builder/lib/field/field-managers/computed/ComputedFieldManagerForEntity.d.ts +1 -1
  39. package/dist/code-builder/lib/field/field-managers/computed/ComputedFieldManagerForEntity.js +2 -2
  40. package/dist/code-builder/lib/field/field-managers/computed/ComputedFieldManagerForEntity.js.map +1 -1
  41. package/dist/code-builder/lib/field/field-managers/date/DateFieldHandler.d.ts +1 -1
  42. package/dist/code-builder/lib/field/field-managers/date/DateFieldHandler.js +2 -2
  43. package/dist/code-builder/lib/field/field-managers/date/DateFieldHandler.js.map +1 -1
  44. package/dist/code-builder/lib/field/field-managers/date/DateFieldManagerForEntity.d.ts +1 -1
  45. package/dist/code-builder/lib/field/field-managers/date/DateFieldManagerForEntity.js +2 -2
  46. package/dist/code-builder/lib/field/field-managers/date/DateFieldManagerForEntity.js.map +1 -1
  47. package/dist/code-builder/lib/field/field-managers/decimal/DecimalFieldHandler.d.ts +1 -1
  48. package/dist/code-builder/lib/field/field-managers/decimal/DecimalFieldHandler.js +2 -2
  49. package/dist/code-builder/lib/field/field-managers/decimal/DecimalFieldHandler.js.map +1 -1
  50. package/dist/code-builder/lib/field/field-managers/decimal/DecimalFieldManagerForEntity.d.ts +1 -1
  51. package/dist/code-builder/lib/field/field-managers/decimal/DecimalFieldManagerForEntity.js +2 -2
  52. package/dist/code-builder/lib/field/field-managers/decimal/DecimalFieldManagerForEntity.js.map +1 -1
  53. package/dist/code-builder/lib/field/field-managers/email/EmailFieldHandler.d.ts +1 -1
  54. package/dist/code-builder/lib/field/field-managers/email/EmailFieldHandler.js +2 -2
  55. package/dist/code-builder/lib/field/field-managers/email/EmailFieldHandler.js.map +1 -1
  56. package/dist/code-builder/lib/field/field-managers/email/EmailFieldManagerForEntity.d.ts +1 -1
  57. package/dist/code-builder/lib/field/field-managers/email/EmailFieldManagerForEntity.js +2 -2
  58. package/dist/code-builder/lib/field/field-managers/email/EmailFieldManagerForEntity.js.map +1 -1
  59. package/dist/code-builder/lib/field/field-managers/int/IntFieldHandler.d.ts +1 -1
  60. package/dist/code-builder/lib/field/field-managers/int/IntFieldHandler.js +2 -2
  61. package/dist/code-builder/lib/field/field-managers/int/IntFieldHandler.js.map +1 -1
  62. package/dist/code-builder/lib/field/field-managers/int/IntFieldManagerForEntity.d.ts +1 -1
  63. package/dist/code-builder/lib/field/field-managers/int/IntFieldManagerForEntity.js +2 -2
  64. package/dist/code-builder/lib/field/field-managers/int/IntFieldManagerForEntity.js.map +1 -1
  65. package/dist/code-builder/lib/field/field-managers/json/JsonFieldHandler.d.ts +1 -1
  66. package/dist/code-builder/lib/field/field-managers/json/JsonFieldHandler.js +2 -2
  67. package/dist/code-builder/lib/field/field-managers/json/JsonFieldHandler.js.map +1 -1
  68. package/dist/code-builder/lib/field/field-managers/json/JsonFieldManagerForEntity.d.ts +1 -1
  69. package/dist/code-builder/lib/field/field-managers/json/JsonFieldManagerForEntity.js +2 -2
  70. package/dist/code-builder/lib/field/field-managers/json/JsonFieldManagerForEntity.js.map +1 -1
  71. package/dist/code-builder/lib/field/field-managers/long-text/LongTextFieldHandler.d.ts +1 -1
  72. package/dist/code-builder/lib/field/field-managers/long-text/LongTextFieldHandler.js +2 -2
  73. package/dist/code-builder/lib/field/field-managers/long-text/LongTextFieldHandler.js.map +1 -1
  74. package/dist/code-builder/lib/field/field-managers/long-text/LongTextFieldManagerForEntity.d.ts +1 -1
  75. package/dist/code-builder/lib/field/field-managers/long-text/LongTextFieldManagerForEntity.js +2 -2
  76. package/dist/code-builder/lib/field/field-managers/long-text/LongTextFieldManagerForEntity.js.map +1 -1
  77. package/dist/code-builder/lib/field/field-managers/password/PasswordFieldHandler.d.ts +1 -1
  78. package/dist/code-builder/lib/field/field-managers/password/PasswordFieldHandler.js +2 -2
  79. package/dist/code-builder/lib/field/field-managers/password/PasswordFieldHandler.js.map +1 -1
  80. package/dist/code-builder/lib/field/field-managers/password/PasswordFieldManagerForEntity.d.ts +1 -1
  81. package/dist/code-builder/lib/field/field-managers/password/PasswordFieldManagerForEntity.js +2 -2
  82. package/dist/code-builder/lib/field/field-managers/password/PasswordFieldManagerForEntity.js.map +1 -1
  83. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldHandler.d.ts +1 -1
  84. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldHandler.js +2 -2
  85. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldHandler.js.map +1 -1
  86. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldHandler.d.ts +1 -1
  87. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldHandler.js +2 -2
  88. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldHandler.js.map +1 -1
  89. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForDto.js +14 -9
  90. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForDto.js.map +1 -1
  91. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForEntity.js +5 -5
  92. package/dist/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForEntity.js.map +1 -1
  93. package/dist/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldHandler.d.ts +1 -1
  94. package/dist/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldHandler.js +2 -2
  95. package/dist/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldHandler.js.map +1 -1
  96. package/dist/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForDto.js +3 -0
  97. package/dist/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForDto.js.map +1 -1
  98. package/dist/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForEntity.js +6 -6
  99. package/dist/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForEntity.js.map +1 -1
  100. package/dist/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldHandler.d.ts +1 -1
  101. package/dist/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldHandler.js +2 -2
  102. package/dist/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldHandler.js.map +1 -1
  103. package/dist/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldManagerForDto.js +7 -2
  104. package/dist/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldManagerForDto.js.map +1 -1
  105. package/dist/code-builder/lib/field/field-managers/rich-text/RichTextFieldHandler.d.ts +1 -1
  106. package/dist/code-builder/lib/field/field-managers/rich-text/RichTextFieldHandler.js +2 -2
  107. package/dist/code-builder/lib/field/field-managers/rich-text/RichTextFieldHandler.js.map +1 -1
  108. package/dist/code-builder/lib/field/field-managers/rich-text/RichTextFieldManagerForEntity.d.ts +1 -1
  109. package/dist/code-builder/lib/field/field-managers/rich-text/RichTextFieldManagerForEntity.js +2 -2
  110. package/dist/code-builder/lib/field/field-managers/rich-text/RichTextFieldManagerForEntity.js.map +1 -1
  111. package/dist/code-builder/lib/field/field-managers/short-text/ShortTextFieldHandler.d.ts +1 -1
  112. package/dist/code-builder/lib/field/field-managers/short-text/ShortTextFieldHandler.js +2 -2
  113. package/dist/code-builder/lib/field/field-managers/short-text/ShortTextFieldHandler.js.map +1 -1
  114. package/dist/code-builder/lib/field/field-managers/short-text/ShortTextFieldManagerForEntity.d.ts +1 -1
  115. package/dist/code-builder/lib/field/field-managers/short-text/ShortTextFieldManagerForEntity.js +2 -2
  116. package/dist/code-builder/lib/field/field-managers/short-text/ShortTextFieldManagerForEntity.js.map +1 -1
  117. package/dist/code-builder/lib/field/field-managers/uuid/UUIDFieldHandler.d.ts +1 -1
  118. package/dist/code-builder/lib/field/field-managers/uuid/UUIDFieldHandler.js +2 -2
  119. package/dist/code-builder/lib/field/field-managers/uuid/UUIDFieldHandler.js.map +1 -1
  120. package/dist/code-builder/lib/field/field-managers/uuid/UUIDFieldManagerForEntity.d.ts +1 -1
  121. package/dist/code-builder/lib/field/field-managers/uuid/UUIDFieldManagerForEntity.js +2 -2
  122. package/dist/code-builder/lib/field/field-managers/uuid/UUIDFieldManagerForEntity.js.map +1 -1
  123. package/dist/code-builder/lib/model/add-model.schema.json +4 -0
  124. package/dist/code-builder/lib/model/helpers.js +3 -3
  125. package/dist/code-builder/lib/model/helpers.js.map +1 -1
  126. package/dist/code-builder/lib/model/refresh-model.schema.json +4 -0
  127. package/package.json +1 -1
  128. package/src/code-builder/lib/field/FieldManager.ts +20 -20
  129. package/src/code-builder/lib/field/decorator-managers/entity/IndexDecoratorManager.ts +48 -4
  130. package/src/code-builder/lib/field/decorator-managers/entity/JoinColumnDecoratorManager.ts +5 -5
  131. package/src/code-builder/lib/field/decorator-managers/entity/ManyToManyDecoratorManager.ts +1 -2
  132. package/src/code-builder/lib/field/decorator-managers/entity/ManyToOneDecoratorManager.ts +3 -3
  133. package/src/code-builder/lib/field/decorator-managers/entity/OneToManyDecoratorManager.ts +1 -2
  134. package/src/code-builder/lib/field/decorator-managers/entity/UniqueIndexDecoratorManager.ts +3 -1
  135. package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.ts +10 -12
  136. package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldHandler.ts +2 -1
  137. package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldManagerForEntity.ts +2 -2
  138. package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldHandler.ts +2 -1
  139. package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldManagerForEntity.ts +2 -2
  140. package/src/code-builder/lib/field/field-managers/computed/ComputedFieldHandler.ts +2 -0
  141. package/src/code-builder/lib/field/field-managers/computed/ComputedFieldManagerForEntity.ts +2 -2
  142. package/src/code-builder/lib/field/field-managers/date/DateFieldHandler.ts +2 -1
  143. package/src/code-builder/lib/field/field-managers/date/DateFieldManagerForEntity.ts +2 -2
  144. package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldHandler.ts +2 -1
  145. package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldManagerForEntity.ts +2 -2
  146. package/src/code-builder/lib/field/field-managers/email/EmailFieldHandler.ts +2 -0
  147. package/src/code-builder/lib/field/field-managers/email/EmailFieldManagerForEntity.ts +2 -2
  148. package/src/code-builder/lib/field/field-managers/int/IntFieldHandler.ts +2 -1
  149. package/src/code-builder/lib/field/field-managers/int/IntFieldManagerForEntity.ts +2 -2
  150. package/src/code-builder/lib/field/field-managers/json/JsonFieldHandler.ts +2 -0
  151. package/src/code-builder/lib/field/field-managers/json/JsonFieldManagerForEntity.ts +2 -2
  152. package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldHandler.ts +2 -0
  153. package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldManagerForEntity.ts +2 -2
  154. package/src/code-builder/lib/field/field-managers/password/PasswordFieldHandler.ts +2 -0
  155. package/src/code-builder/lib/field/field-managers/password/PasswordFieldManagerForEntity.ts +2 -2
  156. package/src/code-builder/lib/field/field-managers/relation/ManyToManyInverseRelationFieldHandler.ts +2 -1
  157. package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldHandler.ts +2 -1
  158. package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForDto.ts +14 -9
  159. package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForEntity.ts +5 -5
  160. package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldHandler.ts +2 -1
  161. package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForDto.ts +3 -0
  162. package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForEntity.ts +6 -6
  163. package/src/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldHandler.ts +2 -1
  164. package/src/code-builder/lib/field/field-managers/relation/OneToManyRelationFieldManagerForDto.ts +7 -2
  165. package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldHandler.ts +2 -0
  166. package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldManagerForEntity.ts +2 -2
  167. package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldHandler.ts +2 -0
  168. package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldManagerForEntity.ts +2 -2
  169. package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldHandler.ts +2 -0
  170. package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldManagerForEntity.ts +2 -2
  171. package/src/code-builder/lib/model/add-model.schema.json +4 -0
  172. package/src/code-builder/lib/model/helpers.ts +3 -0
  173. package/src/code-builder/lib/model/refresh-model.schema.json +4 -0
@@ -7,13 +7,13 @@ interface IndexDecoratorOptions {
7
7
  index: boolean;
8
8
  source: ts.SourceFile;
9
9
  field: any;
10
+ modelEnableSoftDelete?: any
10
11
  }
11
12
 
12
13
  export class IndexDecoratorManager implements DecoratorManager {
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 && this.options.field.relationType !== RelationType.OneToMany;
16
+ return (this.options.index || (!this.options.modelEnableSoftDelete && this.options.field.unique)) && this.options.field.relationType !== RelationType.ManyToMany && this.options.field.relationType !== RelationType.OneToMany;
17
17
  }
18
18
  decoratorName(): string {
19
19
  return 'Index';
@@ -25,7 +25,8 @@ export class IndexDecoratorManager implements DecoratorManager {
25
25
  const fieldSourceLines = [];
26
26
  const changes: Change[] = [];
27
27
  // if (this.field.index) {
28
- const indexDecoratorLine = `@Index()`;
28
+ const indexOptions = this.buildColumnOptionsCode();
29
+ const indexDecoratorLine = indexOptions ? `@Index(${indexOptions})` : `@Index()`;
29
30
  fieldSourceLines.push(indexDecoratorLine);
30
31
  changes.push(...this.decoratorImports());
31
32
  // }
@@ -78,11 +79,23 @@ export class IndexDecoratorManager implements DecoratorManager {
78
79
  }
79
80
 
80
81
  private createIndexDecorator(): ts.ModifierLike {
82
+ const indexArguments: ts.Expression[] = [];
83
+ if ((this.options.modelEnableSoftDelete === undefined || this.options.modelEnableSoftDelete === false)
84
+ && this.options.field.unique) {
85
+ indexArguments.push(
86
+ ts.factory.createObjectLiteralExpression([
87
+ ts.factory.createPropertyAssignment(
88
+ 'unique',
89
+ ts.factory.createTrue()
90
+ )
91
+ ])
92
+ );
93
+ }
81
94
  return ts.factory.createDecorator(
82
95
  ts.factory.createCallExpression(
83
96
  ts.factory.createIdentifier('Index'),
84
97
  undefined,
85
- [],
98
+ indexArguments
86
99
  ),
87
100
  );
88
101
  }
@@ -101,5 +114,36 @@ export class IndexDecoratorManager implements DecoratorManager {
101
114
  return identifier.text === identifierName;
102
115
  }
103
116
 
117
+ private buildColumnDecoratorOptions(): Map<string, any> {
118
+ const options: Map<string, any> = new Map<string, any>();
119
+
120
+ if ((this.options.modelEnableSoftDelete === undefined || this.options.modelEnableSoftDelete === false)
121
+ && this.options.field.unique) {
122
+ options.set('unique', true);
123
+ }
124
+
125
+ return options;
126
+ }
104
127
 
128
+ private buildColumnOptionsCode(): string {
129
+ const options = this.buildColumnDecoratorOptions();
130
+ const keys = Array.from(options.keys());
131
+
132
+ if (keys.length === 0) {
133
+ return '';
134
+ }
135
+
136
+ const optionsString = keys
137
+ .filter((key) => options.get(key) !== null)
138
+ .map((key) => {
139
+ if (typeof options.get(key) === 'string') {
140
+ return `${key}: "${options.get(key)}"`;
141
+ } else {
142
+ return `${key}: ${options.get(key)}`;
143
+ }
144
+ })
145
+ .join(', ');
146
+
147
+ return `{ ${optionsString} }`;
148
+ }
105
149
  }
@@ -8,7 +8,7 @@ interface JoinColumnDecoratorOptions {
8
8
  source: ts.SourceFile;
9
9
  field: any;
10
10
  fieldName: string;
11
- relationModelFieldName?: string;
11
+ relationCoModelColumnName?: string;
12
12
  }
13
13
 
14
14
  export class JoinColumnDecoratorManager implements DecoratorManager {
@@ -88,8 +88,8 @@ export class JoinColumnDecoratorManager implements DecoratorManager {
88
88
  private buildRelationOptionsCode(): string {
89
89
  const options: Record<string, string> = {};
90
90
 
91
- if (this.options.relationModelFieldName) {
92
- options['name'] = `"${this.options.relationModelFieldName}_id"`;
91
+ if (this.options.relationCoModelColumnName) {
92
+ options['name'] = `"${this.options.relationCoModelColumnName}"`;
93
93
  return `{ ${Object.entries(options)
94
94
  .map(([key, value]) => `${key}: ${value}`)
95
95
  .join(', ')} }`;
@@ -102,11 +102,11 @@ export class JoinColumnDecoratorManager implements DecoratorManager {
102
102
 
103
103
  const newOptions: ts.ObjectLiteralElementLike[] = [];
104
104
 
105
- if (this.options.relationModelFieldName) {
105
+ if (this.options.relationCoModelColumnName) {
106
106
  newOptions.push(
107
107
  ts.factory.createPropertyAssignment(
108
108
  'name',
109
- ts.factory.createStringLiteral(`${this.options.relationModelFieldName}_id`)
109
+ ts.factory.createStringLiteral(`${this.options.relationCoModelColumnName}`)
110
110
  )
111
111
  );
112
112
  }
@@ -2,13 +2,12 @@ import { camelize, classify } from "@angular-devkit/core/src/utils/strings";
2
2
  import ts, { ModifierLike, ObjectLiteralElementLike, PropertyDeclaration } from "@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript";
3
3
  import { insertImport } from "@schematics/angular/utility/ast-utils";
4
4
  import { Change } from "@schematics/angular/utility/change";
5
- import { DecoratorManager, DeleteType, PartialAddFieldChange } from "../../FieldManager";
5
+ import { DecoratorManager, PartialAddFieldChange } from "../../FieldManager";
6
6
 
7
7
  interface ManyToManyDecoratorOptions {
8
8
  isManyToMany: boolean;
9
9
  relationModelName: string;
10
10
  relationInverseFieldName: string;
11
- relationCascade: DeleteType;
12
11
  owner: boolean;
13
12
  source: ts.SourceFile;
14
13
  field: any;
@@ -6,7 +6,7 @@ import { DecoratorManager, DeleteType, PartialAddFieldChange } from "../../Field
6
6
  import _ from 'lodash';
7
7
  interface ManyToOneDecoratorOptions {
8
8
  isManyToOne: boolean;
9
- relationModelSingularName: string;
9
+ relationCoModelSingularName: string;
10
10
  relationCascade: DeleteType;
11
11
  required: boolean;
12
12
  source: ts.SourceFile;
@@ -37,7 +37,7 @@ export class ManyToOneDecoratorManager implements DecoratorManager {
37
37
  // }
38
38
  // Add the relation decorator
39
39
  fieldSourceLines.push(
40
- `@${this.decoratorName()}(() => ${classify(this.options.relationModelSingularName)}, ${this.buildRelationOptionsCode()})`,
40
+ `@${this.decoratorName()}(() => ${classify(this.options.relationCoModelSingularName)}, ${this.buildRelationOptionsCode()})`,
41
41
  );
42
42
  changes.push(...this.decoratorImports());
43
43
  return {
@@ -148,7 +148,7 @@ export class ManyToOneDecoratorManager implements DecoratorManager {
148
148
  [],
149
149
  undefined,
150
150
  ts.factory.createToken(ts.SyntaxKind.EqualsGreaterThanToken),
151
- ts.factory.createIdentifier(classify(this.options.relationModelSingularName))
151
+ ts.factory.createIdentifier(classify(this.options.relationCoModelSingularName))
152
152
  )
153
153
  const decoratorOptionsExpression = ts.factory.createObjectLiteralExpression(newPropertyAssignments);
154
154
  const call = ts.factory.createCallExpression(decoratorIdentifier, undefined, [typeFunctionOrTarget, decoratorOptionsExpression]);
@@ -2,11 +2,10 @@ import { camelize, classify } from "@angular-devkit/core/src/utils/strings";
2
2
  import ts, { ModifierLike, ObjectLiteralElementLike, PropertyDeclaration } from "@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript";
3
3
  import { insertImport } from "@schematics/angular/utility/ast-utils";
4
4
  import { Change } from "@schematics/angular/utility/change";
5
- import { DecoratorManager, DeleteType, PartialAddFieldChange } from "../../FieldManager";
5
+ import { DecoratorManager, PartialAddFieldChange } from "../../FieldManager";
6
6
 
7
7
  interface OneToManyDecoratorOptions {
8
8
  isOneToMany: boolean;
9
- relationCascade: DeleteType;
10
9
  source: ts.SourceFile;
11
10
  field: any;
12
11
  fieldName: string;
@@ -8,12 +8,13 @@ interface UniqueIndexDecoratorOptions {
8
8
  fieldName: string;
9
9
  source: ts.SourceFile;
10
10
  field: any;
11
+ modelEnableSoftDelete?: any;
11
12
  }
12
13
 
13
14
  export class UniqueIndexDecoratorManager {
14
15
  constructor(public options: UniqueIndexDecoratorOptions, public classNode: ClassDeclaration, public fieldNode?: PropertyDeclaration) { }
15
16
  isApplyDecorator(): boolean {
16
- return this.options.unique;
17
+ return this.options.unique && this.options.modelEnableSoftDelete;
17
18
  }
18
19
  decoratorName(): string {
19
20
  return 'Index';
@@ -47,6 +48,7 @@ export class UniqueIndexDecoratorManager {
47
48
  // @returns the updated property declaration
48
49
  updateDecorator(): [ClassDeclaration, Change[]] {
49
50
  if (!this.classNode) throw new Error('Class node is required for updating the unique index decorator');
51
+ if (!this.fieldNode) throw new Error('Field node is required for updating the unique index decorator');
50
52
 
51
53
  let existingModifierLikes: ts.NodeArray<ModifierLike> | undefined = this.classNode.modifiers;
52
54
 
@@ -45,6 +45,7 @@ export abstract class BaseFieldManagerForEntity implements FieldManager {
45
45
  protected readonly moduleName: string,
46
46
  protected readonly modelName: string,
47
47
  protected readonly field: any,
48
+ protected readonly modelEnableSoftDelete?: any
48
49
  ) {
49
50
  // TODO: Note that the source file instance is created during construction
50
51
  // So every operation should use a new instance of the field manager, so updated tree/source is used before each operation
@@ -52,14 +53,13 @@ export abstract class BaseFieldManagerForEntity implements FieldManager {
52
53
  tree,
53
54
  `src/${dasherize(moduleName)}/entities/${dasherize(modelName)}.entity.ts`,
54
55
  );
55
-
56
56
  const fieldPropertyDeclarationNode = this.getFieldIdentifierNode(
57
57
  this.fieldName(),
58
58
  this.source
59
59
  )?.parent as PropertyDeclaration | undefined;
60
60
 
61
61
  this.indexDecoratorManager = new IndexDecoratorManager(
62
- { index: this.field.index, source: this.source, field: this.field },
62
+ { index: this.field.index, source: this.source, field: this.field, modelEnableSoftDelete: this.modelEnableSoftDelete },
63
63
  fieldPropertyDeclarationNode,
64
64
  );
65
65
  this.columnDecoratorManager = new ColumnDecoratorManager(
@@ -78,7 +78,7 @@ export abstract class BaseFieldManagerForEntity implements FieldManager {
78
78
  this.manyToOneDecoratorManager = new ManyToOneDecoratorManager(
79
79
  {
80
80
  isManyToOne: this.isManyToOne(),
81
- relationModelSingularName: this.field.relationModelSingularName,
81
+ relationCoModelSingularName: this.field.relationCoModelSingularName,
82
82
  relationCascade: this.field.relationCascade,
83
83
  required: this.field.required,
84
84
  source: this.source,
@@ -94,15 +94,14 @@ export abstract class BaseFieldManagerForEntity implements FieldManager {
94
94
  source: this.source,
95
95
  field: this.field,
96
96
  fieldName: this.fieldName(),
97
- relationModelFieldName: this.field.relationModelFieldName
97
+ relationCoModelColumnName: this.field.relationCoModelColumnName
98
98
  },
99
99
  );
100
100
  this.manyToManyDecoratorManager = new ManyToManyDecoratorManager(
101
101
  {
102
102
  isManyToMany: this.isManyToMany(),
103
- relationModelName: this.field.relationModelSingularName,
104
- relationInverseFieldName: this.field.relationModelFieldName,
105
- relationCascade: this.field.relationCascade,
103
+ relationModelName: this.field.relationCoModelSingularName,
104
+ relationInverseFieldName: this.field.relationCoModelFieldName,
106
105
  owner: this.field.isRelationManyToManyOwner,
107
106
  source: this.source,
108
107
  field: this.field,
@@ -118,18 +117,17 @@ export abstract class BaseFieldManagerForEntity implements FieldManager {
118
117
  fieldName: this.fieldName(),
119
118
  modelName: this.modelName,
120
119
  relationJoinTableName: this.field.relationJoinTableName,
121
- relationJoinColumnName: this.field.relationJoinColumnName,
122
- joinColumnName: this. field.joinColumnName
120
+ relationJoinColumnName: this.field.relationCoModelColumnName,
121
+ joinColumnName: this.field.columnName
123
122
  },
124
123
  );
125
124
  this.uniqueIndexDecoratorManager = new UniqueIndexDecoratorManager(
126
- { unique: this.field.unique, fieldName: this.fieldName(), source: this.source, field: this.field },
125
+ { unique: this.field.unique, fieldName: this.fieldName(), source: this.source, field: this.field, modelEnableSoftDelete: this.modelEnableSoftDelete},
127
126
  this.getClassNode(this.modelName, this.source)
128
127
  );
129
128
  this.oneToManyDecoratorManager = new OneToManyDecoratorManager(
130
129
  {
131
130
  isOneToMany: this.isOneToMany(),
132
- relationCascade: this.field.relationCascade,
133
131
  source: this.source,
134
132
  field: this.field,
135
133
  fieldName: this.fieldName(),
@@ -457,7 +455,7 @@ export abstract class BaseFieldManagerForEntity implements FieldManager {
457
455
  }
458
456
 
459
457
  protected inverseRelationFieldName(): string {
460
- return `${this.field.relationModelSingularName}s`;
458
+ return `${this.field.relationCoModelSingularName}s`;
461
459
  }
462
460
 
463
461
 
@@ -6,12 +6,13 @@ export class BigIntFieldHandler implements FieldHandler {
6
6
  entityFieldManager: FieldManager;
7
7
  createDtoFieldManager: FieldManager;
8
8
  updateDtoFieldManager: FieldManager;
9
- constructor(tree: any, moduleName: string, modelName: string, field: any) {
9
+ constructor(tree: any, moduleName: string, modelName: string, field: any, modelEnableSoftDelete: any) {
10
10
  this.entityFieldManager = new BigIntFieldManagerForEntity(
11
11
  tree,
12
12
  moduleName,
13
13
  modelName,
14
14
  field,
15
+ modelEnableSoftDelete
15
16
  );
16
17
  this.createDtoFieldManager = new BigIntFieldManagerForDto(
17
18
  tree,
@@ -9,8 +9,8 @@ export class BigIntFieldManagerForEntity
9
9
  {
10
10
  source: ts.SourceFile;
11
11
 
12
- constructor(tree: Tree, moduleName: string, modelName: string, field: any) {
13
- super(tree, moduleName, modelName, field);
12
+ constructor(tree: Tree, moduleName: string, modelName: string, field: any, modelEnableSoftDelete: any) {
13
+ super(tree, moduleName, modelName, field, modelEnableSoftDelete);
14
14
  }
15
15
 
16
16
  fieldType(): FieldType {
@@ -6,12 +6,13 @@ export class BooleanFieldHandler implements FieldHandler {
6
6
  entityFieldManager: FieldManager;
7
7
  createDtoFieldManager: FieldManager;
8
8
  updateDtoFieldManager: FieldManager
9
- constructor(tree: any, moduleName: string, modelName: string, field: any) {
9
+ constructor(tree: any, moduleName: string, modelName: string, field: any, modelEnableSoftDelete: any) {
10
10
  this.entityFieldManager = new BooleanFieldManagerForEntity(
11
11
  tree,
12
12
  moduleName,
13
13
  modelName,
14
14
  field,
15
+ modelEnableSoftDelete
15
16
  );
16
17
  this.createDtoFieldManager = new BooleanFieldManagerForDto(
17
18
  tree,
@@ -9,8 +9,8 @@ export class BooleanFieldManagerForEntity
9
9
  {
10
10
  source: ts.SourceFile;
11
11
 
12
- constructor(tree: Tree, moduleName: string, modelName: string, field: any) {
13
- super(tree, moduleName, modelName, field);
12
+ constructor(tree: Tree, moduleName: string, modelName: string, field: any, modelEnableSoftDelete: any) {
13
+ super(tree, moduleName, modelName, field, modelEnableSoftDelete);
14
14
  }
15
15
 
16
16
  fieldType(): FieldType {
@@ -11,12 +11,14 @@ export class ComputedFieldHandler implements FieldHandler {
11
11
  moduleName: string,
12
12
  modelName: string,
13
13
  field: string,
14
+ modelEnableSoftDelete: any
14
15
  ) {
15
16
  this.entityFieldManager = new ComputedFieldManagerForEntity(
16
17
  tree,
17
18
  moduleName,
18
19
  modelName,
19
20
  field,
21
+ modelEnableSoftDelete,
20
22
  );
21
23
  //Instantiate the entity and dto source files
22
24
  }
@@ -8,8 +8,8 @@ export class ComputedFieldManagerForEntity
8
8
  implements FieldManager {
9
9
  source: ts.SourceFile;
10
10
 
11
- constructor(tree: Tree, moduleName: string, modelName: string, field: any) {
12
- super(tree, moduleName, modelName, field);
11
+ constructor(tree: Tree, moduleName: string, modelName: string, field: any, modelEnableSoftDelete: any) {
12
+ super(tree, moduleName, modelName, field, modelEnableSoftDelete);
13
13
  }
14
14
 
15
15
  fieldType(): FieldType {
@@ -6,12 +6,13 @@ export class DateFieldHandler implements FieldHandler {
6
6
  entityFieldManager: FieldManager;
7
7
  createDtoFieldManager: FieldManager;
8
8
  updateDtoFieldManager: FieldManager;
9
- constructor(tree: any, moduleName: string, modelName: string, field: any) {
9
+ constructor(tree: any, moduleName: string, modelName: string, field: any, modelEnableSoftDelete: any) {
10
10
  this.entityFieldManager = new DateFieldManagerForEntity(
11
11
  tree,
12
12
  moduleName,
13
13
  modelName,
14
14
  field,
15
+ modelEnableSoftDelete
15
16
  );
16
17
  this.createDtoFieldManager = new DateFieldManagerForDto(
17
18
  tree,
@@ -8,8 +8,8 @@ export class DateFieldManagerForEntity
8
8
  implements FieldManager {
9
9
  source: ts.SourceFile;
10
10
 
11
- constructor(tree: Tree, moduleName: string, modelName: string, field: any) {
12
- super(tree, moduleName, modelName, field);
11
+ constructor(tree: Tree, moduleName: string, modelName: string, field: any, modelEnableSoftDelete: any) {
12
+ super(tree, moduleName, modelName, field, modelEnableSoftDelete);
13
13
  }
14
14
 
15
15
  fieldType(): FieldType {
@@ -6,12 +6,13 @@ export class DecimalFieldHandler implements FieldHandler {
6
6
  entityFieldManager: FieldManager;
7
7
  createDtoFieldManager: FieldManager;
8
8
  updateDtoFieldManager: FieldManager;
9
- constructor(tree: any, moduleName: string, modelName: string, field: any) {
9
+ constructor(tree: any, moduleName: string, modelName: string, field: any, modelEnableSoftDelete: any) {
10
10
  this.entityFieldManager = new DecimalFieldManagerForEntity(
11
11
  tree,
12
12
  moduleName,
13
13
  modelName,
14
14
  field,
15
+ modelEnableSoftDelete
15
16
  );
16
17
  this.createDtoFieldManager = new DecimalFieldManagerForDto(
17
18
  tree,
@@ -9,8 +9,8 @@ export class DecimalFieldManagerForEntity
9
9
  {
10
10
  source: ts.SourceFile;
11
11
 
12
- constructor(tree: Tree, moduleName: string, modelName: string, field: any) {
13
- super(tree, moduleName, modelName, field);
12
+ constructor(tree: Tree, moduleName: string, modelName: string, field: any, modelEnableSoftDelete: any) {
13
+ super(tree, moduleName, modelName, field, modelEnableSoftDelete);
14
14
  }
15
15
 
16
16
  fieldType(): FieldType {
@@ -13,12 +13,14 @@ export class EmailFieldHandler implements FieldHandler {
13
13
  moduleName: string,
14
14
  modelName: string,
15
15
  field: string,
16
+ modelEnableSoftDelete: any
16
17
  ) {
17
18
  this.entityFieldManager = new EmailFieldManagerForEntity(
18
19
  tree,
19
20
  moduleName,
20
21
  modelName,
21
22
  field,
23
+ modelEnableSoftDelete
22
24
  );
23
25
  this.createDtoFieldManager = new EmailFieldManagerForDto(
24
26
  tree,
@@ -9,8 +9,8 @@ export class EmailFieldManagerForEntity
9
9
  extends BaseFieldManagerForEntity
10
10
  implements FieldManager {
11
11
  source: ts.SourceFile;
12
- constructor(tree: Tree, moduleName: string, modelName: string, field: any) {
13
- super(tree, moduleName, modelName, field);
12
+ constructor(tree: Tree, moduleName: string, modelName: string, field: any, modelEnableSoftDelete: any) {
13
+ super(tree, moduleName, modelName, field, modelEnableSoftDelete);
14
14
 
15
15
  }
16
16
 
@@ -7,12 +7,13 @@ export class IntFieldHandler implements FieldHandler {
7
7
  createDtoFieldManager: FieldManager;
8
8
  updateDtoFieldManager: FieldManager;
9
9
 
10
- constructor(tree: any, moduleName: string, modelName: string, field: any) {
10
+ constructor(tree: any, moduleName: string, modelName: string, field: any, modelEnableSoftDelete: any) {
11
11
  this.entityFieldManager = new IntFieldManagerForEntity(
12
12
  tree,
13
13
  moduleName,
14
14
  modelName,
15
15
  field,
16
+ modelEnableSoftDelete
16
17
  );
17
18
  this.createDtoFieldManager = new IntFieldManagerForDto(
18
19
  tree,
@@ -10,8 +10,8 @@ export class IntFieldManagerForEntity
10
10
  {
11
11
  source: ts.SourceFile;
12
12
 
13
- constructor(tree: Tree, moduleName: string, modelName: string, field: any) {
14
- super(tree, moduleName, modelName, field);
13
+ constructor(tree: Tree, moduleName: string, modelName: string, field: any, modelEnableSoftDelete: any) {
14
+ super(tree, moduleName, modelName, field, modelEnableSoftDelete);
15
15
  }
16
16
 
17
17
  fieldType(): FieldType {
@@ -13,12 +13,14 @@ export class JsonFieldHandler implements FieldHandler {
13
13
  moduleName: string,
14
14
  modelName: string,
15
15
  field: string,
16
+ modelEnableSoftDelete: any
16
17
  ) {
17
18
  this.entityFieldManager = new JsonFieldManagerForEntity(
18
19
  tree,
19
20
  moduleName,
20
21
  modelName,
21
22
  field,
23
+ modelEnableSoftDelete
22
24
  );
23
25
  this.createDtoFieldManager = new JsonFieldManagerForDto(
24
26
  tree,
@@ -8,8 +8,8 @@ export class JsonFieldManagerForEntity
8
8
  implements FieldManager {
9
9
  source: ts.SourceFile;
10
10
 
11
- constructor(tree: Tree, moduleName: string, modelName: string, field: any) {
12
- super(tree, moduleName, modelName, field);
11
+ constructor(tree: Tree, moduleName: string, modelName: string, field: any, modelEnableSoftDelete: any) {
12
+ super(tree, moduleName, modelName, field, modelEnableSoftDelete);
13
13
  }
14
14
 
15
15
  fieldType(): FieldType {
@@ -13,12 +13,14 @@ export class LongTextFieldHandler implements FieldHandler {
13
13
  moduleName: string,
14
14
  modelName: string,
15
15
  field: string,
16
+ modelEnableSoftDelete: any
16
17
  ) {
17
18
  this.entityFieldManager = new LongTextFieldManagerForEntity(
18
19
  tree,
19
20
  moduleName,
20
21
  modelName,
21
22
  field,
23
+ modelEnableSoftDelete
22
24
  );
23
25
  this.createDtoFieldManager = new LongTextFieldManagerForDto(
24
26
  tree,
@@ -10,8 +10,8 @@ export class LongTextFieldManagerForEntity
10
10
  {
11
11
  source: ts.SourceFile;
12
12
 
13
- constructor(tree: Tree, moduleName: string, modelName: string, field: any) {
14
- super(tree, moduleName, modelName, field);
13
+ constructor(tree: Tree, moduleName: string, modelName: string, field: any, modelEnableSoftDelete: any) {
14
+ super(tree, moduleName, modelName, field, modelEnableSoftDelete);
15
15
  }
16
16
 
17
17
  fieldType(): FieldType {
@@ -13,12 +13,14 @@ export class PasswordFieldHandler implements FieldHandler {
13
13
  moduleName: string,
14
14
  modelName: string,
15
15
  field: string,
16
+ modelEnableSoftDelete: any
16
17
  ) {
17
18
  this.entityFieldManager = new PasswordFieldManagerForEntity(
18
19
  tree,
19
20
  moduleName,
20
21
  modelName,
21
22
  field,
23
+ modelEnableSoftDelete
22
24
  );
23
25
  this.createDtoFieldManager = new PasswordFieldManagerForDto(
24
26
  tree,
@@ -7,8 +7,8 @@ export class PasswordFieldManagerForEntity
7
7
  extends BaseFieldManagerForEntity
8
8
  implements FieldManager {
9
9
  source: ts.SourceFile;
10
- constructor(tree: Tree, moduleName: string, modelName: string, field: any) {
11
- super(tree, moduleName, modelName, field);
10
+ constructor(tree: Tree, moduleName: string, modelName: string, field: any, modelEnableSoftDelete: any) {
11
+ super(tree, moduleName, modelName, field, modelEnableSoftDelete);
12
12
 
13
13
  }
14
14
 
@@ -7,12 +7,13 @@ export class ManyToManyInverseRelationFieldHandler implements FieldHandler {
7
7
  entityFieldManager: FieldManager;
8
8
  createDtoFieldManager: FieldManager;
9
9
  updateDtoFieldManager: FieldManager;
10
- constructor(tree: any, moduleName: string, modelName: string, field: any) {
10
+ constructor(tree: any, moduleName: string, modelName: string, field: any, modelEnableSoftDelete: any) {
11
11
  this.entityFieldManager = new ManyToManyInverseRelationFieldManagerForEntity(
12
12
  tree,
13
13
  moduleName,
14
14
  modelName,
15
15
  field,
16
+ modelEnableSoftDelete
16
17
  );
17
18
  this.createDtoFieldManager = new ManyToManyInverseRelationFieldManagerForDto(
18
19
  tree,
@@ -6,12 +6,13 @@ export class ManyToManyRelationFieldHandler implements FieldHandler {
6
6
  entityFieldManager: FieldManager;
7
7
  createDtoFieldManager: FieldManager;
8
8
  updateDtoFieldManager: FieldManager;
9
- constructor(tree: any, moduleName: string, modelName: string, field: any) {
9
+ constructor(tree: any, moduleName: string, modelName: string, field: any, modelEnableSoftDelete: any) {
10
10
  this.entityFieldManager = new ManyToManyRelationFieldManagerForEntity(
11
11
  tree,
12
12
  moduleName,
13
13
  modelName,
14
14
  field,
15
+ modelEnableSoftDelete
15
16
  );
16
17
  this.createDtoFieldManager = new ManyToManyRelationFieldManagerForDto(
17
18
  tree,