n8n-nodes-base 0.228.2 → 0.230.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/Ldap.credentials.d.ts +1 -1
- package/dist/known/credentials.json +2 -1
- package/dist/known/nodes.json +7 -3
- package/dist/methods/defined.json +1 -4
- package/dist/methods/referenced.json +1 -4
- package/dist/nodes/Clockify/EntryTypeEnum.js +1 -1
- package/dist/nodes/Clockify/EntryTypeEnum.js.map +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/Cortex/AnalyzerInterface.js +3 -3
- package/dist/nodes/Cortex/AnalyzerInterface.js.map +1 -1
- package/dist/nodes/Crypto/Crypto.node.d.ts +1 -6
- package/dist/nodes/Crypto/Crypto.node.js +74 -33
- package/dist/nodes/Crypto/Crypto.node.js.map +1 -1
- package/dist/nodes/Crypto/test/CryptoTest.workflow.json +87 -46
- package/dist/nodes/DateTime/V2/DateTimeV2.node.js +1 -0
- package/dist/nodes/DateTime/V2/DateTimeV2.node.js.map +1 -1
- package/dist/nodes/Formstack/GenericFunctions.js +1 -1
- package/dist/nodes/Formstack/GenericFunctions.js.map +1 -1
- package/dist/nodes/Google/BigQuery/v1/GenericFunctions.js +2 -62
- package/dist/nodes/Google/BigQuery/v1/GenericFunctions.js.map +1 -1
- package/dist/nodes/Google/BigQuery/v2/transport/index.js +2 -62
- package/dist/nodes/Google/BigQuery/v2/transport/index.js.map +1 -1
- package/dist/nodes/Google/Books/GenericFunctions.js +2 -40
- package/dist/nodes/Google/Books/GenericFunctions.js.map +1 -1
- package/dist/nodes/Google/Chat/GenericFunctions.d.ts +1 -9
- package/dist/nodes/Google/Chat/GenericFunctions.js +3 -42
- package/dist/nodes/Google/Chat/GenericFunctions.js.map +1 -1
- package/dist/nodes/Google/Docs/GenericFunctions.js +2 -44
- package/dist/nodes/Google/Docs/GenericFunctions.js.map +1 -1
- package/dist/nodes/Google/Drive/GenericFunctions.js +2 -44
- package/dist/nodes/Google/Drive/GenericFunctions.js.map +1 -1
- package/dist/nodes/Google/GenericFunctions.d.ts +17 -0
- package/dist/nodes/Google/GenericFunctions.js +108 -0
- package/dist/nodes/Google/GenericFunctions.js.map +1 -0
- package/dist/nodes/Google/Gmail/GenericFunctions.js +2 -44
- package/dist/nodes/Google/Gmail/GenericFunctions.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/v1/GenericFunctions.d.ts +1 -2
- package/dist/nodes/Google/Sheet/v1/GenericFunctions.js +3 -46
- package/dist/nodes/Google/Sheet/v1/GenericFunctions.js.map +1 -1
- package/dist/nodes/Google/Sheet/v1/GoogleSheetsV1.node.js +2 -1
- package/dist/nodes/Google/Sheet/v1/GoogleSheetsV1.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/credentialTest.js +2 -2
- package/dist/nodes/Google/Sheet/v2/methods/credentialTest.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/Google/Sheet/v2/transport/index.d.ts +1 -8
- package/dist/nodes/Google/Sheet/v2/transport/index.js +3 -46
- package/dist/nodes/Google/Sheet/v2/transport/index.js.map +1 -1
- package/dist/nodes/Google/Slides/GenericFunctions.js +2 -43
- package/dist/nodes/Google/Slides/GenericFunctions.js.map +1 -1
- package/dist/nodes/Google/Translate/GenericFunctions.js +2 -43
- package/dist/nodes/Google/Translate/GenericFunctions.js.map +1 -1
- package/dist/nodes/Ldap/LdapDescription.js +17 -0
- package/dist/nodes/Ldap/LdapDescription.js.map +1 -1
- package/dist/nodes/LoneScale/{LoneScaleList.node.d.ts → LoneScale.node.d.ts} +1 -1
- package/dist/nodes/LoneScale/{LoneScaleList.node.js → LoneScale.node.js} +7 -8
- package/dist/nodes/LoneScale/LoneScale.node.js.map +1 -0
- package/dist/nodes/LoneScale/LoneScaleTrigger.node.js.map +1 -1
- package/dist/nodes/LoneScale/LoneScaleTrigger.node.json +1 -1
- package/dist/nodes/PayPal/PaymentInteface.js +2 -2
- package/dist/nodes/PayPal/PaymentInteface.js.map +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/PostgresInterface.d.ts +6 -0
- package/dist/nodes/Postgres/PostgresInterface.js +3 -0
- package/dist/nodes/Postgres/PostgresInterface.js.map +1 -0
- package/dist/nodes/Postgres/PostgresTrigger.functions.d.ts +8 -0
- package/dist/nodes/Postgres/PostgresTrigger.functions.js +125 -0
- package/dist/nodes/Postgres/PostgresTrigger.functions.js.map +1 -0
- package/dist/nodes/Postgres/PostgresTrigger.node.d.ts +12 -0
- package/dist/nodes/Postgres/PostgresTrigger.node.js +233 -0
- package/dist/nodes/Postgres/PostgresTrigger.node.js.map +1 -0
- package/dist/nodes/Postgres/PostgresTrigger.node.json +18 -0
- 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 +35 -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/SendInBlue/GenericFunctions.js +2 -2
- package/dist/nodes/SendInBlue/GenericFunctions.js.map +1 -1
- package/dist/nodes/TheHive/interfaces/AlertInterface.js +2 -2
- package/dist/nodes/TheHive/interfaces/AlertInterface.js.map +1 -1
- package/dist/nodes/TheHive/interfaces/CaseInterface.js +3 -3
- package/dist/nodes/TheHive/interfaces/CaseInterface.js.map +1 -1
- package/dist/nodes/TheHive/interfaces/LogInterface.js +1 -1
- package/dist/nodes/TheHive/interfaces/LogInterface.js.map +1 -1
- package/dist/nodes/TheHive/interfaces/ObservableInterface.js +2 -2
- package/dist/nodes/TheHive/interfaces/ObservableInterface.js.map +1 -1
- package/dist/nodes/TheHive/interfaces/TaskInterface.js +1 -1
- package/dist/nodes/TheHive/interfaces/TaskInterface.js.map +1 -1
- package/dist/nodes/Todoist/v1/OperationHandler.js +1 -1
- package/dist/nodes/Todoist/v1/OperationHandler.js.map +1 -1
- package/dist/nodes/Todoist/v2/OperationHandler.js +1 -1
- package/dist/nodes/Todoist/v2/OperationHandler.js.map +1 -1
- package/dist/package.json +3 -2
- package/dist/types/nodes.json +14 -11
- package/package.json +5 -4
- package/dist/nodes/LoneScale/LoneScaleList.node.js.map +0 -1
|
@@ -11,13 +11,14 @@ class Postgres extends n8n_workflow_1.VersionedNodeType {
|
|
|
11
11
|
name: 'postgres',
|
|
12
12
|
icon: 'file:postgres.svg',
|
|
13
13
|
group: ['input'],
|
|
14
|
-
defaultVersion: 2.
|
|
14
|
+
defaultVersion: 2.2,
|
|
15
15
|
description: 'Get, add and update data in Postgres',
|
|
16
16
|
};
|
|
17
17
|
const nodeVersions = {
|
|
18
18
|
1: new PostgresV1_node_1.PostgresV1(baseDescription),
|
|
19
19
|
2: new PostgresV2_node_1.PostgresV2(baseDescription),
|
|
20
20
|
2.1: new PostgresV2_node_1.PostgresV2(baseDescription),
|
|
21
|
+
2.2: new PostgresV2_node_1.PostgresV2(baseDescription),
|
|
21
22
|
};
|
|
22
23
|
super(nodeVersions, baseDescription);
|
|
23
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Postgres.node.js","sourceRoot":"","sources":["../../../nodes/Postgres/Postgres.node.ts"],"names":[],"mappings":";;;AACA,+CAAiD;AAEjD,0DAAkD;AAClD,0DAAkD;AAElD,MAAa,QAAS,SAAQ,gCAAiB;IAC9C;QACC,MAAM,eAAe,GAA6B;YACjD,WAAW,EAAE,UAAU;YACvB,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,mBAAmB;YACzB,KAAK,EAAE,CAAC,OAAO,CAAC;YAChB,cAAc,EAAE,GAAG;YACnB,WAAW,EAAE,sCAAsC;SACnD,CAAC;QAEF,MAAM,YAAY,GAAuC;YACxD,CAAC,EAAE,IAAI,4BAAU,CAAC,eAAe,CAAC;YAClC,CAAC,EAAE,IAAI,4BAAU,CAAC,eAAe,CAAC;YAClC,GAAG,EAAE,IAAI,4BAAU,CAAC,eAAe,CAAC;SACpC,CAAC;QAEF,KAAK,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IACtC,CAAC;CACD;
|
|
1
|
+
{"version":3,"file":"Postgres.node.js","sourceRoot":"","sources":["../../../nodes/Postgres/Postgres.node.ts"],"names":[],"mappings":";;;AACA,+CAAiD;AAEjD,0DAAkD;AAClD,0DAAkD;AAElD,MAAa,QAAS,SAAQ,gCAAiB;IAC9C;QACC,MAAM,eAAe,GAA6B;YACjD,WAAW,EAAE,UAAU;YACvB,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,mBAAmB;YACzB,KAAK,EAAE,CAAC,OAAO,CAAC;YAChB,cAAc,EAAE,GAAG;YACnB,WAAW,EAAE,sCAAsC;SACnD,CAAC;QAEF,MAAM,YAAY,GAAuC;YACxD,CAAC,EAAE,IAAI,4BAAU,CAAC,eAAe,CAAC;YAClC,CAAC,EAAE,IAAI,4BAAU,CAAC,eAAe,CAAC;YAClC,GAAG,EAAE,IAAI,4BAAU,CAAC,eAAe,CAAC;YACpC,GAAG,EAAE,IAAI,4BAAU,CAAC,eAAe,CAAC;SACpC,CAAC;QAEF,KAAK,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;IACtC,CAAC;CACD;AApBD,4BAoBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgresInterface.js","sourceRoot":"","sources":["../../../nodes/Postgres/PostgresInterface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ITriggerFunctions, ILoadOptionsFunctions, INodeListSearchResult } from 'n8n-workflow';
|
|
2
|
+
import pgPromise from 'pg-promise';
|
|
3
|
+
import type pg from 'pg-promise/typescript/pg-subset';
|
|
4
|
+
export declare function pgTriggerFunction(this: ITriggerFunctions, db: pgPromise.IDatabase<{}, pg.IClient>): Promise<void>;
|
|
5
|
+
export declare function initDB(this: ITriggerFunctions | ILoadOptionsFunctions): Promise<pgPromise.IDatabase<{}, pg.IClient>>;
|
|
6
|
+
export declare function searchSchema(this: ILoadOptionsFunctions): Promise<INodeListSearchResult>;
|
|
7
|
+
export declare function searchTables(this: ILoadOptionsFunctions): Promise<INodeListSearchResult>;
|
|
8
|
+
export declare function dropTriggerFunction(this: ITriggerFunctions, db: pgPromise.IDatabase<{}, pg.IClient>): Promise<void>;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.dropTriggerFunction = exports.searchTables = exports.searchSchema = exports.initDB = exports.pgTriggerFunction = void 0;
|
|
7
|
+
const pg_promise_1 = __importDefault(require("pg-promise"));
|
|
8
|
+
async function pgTriggerFunction(db) {
|
|
9
|
+
const schema = this.getNodeParameter('schema', 'public', { extractValue: true });
|
|
10
|
+
const tableName = this.getNodeParameter('tableName', undefined, {
|
|
11
|
+
extractValue: true,
|
|
12
|
+
});
|
|
13
|
+
const target = `${schema}."${tableName}"`;
|
|
14
|
+
const firesOn = this.getNodeParameter('firesOn', 0);
|
|
15
|
+
const functionReplace = "CREATE OR REPLACE FUNCTION $1:raw RETURNS trigger LANGUAGE 'plpgsql' COST 100 VOLATILE NOT LEAKPROOF AS $BODY$ begin perform pg_notify('$2:raw', row_to_json($3:raw)::text); return null; end; $BODY$;";
|
|
16
|
+
const dropIfExist = 'DROP TRIGGER IF EXISTS $1:raw ON $2:raw';
|
|
17
|
+
const functionExists = "CREATE FUNCTION $1:raw RETURNS trigger LANGUAGE 'plpgsql' COST 100 VOLATILE NOT LEAKPROOF AS $BODY$ begin perform pg_notify('$2:raw', row_to_json($3:raw)::text); return null; end; $BODY$";
|
|
18
|
+
const trigger = 'CREATE TRIGGER $4:raw AFTER $3:raw ON $1:raw FOR EACH ROW EXECUTE FUNCTION $2:raw';
|
|
19
|
+
const whichData = firesOn === 'DELETE' ? 'old' : 'new';
|
|
20
|
+
const additionalFields = this.getNodeParameter('additionalFields', 0);
|
|
21
|
+
const nodeId = this.getNode().id.replace(/-/g, '_');
|
|
22
|
+
let functionName = additionalFields.functionName || `n8n_trigger_function_${nodeId}()`;
|
|
23
|
+
if (!functionName.includes('()')) {
|
|
24
|
+
functionName = functionName.concat('()');
|
|
25
|
+
}
|
|
26
|
+
const triggerName = additionalFields.triggerName || `n8n_trigger_${nodeId}`;
|
|
27
|
+
const channelName = additionalFields.channelName || `n8n_channel_${nodeId}`;
|
|
28
|
+
if (channelName.includes('-')) {
|
|
29
|
+
throw new Error('Channel name cannot contain hyphens (-)');
|
|
30
|
+
}
|
|
31
|
+
const replaceIfExists = additionalFields.replaceIfExists || false;
|
|
32
|
+
try {
|
|
33
|
+
if (replaceIfExists || !(additionalFields.triggerName || additionalFields.functionName)) {
|
|
34
|
+
await db.any(functionReplace, [functionName, channelName, whichData]);
|
|
35
|
+
await db.any(dropIfExist, [triggerName, target, whichData]);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
await db.any(functionExists, [functionName, channelName, whichData]);
|
|
39
|
+
}
|
|
40
|
+
await db.any(trigger, [target, functionName, firesOn, triggerName]);
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
if (err.message.includes('near "-"')) {
|
|
44
|
+
throw new Error('Names cannot contain hyphens (-)');
|
|
45
|
+
}
|
|
46
|
+
throw new Error(err);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.pgTriggerFunction = pgTriggerFunction;
|
|
50
|
+
async function initDB() {
|
|
51
|
+
const credentials = await this.getCredentials('postgres');
|
|
52
|
+
const pgp = (0, pg_promise_1.default)({
|
|
53
|
+
noWarnings: true,
|
|
54
|
+
});
|
|
55
|
+
const config = {
|
|
56
|
+
host: credentials.host,
|
|
57
|
+
port: credentials.port,
|
|
58
|
+
database: credentials.database,
|
|
59
|
+
user: credentials.user,
|
|
60
|
+
password: credentials.password,
|
|
61
|
+
};
|
|
62
|
+
if (credentials.allowUnauthorizedCerts === true) {
|
|
63
|
+
config.ssl = {
|
|
64
|
+
rejectUnauthorized: false,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
config.ssl = !['disable', undefined].includes(credentials.ssl);
|
|
69
|
+
config.sslmode = credentials.ssl || 'disable';
|
|
70
|
+
}
|
|
71
|
+
return pgp(config);
|
|
72
|
+
}
|
|
73
|
+
exports.initDB = initDB;
|
|
74
|
+
async function searchSchema() {
|
|
75
|
+
const db = await initDB.call(this);
|
|
76
|
+
const schemaList = await db.any('SELECT schema_name FROM information_schema.schemata');
|
|
77
|
+
const results = schemaList.map((s) => ({
|
|
78
|
+
name: s.schema_name,
|
|
79
|
+
value: s.schema_name,
|
|
80
|
+
}));
|
|
81
|
+
await db.$pool.end();
|
|
82
|
+
return { results };
|
|
83
|
+
}
|
|
84
|
+
exports.searchSchema = searchSchema;
|
|
85
|
+
async function searchTables() {
|
|
86
|
+
const schema = this.getNodeParameter('schema', 0);
|
|
87
|
+
const db = await initDB.call(this);
|
|
88
|
+
let tableList = [];
|
|
89
|
+
try {
|
|
90
|
+
tableList = await db.any('SELECT table_name FROM information_schema.tables WHERE table_schema = $1', [schema.value]);
|
|
91
|
+
}
|
|
92
|
+
catch (error) {
|
|
93
|
+
throw new Error(error);
|
|
94
|
+
}
|
|
95
|
+
const results = tableList.map((s) => ({
|
|
96
|
+
name: s.table_name,
|
|
97
|
+
value: s.table_name,
|
|
98
|
+
}));
|
|
99
|
+
await db.$pool.end();
|
|
100
|
+
return { results };
|
|
101
|
+
}
|
|
102
|
+
exports.searchTables = searchTables;
|
|
103
|
+
async function dropTriggerFunction(db) {
|
|
104
|
+
const schema = this.getNodeParameter('schema', undefined, { extractValue: true });
|
|
105
|
+
const tableName = this.getNodeParameter('tableName', undefined, {
|
|
106
|
+
extractValue: true,
|
|
107
|
+
});
|
|
108
|
+
const target = `${schema}."${tableName}"`;
|
|
109
|
+
const additionalFields = this.getNodeParameter('additionalFields', 0);
|
|
110
|
+
const nodeId = this.getNode().id.replace(/-/g, '_');
|
|
111
|
+
let functionName = additionalFields.functionName || `n8n_trigger_function_${nodeId}()`;
|
|
112
|
+
if (!functionName.includes('()')) {
|
|
113
|
+
functionName = functionName.concat('()');
|
|
114
|
+
}
|
|
115
|
+
const triggerName = additionalFields.triggerName || `n8n_trigger_${nodeId}`;
|
|
116
|
+
try {
|
|
117
|
+
await db.any('DROP FUNCTION IF EXISTS $1:raw CASCADE', [functionName]);
|
|
118
|
+
await db.any('DROP TRIGGER IF EXISTS $1:raw ON $2:raw CASCADE', [triggerName, target]);
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
throw new Error(error);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
exports.dropTriggerFunction = dropTriggerFunction;
|
|
125
|
+
//# sourceMappingURL=PostgresTrigger.functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgresTrigger.functions.js","sourceRoot":"","sources":["../../../nodes/Postgres/PostgresTrigger.functions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { INodeType, INodeTypeDescription, ITriggerFunctions, ITriggerResponse } from 'n8n-workflow';
|
|
2
|
+
import { searchSchema, searchTables } from './PostgresTrigger.functions';
|
|
3
|
+
export declare class PostgresTrigger implements INodeType {
|
|
4
|
+
description: INodeTypeDescription;
|
|
5
|
+
methods: {
|
|
6
|
+
listSearch: {
|
|
7
|
+
searchSchema: typeof searchSchema;
|
|
8
|
+
searchTables: typeof searchTables;
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
trigger(this: ITriggerFunctions): Promise<ITriggerResponse>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PostgresTrigger = void 0;
|
|
4
|
+
const PostgresTrigger_functions_1 = require("./PostgresTrigger.functions");
|
|
5
|
+
class PostgresTrigger {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.description = {
|
|
8
|
+
displayName: 'Postgres Trigger',
|
|
9
|
+
name: 'postgresTrigger',
|
|
10
|
+
icon: 'file:postgres.svg',
|
|
11
|
+
group: ['trigger'],
|
|
12
|
+
version: 1,
|
|
13
|
+
description: 'Listens to Postgres messages',
|
|
14
|
+
defaults: {
|
|
15
|
+
name: 'Postgres Trigger',
|
|
16
|
+
},
|
|
17
|
+
inputs: [],
|
|
18
|
+
outputs: ['main'],
|
|
19
|
+
credentials: [
|
|
20
|
+
{
|
|
21
|
+
name: 'postgres',
|
|
22
|
+
required: true,
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
properties: [
|
|
26
|
+
{
|
|
27
|
+
displayName: 'Trigger Mode',
|
|
28
|
+
name: 'triggerMode',
|
|
29
|
+
type: 'options',
|
|
30
|
+
options: [
|
|
31
|
+
{
|
|
32
|
+
name: 'Listen and Create Trigger Rule',
|
|
33
|
+
value: 'createTrigger',
|
|
34
|
+
description: 'Create a trigger rule and listen to it',
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'Listen to Channel',
|
|
38
|
+
value: 'listenTrigger',
|
|
39
|
+
description: 'Receive real-time notifications from a channel',
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
default: 'createTrigger',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
displayName: 'Schema Name',
|
|
46
|
+
name: 'schema',
|
|
47
|
+
type: 'resourceLocator',
|
|
48
|
+
default: { mode: 'list', value: 'public' },
|
|
49
|
+
required: true,
|
|
50
|
+
displayOptions: {
|
|
51
|
+
show: {
|
|
52
|
+
triggerMode: ['createTrigger'],
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
modes: [
|
|
56
|
+
{
|
|
57
|
+
displayName: 'From List',
|
|
58
|
+
name: 'list',
|
|
59
|
+
type: 'list',
|
|
60
|
+
placeholder: 'Select a schema',
|
|
61
|
+
typeOptions: {
|
|
62
|
+
searchListMethod: 'searchSchema',
|
|
63
|
+
searchFilterRequired: false,
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
displayName: 'Name',
|
|
68
|
+
name: 'name',
|
|
69
|
+
type: 'string',
|
|
70
|
+
placeholder: 'e.g. public',
|
|
71
|
+
},
|
|
72
|
+
],
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
displayName: 'Table Name',
|
|
76
|
+
name: 'tableName',
|
|
77
|
+
type: 'resourceLocator',
|
|
78
|
+
default: { mode: 'list', value: '' },
|
|
79
|
+
required: true,
|
|
80
|
+
displayOptions: {
|
|
81
|
+
show: {
|
|
82
|
+
triggerMode: ['createTrigger'],
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
modes: [
|
|
86
|
+
{
|
|
87
|
+
displayName: 'From List',
|
|
88
|
+
name: 'list',
|
|
89
|
+
type: 'list',
|
|
90
|
+
placeholder: 'Select a table',
|
|
91
|
+
typeOptions: {
|
|
92
|
+
searchListMethod: 'searchTables',
|
|
93
|
+
searchFilterRequired: false,
|
|
94
|
+
},
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
displayName: 'Name',
|
|
98
|
+
name: 'name',
|
|
99
|
+
type: 'string',
|
|
100
|
+
placeholder: 'e.g. table_name',
|
|
101
|
+
},
|
|
102
|
+
],
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
displayName: 'Channel Name',
|
|
106
|
+
name: 'channelName',
|
|
107
|
+
type: 'string',
|
|
108
|
+
default: '',
|
|
109
|
+
required: true,
|
|
110
|
+
placeholder: 'e.g. n8n_channel',
|
|
111
|
+
description: 'Name of the channel to listen to',
|
|
112
|
+
displayOptions: {
|
|
113
|
+
show: {
|
|
114
|
+
triggerMode: ['listenTrigger'],
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
displayName: 'Events to Listen To',
|
|
120
|
+
name: 'firesOn',
|
|
121
|
+
type: 'options',
|
|
122
|
+
displayOptions: {
|
|
123
|
+
show: {
|
|
124
|
+
triggerMode: ['createTrigger'],
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
options: [
|
|
128
|
+
{
|
|
129
|
+
name: 'Insert',
|
|
130
|
+
value: 'INSERT',
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
name: 'Update',
|
|
134
|
+
value: 'UPDATE',
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
name: 'Delete',
|
|
138
|
+
value: 'DELETE',
|
|
139
|
+
},
|
|
140
|
+
],
|
|
141
|
+
default: 'INSERT',
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
displayName: 'Additional Fields',
|
|
145
|
+
name: 'additionalFields',
|
|
146
|
+
type: 'collection',
|
|
147
|
+
placeholder: 'Add Field',
|
|
148
|
+
default: {},
|
|
149
|
+
displayOptions: {
|
|
150
|
+
show: {
|
|
151
|
+
triggerMode: ['createTrigger'],
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
options: [
|
|
155
|
+
{
|
|
156
|
+
displayName: 'Channel Name',
|
|
157
|
+
name: 'channelName',
|
|
158
|
+
type: 'string',
|
|
159
|
+
placeholder: 'e.g. n8n_channel',
|
|
160
|
+
description: 'Name of the channel to listen to',
|
|
161
|
+
default: '',
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
displayName: 'Function Name',
|
|
165
|
+
name: 'functionName',
|
|
166
|
+
type: 'string',
|
|
167
|
+
description: 'Name of the function to create',
|
|
168
|
+
placeholder: 'e.g. n8n_trigger_function()',
|
|
169
|
+
default: '',
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
displayName: 'Replace if Exists',
|
|
173
|
+
name: 'replaceIfExists',
|
|
174
|
+
type: 'boolean',
|
|
175
|
+
description: 'Whether to replace an existing function and trigger with the same name',
|
|
176
|
+
default: false,
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
displayName: 'Trigger Name',
|
|
180
|
+
name: 'triggerName',
|
|
181
|
+
type: 'string',
|
|
182
|
+
description: 'Name of the trigger to create',
|
|
183
|
+
placeholder: 'e.g. n8n_trigger',
|
|
184
|
+
default: '',
|
|
185
|
+
},
|
|
186
|
+
],
|
|
187
|
+
},
|
|
188
|
+
],
|
|
189
|
+
};
|
|
190
|
+
this.methods = {
|
|
191
|
+
listSearch: {
|
|
192
|
+
searchSchema: PostgresTrigger_functions_1.searchSchema,
|
|
193
|
+
searchTables: PostgresTrigger_functions_1.searchTables,
|
|
194
|
+
},
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
async trigger() {
|
|
198
|
+
const triggerMode = this.getNodeParameter('triggerMode', 0);
|
|
199
|
+
const additionalFields = this.getNodeParameter('additionalFields', 0);
|
|
200
|
+
const db = await PostgresTrigger_functions_1.initDB.call(this);
|
|
201
|
+
if (triggerMode === 'createTrigger') {
|
|
202
|
+
await PostgresTrigger_functions_1.pgTriggerFunction.call(this, db);
|
|
203
|
+
}
|
|
204
|
+
const channelName = triggerMode === 'createTrigger'
|
|
205
|
+
? additionalFields.channelName || `n8n_channel_${this.getNode().id.replace(/-/g, '_')}`
|
|
206
|
+
: this.getNodeParameter('channelName', 0);
|
|
207
|
+
const onNotification = async (data) => {
|
|
208
|
+
if (data.payload) {
|
|
209
|
+
try {
|
|
210
|
+
data.payload = JSON.parse(data.payload);
|
|
211
|
+
}
|
|
212
|
+
catch (error) { }
|
|
213
|
+
}
|
|
214
|
+
this.emit([this.helpers.returnJsonArray([data])]);
|
|
215
|
+
};
|
|
216
|
+
const connection = await db.connect({ direct: true });
|
|
217
|
+
connection.client.on('notification', onNotification);
|
|
218
|
+
await connection.none(`LISTEN ${channelName}`);
|
|
219
|
+
const closeFunction = async () => {
|
|
220
|
+
connection.client.removeListener('notification', onNotification);
|
|
221
|
+
await connection.none(`UNLISTEN ${channelName}`);
|
|
222
|
+
if (triggerMode === 'createTrigger') {
|
|
223
|
+
await PostgresTrigger_functions_1.dropTriggerFunction.call(this, db);
|
|
224
|
+
}
|
|
225
|
+
await db.$pool.end();
|
|
226
|
+
};
|
|
227
|
+
return {
|
|
228
|
+
closeFunction,
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
exports.PostgresTrigger = PostgresTrigger;
|
|
233
|
+
//# sourceMappingURL=PostgresTrigger.node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PostgresTrigger.node.js","sourceRoot":"","sources":["../../../nodes/Postgres/PostgresTrigger.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"node": "n8n-nodes-base.postgresTrigger",
|
|
3
|
+
"nodeVersion": "1.0",
|
|
4
|
+
"codexVersion": "1.0",
|
|
5
|
+
"categories": ["Development"],
|
|
6
|
+
"resources": {
|
|
7
|
+
"credentialDocumentation": [
|
|
8
|
+
{
|
|
9
|
+
"url": "https://docs.n8n.io/credentials/postgres"
|
|
10
|
+
}
|
|
11
|
+
],
|
|
12
|
+
"primaryDocumentation": [
|
|
13
|
+
{
|
|
14
|
+
"url": "https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.postgres/"
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { IExecuteFunctions } from 'n8n-core';
|
|
2
2
|
import type { INodeExecutionData, INodeType, INodeTypeBaseDescription, INodeTypeDescription } from 'n8n-workflow';
|
|
3
|
-
import { credentialTest, listSearch, loadOptions } from './methods';
|
|
3
|
+
import { credentialTest, listSearch, loadOptions, resourceMapping } from './methods';
|
|
4
4
|
export declare class PostgresV2 implements INodeType {
|
|
5
5
|
description: INodeTypeDescription;
|
|
6
6
|
constructor(baseDescription: INodeTypeBaseDescription);
|
|
@@ -8,6 +8,7 @@ export declare class PostgresV2 implements INodeType {
|
|
|
8
8
|
credentialTest: typeof credentialTest;
|
|
9
9
|
listSearch: typeof listSearch;
|
|
10
10
|
loadOptions: typeof loadOptions;
|
|
11
|
+
resourceMapping: typeof resourceMapping;
|
|
11
12
|
};
|
|
12
13
|
execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
|
|
13
14
|
}
|
|
@@ -6,7 +6,7 @@ const versionDescription_1 = require("./actions/versionDescription");
|
|
|
6
6
|
const methods_1 = require("./methods");
|
|
7
7
|
class PostgresV2 {
|
|
8
8
|
constructor(baseDescription) {
|
|
9
|
-
this.methods = { credentialTest: methods_1.credentialTest, listSearch: methods_1.listSearch, loadOptions: methods_1.loadOptions };
|
|
9
|
+
this.methods = { credentialTest: methods_1.credentialTest, listSearch: methods_1.listSearch, loadOptions: methods_1.loadOptions, resourceMapping: methods_1.resourceMapping };
|
|
10
10
|
this.description = {
|
|
11
11
|
...baseDescription,
|
|
12
12
|
...versionDescription_1.versionDescription,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PostgresV2.node.js","sourceRoot":"","sources":["../../../../nodes/Postgres/v2/PostgresV2.node.ts"],"names":[],"mappings":";;;AAQA,6CAA0C;AAE1C,qEAAkE;AAClE,
|
|
1
|
+
{"version":3,"file":"PostgresV2.node.js","sourceRoot":"","sources":["../../../../nodes/Postgres/v2/PostgresV2.node.ts"],"names":[],"mappings":";;;AAQA,6CAA0C;AAE1C,qEAAkE;AAClE,uCAAqF;AAErF,MAAa,UAAU;IAGtB,YAAY,eAAyC;QAOrD,YAAO,GAAG,EAAE,cAAc,EAAd,wBAAc,EAAE,UAAU,EAAV,oBAAU,EAAE,WAAW,EAAX,qBAAW,EAAE,eAAe,EAAf,yBAAe,EAAE,CAAC;QANtE,IAAI,CAAC,WAAW,GAAG;YAClB,GAAG,eAAe;YAClB,GAAG,uCAAkB;SACrB,CAAC;IACH,CAAC;IAID,KAAK,CAAC,OAAO;QACZ,OAAO,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACD;AAfD,gCAeC"}
|
|
@@ -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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"}
|