From 932644d0e410a7d94d06ef6167b45a21b19f2404 Mon Sep 17 00:00:00 2001 From: Pranav C Date: Thu, 30 Nov 2023 11:37:55 +0530 Subject: [PATCH 1/2] fix: extract id using title Signed-off-by: Pranav C --- packages/nocodb/src/controllers/data-table.controller.ts | 8 +++++++- packages/nocodb/src/db/BaseModelSqlv2.ts | 7 +++++-- packages/nocodb/src/services/data-table.service.ts | 8 +++++++- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/packages/nocodb/src/controllers/data-table.controller.ts b/packages/nocodb/src/controllers/data-table.controller.ts index e15bb39ffb..35d4c1c6f2 100644 --- a/packages/nocodb/src/controllers/data-table.controller.ts +++ b/packages/nocodb/src/controllers/data-table.controller.ts @@ -153,7 +153,13 @@ export class DataTableController { @Param('columnId') columnId: string, @Param('rowId') rowId: string, @Body() - refRowIds: string | string[] | number | number[] | Record, + refRowIds: + | string + | string[] + | number + | number[] + | Record + | Record[], ) { return await this.dataTableService.nestedLink({ modelId, diff --git a/packages/nocodb/src/db/BaseModelSqlv2.ts b/packages/nocodb/src/db/BaseModelSqlv2.ts index 6899f7b466..ad5b7dcc80 100644 --- a/packages/nocodb/src/db/BaseModelSqlv2.ts +++ b/packages/nocodb/src/db/BaseModelSqlv2.ts @@ -4878,8 +4878,11 @@ class BaseModelSqlv2 { .filter((childRow) => !childRow[vChildCol.column_name]) // generate insert data for new links .map((childRow) => ({ - [vParentCol.column_name]: childRow[parentColumn.column_name], - [vChildCol.column_name]: row[childColumn.column_name], + [vParentCol.column_name]: + childRow[parentColumn.title] ?? + childRow[parentColumn.column_name], + [vChildCol.column_name]: + row[childColumn.title] ?? row[childColumn.column_name], })); // if no new links, return true diff --git a/packages/nocodb/src/services/data-table.service.ts b/packages/nocodb/src/services/data-table.service.ts index 299d6d2d95..485c290731 100644 --- a/packages/nocodb/src/services/data-table.service.ts +++ b/packages/nocodb/src/services/data-table.service.ts @@ -371,7 +371,13 @@ export class DataTableService { modelId: string; columnId: string; query: any; - refRowIds: string | string[] | number | number[] | Record; + refRowIds: + | string + | string[] + | number + | number[] + | Record + | Record[]; rowId: string; }) { this.validateIds(param.refRowIds); From 02d09cc7676c9e7490741834cf12bbb1771d38ea Mon Sep 17 00:00:00 2001 From: Pranav C Date: Thu, 30 Nov 2023 11:58:45 +0530 Subject: [PATCH 2/2] fix: error message correction Signed-off-by: Pranav C --- packages/nocodb/src/db/BaseModelSqlv2.ts | 30 +++++++++++++++++++----- 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/packages/nocodb/src/db/BaseModelSqlv2.ts b/packages/nocodb/src/db/BaseModelSqlv2.ts index ad5b7dcc80..3039d05e2d 100644 --- a/packages/nocodb/src/db/BaseModelSqlv2.ts +++ b/packages/nocodb/src/db/BaseModelSqlv2.ts @@ -4869,7 +4869,9 @@ class BaseModelSqlv2 { ); NcError.unprocessableEntity( - `Child record with id [${missingIds.join(', ')}] not found`, + `Child record with id [${extractIdsString( + missingIds, + )}] not found`, ); } @@ -4933,7 +4935,9 @@ class BaseModelSqlv2 { ); NcError.unprocessableEntity( - `Child record with id [${missingIds.join(', ')}] not found`, + `Child record with id [${extractIdsString( + missingIds, + )}] not found`, ); } } @@ -4983,7 +4987,9 @@ class BaseModelSqlv2 { if (!childRow) { NcError.unprocessableEntity( - `Child record with id [${childIds[0]}] not found`, + `Child record with id [${extractIdsString( + childIds, + )}] not found`, ); } } @@ -5109,7 +5115,9 @@ class BaseModelSqlv2 { ); NcError.unprocessableEntity( - `Child record with id [${missingIds.join(', ')}] not found`, + `Child record with id [${extractIdsString( + missingIds, + )}] not found`, ); } } @@ -5157,7 +5165,9 @@ class BaseModelSqlv2 { ); NcError.unprocessableEntity( - `Child record with id [${missingIds.join(', ')}] not found`, + `Child record with id [${extractIdsString( + missingIds, + )}] not found`, ); } } @@ -5211,7 +5221,9 @@ class BaseModelSqlv2 { if (!childRow) { NcError.unprocessableEntity( - `Child record with id [${childIds[0]}] not found`, + `Child record with id [${extractIdsString( + childIds, + )}] not found`, ); } } @@ -5677,4 +5689,10 @@ export function getListArgs( return obj; } +function extractIdsString(childIds: (string | number | Record)[]) { + return childIds + .map((r) => (typeof r === 'object' ? JSON.stringify(r) : r)) + .join(', '); +} + export { BaseModelSqlv2 };