n8n-nodes-base 0.220.0 → 0.221.0
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/HubspotDeveloperApi.credentials.js +1 -0
- package/dist/credentials/HubspotDeveloperApi.credentials.js.map +1 -1
- package/dist/credentials/Postgres.credentials.js +115 -0
- package/dist/credentials/Postgres.credentials.js.map +1 -1
- package/dist/credentials/SshPrivateKey.credentials.js +1 -0
- package/dist/credentials/SshPrivateKey.credentials.js.map +1 -1
- package/dist/known/credentials.json +1 -0
- package/dist/nodes/ActionNetwork/GenericFunctions.d.ts +1 -1
- package/dist/nodes/Autopilot/GenericFunctions.js +2 -1
- package/dist/nodes/Autopilot/GenericFunctions.js.map +1 -1
- package/dist/nodes/Aws/AwsSns.node.js +2 -2
- package/dist/nodes/Aws/AwsSns.node.js.map +1 -1
- package/dist/nodes/Aws/Rekognition/GenericFunctions.js +2 -1
- package/dist/nodes/Aws/Rekognition/GenericFunctions.js.map +1 -1
- package/dist/nodes/Aws/S3/GenericFunctions.js +2 -1
- package/dist/nodes/Aws/S3/GenericFunctions.js.map +1 -1
- package/dist/nodes/ClickUp/GenericFunctions.js +2 -1
- package/dist/nodes/ClickUp/GenericFunctions.js.map +1 -1
- package/dist/nodes/Clockify/GenericFunctions.js +2 -1
- package/dist/nodes/Clockify/GenericFunctions.js.map +1 -1
- package/dist/nodes/CompareDatasets/CompareDatasets.node.js +42 -6
- package/dist/nodes/CompareDatasets/CompareDatasets.node.js.map +1 -1
- package/dist/nodes/CompareDatasets/GenericFunctions.js +60 -18
- package/dist/nodes/CompareDatasets/GenericFunctions.js.map +1 -1
- package/dist/nodes/CompareDatasets/test/node/workflow.compareDatasets.fuzzy.missing_keys.json +232 -0
- package/dist/nodes/CompareDatasets/test/node/workflow.compareDatasets.skipFields.json +897 -0
- package/dist/nodes/CrateDb/CrateDb.node.js +7 -7
- package/dist/nodes/CrateDb/CrateDb.node.js.map +1 -1
- package/dist/nodes/DateTime/DateTime.node.js +11 -1
- package/dist/nodes/DateTime/DateTime.node.js.map +1 -1
- package/dist/nodes/DateTime/test/node/workflow.luxonDateTime.json +165 -0
- package/dist/nodes/Filter/Filter.node.js +12 -5
- package/dist/nodes/Filter/Filter.node.js.map +1 -1
- package/dist/nodes/Github/SearchFunctions.js +1 -1
- package/dist/nodes/Github/SearchFunctions.js.map +1 -1
- package/dist/nodes/GoToWebinar/GenericFunctions.d.ts +1 -1
- package/dist/nodes/GoToWebinar/GenericFunctions.js +5 -4
- package/dist/nodes/GoToWebinar/GenericFunctions.js.map +1 -1
- package/dist/nodes/Google/Gmail/GenericFunctions.d.ts +4 -2
- package/dist/nodes/Google/Gmail/GenericFunctions.js +40 -47
- package/dist/nodes/Google/Gmail/GenericFunctions.js.map +1 -1
- package/dist/nodes/Google/Gmail/GmailTrigger.node.js +1 -1
- package/dist/nodes/Google/Gmail/GmailTrigger.node.js.map +1 -1
- package/dist/nodes/Google/Gmail/v2/GmailV2.node.js +2 -2
- package/dist/nodes/Google/Gmail/v2/GmailV2.node.js.map +1 -1
- package/dist/nodes/Google/Sheet/GoogleSheetsTrigger.utils.d.ts +7 -1
- package/dist/nodes/HelpScout/GenericFunctions.js +2 -1
- package/dist/nodes/HelpScout/GenericFunctions.js.map +1 -1
- package/dist/nodes/HtmlExtract/HtmlExtract.node.js +4 -2
- package/dist/nodes/HtmlExtract/HtmlExtract.node.js.map +1 -1
- package/dist/nodes/HtmlExtract/test/workflow.dotNotation.json +143 -0
- package/dist/nodes/HttpRequest/GenericFunctions.d.ts +9 -0
- package/dist/nodes/HttpRequest/GenericFunctions.js +18 -1
- package/dist/nodes/HttpRequest/GenericFunctions.js.map +1 -1
- package/dist/nodes/HttpRequest/HttpRequest.node.js +2 -1
- package/dist/nodes/HttpRequest/HttpRequest.node.js.map +1 -1
- package/dist/nodes/HttpRequest/V3/HttpRequestV3.node.js +56 -6
- package/dist/nodes/HttpRequest/V3/HttpRequestV3.node.js.map +1 -1
- package/dist/nodes/Hubspot/GenericFunctions.js +2 -1
- package/dist/nodes/Hubspot/GenericFunctions.js.map +1 -1
- package/dist/nodes/LinkedIn/GenericFunctions.js +16 -4
- package/dist/nodes/LinkedIn/GenericFunctions.js.map +1 -1
- package/dist/nodes/LinkedIn/LinkedIn.node.js +33 -77
- package/dist/nodes/LinkedIn/LinkedIn.node.js.map +1 -1
- package/dist/nodes/Microsoft/Teams/GenericFunctions.js +2 -1
- package/dist/nodes/Microsoft/Teams/GenericFunctions.js.map +1 -1
- package/dist/nodes/Notion/GenericFunctions.js +2 -1
- package/dist/nodes/Notion/GenericFunctions.js.map +1 -1
- package/dist/nodes/Orbit/GenericFunctions.js +2 -1
- package/dist/nodes/Orbit/GenericFunctions.js.map +1 -1
- package/dist/nodes/Postgres/Postgres.node.d.ts +3 -9
- package/dist/nodes/Postgres/Postgres.node.js +9 -319
- package/dist/nodes/Postgres/Postgres.node.js.map +1 -1
- package/dist/nodes/Postgres/v1/PostgresV1.node.d.ts +12 -0
- package/dist/nodes/Postgres/v1/PostgresV1.node.js +345 -0
- package/dist/nodes/Postgres/v1/PostgresV1.node.js.map +1 -0
- package/dist/nodes/Postgres/{Postgres.node.functions.js → v1/genericFunctions.js} +1 -1
- package/dist/nodes/Postgres/v1/genericFunctions.js.map +1 -0
- package/dist/nodes/Postgres/v2/PostgresV2.node.d.ts +13 -0
- package/dist/nodes/Postgres/v2/PostgresV2.node.js +20 -0
- package/dist/nodes/Postgres/v2/PostgresV2.node.js.map +1 -0
- package/dist/nodes/Postgres/v2/actions/common.descriptions.d.ts +7 -0
- package/dist/nodes/Postgres/v2/actions/common.descriptions.js +317 -0
- package/dist/nodes/Postgres/v2/actions/common.descriptions.js.map +1 -0
- package/dist/nodes/Postgres/v2/actions/database/Database.resource.d.ts +9 -0
- package/dist/nodes/Postgres/v2/actions/database/Database.resource.js +100 -0
- package/dist/nodes/Postgres/v2/actions/database/Database.resource.js.map +1 -0
- package/dist/nodes/Postgres/v2/actions/database/deleteTable.operation.d.ts +24 -0
- package/dist/nodes/Postgres/v2/actions/database/deleteTable.operation.js +110 -0
- package/dist/nodes/Postgres/v2/actions/database/deleteTable.operation.js.map +1 -0
- package/dist/nodes/Postgres/v2/actions/database/executeQuery.operation.d.ts +24 -0
- package/dist/nodes/Postgres/v2/actions/database/executeQuery.operation.js +60 -0
- package/dist/nodes/Postgres/v2/actions/database/executeQuery.operation.js.map +1 -0
- package/dist/nodes/Postgres/v2/actions/database/insert.operation.d.ts +24 -0
- package/dist/nodes/Postgres/v2/actions/database/insert.operation.js +129 -0
- package/dist/nodes/Postgres/v2/actions/database/insert.operation.js.map +1 -0
- package/dist/nodes/Postgres/v2/actions/database/select.operation.d.ts +24 -0
- package/dist/nodes/Postgres/v2/actions/database/select.operation.js +87 -0
- package/dist/nodes/Postgres/v2/actions/database/select.operation.js.map +1 -0
- package/dist/nodes/Postgres/v2/actions/database/update.operation.d.ts +24 -0
- package/dist/nodes/Postgres/v2/actions/database/update.operation.js +164 -0
- package/dist/nodes/Postgres/v2/actions/database/update.operation.js.map +1 -0
- package/dist/nodes/Postgres/v2/actions/database/upsert.operation.d.ts +24 -0
- package/dist/nodes/Postgres/v2/actions/database/upsert.operation.js +165 -0
- package/dist/nodes/Postgres/v2/actions/database/upsert.operation.js.map +1 -0
- package/dist/nodes/Postgres/v2/actions/node.type.d.ts +7 -0
- package/dist/nodes/Postgres/v2/actions/node.type.js +3 -0
- package/dist/nodes/Postgres/v2/actions/node.type.js.map +1 -0
- package/dist/nodes/Postgres/v2/actions/router.d.ts +2 -0
- package/dist/nodes/Postgres/v2/actions/router.js +65 -0
- package/dist/nodes/Postgres/v2/actions/router.js.map +1 -0
- package/dist/nodes/Postgres/v2/actions/versionDescription.d.ts +2 -0
- package/dist/nodes/Postgres/v2/actions/versionDescription.js +65 -0
- package/dist/nodes/Postgres/v2/actions/versionDescription.js.map +1 -0
- package/dist/nodes/Postgres/v2/helpers/interfaces.d.ts +37 -0
- package/dist/nodes/Postgres/v2/helpers/interfaces.js +3 -0
- package/dist/nodes/Postgres/v2/helpers/interfaces.js.map +1 -0
- package/dist/nodes/Postgres/v2/helpers/utils.d.ts +29 -0
- package/dist/nodes/Postgres/v2/helpers/utils.js +258 -0
- package/dist/nodes/Postgres/v2/helpers/utils.js.map +1 -0
- package/dist/nodes/Postgres/v2/methods/credentialTest.d.ts +2 -0
- package/dist/nodes/Postgres/v2/methods/credentialTest.js +47 -0
- package/dist/nodes/Postgres/v2/methods/credentialTest.js.map +1 -0
- package/dist/nodes/Postgres/v2/methods/index.d.ts +3 -0
- package/dist/nodes/Postgres/v2/methods/index.js +30 -0
- package/dist/nodes/Postgres/v2/methods/index.js.map +1 -0
- package/dist/nodes/Postgres/v2/methods/listSearch.d.ts +3 -0
- package/dist/nodes/Postgres/v2/methods/listSearch.js +42 -0
- package/dist/nodes/Postgres/v2/methods/listSearch.js.map +1 -0
- package/dist/nodes/Postgres/v2/methods/loadOptions.d.ts +4 -0
- package/dist/nodes/Postgres/v2/methods/loadOptions.js +40 -0
- package/dist/nodes/Postgres/v2/methods/loadOptions.js.map +1 -0
- package/dist/nodes/Postgres/v2/transport/index.d.ts +10 -0
- package/dist/nodes/Postgres/v2/transport/index.js +168 -0
- package/dist/nodes/Postgres/v2/transport/index.js.map +1 -0
- package/dist/nodes/QuestDb/QuestDb.node.js +3 -3
- package/dist/nodes/QuestDb/QuestDb.node.js.map +1 -1
- package/dist/nodes/Redis/Redis.node.js +35 -4
- package/dist/nodes/Redis/Redis.node.js.map +1 -1
- package/dist/nodes/S3/GenericFunctions.js +2 -1
- package/dist/nodes/S3/GenericFunctions.js.map +1 -1
- package/dist/nodes/Schedule/ScheduleTrigger.node.js +2 -2
- package/dist/nodes/Schedule/ScheduleTrigger.node.js.map +1 -1
- package/dist/nodes/SendGrid/GenericFunctions.js +2 -1
- package/dist/nodes/SendGrid/GenericFunctions.js.map +1 -1
- package/dist/nodes/SentryIo/GenericFunctions.js +2 -1
- package/dist/nodes/SentryIo/GenericFunctions.js.map +1 -1
- package/dist/nodes/ServiceNow/IncidentDescription.js +7 -0
- package/dist/nodes/ServiceNow/IncidentDescription.js.map +1 -1
- package/dist/nodes/Set/Set.node.js +7 -1
- package/dist/nodes/Set/Set.node.js.map +1 -1
- package/dist/nodes/Set/test/Set.workflow.number.json +145 -0
- package/dist/nodes/Taiga/GenericFunctions.js +2 -1
- package/dist/nodes/Taiga/GenericFunctions.js.map +1 -1
- package/dist/nodes/TimescaleDb/TimescaleDb.node.js +4 -4
- package/dist/nodes/TimescaleDb/TimescaleDb.node.js.map +1 -1
- package/dist/nodes/Zendesk/GenericFunctions.js +2 -1
- package/dist/nodes/Zendesk/GenericFunctions.js.map +1 -1
- package/dist/types/credentials.json +3 -3
- package/dist/types/nodes.json +14 -12
- package/package.json +3 -3
- package/dist/nodes/Postgres/Postgres.node.functions.js.map +0 -1
- /package/dist/nodes/Postgres/{Postgres.node.functions.d.ts → v1/genericFunctions.d.ts} +0 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.execute = exports.description = void 0;
|
|
4
|
+
const n8n_workflow_1 = require("n8n-workflow");
|
|
5
|
+
const utilities_1 = require("../../../../../utils/utilities");
|
|
6
|
+
const utils_1 = require("../../helpers/utils");
|
|
7
|
+
const common_descriptions_1 = require("../common.descriptions");
|
|
8
|
+
const properties = [
|
|
9
|
+
{
|
|
10
|
+
displayName: 'Query',
|
|
11
|
+
name: 'query',
|
|
12
|
+
type: 'string',
|
|
13
|
+
default: '',
|
|
14
|
+
placeholder: 'e.g. SELECT id, name FROM product WHERE quantity > $1 AND price <= $2',
|
|
15
|
+
required: true,
|
|
16
|
+
description: "The SQL query to execute. You can use n8n expressions and $1, $2, $3, etc to refer to the 'Query Parameters' set in options below.",
|
|
17
|
+
typeOptions: {
|
|
18
|
+
rows: 3,
|
|
19
|
+
},
|
|
20
|
+
hint: 'Prefer using query parameters over n8n expressions to avoid SQL injection attacks',
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
displayName: `
|
|
24
|
+
To use query parameters in your SQL query, reference them as $1, $2, $3, etc in the corresponding order. <a href="https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.postgres/#use-query-parameters">More info</a>.
|
|
25
|
+
`,
|
|
26
|
+
name: 'notice',
|
|
27
|
+
type: 'notice',
|
|
28
|
+
default: '',
|
|
29
|
+
},
|
|
30
|
+
common_descriptions_1.optionsCollection,
|
|
31
|
+
];
|
|
32
|
+
const displayOptions = {
|
|
33
|
+
show: {
|
|
34
|
+
resource: ['database'],
|
|
35
|
+
operation: ['executeQuery'],
|
|
36
|
+
},
|
|
37
|
+
};
|
|
38
|
+
exports.description = (0, utilities_1.updateDisplayOptions)(displayOptions, properties);
|
|
39
|
+
async function execute(runQueries, items, nodeOptions, _db) {
|
|
40
|
+
items = (0, utils_1.replaceEmptyStringsByNulls)(items, nodeOptions.replaceEmptyStrings);
|
|
41
|
+
const queries = [];
|
|
42
|
+
for (let i = 0; i < items.length; i++) {
|
|
43
|
+
const query = this.getNodeParameter('query', i);
|
|
44
|
+
let values = [];
|
|
45
|
+
let queryReplacement = this.getNodeParameter('options.queryReplacement', i, '');
|
|
46
|
+
if (typeof queryReplacement === 'string') {
|
|
47
|
+
queryReplacement = queryReplacement.split(',').map((entry) => entry.trim());
|
|
48
|
+
}
|
|
49
|
+
if (Array.isArray(queryReplacement)) {
|
|
50
|
+
values = queryReplacement;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Query Replacement must be a string of comma-separated values, or an array of values', { itemIndex: i });
|
|
54
|
+
}
|
|
55
|
+
queries.push({ query, values });
|
|
56
|
+
}
|
|
57
|
+
return runQueries(queries, items, nodeOptions);
|
|
58
|
+
}
|
|
59
|
+
exports.execute = execute;
|
|
60
|
+
//# sourceMappingURL=executeQuery.operation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executeQuery.operation.js","sourceRoot":"","sources":["../../../../../../nodes/Postgres/v2/actions/database/executeQuery.operation.ts"],"names":[],"mappings":";;;AAEA,+CAAkD;AAElD,8DAAsE;AAItE,+CAAiE;AAEjE,gEAA2D;AAE3D,MAAM,UAAU,GAAsB;IACrC;QACC,WAAW,EAAE,OAAO;QACpB,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,uEAAuE;QACpF,QAAQ,EAAE,IAAI;QACd,WAAW,EACV,oIAAoI;QACrI,WAAW,EAAE;YACZ,IAAI,EAAE,CAAC;SACP;QACD,IAAI,EAAE,mFAAmF;KACzF;IACD;QACC,WAAW,EAAE;;GAEZ;QACD,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;KACX;IACD,uCAAiB;CACjB,CAAC;AAEF,MAAM,cAAc,GAAG;IACtB,IAAI,EAAE;QACL,QAAQ,EAAE,CAAC,UAAU,CAAC;QACtB,SAAS,EAAE,CAAC,cAAc,CAAC;KAC3B;CACD,CAAC;AAEW,QAAA,WAAW,GAAG,IAAA,gCAAoB,EAAC,cAAc,EAAE,UAAU,CAAC,CAAC;AAErE,KAAK,UAAU,OAAO,CAE5B,UAAyB,EACzB,KAA2B,EAC3B,WAAwB,EACxB,GAAiB;IAEjB,KAAK,GAAG,IAAA,kCAA0B,EAAC,KAAK,EAAE,WAAW,CAAC,mBAA8B,CAAC,CAAC;IAEtF,MAAM,OAAO,GAAsB,EAAE,CAAC;IAEtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAW,CAAC;QAE1D,IAAI,MAAM,GAAkB,EAAE,CAAC;QAE/B,IAAI,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,0BAA0B,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAEhF,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE;YACzC,gBAAgB,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;SAC5E;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;YACpC,MAAM,GAAG,gBAAiC,CAAC;SAC3C;aAAM;YACN,MAAM,IAAI,iCAAkB,CAC3B,IAAI,CAAC,OAAO,EAAE,EACd,qFAAqF,EACrF,EAAE,SAAS,EAAE,CAAC,EAAE,CAChB,CAAC;SACF;QAED,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;KAChC;IAED,OAAO,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;AAChD,CAAC;AApCD,0BAoCC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { IExecuteFunctions } from 'n8n-core';
|
|
2
|
+
import type { IDataObject, INodeExecutionData, INodeProperties } from 'n8n-workflow';
|
|
3
|
+
import type { PgpDatabase, QueriesRunner } from '../../helpers/interfaces';
|
|
4
|
+
export declare const description: {
|
|
5
|
+
displayOptions: import("n8n-workflow").IDisplayOptions;
|
|
6
|
+
displayName: string;
|
|
7
|
+
name: string;
|
|
8
|
+
type: import("n8n-workflow").NodePropertyTypes;
|
|
9
|
+
typeOptions?: import("n8n-workflow").INodePropertyTypeOptions | undefined;
|
|
10
|
+
default: import("n8n-workflow").NodeParameterValueType;
|
|
11
|
+
description?: string | undefined;
|
|
12
|
+
hint?: string | undefined;
|
|
13
|
+
options?: (INodeProperties | import("n8n-workflow").INodePropertyOptions | import("n8n-workflow").INodePropertyCollection)[] | undefined;
|
|
14
|
+
placeholder?: string | undefined;
|
|
15
|
+
isNodeSetting?: boolean | undefined;
|
|
16
|
+
noDataExpression?: boolean | undefined;
|
|
17
|
+
required?: boolean | undefined;
|
|
18
|
+
routing?: import("n8n-workflow").INodePropertyRouting | undefined;
|
|
19
|
+
credentialTypes?: ("extends:oAuth2Api" | "extends:oAuth1Api" | "has:authenticate" | "has:genericAuth")[] | undefined;
|
|
20
|
+
extractValue?: import("n8n-workflow").INodePropertyValueExtractorRegex | undefined;
|
|
21
|
+
modes?: import("n8n-workflow").INodePropertyMode[] | undefined;
|
|
22
|
+
requiresDataPath?: "single" | "multiple" | undefined;
|
|
23
|
+
}[];
|
|
24
|
+
export declare function execute(this: IExecuteFunctions, runQueries: QueriesRunner, items: INodeExecutionData[], nodeOptions: IDataObject, db: PgpDatabase): Promise<INodeExecutionData[]>;
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.execute = exports.description = void 0;
|
|
4
|
+
const utilities_1 = require("../../../../../utils/utilities");
|
|
5
|
+
const utils_1 = require("../../helpers/utils");
|
|
6
|
+
const common_descriptions_1 = require("../common.descriptions");
|
|
7
|
+
const properties = [
|
|
8
|
+
{
|
|
9
|
+
displayName: 'Data Mode',
|
|
10
|
+
name: 'dataMode',
|
|
11
|
+
type: 'options',
|
|
12
|
+
options: [
|
|
13
|
+
{
|
|
14
|
+
name: 'Auto-Map Input Data to Columns',
|
|
15
|
+
value: 'autoMapInputData',
|
|
16
|
+
description: 'Use when node input properties names exactly match the table column names',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: 'Map Each Column Manually',
|
|
20
|
+
value: 'defineBelow',
|
|
21
|
+
description: 'Set the value for each destination column manually',
|
|
22
|
+
},
|
|
23
|
+
],
|
|
24
|
+
default: 'autoMapInputData',
|
|
25
|
+
description: 'Whether to map node input properties and the table data automatically or manually',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
displayName: `
|
|
29
|
+
In this mode, make sure incoming data fields are named the same as the columns in your table. If needed, use a 'Set' node before this node to change the field names.
|
|
30
|
+
`,
|
|
31
|
+
name: 'notice',
|
|
32
|
+
type: 'notice',
|
|
33
|
+
default: '',
|
|
34
|
+
displayOptions: {
|
|
35
|
+
show: {
|
|
36
|
+
dataMode: ['autoMapInputData'],
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
displayName: 'Values to Send',
|
|
42
|
+
name: 'valuesToSend',
|
|
43
|
+
placeholder: 'Add Value',
|
|
44
|
+
type: 'fixedCollection',
|
|
45
|
+
typeOptions: {
|
|
46
|
+
multipleValueButtonText: 'Add Value',
|
|
47
|
+
multipleValues: true,
|
|
48
|
+
},
|
|
49
|
+
displayOptions: {
|
|
50
|
+
show: {
|
|
51
|
+
dataMode: ['defineBelow'],
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
default: {},
|
|
55
|
+
options: [
|
|
56
|
+
{
|
|
57
|
+
displayName: 'Values',
|
|
58
|
+
name: 'values',
|
|
59
|
+
values: [
|
|
60
|
+
{
|
|
61
|
+
displayName: 'Column',
|
|
62
|
+
name: 'column',
|
|
63
|
+
type: 'options',
|
|
64
|
+
description: 'Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>',
|
|
65
|
+
typeOptions: {
|
|
66
|
+
loadOptionsMethod: 'getColumns',
|
|
67
|
+
loadOptionsDependsOn: ['schema.value', 'table.value'],
|
|
68
|
+
},
|
|
69
|
+
default: [],
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
displayName: 'Value',
|
|
73
|
+
name: 'value',
|
|
74
|
+
type: 'string',
|
|
75
|
+
default: '',
|
|
76
|
+
},
|
|
77
|
+
],
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
},
|
|
81
|
+
common_descriptions_1.optionsCollection,
|
|
82
|
+
];
|
|
83
|
+
const displayOptions = {
|
|
84
|
+
show: {
|
|
85
|
+
resource: ['database'],
|
|
86
|
+
operation: ['insert'],
|
|
87
|
+
},
|
|
88
|
+
hide: {
|
|
89
|
+
table: [''],
|
|
90
|
+
},
|
|
91
|
+
};
|
|
92
|
+
exports.description = (0, utilities_1.updateDisplayOptions)(displayOptions, properties);
|
|
93
|
+
async function execute(runQueries, items, nodeOptions, db) {
|
|
94
|
+
items = (0, utils_1.replaceEmptyStringsByNulls)(items, nodeOptions.replaceEmptyStrings);
|
|
95
|
+
const queries = [];
|
|
96
|
+
for (let i = 0; i < items.length; i++) {
|
|
97
|
+
const schema = this.getNodeParameter('schema', i, undefined, {
|
|
98
|
+
extractValue: true,
|
|
99
|
+
});
|
|
100
|
+
const table = this.getNodeParameter('table', i, undefined, {
|
|
101
|
+
extractValue: true,
|
|
102
|
+
});
|
|
103
|
+
const options = this.getNodeParameter('options', i, {});
|
|
104
|
+
let onConflict = '';
|
|
105
|
+
if (options.skipOnConflict) {
|
|
106
|
+
onConflict = ' ON CONFLICT DO NOTHING';
|
|
107
|
+
}
|
|
108
|
+
let query = `INSERT INTO $1:name.$2:name($3:name) VALUES($3:csv)${onConflict}`;
|
|
109
|
+
let values = [schema, table];
|
|
110
|
+
const dataMode = this.getNodeParameter('dataMode', i);
|
|
111
|
+
let item = {};
|
|
112
|
+
if (dataMode === 'autoMapInputData') {
|
|
113
|
+
item = items[i].json;
|
|
114
|
+
}
|
|
115
|
+
if (dataMode === 'defineBelow') {
|
|
116
|
+
const valuesToSend = this.getNodeParameter('valuesToSend', i, [])
|
|
117
|
+
.values;
|
|
118
|
+
item = (0, utils_1.prepareItem)(valuesToSend);
|
|
119
|
+
}
|
|
120
|
+
const tableSchema = await (0, utils_1.getTableSchema)(db, schema, table);
|
|
121
|
+
values.push((0, utils_1.checkItemAgainstSchema)(this.getNode(), item, tableSchema, i));
|
|
122
|
+
const outputColumns = this.getNodeParameter('options.outputColumns', i, ['*']);
|
|
123
|
+
[query, values] = (0, utils_1.addReturning)(query, outputColumns, values);
|
|
124
|
+
queries.push({ query, values });
|
|
125
|
+
}
|
|
126
|
+
return runQueries(queries, items, nodeOptions);
|
|
127
|
+
}
|
|
128
|
+
exports.execute = execute;
|
|
129
|
+
//# sourceMappingURL=insert.operation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insert.operation.js","sourceRoot":"","sources":["../../../../../../nodes/Postgres/v2/actions/database/insert.operation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { IExecuteFunctions } from 'n8n-core';
|
|
2
|
+
import type { IDataObject, INodeExecutionData, INodeProperties } from 'n8n-workflow';
|
|
3
|
+
import type { PgpDatabase, QueriesRunner } from '../../helpers/interfaces';
|
|
4
|
+
export declare const description: {
|
|
5
|
+
displayOptions: import("n8n-workflow").IDisplayOptions;
|
|
6
|
+
displayName: string;
|
|
7
|
+
name: string;
|
|
8
|
+
type: import("n8n-workflow").NodePropertyTypes;
|
|
9
|
+
typeOptions?: import("n8n-workflow").INodePropertyTypeOptions | undefined;
|
|
10
|
+
default: import("n8n-workflow").NodeParameterValueType;
|
|
11
|
+
description?: string | undefined;
|
|
12
|
+
hint?: string | undefined;
|
|
13
|
+
options?: (INodeProperties | import("n8n-workflow").INodePropertyOptions | import("n8n-workflow").INodePropertyCollection)[] | undefined;
|
|
14
|
+
placeholder?: string | undefined;
|
|
15
|
+
isNodeSetting?: boolean | undefined;
|
|
16
|
+
noDataExpression?: boolean | undefined;
|
|
17
|
+
required?: boolean | undefined;
|
|
18
|
+
routing?: import("n8n-workflow").INodePropertyRouting | undefined;
|
|
19
|
+
credentialTypes?: ("extends:oAuth2Api" | "extends:oAuth1Api" | "has:authenticate" | "has:genericAuth")[] | undefined;
|
|
20
|
+
extractValue?: import("n8n-workflow").INodePropertyValueExtractorRegex | undefined;
|
|
21
|
+
modes?: import("n8n-workflow").INodePropertyMode[] | undefined;
|
|
22
|
+
requiresDataPath?: "single" | "multiple" | undefined;
|
|
23
|
+
}[];
|
|
24
|
+
export declare function execute(this: IExecuteFunctions, runQueries: QueriesRunner, items: INodeExecutionData[], nodeOptions: IDataObject, _db?: PgpDatabase): Promise<INodeExecutionData[]>;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.execute = exports.description = void 0;
|
|
4
|
+
const utilities_1 = require("../../../../../utils/utilities");
|
|
5
|
+
const utils_1 = require("../../helpers/utils");
|
|
6
|
+
const common_descriptions_1 = require("../common.descriptions");
|
|
7
|
+
const properties = [
|
|
8
|
+
{
|
|
9
|
+
displayName: 'Return All',
|
|
10
|
+
name: 'returnAll',
|
|
11
|
+
type: 'boolean',
|
|
12
|
+
default: false,
|
|
13
|
+
description: 'Whether to return all results or only up to a given limit',
|
|
14
|
+
displayOptions: {
|
|
15
|
+
show: {
|
|
16
|
+
resource: ['event'],
|
|
17
|
+
operation: ['getAll'],
|
|
18
|
+
},
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
displayName: 'Limit',
|
|
23
|
+
name: 'limit',
|
|
24
|
+
type: 'number',
|
|
25
|
+
default: 50,
|
|
26
|
+
description: 'Max number of results to return',
|
|
27
|
+
typeOptions: {
|
|
28
|
+
minValue: 1,
|
|
29
|
+
},
|
|
30
|
+
displayOptions: {
|
|
31
|
+
show: {
|
|
32
|
+
returnAll: [false],
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
common_descriptions_1.whereFixedCollection,
|
|
37
|
+
common_descriptions_1.combineConditionsCollection,
|
|
38
|
+
common_descriptions_1.sortFixedCollection,
|
|
39
|
+
common_descriptions_1.optionsCollection,
|
|
40
|
+
];
|
|
41
|
+
const displayOptions = {
|
|
42
|
+
show: {
|
|
43
|
+
resource: ['database'],
|
|
44
|
+
operation: ['select'],
|
|
45
|
+
},
|
|
46
|
+
hide: {
|
|
47
|
+
table: [''],
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
exports.description = (0, utilities_1.updateDisplayOptions)(displayOptions, properties);
|
|
51
|
+
async function execute(runQueries, items, nodeOptions, _db) {
|
|
52
|
+
items = (0, utils_1.replaceEmptyStringsByNulls)(items, nodeOptions.replaceEmptyStrings);
|
|
53
|
+
const queries = [];
|
|
54
|
+
for (let i = 0; i < items.length; i++) {
|
|
55
|
+
const schema = this.getNodeParameter('schema', i, undefined, {
|
|
56
|
+
extractValue: true,
|
|
57
|
+
});
|
|
58
|
+
const table = this.getNodeParameter('table', i, undefined, {
|
|
59
|
+
extractValue: true,
|
|
60
|
+
});
|
|
61
|
+
let values = [schema, table];
|
|
62
|
+
const outputColumns = this.getNodeParameter('options.outputColumns', i, ['*']);
|
|
63
|
+
let query = '';
|
|
64
|
+
if (outputColumns.includes('*')) {
|
|
65
|
+
query = 'SELECT * FROM $1:name.$2:name';
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
values.push(outputColumns);
|
|
69
|
+
query = `SELECT $${values.length}:name FROM $1:name.$2:name`;
|
|
70
|
+
}
|
|
71
|
+
const whereClauses = this.getNodeParameter('where', i, []).values || [];
|
|
72
|
+
const combineConditions = this.getNodeParameter('combineConditions', i, 'AND');
|
|
73
|
+
[query, values] = (0, utils_1.addWhereClauses)(this.getNode(), i, query, whereClauses, values, combineConditions);
|
|
74
|
+
const sortRules = this.getNodeParameter('sort', i, []).values || [];
|
|
75
|
+
[query, values] = (0, utils_1.addSortRules)(query, sortRules, values);
|
|
76
|
+
const returnAll = this.getNodeParameter('returnAll', i, false);
|
|
77
|
+
if (!returnAll) {
|
|
78
|
+
const limit = this.getNodeParameter('limit', i, 50);
|
|
79
|
+
query += ` LIMIT ${limit}`;
|
|
80
|
+
}
|
|
81
|
+
const queryWithValues = { query, values };
|
|
82
|
+
queries.push(queryWithValues);
|
|
83
|
+
}
|
|
84
|
+
return runQueries(queries, items, nodeOptions);
|
|
85
|
+
}
|
|
86
|
+
exports.execute = execute;
|
|
87
|
+
//# sourceMappingURL=select.operation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"select.operation.js","sourceRoot":"","sources":["../../../../../../nodes/Postgres/v2/actions/database/select.operation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { IExecuteFunctions } from 'n8n-core';
|
|
2
|
+
import type { IDataObject, INodeExecutionData, INodeProperties } from 'n8n-workflow';
|
|
3
|
+
import type { PgpDatabase, QueriesRunner } from '../../helpers/interfaces';
|
|
4
|
+
export declare const description: {
|
|
5
|
+
displayOptions: import("n8n-workflow").IDisplayOptions;
|
|
6
|
+
displayName: string;
|
|
7
|
+
name: string;
|
|
8
|
+
type: import("n8n-workflow").NodePropertyTypes;
|
|
9
|
+
typeOptions?: import("n8n-workflow").INodePropertyTypeOptions | undefined;
|
|
10
|
+
default: import("n8n-workflow").NodeParameterValueType;
|
|
11
|
+
description?: string | undefined;
|
|
12
|
+
hint?: string | undefined;
|
|
13
|
+
options?: (INodeProperties | import("n8n-workflow").INodePropertyOptions | import("n8n-workflow").INodePropertyCollection)[] | undefined;
|
|
14
|
+
placeholder?: string | undefined;
|
|
15
|
+
isNodeSetting?: boolean | undefined;
|
|
16
|
+
noDataExpression?: boolean | undefined;
|
|
17
|
+
required?: boolean | undefined;
|
|
18
|
+
routing?: import("n8n-workflow").INodePropertyRouting | undefined;
|
|
19
|
+
credentialTypes?: ("extends:oAuth2Api" | "extends:oAuth1Api" | "has:authenticate" | "has:genericAuth")[] | undefined;
|
|
20
|
+
extractValue?: import("n8n-workflow").INodePropertyValueExtractorRegex | undefined;
|
|
21
|
+
modes?: import("n8n-workflow").INodePropertyMode[] | undefined;
|
|
22
|
+
requiresDataPath?: "single" | "multiple" | undefined;
|
|
23
|
+
}[];
|
|
24
|
+
export declare function execute(this: IExecuteFunctions, runQueries: QueriesRunner, items: INodeExecutionData[], nodeOptions: IDataObject, db: PgpDatabase): Promise<INodeExecutionData[]>;
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.execute = exports.description = void 0;
|
|
4
|
+
const utilities_1 = require("../../../../../utils/utilities");
|
|
5
|
+
const utils_1 = require("../../helpers/utils");
|
|
6
|
+
const common_descriptions_1 = require("../common.descriptions");
|
|
7
|
+
const properties = [
|
|
8
|
+
{
|
|
9
|
+
displayName: 'Data Mode',
|
|
10
|
+
name: 'dataMode',
|
|
11
|
+
type: 'options',
|
|
12
|
+
options: [
|
|
13
|
+
{
|
|
14
|
+
name: 'Auto-Map Input Data to Columns',
|
|
15
|
+
value: 'autoMapInputData',
|
|
16
|
+
description: 'Use when node input properties names exactly match the table column names',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
name: 'Map Each Column Manually',
|
|
20
|
+
value: 'defineBelow',
|
|
21
|
+
description: 'Set the value for each destination column manually',
|
|
22
|
+
},
|
|
23
|
+
],
|
|
24
|
+
default: 'autoMapInputData',
|
|
25
|
+
description: 'Whether to map node input properties and the table data automatically or manually',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
displayName: `
|
|
29
|
+
In this mode, make sure incoming data fields are named the same as the columns in your table. If needed, use a 'Set' node before this node to change the field names.
|
|
30
|
+
`,
|
|
31
|
+
name: 'notice',
|
|
32
|
+
type: 'notice',
|
|
33
|
+
default: '',
|
|
34
|
+
displayOptions: {
|
|
35
|
+
show: {
|
|
36
|
+
dataMode: ['autoMapInputData'],
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
displayName: 'Column to Match On',
|
|
42
|
+
name: 'columnToMatchOn',
|
|
43
|
+
type: 'options',
|
|
44
|
+
required: true,
|
|
45
|
+
description: 'The column to compare when finding the rows to update. Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>.',
|
|
46
|
+
typeOptions: {
|
|
47
|
+
loadOptionsMethod: 'getColumns',
|
|
48
|
+
loadOptionsDependsOn: ['schema.value', 'table.value'],
|
|
49
|
+
},
|
|
50
|
+
default: '',
|
|
51
|
+
hint: 'The column that identifies the row(s) to modify',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
displayName: 'Value of Column to Match On',
|
|
55
|
+
name: 'valueToMatchOn',
|
|
56
|
+
type: 'string',
|
|
57
|
+
default: '',
|
|
58
|
+
description: 'Rows with a value in the specified "Column to Match On" that corresponds to the value in this field will be updated',
|
|
59
|
+
displayOptions: {
|
|
60
|
+
show: {
|
|
61
|
+
dataMode: ['defineBelow'],
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
displayName: 'Values to Send',
|
|
67
|
+
name: 'valuesToSend',
|
|
68
|
+
placeholder: 'Add Value',
|
|
69
|
+
type: 'fixedCollection',
|
|
70
|
+
typeOptions: {
|
|
71
|
+
multipleValueButtonText: 'Add Value',
|
|
72
|
+
multipleValues: true,
|
|
73
|
+
},
|
|
74
|
+
displayOptions: {
|
|
75
|
+
show: {
|
|
76
|
+
dataMode: ['defineBelow'],
|
|
77
|
+
},
|
|
78
|
+
},
|
|
79
|
+
default: {},
|
|
80
|
+
options: [
|
|
81
|
+
{
|
|
82
|
+
displayName: 'Values',
|
|
83
|
+
name: 'values',
|
|
84
|
+
values: [
|
|
85
|
+
{
|
|
86
|
+
displayName: 'Column',
|
|
87
|
+
name: 'column',
|
|
88
|
+
type: 'options',
|
|
89
|
+
description: 'Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code-examples/expressions/">expression</a>',
|
|
90
|
+
typeOptions: {
|
|
91
|
+
loadOptionsMethod: 'getColumnsWithoutColumnToMatchOn',
|
|
92
|
+
loadOptionsDependsOn: ['schema.value', 'table.value'],
|
|
93
|
+
},
|
|
94
|
+
default: [],
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
displayName: 'Value',
|
|
98
|
+
name: 'value',
|
|
99
|
+
type: 'string',
|
|
100
|
+
default: '',
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
},
|
|
106
|
+
common_descriptions_1.optionsCollection,
|
|
107
|
+
];
|
|
108
|
+
const displayOptions = {
|
|
109
|
+
show: {
|
|
110
|
+
resource: ['database'],
|
|
111
|
+
operation: ['update'],
|
|
112
|
+
},
|
|
113
|
+
hide: {
|
|
114
|
+
table: [''],
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
exports.description = (0, utilities_1.updateDisplayOptions)(displayOptions, properties);
|
|
118
|
+
async function execute(runQueries, items, nodeOptions, db) {
|
|
119
|
+
items = (0, utils_1.replaceEmptyStringsByNulls)(items, nodeOptions.replaceEmptyStrings);
|
|
120
|
+
const queries = [];
|
|
121
|
+
for (let i = 0; i < items.length; i++) {
|
|
122
|
+
const schema = this.getNodeParameter('schema', i, undefined, {
|
|
123
|
+
extractValue: true,
|
|
124
|
+
});
|
|
125
|
+
const table = this.getNodeParameter('table', i, undefined, {
|
|
126
|
+
extractValue: true,
|
|
127
|
+
});
|
|
128
|
+
const columnToMatchOn = this.getNodeParameter('columnToMatchOn', i);
|
|
129
|
+
const dataMode = this.getNodeParameter('dataMode', i);
|
|
130
|
+
let item = {};
|
|
131
|
+
let valueToMatchOn = '';
|
|
132
|
+
if (dataMode === 'autoMapInputData') {
|
|
133
|
+
item = items[i].json;
|
|
134
|
+
valueToMatchOn = item[columnToMatchOn];
|
|
135
|
+
}
|
|
136
|
+
if (dataMode === 'defineBelow') {
|
|
137
|
+
const valuesToSend = this.getNodeParameter('valuesToSend', i, [])
|
|
138
|
+
.values;
|
|
139
|
+
item = (0, utils_1.prepareItem)(valuesToSend);
|
|
140
|
+
valueToMatchOn = this.getNodeParameter('valueToMatchOn', i);
|
|
141
|
+
}
|
|
142
|
+
const tableSchema = await (0, utils_1.getTableSchema)(db, schema, table);
|
|
143
|
+
item = (0, utils_1.checkItemAgainstSchema)(this.getNode(), item, tableSchema, i);
|
|
144
|
+
let values = [schema, table];
|
|
145
|
+
let valuesLength = values.length + 1;
|
|
146
|
+
const condition = `$${valuesLength}:name = $${valuesLength + 1}`;
|
|
147
|
+
valuesLength = valuesLength + 2;
|
|
148
|
+
values.push(columnToMatchOn, valueToMatchOn);
|
|
149
|
+
const updateColumns = Object.keys(item).filter((column) => column !== columnToMatchOn);
|
|
150
|
+
const updates = [];
|
|
151
|
+
for (const column of updateColumns) {
|
|
152
|
+
updates.push(`$${valuesLength}:name = $${valuesLength + 1}`);
|
|
153
|
+
valuesLength = valuesLength + 2;
|
|
154
|
+
values.push(column, item[column]);
|
|
155
|
+
}
|
|
156
|
+
let query = `UPDATE $1:name.$2:name SET ${updates.join(', ')} WHERE ${condition}`;
|
|
157
|
+
const outputColumns = this.getNodeParameter('options.outputColumns', i, ['*']);
|
|
158
|
+
[query, values] = (0, utils_1.addReturning)(query, outputColumns, values);
|
|
159
|
+
queries.push({ query, values });
|
|
160
|
+
}
|
|
161
|
+
return runQueries(queries, items, nodeOptions);
|
|
162
|
+
}
|
|
163
|
+
exports.execute = execute;
|
|
164
|
+
//# sourceMappingURL=update.operation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.operation.js","sourceRoot":"","sources":["../../../../../../nodes/Postgres/v2/actions/database/update.operation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { IExecuteFunctions } from 'n8n-core';
|
|
2
|
+
import type { IDataObject, INodeExecutionData, INodeProperties } from 'n8n-workflow';
|
|
3
|
+
import type { PgpDatabase, QueriesRunner } from '../../helpers/interfaces';
|
|
4
|
+
export declare const description: {
|
|
5
|
+
displayOptions: import("n8n-workflow").IDisplayOptions;
|
|
6
|
+
displayName: string;
|
|
7
|
+
name: string;
|
|
8
|
+
type: import("n8n-workflow").NodePropertyTypes;
|
|
9
|
+
typeOptions?: import("n8n-workflow").INodePropertyTypeOptions | undefined;
|
|
10
|
+
default: import("n8n-workflow").NodeParameterValueType;
|
|
11
|
+
description?: string | undefined;
|
|
12
|
+
hint?: string | undefined;
|
|
13
|
+
options?: (INodeProperties | import("n8n-workflow").INodePropertyOptions | import("n8n-workflow").INodePropertyCollection)[] | undefined;
|
|
14
|
+
placeholder?: string | undefined;
|
|
15
|
+
isNodeSetting?: boolean | undefined;
|
|
16
|
+
noDataExpression?: boolean | undefined;
|
|
17
|
+
required?: boolean | undefined;
|
|
18
|
+
routing?: import("n8n-workflow").INodePropertyRouting | undefined;
|
|
19
|
+
credentialTypes?: ("extends:oAuth2Api" | "extends:oAuth1Api" | "has:authenticate" | "has:genericAuth")[] | undefined;
|
|
20
|
+
extractValue?: import("n8n-workflow").INodePropertyValueExtractorRegex | undefined;
|
|
21
|
+
modes?: import("n8n-workflow").INodePropertyMode[] | undefined;
|
|
22
|
+
requiresDataPath?: "single" | "multiple" | undefined;
|
|
23
|
+
}[];
|
|
24
|
+
export declare function execute(this: IExecuteFunctions, runQueries: QueriesRunner, items: INodeExecutionData[], nodeOptions: IDataObject, db: PgpDatabase): Promise<INodeExecutionData[]>;
|