mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 18:12:04 +00:00
56 lines
1.3 KiB
TypeScript
56 lines
1.3 KiB
TypeScript
import type {
|
|
IDataObject,
|
|
IDisplayOptions,
|
|
IExecuteFunctions,
|
|
INodeProperties,
|
|
} from 'n8n-workflow';
|
|
|
|
import { DATA_TABLE_ID_FIELD } from './fields';
|
|
import { dataObjectToApiInput } from './utils';
|
|
|
|
export function makeAddRow(operation: string, displayOptions: IDisplayOptions) {
|
|
return {
|
|
displayName: 'Columns',
|
|
name: 'columns',
|
|
type: 'resourceMapper',
|
|
default: {
|
|
mappingMode: 'defineBelow',
|
|
value: null,
|
|
},
|
|
noDataExpression: true,
|
|
required: true,
|
|
typeOptions: {
|
|
loadOptionsDependsOn: [`${DATA_TABLE_ID_FIELD}.value`],
|
|
resourceMapper: {
|
|
valuesLabel: `Columns to ${operation}`,
|
|
resourceMapperMethod: 'getDataTables',
|
|
mode: 'add',
|
|
fieldWords: {
|
|
singular: 'column',
|
|
plural: 'columns',
|
|
},
|
|
addAllFields: true,
|
|
multiKeyMatch: true,
|
|
},
|
|
},
|
|
displayOptions,
|
|
} satisfies INodeProperties;
|
|
}
|
|
|
|
export function getAddRow(ctx: IExecuteFunctions, index: number) {
|
|
const items = ctx.getInputData();
|
|
const dataMode = ctx.getNodeParameter('columns.mappingMode', index) as string;
|
|
|
|
let data: IDataObject;
|
|
|
|
if (dataMode === 'autoMapInputData') {
|
|
data = items[index].json;
|
|
} else {
|
|
const fields = ctx.getNodeParameter('columns.value', index, {}) as IDataObject;
|
|
|
|
data = fields;
|
|
}
|
|
|
|
return dataObjectToApiInput(data, ctx.getNode(), index);
|
|
}
|