feat(Data Table Node): Add Update, Upsert operations (no-changelog) (#18820)

This commit is contained in:
Charlie Kolb
2025-08-28 13:20:29 +02:00
committed by GitHub
parent 0347c32cd5
commit 1b743ae251
12 changed files with 241 additions and 59 deletions

View File

@@ -1,13 +1,12 @@
import type {
IDisplayOptions,
IDataObject,
IExecuteFunctions,
INodeExecutionData,
INodeProperties,
} from 'n8n-workflow';
import { COLUMNS } from '../../common/fields';
import { dataObjectToApiInput, getDataTableProxyExecute } from '../../common/utils';
import { getAddRow, makeAddRow } from '../../common/addRow';
import { getDataTableProxyExecute } from '../../common/utils';
export const FIELD: string = 'insert';
@@ -18,34 +17,16 @@ const displayOptions: IDisplayOptions = {
},
};
export const description: INodeProperties[] = [
{
...COLUMNS,
displayOptions,
},
];
export const description: INodeProperties[] = [makeAddRow(FIELD, displayOptions)];
export async function execute(
this: IExecuteFunctions,
index: number,
): Promise<INodeExecutionData[]> {
const items = this.getInputData();
const dataStoreProxy = await getDataTableProxyExecute(this, index);
const dataMode = this.getNodeParameter('columns.mappingMode', index) as string;
let data: IDataObject;
const row = getAddRow(this, index);
if (dataMode === 'autoMapInputData') {
data = items[index].json;
} else {
const fields = this.getNodeParameter('columns.value', index, {}) as IDataObject;
data = fields;
}
const rows = dataObjectToApiInput(data, this.getNode(), index);
const insertedRowIds = await dataStoreProxy.insertRows([rows]);
return insertedRowIds.map((x) => ({ json: { id: x } }));
const insertedRows = await dataStoreProxy.insertRows([row]);
return insertedRows.map((json) => ({ json }));
}