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.
Files changed (136) hide show
  1. package/dist/build.tsbuildinfo +1 -1
  2. package/dist/credentials/Ldap.credentials.d.ts +1 -1
  3. package/dist/known/credentials.json +2 -1
  4. package/dist/known/nodes.json +7 -3
  5. package/dist/methods/defined.json +1 -4
  6. package/dist/methods/referenced.json +1 -4
  7. package/dist/nodes/Clockify/EntryTypeEnum.js +1 -1
  8. package/dist/nodes/Clockify/EntryTypeEnum.js.map +1 -1
  9. package/dist/nodes/Code/Code.node.js +6 -1
  10. package/dist/nodes/Code/Code.node.js.map +1 -1
  11. package/dist/nodes/Code/test/Code.workflow.json +61 -30
  12. package/dist/nodes/Cortex/AnalyzerInterface.js +3 -3
  13. package/dist/nodes/Cortex/AnalyzerInterface.js.map +1 -1
  14. package/dist/nodes/Crypto/Crypto.node.d.ts +1 -6
  15. package/dist/nodes/Crypto/Crypto.node.js +74 -33
  16. package/dist/nodes/Crypto/Crypto.node.js.map +1 -1
  17. package/dist/nodes/Crypto/test/CryptoTest.workflow.json +87 -46
  18. package/dist/nodes/DateTime/V2/DateTimeV2.node.js +1 -0
  19. package/dist/nodes/DateTime/V2/DateTimeV2.node.js.map +1 -1
  20. package/dist/nodes/Formstack/GenericFunctions.js +1 -1
  21. package/dist/nodes/Formstack/GenericFunctions.js.map +1 -1
  22. package/dist/nodes/Google/BigQuery/v1/GenericFunctions.js +2 -62
  23. package/dist/nodes/Google/BigQuery/v1/GenericFunctions.js.map +1 -1
  24. package/dist/nodes/Google/BigQuery/v2/transport/index.js +2 -62
  25. package/dist/nodes/Google/BigQuery/v2/transport/index.js.map +1 -1
  26. package/dist/nodes/Google/Books/GenericFunctions.js +2 -40
  27. package/dist/nodes/Google/Books/GenericFunctions.js.map +1 -1
  28. package/dist/nodes/Google/Chat/GenericFunctions.d.ts +1 -9
  29. package/dist/nodes/Google/Chat/GenericFunctions.js +3 -42
  30. package/dist/nodes/Google/Chat/GenericFunctions.js.map +1 -1
  31. package/dist/nodes/Google/Docs/GenericFunctions.js +2 -44
  32. package/dist/nodes/Google/Docs/GenericFunctions.js.map +1 -1
  33. package/dist/nodes/Google/Drive/GenericFunctions.js +2 -44
  34. package/dist/nodes/Google/Drive/GenericFunctions.js.map +1 -1
  35. package/dist/nodes/Google/GenericFunctions.d.ts +17 -0
  36. package/dist/nodes/Google/GenericFunctions.js +108 -0
  37. package/dist/nodes/Google/GenericFunctions.js.map +1 -0
  38. package/dist/nodes/Google/Gmail/GenericFunctions.js +2 -44
  39. package/dist/nodes/Google/Gmail/GenericFunctions.js.map +1 -1
  40. package/dist/nodes/Google/Sheet/GoogleSheets.node.js +2 -1
  41. package/dist/nodes/Google/Sheet/GoogleSheets.node.js.map +1 -1
  42. package/dist/nodes/Google/Sheet/v1/GenericFunctions.d.ts +1 -2
  43. package/dist/nodes/Google/Sheet/v1/GenericFunctions.js +3 -46
  44. package/dist/nodes/Google/Sheet/v1/GenericFunctions.js.map +1 -1
  45. package/dist/nodes/Google/Sheet/v1/GoogleSheetsV1.node.js +2 -1
  46. package/dist/nodes/Google/Sheet/v1/GoogleSheetsV1.node.js.map +1 -1
  47. package/dist/nodes/Google/Sheet/v2/GoogleSheetsV2.node.d.ts +2 -1
  48. package/dist/nodes/Google/Sheet/v2/GoogleSheetsV2.node.js +1 -0
  49. package/dist/nodes/Google/Sheet/v2/GoogleSheetsV2.node.js.map +1 -1
  50. package/dist/nodes/Google/Sheet/v2/actions/sheet/append.operation.js +47 -2
  51. package/dist/nodes/Google/Sheet/v2/actions/sheet/append.operation.js.map +1 -1
  52. package/dist/nodes/Google/Sheet/v2/actions/sheet/appendOrUpdate.operation.js +89 -23
  53. package/dist/nodes/Google/Sheet/v2/actions/sheet/appendOrUpdate.operation.js.map +1 -1
  54. package/dist/nodes/Google/Sheet/v2/actions/sheet/update.operation.js +89 -23
  55. package/dist/nodes/Google/Sheet/v2/actions/sheet/update.operation.js.map +1 -1
  56. package/dist/nodes/Google/Sheet/v2/actions/versionDescription.js +1 -1
  57. package/dist/nodes/Google/Sheet/v2/actions/versionDescription.js.map +1 -1
  58. package/dist/nodes/Google/Sheet/v2/helpers/GoogleSheets.utils.js +15 -5
  59. package/dist/nodes/Google/Sheet/v2/helpers/GoogleSheets.utils.js.map +1 -1
  60. package/dist/nodes/Google/Sheet/v2/methods/credentialTest.js +2 -2
  61. package/dist/nodes/Google/Sheet/v2/methods/credentialTest.js.map +1 -1
  62. package/dist/nodes/Google/Sheet/v2/methods/index.d.ts +1 -0
  63. package/dist/nodes/Google/Sheet/v2/methods/index.js +2 -1
  64. package/dist/nodes/Google/Sheet/v2/methods/index.js.map +1 -1
  65. package/dist/nodes/Google/Sheet/v2/methods/resourceMapping.d.ts +3 -0
  66. package/dist/nodes/Google/Sheet/v2/methods/resourceMapping.js +33 -0
  67. package/dist/nodes/Google/Sheet/v2/methods/resourceMapping.js.map +1 -0
  68. package/dist/nodes/Google/Sheet/v2/transport/index.d.ts +1 -8
  69. package/dist/nodes/Google/Sheet/v2/transport/index.js +3 -46
  70. package/dist/nodes/Google/Sheet/v2/transport/index.js.map +1 -1
  71. package/dist/nodes/Google/Slides/GenericFunctions.js +2 -43
  72. package/dist/nodes/Google/Slides/GenericFunctions.js.map +1 -1
  73. package/dist/nodes/Google/Translate/GenericFunctions.js +2 -43
  74. package/dist/nodes/Google/Translate/GenericFunctions.js.map +1 -1
  75. package/dist/nodes/Ldap/LdapDescription.js +17 -0
  76. package/dist/nodes/Ldap/LdapDescription.js.map +1 -1
  77. package/dist/nodes/LoneScale/{LoneScaleList.node.d.ts → LoneScale.node.d.ts} +1 -1
  78. package/dist/nodes/LoneScale/{LoneScaleList.node.js → LoneScale.node.js} +7 -8
  79. package/dist/nodes/LoneScale/LoneScale.node.js.map +1 -0
  80. package/dist/nodes/LoneScale/LoneScaleTrigger.node.js.map +1 -1
  81. package/dist/nodes/LoneScale/LoneScaleTrigger.node.json +1 -1
  82. package/dist/nodes/PayPal/PaymentInteface.js +2 -2
  83. package/dist/nodes/PayPal/PaymentInteface.js.map +1 -1
  84. package/dist/nodes/Postgres/Postgres.node.js +2 -1
  85. package/dist/nodes/Postgres/Postgres.node.js.map +1 -1
  86. package/dist/nodes/Postgres/PostgresInterface.d.ts +6 -0
  87. package/dist/nodes/Postgres/PostgresInterface.js +3 -0
  88. package/dist/nodes/Postgres/PostgresInterface.js.map +1 -0
  89. package/dist/nodes/Postgres/PostgresTrigger.functions.d.ts +8 -0
  90. package/dist/nodes/Postgres/PostgresTrigger.functions.js +125 -0
  91. package/dist/nodes/Postgres/PostgresTrigger.functions.js.map +1 -0
  92. package/dist/nodes/Postgres/PostgresTrigger.node.d.ts +12 -0
  93. package/dist/nodes/Postgres/PostgresTrigger.node.js +233 -0
  94. package/dist/nodes/Postgres/PostgresTrigger.node.js.map +1 -0
  95. package/dist/nodes/Postgres/PostgresTrigger.node.json +18 -0
  96. package/dist/nodes/Postgres/v2/PostgresV2.node.d.ts +2 -1
  97. package/dist/nodes/Postgres/v2/PostgresV2.node.js +1 -1
  98. package/dist/nodes/Postgres/v2/PostgresV2.node.js.map +1 -1
  99. package/dist/nodes/Postgres/v2/actions/database/insert.operation.js +50 -4
  100. package/dist/nodes/Postgres/v2/actions/database/insert.operation.js.map +1 -1
  101. package/dist/nodes/Postgres/v2/actions/database/update.operation.js +110 -14
  102. package/dist/nodes/Postgres/v2/actions/database/update.operation.js.map +1 -1
  103. package/dist/nodes/Postgres/v2/actions/database/upsert.operation.js +72 -14
  104. package/dist/nodes/Postgres/v2/actions/database/upsert.operation.js.map +1 -1
  105. package/dist/nodes/Postgres/v2/actions/versionDescription.js +1 -1
  106. package/dist/nodes/Postgres/v2/actions/versionDescription.js.map +1 -1
  107. package/dist/nodes/Postgres/v2/helpers/interfaces.d.ts +6 -0
  108. package/dist/nodes/Postgres/v2/helpers/utils.d.ts +6 -2
  109. package/dist/nodes/Postgres/v2/helpers/utils.js +35 -2
  110. package/dist/nodes/Postgres/v2/helpers/utils.js.map +1 -1
  111. package/dist/nodes/Postgres/v2/methods/index.d.ts +1 -0
  112. package/dist/nodes/Postgres/v2/methods/index.js +2 -1
  113. package/dist/nodes/Postgres/v2/methods/index.js.map +1 -1
  114. package/dist/nodes/Postgres/v2/methods/resourceMapping.d.ts +2 -0
  115. package/dist/nodes/Postgres/v2/methods/resourceMapping.js +83 -0
  116. package/dist/nodes/Postgres/v2/methods/resourceMapping.js.map +1 -0
  117. package/dist/nodes/SendInBlue/GenericFunctions.js +2 -2
  118. package/dist/nodes/SendInBlue/GenericFunctions.js.map +1 -1
  119. package/dist/nodes/TheHive/interfaces/AlertInterface.js +2 -2
  120. package/dist/nodes/TheHive/interfaces/AlertInterface.js.map +1 -1
  121. package/dist/nodes/TheHive/interfaces/CaseInterface.js +3 -3
  122. package/dist/nodes/TheHive/interfaces/CaseInterface.js.map +1 -1
  123. package/dist/nodes/TheHive/interfaces/LogInterface.js +1 -1
  124. package/dist/nodes/TheHive/interfaces/LogInterface.js.map +1 -1
  125. package/dist/nodes/TheHive/interfaces/ObservableInterface.js +2 -2
  126. package/dist/nodes/TheHive/interfaces/ObservableInterface.js.map +1 -1
  127. package/dist/nodes/TheHive/interfaces/TaskInterface.js +1 -1
  128. package/dist/nodes/TheHive/interfaces/TaskInterface.js.map +1 -1
  129. package/dist/nodes/Todoist/v1/OperationHandler.js +1 -1
  130. package/dist/nodes/Todoist/v1/OperationHandler.js.map +1 -1
  131. package/dist/nodes/Todoist/v2/OperationHandler.js +1 -1
  132. package/dist/nodes/Todoist/v2/OperationHandler.js.map +1 -1
  133. package/dist/package.json +3 -2
  134. package/dist/types/nodes.json +14 -11
  135. package/package.json +5 -4
  136. 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.1,
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;AAnBD,4BAmBC"}
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,6 @@
1
+ export interface IPostgresTrigger {
2
+ triggerName: string;
3
+ functionName: string;
4
+ channelName: string;
5
+ target: string;
6
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=PostgresInterface.js.map
@@ -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,uCAAoE;AAEpE,MAAa,UAAU;IAGtB,YAAY,eAAyC;QAOrD,YAAO,GAAG,EAAE,cAAc,EAAd,wBAAc,EAAE,UAAU,EAAV,oBAAU,EAAE,WAAW,EAAX,qBAAW,EAAE,CAAC;QANrD,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"}
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 dataMode = this.getNodeParameter('dataMode', i);
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 = this.getNodeParameter('valuesToSend', i, [])
117
- .values;
118
- item = (0, utils_1.prepareItem)(valuesToSend);
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":"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"}
1
+ {"version":3,"file":"insert.operation.js","sourceRoot":"","sources":["../../../../../../nodes/Postgres/v2/actions/database/insert.operation.ts"],"names":[],"mappings":"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"}