prostgles-server 4.2.234 → 4.2.236

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 (46) hide show
  1. package/dist/Auth/AuthTypes.d.ts +2 -2
  2. package/dist/Auth/AuthTypes.d.ts.map +1 -1
  3. package/dist/Auth/endpoints/setMagicLinkOrOTPRequestHandler.d.ts.map +1 -1
  4. package/dist/Auth/endpoints/setMagicLinkOrOTPRequestHandler.js +49 -47
  5. package/dist/Auth/endpoints/setMagicLinkOrOTPRequestHandler.js.map +1 -1
  6. package/dist/Auth/endpoints/setRegisterRequestHandler.js +1 -1
  7. package/dist/Auth/endpoints/setRegisterRequestHandler.js.map +1 -1
  8. package/dist/DboBuilder/ViewHandler/subscribe.d.ts.map +1 -1
  9. package/dist/DboBuilder/ViewHandler/subscribe.js.map +1 -1
  10. package/dist/Logging.d.ts +6 -3
  11. package/dist/Logging.d.ts.map +1 -1
  12. package/dist/PubSubManager/PubSubManager.d.ts +12 -3
  13. package/dist/PubSubManager/PubSubManager.d.ts.map +1 -1
  14. package/dist/PubSubManager/PubSubManager.js +20 -237
  15. package/dist/PubSubManager/PubSubManager.js.map +1 -1
  16. package/dist/PubSubManager/addTrigger.d.ts +21 -0
  17. package/dist/PubSubManager/addTrigger.d.ts.map +1 -0
  18. package/dist/PubSubManager/addTrigger.js +83 -0
  19. package/dist/PubSubManager/addTrigger.js.map +1 -0
  20. package/dist/PubSubManager/deleteOrphanedTriggers.d.ts +3 -0
  21. package/dist/PubSubManager/deleteOrphanedTriggers.d.ts.map +1 -0
  22. package/dist/PubSubManager/deleteOrphanedTriggers.js +32 -0
  23. package/dist/PubSubManager/deleteOrphanedTriggers.js.map +1 -0
  24. package/dist/PubSubManager/initialiseEventTriggers.d.ts +3 -0
  25. package/dist/PubSubManager/initialiseEventTriggers.d.ts.map +1 -0
  26. package/dist/PubSubManager/initialiseEventTriggers.js +150 -0
  27. package/dist/PubSubManager/initialiseEventTriggers.js.map +1 -0
  28. package/dist/PubSubManager/notifListener.d.ts.map +1 -1
  29. package/dist/PubSubManager/notifListener.js +5 -26
  30. package/dist/PubSubManager/notifListener.js.map +1 -1
  31. package/dist/PubSubManager/refreshTriggers.d.ts +3 -0
  32. package/dist/PubSubManager/refreshTriggers.d.ts.map +1 -0
  33. package/dist/PubSubManager/refreshTriggers.js +31 -0
  34. package/dist/PubSubManager/refreshTriggers.js.map +1 -0
  35. package/lib/Auth/AuthTypes.ts +2 -2
  36. package/lib/Auth/endpoints/setMagicLinkOrOTPRequestHandler.ts +48 -48
  37. package/lib/Auth/endpoints/setRegisterRequestHandler.ts +1 -1
  38. package/lib/DboBuilder/ViewHandler/subscribe.ts +0 -1
  39. package/lib/Logging.ts +7 -3
  40. package/lib/PubSubManager/PubSubManager.ts +27 -266
  41. package/lib/PubSubManager/addTrigger.ts +94 -0
  42. package/lib/PubSubManager/deleteOrphanedTriggers.ts +31 -0
  43. package/lib/PubSubManager/initialiseEventTriggers.ts +156 -0
  44. package/lib/PubSubManager/notifListener.ts +5 -29
  45. package/lib/PubSubManager/refreshTriggers.ts +38 -0
  46. package/package.json +1 -1
@@ -4,24 +4,23 @@
4
4
  * Licensed under the MIT License. See LICENSE in the project root for license information.
5
5
  *--------------------------------------------------------------------------------------------*/
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.pickKeys = exports.omitKeys = exports.parseCondition = exports.NOTIF_CHANNEL = exports.NOTIF_TYPE = exports.PubSubManager = exports.log = exports.DEFAULT_SYNC_BATCH_SIZE = exports.asValue = void 0;
8
- const crypto = require("crypto");
9
- const Prostgles_1 = require("../Prostgles");
7
+ exports.pickKeys = exports.omitKeys = exports.parseCondition = exports.NOTIF_CHANNEL = exports.NOTIF_TYPE = exports.PubSubManager = exports.log = exports.DEFAULT_SYNC_BATCH_SIZE = exports.asValue = exports.pgp = void 0;
10
8
  const addSync_1 = require("./addSync");
9
+ const addTrigger_1 = require("./addTrigger");
10
+ const initialiseEventTriggers_1 = require("./initialiseEventTriggers");
11
11
  const initPubSubManager_1 = require("./initPubSubManager");
12
+ const refreshTriggers_1 = require("./refreshTriggers");
13
+ const deleteOrphanedTriggers_1 = require("./deleteOrphanedTriggers");
12
14
  const pgPromise = require("pg-promise");
13
15
  const prostgles_types_1 = require("prostgles-types");
14
16
  const util_1 = require("prostgles-types/dist/util");
15
17
  const subscribe_1 = require("../DboBuilder/ViewHandler/subscribe");
16
- const Event_Trigger_Tags_1 = require("../Event_Trigger_Tags");
17
18
  const SyncReplication_1 = require("../SyncReplication");
18
19
  const addSub_1 = require("./addSub");
19
- const getPubSubManagerInitQuery_1 = require("./getPubSubManagerInitQuery");
20
20
  const notifListener_1 = require("./notifListener");
21
- const orphanTriggerCheck_1 = require("./orphanTriggerCheck");
22
21
  const pushSubData_1 = require("./pushSubData");
23
- const pgp = pgPromise({});
24
- const asValue = (v) => pgp.as.format("$1", [v]);
22
+ exports.pgp = pgPromise({});
23
+ const asValue = (v) => exports.pgp.as.format("$1", [v]);
25
24
  exports.asValue = asValue;
26
25
  exports.DEFAULT_SYNC_BATCH_SIZE = 50;
27
26
  const log = (...args) => {
@@ -95,83 +94,7 @@ class PubSubManager {
95
94
  };
96
95
  appChecking = false;
97
96
  checkedListenerTableCond;
98
- initialiseEventTriggers = async () => {
99
- const { watchSchema } = this.dboBuilder.prostgles.opts;
100
- if (watchSchema && !(await (0, Prostgles_1.getIsSuperUser)(this.db))) {
101
- console.warn("prostgles watchSchema requires superuser db user. Will not watch using event triggers");
102
- }
103
- try {
104
- /** We use these names because they include schema where necessary */
105
- const allTableNames = Object.keys(this.dbo).filter((k) => this.dbo[k]?.tableOrViewInfo);
106
- const tableFilterQuery = allTableNames.length ?
107
- `OR table_name NOT IN (${allTableNames.map((tblName) => (0, exports.asValue)(tblName)).join(", ")})`
108
- : "";
109
- const query = pgp.as.format(`
110
- BEGIN;-- ISOLATION LEVEL SERIALIZABLE;
111
-
112
- /**
113
- * ${PubSubManager.EXCLUDE_QUERY_FROM_SCHEMA_WATCH_ID}
114
- * Drop stale triggers
115
- * */
116
- DO
117
- $do$
118
- DECLARE trg RECORD;
119
- q TEXT;
120
- ev_trg_needed BOOLEAN := FALSE;
121
- ev_trg_exists BOOLEAN := FALSE;
122
- is_super_user BOOLEAN := FALSE;
123
- BEGIN
124
-
125
- /**
126
- * Delete disconnected app records, this will delete related triggers
127
- * */
128
- ${orphanTriggerCheck_1.DELETE_DISCONNECTED_APPS_QUERY};
129
-
130
- DELETE FROM prostgles.app_triggers
131
- WHERE app_id NOT IN (SELECT id FROM prostgles.apps)
132
- ${tableFilterQuery}
133
- ;
134
-
135
- /** IS THIS STILL NEEDED? Delete existing triggers without locking
136
- */
137
- LOCK TABLE prostgles.app_triggers IN ACCESS EXCLUSIVE MODE;
138
- EXECUTE format(
139
- $q$
140
-
141
- CREATE TEMP TABLE %1$I AS --ON COMMIT DROP AS
142
- SELECT * FROM prostgles.app_triggers;
143
-
144
- DELETE FROM prostgles.app_triggers;
145
-
146
- INSERT INTO prostgles.app_triggers
147
- SELECT * FROM %1$I;
148
-
149
- DROP TABLE IF EXISTS %1$I;
150
- $q$,
151
- ${(0, exports.asValue)("triggers_" + this.appId)}
152
- );
153
-
154
- ${SCHEMA_WATCH_EVENT_TRIGGER_QUERY}
155
-
156
- END
157
- $do$;
158
-
159
-
160
- COMMIT;
161
- `, { EVENT_TRIGGER_TAGS: Event_Trigger_Tags_1.EVENT_TRIGGER_TAGS });
162
- await this.db
163
- .tx((t) => t.any(query))
164
- .catch((e) => {
165
- console.error("prepareTriggers failed: ", e);
166
- throw e;
167
- });
168
- return true;
169
- }
170
- catch (e) {
171
- console.error("prepareTriggers failed: ", e);
172
- throw e;
173
- }
174
- };
97
+ initialiseEventTriggers = initialiseEventTriggers_1.initialiseEventTriggers.bind(this);
175
98
  getClientSubs({ channel_name, localFuncs, socket_id, }) {
176
99
  return this.subs.filter((s) => {
177
100
  return (s.channel_name === channel_name &&
@@ -274,162 +197,13 @@ class PubSubManager {
274
197
  /**
275
198
  * Sync triggers with database
276
199
  * */
277
- refreshTriggers = async () => {
278
- const triggers = await this.db.any(`
279
- SELECT *
280
- FROM prostgles.v_triggers
281
- WHERE app_id = $1
282
- ORDER BY table_name, condition
283
- `, [this.dboBuilder.prostgles.appId]);
284
- this._triggers = {};
285
- triggers.map((t) => {
286
- this._triggers ??= {};
287
- this._triggers[t.table_name] ??= [];
288
- if (!this._triggers[t.table_name]?.includes(t.condition)) {
289
- this._triggers[t.table_name]?.push(t.condition);
290
- }
291
- });
292
- };
200
+ refreshTriggers = refreshTriggers_1.refreshTriggers.bind(this);
201
+ deleteOrphanedTriggers = debounce(deleteOrphanedTriggers_1.deleteOrphanedTriggers.bind(this), 1000);
293
202
  addingTrigger;
294
203
  addTriggerPool = undefined;
295
- async addTrigger(params, viewOptions, socket) {
296
- const addedTrigger = await (0, util_1.tryCatchV2)(async () => {
297
- const { table_name } = { ...params };
298
- let { condition } = { ...params };
299
- if (!table_name)
300
- throw "MISSING table_name";
301
- if (!condition || !condition.trim().length) {
302
- condition = "TRUE";
303
- }
304
- if (this.dbo[table_name]?.tableOrViewInfo?.isHyperTable) {
305
- throw "Triggers do not work on timescaledb hypertables due to bug:\nhttps://github.com/timescale/timescaledb/issues/1084";
306
- }
307
- const trgVals = {
308
- tbl: (0, exports.asValue)(table_name),
309
- cond: (0, exports.asValue)(condition),
310
- condHash: (0, exports.asValue)(crypto.createHash("md5").update(condition).digest("hex")),
311
- };
312
- await this.db.tx((t) => t.any(`
313
- BEGIN WORK;
314
- /* ${PubSubManager.EXCLUDE_QUERY_FROM_SCHEMA_WATCH_ID} */
315
- /* why is this lock level needed? */
316
- --LOCK TABLE prostgles.app_triggers IN ACCESS EXCLUSIVE MODE;
317
-
318
- /** app_triggers is not refreshed when tables are dropped */
319
- DELETE FROM prostgles.app_triggers at
320
- WHERE app_id = ${(0, exports.asValue)(this.appId)}
321
- AND NOT EXISTS (
322
- SELECT 1
323
- FROM pg_catalog.pg_trigger t
324
- WHERE tgname like format('prostgles_triggers_%s_', at.table_name) || '%'
325
- AND tgenabled = 'O'
326
- );
327
-
328
- INSERT INTO prostgles.app_triggers (
329
- table_name,
330
- condition,
331
- condition_hash,
332
- app_id,
333
- related_view_name,
334
- related_view_def
335
- )
336
- VALUES (
337
- ${trgVals.tbl},
338
- ${trgVals.cond},
339
- ${trgVals.condHash},
340
- ${(0, exports.asValue)(this.appId)},
341
- ${(0, exports.asValue)(viewOptions?.viewName ?? null)},
342
- ${(0, exports.asValue)(viewOptions?.definition ?? null)}
343
- )
344
- ON CONFLICT DO NOTHING;
345
-
346
- COMMIT WORK;
347
- `));
348
- /** This might be redundant due to trigger on app_triggers */
349
- await this.refreshTriggers();
350
- return trgVals;
351
- });
352
- await this._log({
353
- type: "syncOrSub",
354
- command: "addTrigger",
355
- condition: addedTrigger.data?.cond ?? params.condition,
356
- duration: addedTrigger.duration,
357
- socketId: socket?.id,
358
- state: !addedTrigger.data?.tbl ? "fail" : "ok",
359
- error: addedTrigger.error,
360
- sid: socket && this.dboBuilder.prostgles.authHandler?.getSIDNoError({ socket }),
361
- tableName: addedTrigger.data?.tbl ?? params.table_name,
362
- connectedSocketIds: this.dboBuilder.prostgles.connectedSockets.map((s) => s.id),
363
- localParams: socket && { clientReq: { socket } },
364
- triggers: this._triggers,
365
- });
366
- if (addedTrigger.error)
367
- throw addedTrigger.error;
368
- return addedTrigger;
369
- }
204
+ addTrigger = addTrigger_1.addTrigger.bind(this);
370
205
  }
371
206
  exports.PubSubManager = PubSubManager;
372
- const SCHEMA_WATCH_EVENT_TRIGGER_QUERY = `
373
-
374
- is_super_user := EXISTS (select 1 from pg_user where usename = CURRENT_USER AND usesuper IS TRUE);
375
-
376
- /* DROP the old buggy schema watch trigger */
377
- IF EXISTS (
378
- SELECT 1 FROM pg_catalog.pg_event_trigger
379
- WHERE evtname = 'prostgles_schema_watch_trigger'
380
- ) AND is_super_user IS TRUE
381
- THEN
382
- DROP EVENT TRIGGER IF EXISTS prostgles_schema_watch_trigger;
383
- END IF;
384
-
385
- ev_trg_needed := EXISTS (
386
- SELECT 1 FROM prostgles.apps
387
- WHERE watching_schema_tag_names IS NOT NULL
388
- );
389
- ev_trg_exists := EXISTS (
390
- SELECT 1 FROM pg_catalog.pg_event_trigger
391
- WHERE evtname = ${(0, exports.asValue)(getPubSubManagerInitQuery_1.DB_OBJ_NAMES.schema_watch_trigger)}
392
- );
393
-
394
- /* DROP stale event trigger */
395
- IF
396
- is_super_user IS TRUE
397
- AND ev_trg_needed IS FALSE
398
- AND ev_trg_exists IS TRUE
399
- THEN
400
-
401
- SELECT format(
402
- $$
403
- DROP EVENT TRIGGER IF EXISTS %I ;
404
- DROP EVENT TRIGGER IF EXISTS %I ;
405
- $$
406
- , ${(0, exports.asValue)(getPubSubManagerInitQuery_1.DB_OBJ_NAMES.schema_watch_trigger)}
407
- , ${(0, exports.asValue)(getPubSubManagerInitQuery_1.DB_OBJ_NAMES.schema_watch_trigger_drop)}
408
- )
409
- INTO q;
410
- EXECUTE q;
411
-
412
- /* CREATE event trigger */
413
- ELSIF
414
- is_super_user IS TRUE
415
- AND ev_trg_needed IS TRUE
416
- AND ev_trg_exists IS FALSE
417
- THEN
418
-
419
- DROP EVENT TRIGGER IF EXISTS ${getPubSubManagerInitQuery_1.DB_OBJ_NAMES.schema_watch_trigger};
420
- CREATE EVENT TRIGGER ${getPubSubManagerInitQuery_1.DB_OBJ_NAMES.schema_watch_trigger}
421
- ON ddl_command_end
422
- WHEN TAG IN (\${EVENT_TRIGGER_TAGS:csv})
423
- EXECUTE PROCEDURE ${getPubSubManagerInitQuery_1.DB_OBJ_NAMES.schema_watch_func}();
424
-
425
- DROP EVENT TRIGGER IF EXISTS ${getPubSubManagerInitQuery_1.DB_OBJ_NAMES.schema_watch_trigger_drop};
426
- CREATE EVENT TRIGGER ${getPubSubManagerInitQuery_1.DB_OBJ_NAMES.schema_watch_trigger_drop}
427
- ON sql_drop
428
- --WHEN TAG IN (\${EVENT_TRIGGER_TAGS:csv})
429
- EXECUTE PROCEDURE ${getPubSubManagerInitQuery_1.DB_OBJ_NAMES.schema_watch_func}();
430
-
431
- END IF;
432
- `;
433
207
  exports.NOTIF_TYPE = {
434
208
  data: "data_has_changed",
435
209
  data_trigger_change: "data_watch_triggers_have_changed",
@@ -443,6 +217,15 @@ exports.NOTIF_CHANNEL = {
443
217
  return exports.NOTIF_CHANNEL.preffix + appID;
444
218
  },
445
219
  };
220
+ function debounce(func, timeout) {
221
+ let timer;
222
+ return (...args) => {
223
+ clearTimeout(timer);
224
+ timer = setTimeout(() => {
225
+ func(...args);
226
+ }, timeout);
227
+ };
228
+ }
446
229
  const parseCondition = (condition) => condition && condition.trim().length ? condition : "TRUE";
447
230
  exports.parseCondition = parseCondition;
448
231
  var prostgles_types_2 = require("prostgles-types");
@@ -1 +1 @@
1
- {"version":3,"file":"PubSubManager.js","sourceRoot":"","sources":["../../lib/PubSubManager/PubSubManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PubSubManager.js","sourceRoot":"","sources":["../../lib/PubSubManager/PubSubManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { PubSubManager, ViewSubscriptionOptions } from "./PubSubManager";
2
+ import { PRGLIOSocket } from "../DboBuilder/DboBuilderTypes";
3
+ export declare function addTrigger(this: PubSubManager, params: {
4
+ table_name: string;
5
+ condition: string;
6
+ }, viewOptions: ViewSubscriptionOptions | undefined, socket: PRGLIOSocket | undefined): Promise<{
7
+ data?: undefined;
8
+ hasError: true;
9
+ error: unknown;
10
+ duration: number;
11
+ } | {
12
+ data: {
13
+ tbl: string;
14
+ cond: string;
15
+ condHash: string;
16
+ };
17
+ hasError?: false | undefined;
18
+ error?: undefined;
19
+ duration: number;
20
+ }>;
21
+ //# sourceMappingURL=addTrigger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addTrigger.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/addTrigger.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,aAAa,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAElF,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAE7D,wBAAsB,UAAU,CAC9B,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,EACjD,WAAW,EAAE,uBAAuB,GAAG,SAAS,EAChD,MAAM,EAAE,YAAY,GAAG,SAAS;;;;;;;;;;;;;;GAoFjC"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addTrigger = void 0;
4
+ const prostgles_types_1 = require("prostgles-types");
5
+ const PubSubManager_1 = require("./PubSubManager");
6
+ const crypto = require("crypto");
7
+ async function addTrigger(params, viewOptions, socket) {
8
+ const addedTrigger = await (0, prostgles_types_1.tryCatchV2)(async () => {
9
+ const { table_name } = { ...params };
10
+ let { condition } = { ...params };
11
+ if (!table_name)
12
+ throw "MISSING table_name";
13
+ if (!condition || !condition.trim().length) {
14
+ condition = "TRUE";
15
+ }
16
+ if (this.dbo[table_name]?.tableOrViewInfo?.isHyperTable) {
17
+ throw "Triggers do not work on timescaledb hypertables due to bug:\nhttps://github.com/timescale/timescaledb/issues/1084";
18
+ }
19
+ const trgVals = {
20
+ tbl: (0, PubSubManager_1.asValue)(table_name),
21
+ cond: (0, PubSubManager_1.asValue)(condition),
22
+ condHash: (0, PubSubManager_1.asValue)(crypto.createHash("md5").update(condition).digest("hex")),
23
+ };
24
+ await this.db.tx((t) => t.any(`
25
+ BEGIN WORK;
26
+ /* ${PubSubManager_1.PubSubManager.EXCLUDE_QUERY_FROM_SCHEMA_WATCH_ID} */
27
+ /* why is this lock level needed? */
28
+ --LOCK TABLE prostgles.app_triggers IN ACCESS EXCLUSIVE MODE;
29
+
30
+ /** app_triggers is not refreshed when tables are dropped */
31
+ DELETE FROM prostgles.app_triggers at
32
+ WHERE app_id = ${(0, PubSubManager_1.asValue)(this.appId)}
33
+ AND NOT EXISTS (
34
+ SELECT 1
35
+ FROM pg_catalog.pg_trigger t
36
+ WHERE tgname like format('prostgles_triggers_%s_', at.table_name) || '%'
37
+ AND tgenabled = 'O'
38
+ );
39
+
40
+ INSERT INTO prostgles.app_triggers (
41
+ table_name,
42
+ condition,
43
+ condition_hash,
44
+ app_id,
45
+ related_view_name,
46
+ related_view_def
47
+ )
48
+ VALUES (
49
+ ${trgVals.tbl},
50
+ ${trgVals.cond},
51
+ ${trgVals.condHash},
52
+ ${(0, PubSubManager_1.asValue)(this.appId)},
53
+ ${(0, PubSubManager_1.asValue)(viewOptions?.viewName ?? null)},
54
+ ${(0, PubSubManager_1.asValue)(viewOptions?.definition ?? null)}
55
+ )
56
+ ON CONFLICT DO NOTHING;
57
+
58
+ COMMIT WORK;
59
+ `));
60
+ /** This might be redundant due to trigger on app_triggers */
61
+ await this.refreshTriggers();
62
+ return trgVals;
63
+ });
64
+ await this._log({
65
+ type: "syncOrSub",
66
+ command: "addTrigger",
67
+ condition: addedTrigger.data?.cond ?? params.condition,
68
+ duration: addedTrigger.duration,
69
+ socketId: socket?.id,
70
+ state: !addedTrigger.data?.tbl ? "fail" : "ok",
71
+ error: addedTrigger.error,
72
+ sid: socket && this.dboBuilder.prostgles.authHandler?.getSIDNoError({ socket }),
73
+ tableName: addedTrigger.data?.tbl ?? params.table_name,
74
+ connectedSocketIds: this.dboBuilder.prostgles.connectedSockets.map((s) => s.id),
75
+ localParams: socket && { clientReq: { socket } },
76
+ triggers: this._triggers,
77
+ });
78
+ if (addedTrigger.error)
79
+ throw addedTrigger.error;
80
+ return addedTrigger;
81
+ }
82
+ exports.addTrigger = addTrigger;
83
+ //# sourceMappingURL=addTrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"addTrigger.js","sourceRoot":"","sources":["../../lib/PubSubManager/addTrigger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { PubSubManager } from "./PubSubManager";
2
+ export declare function deleteOrphanedTriggers(this: PubSubManager, tableName: string): Promise<void>;
3
+ //# sourceMappingURL=deleteOrphanedTriggers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deleteOrphanedTriggers.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/deleteOrphanedTriggers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,iBA4BlF"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deleteOrphanedTriggers = void 0;
4
+ const PubSubManager_1 = require("./PubSubManager");
5
+ async function deleteOrphanedTriggers(tableName) {
6
+ const activeConditions = (this._triggers?.[tableName] ?? []).map((t) => t.hash);
7
+ this.db
8
+ .any(`
9
+ /* Delete removed subscriptions */
10
+ /* ${PubSubManager_1.PubSubManager.EXCLUDE_QUERY_FROM_SCHEMA_WATCH_ID} */
11
+ DELETE FROM prostgles.app_triggers at
12
+ WHERE EXISTS (
13
+ SELECT 1
14
+ FROM prostgles.v_triggers t
15
+ WHERE t.table_name = $1
16
+ --AND t.c_id IN ($2:csv)
17
+ AND t.app_id = $3
18
+ AND at.app_id = t.app_id
19
+ AND at.table_name = t.table_name
20
+ --AND at.condition = t.condition
21
+ AND at.condition_hash NOT IN ($2:csv)
22
+ )
23
+ `, [tableName, activeConditions, this.appId])
24
+ .then(() => {
25
+ return this.refreshTriggers();
26
+ })
27
+ .catch((e) => {
28
+ console.error("Error deleting orphaned triggers", e);
29
+ });
30
+ }
31
+ exports.deleteOrphanedTriggers = deleteOrphanedTriggers;
32
+ //# sourceMappingURL=deleteOrphanedTriggers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deleteOrphanedTriggers.js","sourceRoot":"","sources":["../../lib/PubSubManager/deleteOrphanedTriggers.ts"],"names":[],"mappings":";;;AAAA,mDAAgD;AAEzC,KAAK,UAAU,sBAAsB,CAAsB,SAAiB;IACjF,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAChF,IAAI,CAAC,EAAE;SACJ,GAAG,CACF;;aAEO,6BAAa,CAAC,kCAAkC;;;;;;;;;;;;;SAapD,EACH,CAAC,SAAS,EAAE,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,CAC1C;SACA,IAAI,CAAC,GAAG,EAAE;QACT,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;IAChC,CAAC,CAAC;SACD,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QACX,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACP,CAAC;AA5BD,wDA4BC"}
@@ -0,0 +1,3 @@
1
+ import { PubSubManager } from "./PubSubManager";
2
+ export declare function initialiseEventTriggers(this: PubSubManager): Promise<boolean>;
3
+ //# sourceMappingURL=initialiseEventTriggers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialiseEventTriggers.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/initialiseEventTriggers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAQhD,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,aAAa,oBAoFhE"}
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initialiseEventTriggers = void 0;
4
+ const pgp = require("pg-promise");
5
+ const PubSubManager_1 = require("./PubSubManager");
6
+ const Prostgles_1 = require("../Prostgles");
7
+ const Event_Trigger_Tags_1 = require("../Event_Trigger_Tags");
8
+ const orphanTriggerCheck_1 = require("./orphanTriggerCheck");
9
+ const getPubSubManagerInitQuery_1 = require("./getPubSubManagerInitQuery");
10
+ const asValue = (v) => pgp.as.format("$1", [v]);
11
+ async function initialiseEventTriggers() {
12
+ const { watchSchema } = this.dboBuilder.prostgles.opts;
13
+ if (watchSchema && !(await (0, Prostgles_1.getIsSuperUser)(this.db))) {
14
+ console.warn("prostgles watchSchema requires superuser db user. Will not watch using event triggers");
15
+ }
16
+ try {
17
+ /** We use these names because they include schema where necessary */
18
+ const allTableNames = Object.keys(this.dbo).filter((k) => this.dbo[k]?.tableOrViewInfo);
19
+ const tableFilterQuery = allTableNames.length ?
20
+ `OR table_name NOT IN (${allTableNames.map((tblName) => asValue(tblName)).join(", ")})`
21
+ : "";
22
+ const query = pgp.as.format(`
23
+ BEGIN;-- ISOLATION LEVEL SERIALIZABLE;
24
+
25
+ /**
26
+ * ${PubSubManager_1.PubSubManager.EXCLUDE_QUERY_FROM_SCHEMA_WATCH_ID}
27
+ * Drop stale triggers
28
+ * */
29
+ DO
30
+ $do$
31
+ DECLARE trg RECORD;
32
+ q TEXT;
33
+ ev_trg_needed BOOLEAN := FALSE;
34
+ ev_trg_exists BOOLEAN := FALSE;
35
+ is_super_user BOOLEAN := FALSE;
36
+ BEGIN
37
+
38
+ /**
39
+ * Delete disconnected app records, this will delete related triggers
40
+ * */
41
+ ${orphanTriggerCheck_1.DELETE_DISCONNECTED_APPS_QUERY};
42
+
43
+ DELETE FROM prostgles.app_triggers
44
+ WHERE app_id NOT IN (SELECT id FROM prostgles.apps)
45
+ ${tableFilterQuery}
46
+ ;
47
+
48
+ /** IS THIS STILL NEEDED? Delete existing triggers without locking
49
+ */
50
+ LOCK TABLE prostgles.app_triggers IN ACCESS EXCLUSIVE MODE;
51
+ EXECUTE format(
52
+ $q$
53
+
54
+ CREATE TEMP TABLE %1$I AS --ON COMMIT DROP AS
55
+ SELECT * FROM prostgles.app_triggers;
56
+
57
+ DELETE FROM prostgles.app_triggers;
58
+
59
+ INSERT INTO prostgles.app_triggers
60
+ SELECT * FROM %1$I;
61
+
62
+ DROP TABLE IF EXISTS %1$I;
63
+ $q$,
64
+ ${asValue("triggers_" + this.appId)}
65
+ );
66
+
67
+ ${SCHEMA_WATCH_EVENT_TRIGGER_QUERY}
68
+
69
+ END
70
+ $do$;
71
+
72
+
73
+ COMMIT;
74
+ `, { EVENT_TRIGGER_TAGS: Event_Trigger_Tags_1.EVENT_TRIGGER_TAGS });
75
+ await this.db
76
+ .tx((t) => t.any(query))
77
+ .catch((e) => {
78
+ console.error("prepareTriggers failed: ", e);
79
+ throw e;
80
+ });
81
+ return true;
82
+ }
83
+ catch (e) {
84
+ console.error("prepareTriggers failed: ", e);
85
+ throw e;
86
+ }
87
+ }
88
+ exports.initialiseEventTriggers = initialiseEventTriggers;
89
+ const SCHEMA_WATCH_EVENT_TRIGGER_QUERY = `
90
+
91
+ is_super_user := EXISTS (select 1 from pg_user where usename = CURRENT_USER AND usesuper IS TRUE);
92
+
93
+ /* DROP the old buggy schema watch trigger */
94
+ IF EXISTS (
95
+ SELECT 1 FROM pg_catalog.pg_event_trigger
96
+ WHERE evtname = 'prostgles_schema_watch_trigger'
97
+ ) AND is_super_user IS TRUE
98
+ THEN
99
+ DROP EVENT TRIGGER IF EXISTS prostgles_schema_watch_trigger;
100
+ END IF;
101
+
102
+ ev_trg_needed := EXISTS (
103
+ SELECT 1 FROM prostgles.apps
104
+ WHERE watching_schema_tag_names IS NOT NULL
105
+ );
106
+ ev_trg_exists := EXISTS (
107
+ SELECT 1 FROM pg_catalog.pg_event_trigger
108
+ WHERE evtname = ${asValue(getPubSubManagerInitQuery_1.DB_OBJ_NAMES.schema_watch_trigger)}
109
+ );
110
+
111
+ /* DROP stale event trigger */
112
+ IF
113
+ is_super_user IS TRUE
114
+ AND ev_trg_needed IS FALSE
115
+ AND ev_trg_exists IS TRUE
116
+ THEN
117
+
118
+ SELECT format(
119
+ $$
120
+ DROP EVENT TRIGGER IF EXISTS %I ;
121
+ DROP EVENT TRIGGER IF EXISTS %I ;
122
+ $$
123
+ , ${asValue(getPubSubManagerInitQuery_1.DB_OBJ_NAMES.schema_watch_trigger)}
124
+ , ${asValue(getPubSubManagerInitQuery_1.DB_OBJ_NAMES.schema_watch_trigger_drop)}
125
+ )
126
+ INTO q;
127
+ EXECUTE q;
128
+
129
+ /* CREATE event trigger */
130
+ ELSIF
131
+ is_super_user IS TRUE
132
+ AND ev_trg_needed IS TRUE
133
+ AND ev_trg_exists IS FALSE
134
+ THEN
135
+
136
+ DROP EVENT TRIGGER IF EXISTS ${getPubSubManagerInitQuery_1.DB_OBJ_NAMES.schema_watch_trigger};
137
+ CREATE EVENT TRIGGER ${getPubSubManagerInitQuery_1.DB_OBJ_NAMES.schema_watch_trigger}
138
+ ON ddl_command_end
139
+ WHEN TAG IN (\${EVENT_TRIGGER_TAGS:csv})
140
+ EXECUTE PROCEDURE ${getPubSubManagerInitQuery_1.DB_OBJ_NAMES.schema_watch_func}();
141
+
142
+ DROP EVENT TRIGGER IF EXISTS ${getPubSubManagerInitQuery_1.DB_OBJ_NAMES.schema_watch_trigger_drop};
143
+ CREATE EVENT TRIGGER ${getPubSubManagerInitQuery_1.DB_OBJ_NAMES.schema_watch_trigger_drop}
144
+ ON sql_drop
145
+ --WHEN TAG IN (\${EVENT_TRIGGER_TAGS:csv})
146
+ EXECUTE PROCEDURE ${getPubSubManagerInitQuery_1.DB_OBJ_NAMES.schema_watch_func}();
147
+
148
+ END IF;
149
+ `;
150
+ //# sourceMappingURL=initialiseEventTriggers.js.map