diff --git a/packages/nocodb/src/db/BaseModelSqlv2/attachment-url-upload-preparator.ts b/packages/nocodb/src/db/BaseModelSqlv2/attachment-url-upload-preparator.ts index fa6a34d417..b8d61d0ae3 100644 --- a/packages/nocodb/src/db/BaseModelSqlv2/attachment-url-upload-preparator.ts +++ b/packages/nocodb/src/db/BaseModelSqlv2/attachment-url-upload-preparator.ts @@ -1,4 +1,4 @@ -import type { NcRequest } from 'nocodb-sdk'; +import { NcApiVersion, type NcRequest } from 'nocodb-sdk'; import type { IBaseModelSqlV2 } from '~/db/IBaseModelSqlV2'; import { type AttachmentUrlUploadJobData, JobTypes } from '~/interface/Jobs'; import { EMIT_EVENT } from '~/constants'; @@ -22,6 +22,10 @@ export class AttachmentUrlUploadPreparator { const postInsertOps: ((rowId: any) => Promise)[] = []; const preInsertOps: (() => Promise)[] = []; const postInsertAuditOps: ((rowId: any) => Promise)[] = []; + // return early if not v3 + if (baseModel.context.api_version !== NcApiVersion.V3) { + return { postInsertOps, preInsertOps, postInsertAuditOps }; + } for (const col of attachmentCols) { let attachmentData: { id?: string; url: string }[]; try { @@ -40,24 +44,27 @@ export class AttachmentUrlUploadPreparator { } catch { continue; } - postInsertOps.push(async (recordId) => { - Noco.eventEmitter.emit(EMIT_EVENT.HANDLE_ATTACHMENT_URL_UPLOAD, { - jobName: JobTypes.AttachmentUrlUpload, - context: baseModel.context, - modelId: baseModel.model.id, - column: col, - recordId, - user: baseModel.context.user, - attachments: attachmentData, - req, - } as AttachmentUrlUploadJobData); - return ''; - }); - const columnKeyName = dataWrapper(data).getColumnKeyName(col); - // remove temp_ ids so it doesn't get recorded in audit - data[columnKeyName] = JSON.stringify( - attachmentData.filter((dt) => !dt.id?.startsWith('temp_')), - ); + // only process when temp id exists + if (attachmentData.some((attr) => attr.id?.startsWith('temp_'))) { + postInsertOps.push(async (recordId) => { + Noco.eventEmitter.emit(EMIT_EVENT.HANDLE_ATTACHMENT_URL_UPLOAD, { + jobName: JobTypes.AttachmentUrlUpload, + context: baseModel.context, + modelId: baseModel.model.id, + column: col, + recordId, + user: baseModel.context.user, + attachments: attachmentData, + req, + } as AttachmentUrlUploadJobData); + return ''; + }); + const columnKeyName = dataWrapper(data).getColumnKeyName(col); + // remove temp_ ids so it doesn't get recorded in audit + data[columnKeyName] = JSON.stringify( + attachmentData.filter((dt) => !dt.id?.startsWith('temp_')), + ); + } } return { postInsertOps, preInsertOps, postInsertAuditOps }; }