Skip to content

Commit d46ea18

Browse files
Agnes Linagnes512
authored andcommitted
fix: set foreignkey to be optional in the requestbody of hasmany relation
1 parent ea575b2 commit d46ea18

File tree

3 files changed

+17
-4
lines changed

3 files changed

+17
-4
lines changed

packages/cli/generators/relation/has-many-relation.generator.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ module.exports = class HasManyRelationGenerator extends BaseRelationGenerator {
5151
this.artifactInfo.sourceModelPrimaryKeyType =
5252
options.sourceModelPrimaryKeyType;
5353
this.artifactInfo.targetModelPrimaryKey = options.targetModelPrimaryKey;
54+
this.artifactInfo.foreignKeyName = options.foreignKeyName;
5455

5556
const source = this.templatePath(CONTROLLER_TEMPLATE_PATH_HAS_MANY);
5657

packages/cli/generators/relation/templates/controller-relation-template-has-many.ts.ejs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,10 @@ export class <%= controllerClassName %> {
5858
@requestBody({
5959
content: {
6060
'application/json': {
61-
schema: getModelSchemaRef(<%= targetModelClassName %>, {exclude: ['<%= targetModelPrimaryKey %>']}),
61+
schema: getModelSchemaRef(<%= targetModelClassName %>, {
62+
exclude: ['<%= targetModelPrimaryKey %>'],
63+
optional: ['<%= foreignKeyName %>']
64+
}),
6265
},
6366
},
6467
}) <%= targetModelRequestBody %>: Omit<<%= targetModelClassName %>, '<%= targetModelPrimaryKey %>'>,

packages/cli/test/integration/generators/hasmany.relation.integration.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -439,7 +439,10 @@ context('check if the controller file created ', () => {
439439
/content: {'application\/json': {schema: getModelSchemaRef\(Order\)}},\n/,
440440
/},\n . {2}},\n .}\)\n {2}async create\(\n/,
441441
/\@param\.path\.number\('id'\) id: typeof Customer\.prototype\.id,\n/,
442-
/\@requestBody\(\{\s+content: {\s+'application\/json': {\s+schema: getModelSchemaRef\(Order, {exclude: \['id'\]}\),\s+},\s+},\s+}\) order: Omit<Order, 'id'>,\n/,
442+
/\@requestBody\(\{\s+content: {\s+'application\/json': {\s+schema: getModelSchemaRef\(Order, {\n/,
443+
/exclude: \['id'\],\n/,
444+
/optional: \['customerId'\]\n/,
445+
/}\),\s+},\s+},\s+}\) order: Omit<Order, 'id'>,\n/,
443446
/\): Promise<Order> {\n/,
444447
/return this\.customerRepository\.orders\(id\)\.create\(order\);\n {2}}\n/,
445448
];
@@ -449,7 +452,10 @@ context('check if the controller file created ', () => {
449452
/content: {'application\/json': {schema: getModelSchemaRef\(OrderClass\)}},\n/,
450453
/},\n . {2}},\n .}\)\n {2}async create\(\n/,
451454
/\@param\.path\.number\('id'\) id: typeof CustomerClass\.prototype\.custNumber,\n/,
452-
/\@requestBody\(\{\s+content: {\s+'application\/json': {\s+schema: getModelSchemaRef\(OrderClass, {exclude: \['orderNumber'\]}\),\s+},\s+},\s+}\) orderClass: Omit<OrderClass, 'orderNumber'>,\n/,
455+
/\@requestBody\(\{\s+content: {\s+'application\/json': {\s+schema: getModelSchemaRef\(OrderClass, {\n/,
456+
/exclude: \['orderNumber'\],\n/,
457+
/optional: \['customerClassCustNumber'\]\n/,
458+
/}\),\s+},\s+},\s+}\) orderClass: Omit<OrderClass, 'orderNumber'>,\n/,
453459
/\): Promise<OrderClass> {\n/,
454460
/return this\.customerClassRepository\.orderClasses\(id\)\.create\(orderClass\);\n {2}}\n/,
455461
];
@@ -459,7 +465,10 @@ context('check if the controller file created ', () => {
459465
/content: {'application\/json': {schema: getModelSchemaRef\(OrderClassType\)}},\n/,
460466
/},\n . {2}},\n .}\)\n {2}async create\(\n/,
461467
/\@param\.path\.number\('id'\) id: typeof CustomerClassType\.prototype\.custNumber,\n/,
462-
/\@requestBody\(\{\s+content: {\s+'application\/json': {\s+schema: getModelSchemaRef\(OrderClassType, {exclude: \['orderString'\]}\),\s+},\s+},\s+}\) orderClassType: Omit<OrderClassType, 'orderString'>,\n/,
468+
/\@requestBody\(\{\s+content: {\s+'application\/json': {\s+schema: getModelSchemaRef\(OrderClassType, {\n/,
469+
/exclude: \['orderString'\],\n/,
470+
/optional: \['customerClassTypeCustNumber'\]\n/,
471+
/}\),\s+},\s+},\s+}\) orderClassType: Omit<OrderClassType, 'orderString'>,\n/,
463472
/\): Promise<OrderClassType> {\n/,
464473
/return this\.customerClassTypeRepository\.orderClassTypes\(id\)\.create\(orderClassType\);\n {2}}\n/,
465474
];

0 commit comments

Comments
 (0)