Browse Source

Merge pull request #7120 from nocodb/fix/7119-v2-links-api

fix: Extract row id value using title
pull/7121/head
Pranav C 10 months ago committed by GitHub
parent
commit
a5a982c6ae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 8
      packages/nocodb/src/controllers/data-table.controller.ts
  2. 37
      packages/nocodb/src/db/BaseModelSqlv2.ts
  3. 8
      packages/nocodb/src/services/data-table.service.ts

8
packages/nocodb/src/controllers/data-table.controller.ts

@ -153,7 +153,13 @@ export class DataTableController {
@Param('columnId') columnId: string, @Param('columnId') columnId: string,
@Param('rowId') rowId: string, @Param('rowId') rowId: string,
@Body() @Body()
refRowIds: string | string[] | number | number[] | Record<string, any>, refRowIds:
| string
| string[]
| number
| number[]
| Record<string, any>
| Record<string, any>[],
) { ) {
return await this.dataTableService.nestedLink({ return await this.dataTableService.nestedLink({
modelId, modelId,

37
packages/nocodb/src/db/BaseModelSqlv2.ts

@ -4869,7 +4869,9 @@ class BaseModelSqlv2 {
); );
NcError.unprocessableEntity( NcError.unprocessableEntity(
`Child record with id [${missingIds.join(', ')}] not found`, `Child record with id [${extractIdsString(
missingIds,
)}] not found`,
); );
} }
@ -4878,8 +4880,11 @@ class BaseModelSqlv2 {
.filter((childRow) => !childRow[vChildCol.column_name]) .filter((childRow) => !childRow[vChildCol.column_name])
// generate insert data for new links // generate insert data for new links
.map((childRow) => ({ .map((childRow) => ({
[vParentCol.column_name]: childRow[parentColumn.column_name], [vParentCol.column_name]:
[vChildCol.column_name]: row[childColumn.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 // if no new links, return true
@ -4930,7 +4935,9 @@ class BaseModelSqlv2 {
); );
NcError.unprocessableEntity( NcError.unprocessableEntity(
`Child record with id [${missingIds.join(', ')}] not found`, `Child record with id [${extractIdsString(
missingIds,
)}] not found`,
); );
} }
} }
@ -4980,7 +4987,9 @@ class BaseModelSqlv2 {
if (!childRow) { if (!childRow) {
NcError.unprocessableEntity( NcError.unprocessableEntity(
`Child record with id [${childIds[0]}] not found`, `Child record with id [${extractIdsString(
childIds,
)}] not found`,
); );
} }
} }
@ -5106,7 +5115,9 @@ class BaseModelSqlv2 {
); );
NcError.unprocessableEntity( NcError.unprocessableEntity(
`Child record with id [${missingIds.join(', ')}] not found`, `Child record with id [${extractIdsString(
missingIds,
)}] not found`,
); );
} }
} }
@ -5154,7 +5165,9 @@ class BaseModelSqlv2 {
); );
NcError.unprocessableEntity( NcError.unprocessableEntity(
`Child record with id [${missingIds.join(', ')}] not found`, `Child record with id [${extractIdsString(
missingIds,
)}] not found`,
); );
} }
} }
@ -5208,7 +5221,9 @@ class BaseModelSqlv2 {
if (!childRow) { if (!childRow) {
NcError.unprocessableEntity( NcError.unprocessableEntity(
`Child record with id [${childIds[0]}] not found`, `Child record with id [${extractIdsString(
childIds,
)}] not found`,
); );
} }
} }
@ -5674,4 +5689,10 @@ export function getListArgs(
return obj; return obj;
} }
function extractIdsString(childIds: (string | number | Record<string, any>)[]) {
return childIds
.map((r) => (typeof r === 'object' ? JSON.stringify(r) : r))
.join(', ');
}
export { BaseModelSqlv2 }; export { BaseModelSqlv2 };

8
packages/nocodb/src/services/data-table.service.ts

@ -371,7 +371,13 @@ export class DataTableService {
modelId: string; modelId: string;
columnId: string; columnId: string;
query: any; query: any;
refRowIds: string | string[] | number | number[] | Record<string, any>; refRowIds:
| string
| string[]
| number
| number[]
| Record<string, any>
| Record<string, any>[];
rowId: string; rowId: string;
}) { }) {
this.validateIds(param.refRowIds); this.validateIds(param.refRowIds);

Loading…
Cancel
Save