n8n-nodes-base 0.228.2 → 0.229.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/build.tsbuildinfo +1 -1
- package/dist/credentials/LinkedInOAuth2Api.credentials.js +1 -1
- package/dist/nodes/Code/Code.node.js +6 -1
- package/dist/nodes/Code/Code.node.js.map +1 -1
- package/dist/nodes/Code/test/Code.workflow.json +61 -30
- package/dist/nodes/DateTime/V2/DateTimeV2.node.js +1 -0
- package/dist/nodes/DateTime/V2/DateTimeV2.node.js.map +1 -1
- package/dist/nodes/Google/Sheet/GoogleSheets.node.js +2 -1
- package/dist/nodes/Google/Sheet/GoogleSheets.node.js.map +1 -1
- package/dist/nodes/Google/Sheet/v2/GoogleSheetsV2.node.d.ts +2 -1
- package/dist/nodes/Google/Sheet/v2/GoogleSheetsV2.node.js +1 -0
- package/dist/nodes/Google/Sheet/v2/GoogleSheetsV2.node.js.map +1 -1
- package/dist/nodes/Google/Sheet/v2/actions/sheet/append.operation.js +47 -2
- package/dist/nodes/Google/Sheet/v2/actions/sheet/append.operation.js.map +1 -1
- package/dist/nodes/Google/Sheet/v2/actions/sheet/appendOrUpdate.operation.js +89 -23
- package/dist/nodes/Google/Sheet/v2/actions/sheet/appendOrUpdate.operation.js.map +1 -1
- package/dist/nodes/Google/Sheet/v2/actions/sheet/update.operation.js +89 -23
- package/dist/nodes/Google/Sheet/v2/actions/sheet/update.operation.js.map +1 -1
- package/dist/nodes/Google/Sheet/v2/actions/versionDescription.js +1 -1
- package/dist/nodes/Google/Sheet/v2/actions/versionDescription.js.map +1 -1
- package/dist/nodes/Google/Sheet/v2/helpers/GoogleSheets.utils.js +15 -5
- package/dist/nodes/Google/Sheet/v2/helpers/GoogleSheets.utils.js.map +1 -1
- package/dist/nodes/Google/Sheet/v2/methods/index.d.ts +1 -0
- package/dist/nodes/Google/Sheet/v2/methods/index.js +2 -1
- package/dist/nodes/Google/Sheet/v2/methods/index.js.map +1 -1
- package/dist/nodes/Google/Sheet/v2/methods/resourceMapping.d.ts +3 -0
- package/dist/nodes/Google/Sheet/v2/methods/resourceMapping.js +33 -0
- package/dist/nodes/Google/Sheet/v2/methods/resourceMapping.js.map +1 -0
- package/dist/nodes/Ldap/LdapDescription.js +17 -0
- package/dist/nodes/Ldap/LdapDescription.js.map +1 -1
- package/dist/nodes/LinkedIn/GenericFunctions.js +1 -1
- package/dist/nodes/LinkedIn/LinkedIn.node.js +0 -1
- package/dist/nodes/LinkedIn/LinkedIn.node.js.map +1 -1
- package/dist/nodes/LoneScale/LoneScaleTrigger.node.json +1 -1
- package/dist/nodes/Postgres/Postgres.node.js +2 -1
- package/dist/nodes/Postgres/Postgres.node.js.map +1 -1
- package/dist/nodes/Postgres/v2/PostgresV2.node.d.ts +2 -1
- package/dist/nodes/Postgres/v2/PostgresV2.node.js +1 -1
- package/dist/nodes/Postgres/v2/PostgresV2.node.js.map +1 -1
- package/dist/nodes/Postgres/v2/actions/database/insert.operation.js +50 -4
- package/dist/nodes/Postgres/v2/actions/database/insert.operation.js.map +1 -1
- package/dist/nodes/Postgres/v2/actions/database/update.operation.js +110 -14
- package/dist/nodes/Postgres/v2/actions/database/update.operation.js.map +1 -1
- package/dist/nodes/Postgres/v2/actions/database/upsert.operation.js +72 -14
- package/dist/nodes/Postgres/v2/actions/database/upsert.operation.js.map +1 -1
- package/dist/nodes/Postgres/v2/actions/versionDescription.js +1 -1
- package/dist/nodes/Postgres/v2/actions/versionDescription.js.map +1 -1
- package/dist/nodes/Postgres/v2/helpers/interfaces.d.ts +6 -0
- package/dist/nodes/Postgres/v2/helpers/utils.d.ts +6 -2
- package/dist/nodes/Postgres/v2/helpers/utils.js +36 -2
- package/dist/nodes/Postgres/v2/helpers/utils.js.map +1 -1
- package/dist/nodes/Postgres/v2/methods/index.d.ts +1 -0
- package/dist/nodes/Postgres/v2/methods/index.js +2 -1
- package/dist/nodes/Postgres/v2/methods/index.js.map +1 -1
- package/dist/nodes/Postgres/v2/methods/resourceMapping.d.ts +2 -0
- package/dist/nodes/Postgres/v2/methods/resourceMapping.js +83 -0
- package/dist/nodes/Postgres/v2/methods/resourceMapping.js.map +1 -0
- package/dist/nodes/Schedule/GenericFunctions.d.ts +3 -0
- package/dist/nodes/Schedule/GenericFunctions.js +25 -1
- package/dist/nodes/Schedule/GenericFunctions.js.map +1 -1
- package/dist/nodes/Schedule/ScheduleTrigger.node.js +5 -1
- package/dist/nodes/Schedule/ScheduleTrigger.node.js.map +1 -1
- package/dist/package.json +1 -1
- package/dist/types/credentials.json +1 -1
- package/dist/types/nodes.json +12 -10
- package/package.json +3 -3
|
@@ -23,6 +23,11 @@ const properties = [
|
|
|
23
23
|
],
|
|
24
24
|
default: 'autoMapInputData',
|
|
25
25
|
description: 'Whether to map node input properties and the table data automatically or manually',
|
|
26
|
+
displayOptions: {
|
|
27
|
+
show: {
|
|
28
|
+
'@version': [2, 2.1],
|
|
29
|
+
},
|
|
30
|
+
},
|
|
26
31
|
},
|
|
27
32
|
{
|
|
28
33
|
displayName: `
|
|
@@ -34,6 +39,7 @@ const properties = [
|
|
|
34
39
|
displayOptions: {
|
|
35
40
|
show: {
|
|
36
41
|
dataMode: ['autoMapInputData'],
|
|
42
|
+
'@version': [2, 2.1],
|
|
37
43
|
},
|
|
38
44
|
},
|
|
39
45
|
},
|
|
@@ -49,6 +55,7 @@ const properties = [
|
|
|
49
55
|
displayOptions: {
|
|
50
56
|
show: {
|
|
51
57
|
dataMode: ['defineBelow'],
|
|
58
|
+
'@version': [2, 2.1],
|
|
52
59
|
},
|
|
53
60
|
},
|
|
54
61
|
default: {},
|
|
@@ -78,6 +85,35 @@ const properties = [
|
|
|
78
85
|
},
|
|
79
86
|
],
|
|
80
87
|
},
|
|
88
|
+
{
|
|
89
|
+
displayName: 'Columns',
|
|
90
|
+
name: 'columns',
|
|
91
|
+
type: 'resourceMapper',
|
|
92
|
+
default: {
|
|
93
|
+
mappingMode: 'defineBelow',
|
|
94
|
+
value: null,
|
|
95
|
+
},
|
|
96
|
+
noDataExpression: true,
|
|
97
|
+
required: true,
|
|
98
|
+
typeOptions: {
|
|
99
|
+
loadOptionsDependsOn: ['table.value', 'operation'],
|
|
100
|
+
resourceMapper: {
|
|
101
|
+
resourceMapperMethod: 'getMappingColumns',
|
|
102
|
+
mode: 'add',
|
|
103
|
+
fieldWords: {
|
|
104
|
+
singular: 'column',
|
|
105
|
+
plural: 'columns',
|
|
106
|
+
},
|
|
107
|
+
addAllFields: true,
|
|
108
|
+
multiKeyMatch: true,
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
displayOptions: {
|
|
112
|
+
show: {
|
|
113
|
+
'@version': [2.2],
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
},
|
|
81
117
|
common_descriptions_1.optionsCollection,
|
|
82
118
|
];
|
|
83
119
|
const displayOptions = {
|
|
@@ -107,15 +143,25 @@ async function execute(runQueries, items, nodeOptions, db) {
|
|
|
107
143
|
}
|
|
108
144
|
let query = `INSERT INTO $1:name.$2:name($3:name) VALUES($3:csv)${onConflict}`;
|
|
109
145
|
let values = [schema, table];
|
|
110
|
-
const
|
|
146
|
+
const nodeVersion = this.getNode().typeVersion;
|
|
147
|
+
const dataMode = nodeVersion < 2.2
|
|
148
|
+
? this.getNodeParameter('dataMode', i)
|
|
149
|
+
: this.getNodeParameter('columns.mappingMode', i);
|
|
111
150
|
let item = {};
|
|
112
151
|
if (dataMode === 'autoMapInputData') {
|
|
113
152
|
item = items[i].json;
|
|
114
153
|
}
|
|
115
154
|
if (dataMode === 'defineBelow') {
|
|
116
|
-
const valuesToSend =
|
|
117
|
-
.values
|
|
118
|
-
|
|
155
|
+
const valuesToSend = nodeVersion < 2.2
|
|
156
|
+
? this.getNodeParameter('valuesToSend', i, []).values
|
|
157
|
+
: this.getNodeParameter('columns.values', i, [])
|
|
158
|
+
.values;
|
|
159
|
+
if (nodeVersion < 2.2) {
|
|
160
|
+
item = (0, utils_1.prepareItem)(valuesToSend);
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
item = this.getNodeParameter('columns.value', i);
|
|
164
|
+
}
|
|
119
165
|
}
|
|
120
166
|
const tableSchema = await (0, utils_1.getTableSchema)(db, schema, table);
|
|
121
167
|
values.push((0, utils_1.checkItemAgainstSchema)(this.getNode(), item, tableSchema, i));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insert.operation.js","sourceRoot":"","sources":["../../../../../../nodes/Postgres/v2/actions/database/insert.operation.ts"],"names":[],"mappings":";;;AAGA,8DAAsE;AAStE,+CAM6B;AAE7B,gEAA2D;AAE3D,MAAM,UAAU,GAAsB;IACrC;QACC,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE;YACR;gBACC,IAAI,EAAE,gCAAgC;gBACtC,KAAK,EAAE,kBAAkB;gBACzB,WAAW,EAAE,2EAA2E;aACxF;YACD;gBACC,IAAI,EAAE,0BAA0B;gBAChC,KAAK,EAAE,aAAa;gBACpB,WAAW,EAAE,oDAAoD;aACjE;SACD;QACD,OAAO,EAAE,kBAAkB;QAC3B,WAAW,EACV,mFAAmF;
|
|
1
|
+
{"version":3,"file":"insert.operation.js","sourceRoot":"","sources":["../../../../../../nodes/Postgres/v2/actions/database/insert.operation.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,11 @@ const properties = [
|
|
|
24
24
|
],
|
|
25
25
|
default: 'autoMapInputData',
|
|
26
26
|
description: 'Whether to map node input properties and the table data automatically or manually',
|
|
27
|
+
displayOptions: {
|
|
28
|
+
show: {
|
|
29
|
+
'@version': [2, 2.1],
|
|
30
|
+
},
|
|
31
|
+
},
|
|
27
32
|
},
|
|
28
33
|
{
|
|
29
34
|
displayName: `
|
|
@@ -35,6 +40,7 @@ const properties = [
|
|
|
35
40
|
displayOptions: {
|
|
36
41
|
show: {
|
|
37
42
|
dataMode: ['autoMapInputData'],
|
|
43
|
+
'@version': [2],
|
|
38
44
|
},
|
|
39
45
|
},
|
|
40
46
|
},
|
|
@@ -50,6 +56,11 @@ const properties = [
|
|
|
50
56
|
},
|
|
51
57
|
default: '',
|
|
52
58
|
hint: 'The column that identifies the row(s) to modify',
|
|
59
|
+
displayOptions: {
|
|
60
|
+
show: {
|
|
61
|
+
'@version': [2, 2.1],
|
|
62
|
+
},
|
|
63
|
+
},
|
|
53
64
|
},
|
|
54
65
|
{
|
|
55
66
|
displayName: 'Value of Column to Match On',
|
|
@@ -60,6 +71,7 @@ const properties = [
|
|
|
60
71
|
displayOptions: {
|
|
61
72
|
show: {
|
|
62
73
|
dataMode: ['defineBelow'],
|
|
74
|
+
'@version': [2, 2.1],
|
|
63
75
|
},
|
|
64
76
|
},
|
|
65
77
|
},
|
|
@@ -75,6 +87,7 @@ const properties = [
|
|
|
75
87
|
displayOptions: {
|
|
76
88
|
show: {
|
|
77
89
|
dataMode: ['defineBelow'],
|
|
90
|
+
'@version': [2, 2.1],
|
|
78
91
|
},
|
|
79
92
|
},
|
|
80
93
|
default: {},
|
|
@@ -104,6 +117,35 @@ const properties = [
|
|
|
104
117
|
},
|
|
105
118
|
],
|
|
106
119
|
},
|
|
120
|
+
{
|
|
121
|
+
displayName: 'Columns',
|
|
122
|
+
name: 'columns',
|
|
123
|
+
type: 'resourceMapper',
|
|
124
|
+
noDataExpression: true,
|
|
125
|
+
default: {
|
|
126
|
+
mappingMode: 'defineBelow',
|
|
127
|
+
value: null,
|
|
128
|
+
},
|
|
129
|
+
required: true,
|
|
130
|
+
typeOptions: {
|
|
131
|
+
loadOptionsDependsOn: ['table.value', 'operation'],
|
|
132
|
+
resourceMapper: {
|
|
133
|
+
resourceMapperMethod: 'getMappingColumns',
|
|
134
|
+
mode: 'update',
|
|
135
|
+
fieldWords: {
|
|
136
|
+
singular: 'column',
|
|
137
|
+
plural: 'columns',
|
|
138
|
+
},
|
|
139
|
+
addAllFields: true,
|
|
140
|
+
multiKeyMatch: true,
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
displayOptions: {
|
|
144
|
+
show: {
|
|
145
|
+
'@version': [2.2],
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
},
|
|
107
149
|
common_descriptions_1.optionsCollection,
|
|
108
150
|
];
|
|
109
151
|
const displayOptions = {
|
|
@@ -126,31 +168,84 @@ async function execute(runQueries, items, nodeOptions, db) {
|
|
|
126
168
|
const table = this.getNodeParameter('table', i, undefined, {
|
|
127
169
|
extractValue: true,
|
|
128
170
|
});
|
|
129
|
-
const
|
|
130
|
-
const
|
|
171
|
+
const nodeVersion = this.getNode().typeVersion;
|
|
172
|
+
const columnsToMatchOn = nodeVersion < 2.2
|
|
173
|
+
? [this.getNodeParameter('columnToMatchOn', i)]
|
|
174
|
+
: this.getNodeParameter('columns.matchingColumns', i);
|
|
175
|
+
const dataMode = nodeVersion < 2.2
|
|
176
|
+
? this.getNodeParameter('dataMode', i)
|
|
177
|
+
: this.getNodeParameter('columns.mappingMode', i);
|
|
131
178
|
let item = {};
|
|
132
179
|
let valueToMatchOn = '';
|
|
180
|
+
if (nodeVersion < 2.2) {
|
|
181
|
+
valueToMatchOn = this.getNodeParameter('valueToMatchOn', i);
|
|
182
|
+
}
|
|
133
183
|
if (dataMode === 'autoMapInputData') {
|
|
134
184
|
item = items[i].json;
|
|
135
|
-
|
|
185
|
+
if (nodeVersion < 2.2) {
|
|
186
|
+
valueToMatchOn = item[columnsToMatchOn[0]];
|
|
187
|
+
}
|
|
136
188
|
}
|
|
137
189
|
if (dataMode === 'defineBelow') {
|
|
138
|
-
const valuesToSend =
|
|
139
|
-
.values
|
|
140
|
-
|
|
141
|
-
|
|
190
|
+
const valuesToSend = nodeVersion < 2.2
|
|
191
|
+
? this.getNodeParameter('valuesToSend', i, []).values
|
|
192
|
+
: this.getNodeParameter('columns.values', i, [])
|
|
193
|
+
.values;
|
|
194
|
+
if (nodeVersion < 2.2) {
|
|
195
|
+
item = (0, utils_1.prepareItem)(valuesToSend);
|
|
196
|
+
item[columnsToMatchOn[0]] = this.getNodeParameter('valueToMatchOn', i);
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
item = this.getNodeParameter('columns.value', i);
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
const matchValues = [];
|
|
203
|
+
if (nodeVersion < 2.2) {
|
|
204
|
+
if (!item[columnsToMatchOn[0]] && dataMode === 'autoMapInputData') {
|
|
205
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), "Column to match on not found in input item. Add a column to match on or set the 'Data Mode' to 'Define Below' to define the value to match on.");
|
|
206
|
+
}
|
|
207
|
+
matchValues.push(valueToMatchOn);
|
|
208
|
+
matchValues.push(columnsToMatchOn[0]);
|
|
142
209
|
}
|
|
143
|
-
|
|
144
|
-
|
|
210
|
+
else {
|
|
211
|
+
columnsToMatchOn.forEach((column) => {
|
|
212
|
+
matchValues.push(column);
|
|
213
|
+
matchValues.push(item[column]);
|
|
214
|
+
});
|
|
215
|
+
const rowExists = await (0, utils_1.doesRowExist)(db, schema, table, matchValues);
|
|
216
|
+
if (!rowExists) {
|
|
217
|
+
const descriptionValues = [];
|
|
218
|
+
matchValues.forEach((val, index) => {
|
|
219
|
+
if (index % 2 === 0) {
|
|
220
|
+
descriptionValues.push(`${matchValues[index]}=${matchValues[index + 1]}`);
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), "The row you are trying to update doesn't exist", {
|
|
224
|
+
description: `No rows matching the provided values (${descriptionValues.join(', ')}) were found in the table "${table}".`,
|
|
225
|
+
itemIndex: i,
|
|
226
|
+
});
|
|
227
|
+
}
|
|
145
228
|
}
|
|
146
229
|
const tableSchema = await (0, utils_1.getTableSchema)(db, schema, table);
|
|
147
230
|
item = (0, utils_1.checkItemAgainstSchema)(this.getNode(), item, tableSchema, i);
|
|
148
231
|
let values = [schema, table];
|
|
149
232
|
let valuesLength = values.length + 1;
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
233
|
+
let condition = '';
|
|
234
|
+
if (nodeVersion < 2.2) {
|
|
235
|
+
condition = `$${valuesLength}:name = $${valuesLength + 1}`;
|
|
236
|
+
valuesLength = valuesLength + 2;
|
|
237
|
+
values.push(columnsToMatchOn[0], valueToMatchOn);
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
const conditions = [];
|
|
241
|
+
for (const column of columnsToMatchOn) {
|
|
242
|
+
conditions.push(`$${valuesLength}:name = $${valuesLength + 1}`);
|
|
243
|
+
valuesLength = valuesLength + 2;
|
|
244
|
+
values.push(column, item[column]);
|
|
245
|
+
}
|
|
246
|
+
condition = conditions.join(' AND ');
|
|
247
|
+
}
|
|
248
|
+
const updateColumns = Object.keys(item).filter((column) => !columnsToMatchOn.includes(column));
|
|
154
249
|
if (!Object.keys(updateColumns).length) {
|
|
155
250
|
throw new n8n_workflow_1.NodeOperationError(this.getNode(), "Add values to update to the input item or set the 'Data Mode' to 'Define Below' to define the values to update.");
|
|
156
251
|
}
|
|
@@ -165,7 +260,8 @@ async function execute(runQueries, items, nodeOptions, db) {
|
|
|
165
260
|
[query, values] = (0, utils_1.addReturning)(query, outputColumns, values);
|
|
166
261
|
queries.push({ query, values });
|
|
167
262
|
}
|
|
168
|
-
|
|
263
|
+
const results = await runQueries(queries, items, nodeOptions);
|
|
264
|
+
return results;
|
|
169
265
|
}
|
|
170
266
|
exports.execute = execute;
|
|
171
267
|
//# sourceMappingURL=update.operation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.operation.js","sourceRoot":"","sources":["../../../../../../nodes/Postgres/v2/actions/database/update.operation.ts"],"names":[],"mappings":";;;AAEA,+CAAkD;AAElD,8DAAsE;AAStE,+
|
|
1
|
+
{"version":3,"file":"update.operation.js","sourceRoot":"","sources":["../../../../../../nodes/Postgres/v2/actions/database/update.operation.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,11 @@ const properties = [
|
|
|
24
24
|
],
|
|
25
25
|
default: 'autoMapInputData',
|
|
26
26
|
description: 'Whether to map node input properties and the table data automatically or manually',
|
|
27
|
+
displayOptions: {
|
|
28
|
+
show: {
|
|
29
|
+
'@version': [2, 2.1],
|
|
30
|
+
},
|
|
31
|
+
},
|
|
27
32
|
},
|
|
28
33
|
{
|
|
29
34
|
displayName: `
|
|
@@ -35,11 +40,12 @@ const properties = [
|
|
|
35
40
|
displayOptions: {
|
|
36
41
|
show: {
|
|
37
42
|
dataMode: ['autoMapInputData'],
|
|
43
|
+
'@version': [2, 2.1],
|
|
38
44
|
},
|
|
39
45
|
},
|
|
40
46
|
},
|
|
41
47
|
{
|
|
42
|
-
displayName: 'Column
|
|
48
|
+
displayName: 'Unique Column',
|
|
43
49
|
name: 'columnToMatchOn',
|
|
44
50
|
type: 'options',
|
|
45
51
|
required: true,
|
|
@@ -50,9 +56,14 @@ const properties = [
|
|
|
50
56
|
},
|
|
51
57
|
default: '',
|
|
52
58
|
hint: "Used to find the correct row(s) to update. Doesn't get changed. Has to be unique.",
|
|
59
|
+
displayOptions: {
|
|
60
|
+
show: {
|
|
61
|
+
'@version': [2, 2.1],
|
|
62
|
+
},
|
|
63
|
+
},
|
|
53
64
|
},
|
|
54
65
|
{
|
|
55
|
-
displayName: 'Value of Column
|
|
66
|
+
displayName: 'Value of Unique Column',
|
|
56
67
|
name: 'valueToMatchOn',
|
|
57
68
|
type: 'string',
|
|
58
69
|
default: '',
|
|
@@ -60,6 +71,7 @@ const properties = [
|
|
|
60
71
|
displayOptions: {
|
|
61
72
|
show: {
|
|
62
73
|
dataMode: ['defineBelow'],
|
|
74
|
+
'@version': [2, 2.1],
|
|
63
75
|
},
|
|
64
76
|
},
|
|
65
77
|
},
|
|
@@ -75,6 +87,7 @@ const properties = [
|
|
|
75
87
|
displayOptions: {
|
|
76
88
|
show: {
|
|
77
89
|
dataMode: ['defineBelow'],
|
|
90
|
+
'@version': [2, 2.1],
|
|
78
91
|
},
|
|
79
92
|
},
|
|
80
93
|
default: {},
|
|
@@ -104,6 +117,35 @@ const properties = [
|
|
|
104
117
|
},
|
|
105
118
|
],
|
|
106
119
|
},
|
|
120
|
+
{
|
|
121
|
+
displayName: 'Columns',
|
|
122
|
+
name: 'columns',
|
|
123
|
+
type: 'resourceMapper',
|
|
124
|
+
noDataExpression: true,
|
|
125
|
+
default: {
|
|
126
|
+
mappingMode: 'defineBelow',
|
|
127
|
+
value: null,
|
|
128
|
+
},
|
|
129
|
+
required: true,
|
|
130
|
+
typeOptions: {
|
|
131
|
+
loadOptionsDependsOn: ['table.value', 'operation'],
|
|
132
|
+
resourceMapper: {
|
|
133
|
+
resourceMapperMethod: 'getMappingColumns',
|
|
134
|
+
mode: 'upsert',
|
|
135
|
+
fieldWords: {
|
|
136
|
+
singular: 'column',
|
|
137
|
+
plural: 'columns',
|
|
138
|
+
},
|
|
139
|
+
addAllFields: true,
|
|
140
|
+
multiKeyMatch: true,
|
|
141
|
+
},
|
|
142
|
+
},
|
|
143
|
+
displayOptions: {
|
|
144
|
+
show: {
|
|
145
|
+
'@version': [2.2],
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
},
|
|
107
149
|
common_descriptions_1.optionsCollection,
|
|
108
150
|
];
|
|
109
151
|
const displayOptions = {
|
|
@@ -126,35 +168,51 @@ async function execute(runQueries, items, nodeOptions, db) {
|
|
|
126
168
|
const table = this.getNodeParameter('table', i, undefined, {
|
|
127
169
|
extractValue: true,
|
|
128
170
|
});
|
|
129
|
-
const
|
|
130
|
-
const
|
|
171
|
+
const nodeVersion = this.getNode().typeVersion;
|
|
172
|
+
const columnsToMatchOn = nodeVersion < 2.2
|
|
173
|
+
? [this.getNodeParameter('columnToMatchOn', i)]
|
|
174
|
+
: this.getNodeParameter('columns.matchingColumns', i);
|
|
175
|
+
const dataMode = nodeVersion < 2.2
|
|
176
|
+
? this.getNodeParameter('dataMode', i)
|
|
177
|
+
: this.getNodeParameter('columns.mappingMode', i);
|
|
131
178
|
let item = {};
|
|
132
179
|
if (dataMode === 'autoMapInputData') {
|
|
133
180
|
item = items[i].json;
|
|
134
181
|
}
|
|
135
182
|
if (dataMode === 'defineBelow') {
|
|
136
|
-
const valuesToSend =
|
|
137
|
-
.values
|
|
138
|
-
|
|
139
|
-
|
|
183
|
+
const valuesToSend = nodeVersion < 2.2
|
|
184
|
+
? this.getNodeParameter('valuesToSend', i, []).values
|
|
185
|
+
: this.getNodeParameter('columns.values', i, [])
|
|
186
|
+
.values;
|
|
187
|
+
if (nodeVersion < 2.2) {
|
|
188
|
+
item = (0, utils_1.prepareItem)(valuesToSend);
|
|
189
|
+
item[columnsToMatchOn[0]] = this.getNodeParameter('valueToMatchOn', i);
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
item = this.getNodeParameter('columns.value', i);
|
|
193
|
+
}
|
|
140
194
|
}
|
|
141
|
-
if (!item[
|
|
195
|
+
if (!item[columnsToMatchOn[0]]) {
|
|
142
196
|
throw new n8n_workflow_1.NodeOperationError(this.getNode(), "Column to match on not found in input item. Add a column to match on or set the 'Data Mode' to 'Define Below' to define the value to match on.");
|
|
143
197
|
}
|
|
144
|
-
if (item[
|
|
198
|
+
if (item[columnsToMatchOn[0]] && Object.keys(item).length === 1) {
|
|
145
199
|
throw new n8n_workflow_1.NodeOperationError(this.getNode(), "Add values to update or insert to the input item or set the 'Data Mode' to 'Define Below' to define the values to insert or update.");
|
|
146
200
|
}
|
|
147
201
|
const tableSchema = await (0, utils_1.getTableSchema)(db, schema, table);
|
|
148
202
|
item = (0, utils_1.checkItemAgainstSchema)(this.getNode(), item, tableSchema, i);
|
|
149
203
|
let values = [schema, table];
|
|
150
204
|
let valuesLength = values.length + 1;
|
|
151
|
-
const
|
|
152
|
-
|
|
153
|
-
|
|
205
|
+
const conflictColumns = [];
|
|
206
|
+
columnsToMatchOn.forEach((column) => {
|
|
207
|
+
conflictColumns.push(`$${valuesLength}:name`);
|
|
208
|
+
valuesLength = valuesLength + 1;
|
|
209
|
+
values.push(column);
|
|
210
|
+
});
|
|
211
|
+
const onConflict = ` ON CONFLICT (${conflictColumns.join(',')}) DO UPDATE `;
|
|
154
212
|
const insertQuery = `INSERT INTO $1:name.$2:name($${valuesLength}:name) VALUES($${valuesLength}:csv)${onConflict}`;
|
|
155
213
|
valuesLength = valuesLength + 1;
|
|
156
214
|
values.push(item);
|
|
157
|
-
const updateColumns = Object.keys(item).filter((column) => column
|
|
215
|
+
const updateColumns = Object.keys(item).filter((column) => !columnsToMatchOn.includes(column));
|
|
158
216
|
const updates = [];
|
|
159
217
|
for (const column of updateColumns) {
|
|
160
218
|
updates.push(`$${valuesLength}:name = $${valuesLength + 1}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upsert.operation.js","sourceRoot":"","sources":["../../../../../../nodes/Postgres/v2/actions/database/upsert.operation.ts"],"names":[],"mappings":";;;AAEA,+CAAkD;AAElD,8DAAsE;AAStE,+CAM6B;AAE7B,gEAA2D;AAE3D,MAAM,UAAU,GAAsB;IACrC;QACC,WAAW,EAAE,WAAW;QACxB,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,SAAS;QACf,OAAO,EAAE;YACR;gBACC,IAAI,EAAE,gCAAgC;gBACtC,KAAK,EAAE,kBAAkB;gBACzB,WAAW,EAAE,2EAA2E;aACxF;YACD;gBACC,IAAI,EAAE,0BAA0B;gBAChC,KAAK,EAAE,aAAa;gBACpB,WAAW,EAAE,oDAAoD;aACjE;SACD;QACD,OAAO,EAAE,kBAAkB;QAC3B,WAAW,EACV,mFAAmF;
|
|
1
|
+
{"version":3,"file":"upsert.operation.js","sourceRoot":"","sources":["../../../../../../nodes/Postgres/v2/actions/database/upsert.operation.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,7 +30,7 @@ exports.versionDescription = {
|
|
|
30
30
|
name: 'postgres',
|
|
31
31
|
icon: 'file:postgres.svg',
|
|
32
32
|
group: ['input'],
|
|
33
|
-
version: [2, 2.1],
|
|
33
|
+
version: [2, 2.1, 2.2],
|
|
34
34
|
subtitle: '={{ $parameter["operation"] }}',
|
|
35
35
|
description: 'Get, add and update data in Postgres',
|
|
36
36
|
defaults: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versionDescription.js","sourceRoot":"","sources":["../../../../../nodes/Postgres/v2/actions/versionDescription.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,uEAAyD;AAE5C,QAAA,kBAAkB,GAAyB;IACvD,WAAW,EAAE,UAAU;IACvB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,mBAAmB;IACzB,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC;
|
|
1
|
+
{"version":3,"file":"versionDescription.js","sourceRoot":"","sources":["../../../../../nodes/Postgres/v2/actions/versionDescription.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,uEAAyD;AAE5C,QAAA,kBAAkB,GAAyB;IACvD,WAAW,EAAE,UAAU;IACvB,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,mBAAmB;IACzB,KAAK,EAAE,CAAC,OAAO,CAAC;IAChB,OAAO,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;IACtB,QAAQ,EAAE,gCAAgC;IAC1C,WAAW,EAAE,sCAAsC;IACnD,QAAQ,EAAE;QACT,IAAI,EAAE,UAAU;KAChB;IACD,MAAM,EAAE,CAAC,MAAM,CAAC;IAChB,OAAO,EAAE,CAAC,MAAM,CAAC;IACjB,WAAW,EAAE;QACZ;YACC,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,wBAAwB;SAClC;KACD;IACD,UAAU,EAAE;QACX;YACC,WAAW,EAAE,UAAU;YACvB,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,QAAQ;YACd,gBAAgB,EAAE,IAAI;YACtB,OAAO,EAAE;gBACR;oBACC,IAAI,EAAE,UAAU;oBAChB,KAAK,EAAE,UAAU;iBACjB;aACD;YACD,OAAO,EAAE,UAAU;SACnB;QACD,GAAG,QAAQ,CAAC,WAAW;KACvB;CACD,CAAC"}
|
|
@@ -22,6 +22,12 @@ export type ColumnInfo = {
|
|
|
22
22
|
column_name: string;
|
|
23
23
|
data_type: string;
|
|
24
24
|
is_nullable: string;
|
|
25
|
+
udt_name: string;
|
|
26
|
+
column_default?: string;
|
|
27
|
+
};
|
|
28
|
+
export type EnumInfo = {
|
|
29
|
+
typname: string;
|
|
30
|
+
enumlabel: string;
|
|
25
31
|
};
|
|
26
32
|
export type PgpClient = pgPromise.IMain<{}, pg.IClient>;
|
|
27
33
|
export type PgpDatabase = pgPromise.IDatabase<{}, pg.IClient>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { IDataObject, INode, INodeExecutionData } from 'n8n-workflow';
|
|
1
|
+
import type { IDataObject, INode, INodeExecutionData, INodePropertyOptions } from 'n8n-workflow';
|
|
2
2
|
import { NodeOperationError } from 'n8n-workflow';
|
|
3
|
-
import type { ColumnInfo, ConstructExecutionMetaData, PgpClient, PgpDatabase, QueryValues, QueryWithValues, SortRule, WhereClause } from './interfaces';
|
|
3
|
+
import type { ColumnInfo, ConstructExecutionMetaData, EnumInfo, PgpClient, PgpDatabase, QueryValues, QueryWithValues, SortRule, WhereClause } from './interfaces';
|
|
4
4
|
export declare function wrapData(data: IDataObject | IDataObject[]): INodeExecutionData[];
|
|
5
5
|
export declare function prepareErrorItem(items: INodeExecutionData[], error: IDataObject | NodeOperationError | Error, index: number): INodeExecutionData;
|
|
6
6
|
export declare function parsePostgresError(node: INode, error: any, queries: QueryWithValues[], itemIndex?: number): NodeOperationError;
|
|
@@ -27,4 +27,8 @@ export declare const configureQueryRunner: (node: INode, constructExecutionMetaD
|
|
|
27
27
|
export declare function replaceEmptyStringsByNulls(items: INodeExecutionData[], replace?: boolean): INodeExecutionData[];
|
|
28
28
|
export declare function prepareItem(values: IDataObject[]): IDataObject;
|
|
29
29
|
export declare function getTableSchema(db: PgpDatabase, schema: string, table: string): Promise<ColumnInfo[]>;
|
|
30
|
+
export declare function uniqueColumns(db: PgpDatabase, table: string): Promise<IDataObject[]>;
|
|
31
|
+
export declare function getEnums(db: PgpDatabase): Promise<EnumInfo[]>;
|
|
32
|
+
export declare function getEnumValues(enumInfo: EnumInfo[], enumName: string): INodePropertyOptions[];
|
|
33
|
+
export declare function doesRowExist(db: PgpDatabase, schema: string, table: string, values: string[]): Promise<boolean>;
|
|
30
34
|
export declare function checkItemAgainstSchema(node: INode, item: IDataObject, columnsInfo: ColumnInfo[], index: number): IDataObject;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.checkItemAgainstSchema = exports.getTableSchema = exports.prepareItem = exports.replaceEmptyStringsByNulls = exports.configureQueryRunner = exports.addReturning = exports.addSortRules = exports.addWhereClauses = exports.parsePostgresError = exports.prepareErrorItem = exports.wrapData = void 0;
|
|
3
|
+
exports.checkItemAgainstSchema = exports.doesRowExist = exports.getEnumValues = exports.getEnums = exports.uniqueColumns = exports.getTableSchema = exports.prepareItem = exports.replaceEmptyStringsByNulls = exports.configureQueryRunner = exports.addReturning = exports.addSortRules = exports.addWhereClauses = exports.parsePostgresError = exports.prepareErrorItem = exports.wrapData = void 0;
|
|
4
4
|
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const ENUM_VALUES_REGEX = /\{(.+?)\}/gm;
|
|
5
6
|
function wrapData(data) {
|
|
6
7
|
if (!Array.isArray(data)) {
|
|
7
8
|
return [{ json: data }];
|
|
@@ -228,10 +229,43 @@ function prepareItem(values) {
|
|
|
228
229
|
}
|
|
229
230
|
exports.prepareItem = prepareItem;
|
|
230
231
|
async function getTableSchema(db, schema, table) {
|
|
231
|
-
const columns = await db.any('SELECT column_name, data_type, is_nullable FROM information_schema.columns WHERE table_schema = $1 AND table_name = $2', [schema, table]);
|
|
232
|
+
const columns = await db.any('SELECT column_name, data_type, is_nullable, udt_name, column_default FROM information_schema.columns WHERE table_schema = $1 AND table_name = $2', [schema, table]);
|
|
232
233
|
return columns;
|
|
233
234
|
}
|
|
234
235
|
exports.getTableSchema = getTableSchema;
|
|
236
|
+
async function uniqueColumns(db, table) {
|
|
237
|
+
const unique = await db.any(`
|
|
238
|
+
SELECT DISTINCT a.attname
|
|
239
|
+
FROM pg_index i JOIN pg_attribute a ON a.attrelid = i.indrelid AND a.attnum = ANY(i.indkey)
|
|
240
|
+
WHERE i.indrelid = quote_ident($1)::regclass
|
|
241
|
+
AND (i.indisprimary OR i.indisunique);
|
|
242
|
+
`, [table]);
|
|
243
|
+
return unique;
|
|
244
|
+
}
|
|
245
|
+
exports.uniqueColumns = uniqueColumns;
|
|
246
|
+
async function getEnums(db) {
|
|
247
|
+
const enumsData = await db.any('SELECT pg_type.typname, pg_enum.enumlabel FROM pg_type JOIN pg_enum ON pg_enum.enumtypid = pg_type.oid;');
|
|
248
|
+
return enumsData;
|
|
249
|
+
}
|
|
250
|
+
exports.getEnums = getEnums;
|
|
251
|
+
function getEnumValues(enumInfo, enumName) {
|
|
252
|
+
return enumInfo.reduce((acc, current) => {
|
|
253
|
+
if (current.typname === enumName) {
|
|
254
|
+
acc.push({ name: current.enumlabel, value: current.enumlabel });
|
|
255
|
+
}
|
|
256
|
+
return acc;
|
|
257
|
+
}, []);
|
|
258
|
+
}
|
|
259
|
+
exports.getEnumValues = getEnumValues;
|
|
260
|
+
async function doesRowExist(db, schema, table, values) {
|
|
261
|
+
const where = [];
|
|
262
|
+
for (let i = 3; i < 3 + values.length; i += 2) {
|
|
263
|
+
where.push(`$${i}:name=$${i + 1}`);
|
|
264
|
+
}
|
|
265
|
+
const exists = await db.any(`SELECT EXISTS(SELECT 1 FROM $1:name.$2:name WHERE ${where.join(' AND ')})`, [schema, table, ...values]);
|
|
266
|
+
return exists[0].exists;
|
|
267
|
+
}
|
|
268
|
+
exports.doesRowExist = doesRowExist;
|
|
235
269
|
function checkItemAgainstSchema(node, item, columnsInfo, index) {
|
|
236
270
|
var _a;
|
|
237
271
|
if (columnsInfo.length === 0)
|