prostgles-server 4.2.101 → 4.2.103

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.
@@ -1 +1 @@
1
- {"version":3,"file":"getPubSubManagerInitQuery.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/getPubSubManagerInitQuery.ts"],"names":[],"mappings":"AAGA,OAAO,EAAsC,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIpF,eAAO,MAAM,YAAY;;;;;;CAMf,CAAC;AAilBX;;;GAGG;AACH,eAAO,MAAM,yBAAyB,SAAwB,aAAa,KAAG,QAAQ,MAAM,GAAG,SAAS,CAoBvG,CAAA"}
1
+ {"version":3,"file":"getPubSubManagerInitQuery.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/getPubSubManagerInitQuery.ts"],"names":[],"mappings":"AAGA,OAAO,EAAsC,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAIpF,eAAO,MAAM,YAAY;;;;;;CAMf,CAAC;AAmmBX;;;GAGG;AACH,eAAO,MAAM,yBAAyB,SAAwB,aAAa,KAAG,QAAQ,MAAM,GAAG,SAAS,CAoBvG,CAAA"}
@@ -147,6 +147,22 @@ BEGIN
147
147
  END;
148
148
  $$ LANGUAGE plpgsql;
149
149
  COMMENT ON FUNCTION prostgles."user" IS 'Used for row level security';
150
+
151
+ CREATE OR REPLACE FUNCTION prostgles.user_id()
152
+ RETURNS UUID AS $$
153
+ BEGIN
154
+ RETURN prostgles.user('id')::UUID;
155
+ END;
156
+ $$ LANGUAGE plpgsql;
157
+ COMMENT ON FUNCTION prostgles.user_id IS 'Session user id';
158
+
159
+ CREATE OR REPLACE FUNCTION prostgles.user_type()
160
+ RETURNS TEXT AS $$
161
+ BEGIN
162
+ RETURN prostgles.user('type')::TEXT;
163
+ END;
164
+ $$ LANGUAGE plpgsql;
165
+ COMMENT ON FUNCTION prostgles.user_type IS 'Session user type';
150
166
 
151
167
  CREATE TABLE IF NOT EXISTS prostgles.apps (
152
168
  id TEXT PRIMARY KEY DEFAULT prostgles.random_string(),
@@ -443,7 +459,9 @@ BEGIN
443
459
  AFTER INSERT ON %2$s
444
460
  REFERENCING NEW TABLE AS new_table
445
461
  FOR EACH STATEMENT EXECUTE PROCEDURE ${exports.DB_OBJ_NAMES.data_watch_func}();
446
- COMMENT ON TRIGGER %1$I ON %2$s IS 'Prostgles internal trigger used to notify when data in the table changed';
462
+ /* removed to allow less privileges for a user to create subscriptions
463
+ COMMENT ON TRIGGER %1$I ON %2$s IS 'Prostgles internal trigger used to notify when data in the table changed';
464
+ */
447
465
  $q$,
448
466
  'prostgles_triggers_' || trw.table_name || '_insert', trw.table_name
449
467
  ) || format(
@@ -453,7 +471,7 @@ BEGIN
453
471
  AFTER UPDATE ON %2$s
454
472
  REFERENCING OLD TABLE AS old_table NEW TABLE AS new_table
455
473
  FOR EACH STATEMENT EXECUTE PROCEDURE ${exports.DB_OBJ_NAMES.data_watch_func}();
456
- COMMENT ON TRIGGER %1$I ON %2$s IS 'Prostgles internal trigger used to notify when data in the table changed';
474
+ --COMMENT ON TRIGGER %1$I ON %2$s IS 'Prostgles internal trigger used to notify when data in the table changed';
457
475
  $q$,
458
476
  'prostgles_triggers_' || trw.table_name || '_update', trw.table_name
459
477
  ) || format(
@@ -463,7 +481,7 @@ BEGIN
463
481
  AFTER DELETE ON %2$s
464
482
  REFERENCING OLD TABLE AS old_table
465
483
  FOR EACH STATEMENT EXECUTE PROCEDURE ${exports.DB_OBJ_NAMES.data_watch_func}();
466
- COMMENT ON TRIGGER %1$I ON %2$s IS 'Prostgles internal trigger used to notify when data in the table changed';
484
+ --COMMENT ON TRIGGER %1$I ON %2$s IS 'Prostgles internal trigger used to notify when data in the table changed';
467
485
  $q$,
468
486
  'prostgles_triggers_' || trw.table_name || '_delete', trw.table_name
469
487
  );
@@ -1 +1 @@
1
- {"version":3,"file":"getPubSubManagerInitQuery.js","sourceRoot":"","sources":["../../lib/PubSubManager/getPubSubManagerInitQuery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getPubSubManagerInitQuery.js","sourceRoot":"","sources":["../../lib/PubSubManager/getPubSubManagerInitQuery.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"initPubSubManager.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/initPubSubManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,aAAa,EAAW,MAAM,iBAAiB,CAAC;AAExE,eAAO,MAAM,4BAA4B,oEAA8E,CAAC;AAExH,eAAO,MAAM,IAAI,OAAQ,MAAM,qBAA4C,CAAC;AAE5E,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAsM/F"}
1
+ {"version":3,"file":"initPubSubManager.d.ts","sourceRoot":"","sources":["../../lib/PubSubManager/initPubSubManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,aAAa,EAAW,MAAM,iBAAiB,CAAC;AAExE,eAAO,MAAM,4BAA4B,oEAA8E,CAAC;AAExH,eAAO,MAAM,IAAI,OAAQ,MAAM,qBAA4C,CAAC;AAE5E,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CA0E/F"}
@@ -64,110 +64,6 @@ async function initPubSubManager() {
64
64
  DELETE FROM prostgles.app_triggers
65
65
  WHERE app_id = ${(0, PubSubManager_1.asValue)(this.appId)}
66
66
  `);
67
- // console.log("REMOVE app check disabled");
68
- // if (!this.appCheck && Math.random() > 12) {
69
- // this.appCheck = setInterval(async () => {
70
- // let checkForStaleTriggers = "";
71
- // try {
72
- // this.appChecking = true;
73
- // const listeners = this.getActiveListeners();
74
- // const updateCurrentlyUsedTriggersQuery = !listeners.length? "" : `
75
- // UPDATE prostgles.app_triggers
76
- // SET last_used = CASE WHEN (table_name, condition) IN (
77
- // ${listeners.map(l => ` ( ${asValue(l.table_name)}, ${asValue(l.condition)} ) `).join(", ")}
78
- // ) THEN NOW() ELSE last_used END
79
- // WHERE app_id = ${asValue(this.appId)};
80
- // `;
81
- // const checkedListenerTableCond = listeners.map(l => `${l.table_name}.${l.condition}`);
82
- // let dataTriggerCheckQuery = "";
83
- // if(this.checkedListenerTableCond?.sort().join() !== checkedListenerTableCond.sort().join()){
84
- // this.checkedListenerTableCond = checkedListenerTableCond;
85
- // dataTriggerCheckQuery = `
86
- // /* Delete unused triggers. Might deadlock */
87
- // IF EXISTS ( SELECT 1 FROM prostgles.app_triggers)
88
- // THEN
89
- // /* TODO: Fixed deadlocks */
90
- // --LOCK TABLE prostgles.app_triggers IN ACCESS EXCLUSIVE MODE;
91
- // /* UPDATE currently used triggers */
92
- // ${updateCurrentlyUsedTriggersQuery}
93
- // /* DELETE stale triggers for current app. Other triggers will be deleted on app startup
94
- // DELETE FROM prostgles.app_triggers
95
- // WHERE app_id = ${asValue(this.appId)}
96
- // AND last_used < NOW() - 4 * ${asValue(this.appCheckFrequencyMS)} * interval '1 millisecond'; -- 10 seconds at the moment
97
- // */
98
- // END IF;
99
- // `
100
- // }
101
- // const queryIdentifier = "prostgles query used to keep track of which prgl backend clients are still connected"
102
- // checkForStaleTriggers = `
103
- // DO $$
104
- // BEGIN
105
- // /*
106
- // ${queryIdentifier}
107
- // ${REALTIME_TRIGGER_CHECK_QUERY}
108
- // ${PubSubManager.EXCLUDE_QUERY_FROM_SCHEMA_WATCH_ID}
109
- // */
110
- // /* prostgles schema must exist */
111
- // IF
112
- // EXISTS (
113
- // SELECT 1
114
- // FROM information_schema.tables
115
- // WHERE table_schema = 'prostgles'
116
- // AND table_name = 'apps'
117
- // )
118
- // THEN
119
- // /* Last check used to remove disconnected apps */
120
- // UPDATE prostgles.apps
121
- // SET last_check = NOW()
122
- // WHERE id = ${asValue(this.appId)};
123
- // ${dataTriggerCheckQuery}
124
- // END IF;
125
- // END $$;`
126
- // const queryTimeoutMillis = Math.min(5e3, Math.round(this.appCheckFrequencyMS/2));
127
- // const timeout = setTimeout(() => {
128
- // this.db.any(`
129
- // /*
130
- // ${queryIdentifier}
131
- // ${REALTIME_TRIGGER_CHECK_QUERY}
132
- // ${PubSubManager.EXCLUDE_QUERY_FROM_SCHEMA_WATCH_ID}
133
- // */
134
- // DO $$
135
- // BEGIN
136
- // /* PERFORM pg_sleep(\${queryTimeoutMillis}/1e3); */
137
- // PERFORM pg_cancel_backend(pid)
138
- // FROM pg_catalog.pg_stat_activity
139
- // WHERE pid <> pg_backend_pid()
140
- // AND query = \${queryIdentifier};
141
- // END $$;
142
- // `, { queryTimeoutMillis, queryIdentifier })
143
- // }, queryTimeoutMillis);
144
- // await this.db.any(checkForStaleTriggers);
145
- // clearTimeout(timeout);
146
- // tries = 5;
147
- // log("updated last_check");
148
- // } catch (e: any) {
149
- // tries --;
150
- // /** In some cases a query idles and blocks everything else. Terminate all similar queries */
151
- // this.db.any(
152
- // "SELECT state, pg_terminate_backend(pid) from pg_stat_activity \
153
- // WHERE query ilike ${qid} \
154
- // AND pid <> pg_backend_pid();",
155
- // { qid: `%${REALTIME_TRIGGER_CHECK_QUERY}%` }
156
- // );
157
- // /** If no tries left
158
- // * OR
159
- // * If this database was dropped
160
- // *
161
- // * then stop interval
162
- // * */
163
- // if(tries <= 0 || e?.code === "3D000"){ // && e.message.includes(this.db.$cn.database)
164
- // clearInterval(this.appCheck);
165
- // }
166
- // console.error("appCheck FAILED: \n", e, checkForStaleTriggers);
167
- // }
168
- // this.appChecking = false;
169
- // }, 0.8 * this.appCheckFrequencyMS);
170
- // }
171
67
  }
172
68
  this.postgresNotifListenManager = new PostgresNotifListenManager_1.PostgresNotifListenManager(this.db, this.notifListener, PubSubManager_1.NOTIF_CHANNEL.getFull(this.appId));
173
69
  await this.initialiseEventTriggers();
@@ -1 +1 @@
1
- {"version":3,"file":"initPubSubManager.js","sourceRoot":"","sources":["../../lib/PubSubManager/initPubSubManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"initPubSubManager.js","sourceRoot":"","sources":["../../lib/PubSubManager/initPubSubManager.ts"],"names":[],"mappings":";;;AAAA,qDAAsD;AACtD,8EAA2E;AAC3E,gFAA6E;AAC7E,mDAAwE;AACxE,2EAAwE;AAC3D,QAAA,4BAA4B,GAAG,kEAA2E,CAAC;AAEjH,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;AAA/D,QAAA,IAAI,QAA2D;AAErE,KAAK,UAAU,iBAAiB;IACrC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;QAAE,OAAO,SAAS,CAAC;IAE7C,IAAI,CAAC;QAEH,MAAM,SAAS,GAAG,MAAM,qDAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAE/D;;;UAGE;QACF,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,KAAU,CAAC;QACf,OAAO,IAAA,2BAAS,EAAC,SAAS,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC;gBACH,iGAAiG;gBACjG,MAAM,IAAA,YAAI,EAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBAE1B,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC7B,KAAK,GAAG,SAAS,CAAC;gBAClB,KAAK,GAAG,CAAC,CAAC;YACZ,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,IAAG,CAAC,WAAW,IAAI,IAAA,0BAAQ,EAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAC,CAAC;oBACpD,WAAW,GAAG,IAAI,CAAC;oBACnB,KAAK,GAAG,CAAC,CAAC;oBACV,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;gBAClD,CAAC;gBACD,KAAK,GAAG,CAAC,CAAC;gBACV,KAAK,EAAG,CAAC;YACX,CAAC;QACH,CAAC;QACD,IAAG,KAAK,EAAC,CAAC;YACR,MAAM,KAAK,CAAC;QACd,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YAAE,OAAO;QAEnC,oBAAoB;QACpB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC7B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,MAAM,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC;YACpD,MAAM,yBAAyB,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,IAAA,6CAAqB,EAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC9K,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CACf;;sBAEc,EACZ;gBACA,IAAI,CAAC,KAAK;gBACV,kBAAkB;gBAClB,yBAAyB;aAC1B,CACF,CAAC;YAEF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,4CAA4C,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YAChG,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACpE,MAAM,+EAA+E,IAAI,CAAC,KAAK,aAAa,CAAC;YAC/G,CAAC;YAED,MAAM,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC;;yBAEC,IAAA,uBAAO,EAAC,IAAI,CAAC,KAAK,CAAC;OACrC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,0BAA0B,GAAG,IAAI,uDAA0B,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,6BAAa,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAEjI,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAErC,OAAO,IAAI,CAAC;IAEd,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,6BAA6B,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AA1ED,8CA0EC"}
@@ -148,6 +148,22 @@ BEGIN
148
148
  END;
149
149
  $$ LANGUAGE plpgsql;
150
150
  COMMENT ON FUNCTION prostgles."user" IS 'Used for row level security';
151
+
152
+ CREATE OR REPLACE FUNCTION prostgles.user_id()
153
+ RETURNS UUID AS $$
154
+ BEGIN
155
+ RETURN prostgles.user('id')::UUID;
156
+ END;
157
+ $$ LANGUAGE plpgsql;
158
+ COMMENT ON FUNCTION prostgles.user_id IS 'Session user id';
159
+
160
+ CREATE OR REPLACE FUNCTION prostgles.user_type()
161
+ RETURNS TEXT AS $$
162
+ BEGIN
163
+ RETURN prostgles.user('type')::TEXT;
164
+ END;
165
+ $$ LANGUAGE plpgsql;
166
+ COMMENT ON FUNCTION prostgles.user_type IS 'Session user type';
151
167
 
152
168
  CREATE TABLE IF NOT EXISTS prostgles.apps (
153
169
  id TEXT PRIMARY KEY DEFAULT prostgles.random_string(),
@@ -444,7 +460,9 @@ BEGIN
444
460
  AFTER INSERT ON %2$s
445
461
  REFERENCING NEW TABLE AS new_table
446
462
  FOR EACH STATEMENT EXECUTE PROCEDURE ${DB_OBJ_NAMES.data_watch_func}();
447
- COMMENT ON TRIGGER %1$I ON %2$s IS 'Prostgles internal trigger used to notify when data in the table changed';
463
+ /* removed to allow less privileges for a user to create subscriptions
464
+ COMMENT ON TRIGGER %1$I ON %2$s IS 'Prostgles internal trigger used to notify when data in the table changed';
465
+ */
448
466
  $q$,
449
467
  'prostgles_triggers_' || trw.table_name || '_insert', trw.table_name
450
468
  ) || format(
@@ -454,7 +472,7 @@ BEGIN
454
472
  AFTER UPDATE ON %2$s
455
473
  REFERENCING OLD TABLE AS old_table NEW TABLE AS new_table
456
474
  FOR EACH STATEMENT EXECUTE PROCEDURE ${DB_OBJ_NAMES.data_watch_func}();
457
- COMMENT ON TRIGGER %1$I ON %2$s IS 'Prostgles internal trigger used to notify when data in the table changed';
475
+ --COMMENT ON TRIGGER %1$I ON %2$s IS 'Prostgles internal trigger used to notify when data in the table changed';
458
476
  $q$,
459
477
  'prostgles_triggers_' || trw.table_name || '_update', trw.table_name
460
478
  ) || format(
@@ -464,7 +482,7 @@ BEGIN
464
482
  AFTER DELETE ON %2$s
465
483
  REFERENCING OLD TABLE AS old_table
466
484
  FOR EACH STATEMENT EXECUTE PROCEDURE ${DB_OBJ_NAMES.data_watch_func}();
467
- COMMENT ON TRIGGER %1$I ON %2$s IS 'Prostgles internal trigger used to notify when data in the table changed';
485
+ --COMMENT ON TRIGGER %1$I ON %2$s IS 'Prostgles internal trigger used to notify when data in the table changed';
468
486
  $q$,
469
487
  'prostgles_triggers_' || trw.table_name || '_delete', trw.table_name
470
488
  );
@@ -70,130 +70,6 @@ export async function initPubSubManager(this: PubSubManager): Promise<PubSubMana
70
70
  DELETE FROM prostgles.app_triggers
71
71
  WHERE app_id = ${asValue(this.appId)}
72
72
  `);
73
-
74
- // console.log("REMOVE app check disabled");
75
- // if (!this.appCheck && Math.random() > 12) {
76
-
77
- // this.appCheck = setInterval(async () => {
78
- // let checkForStaleTriggers = "";
79
- // try {
80
-
81
- // this.appChecking = true;
82
-
83
- // const listeners = this.getActiveListeners();
84
- // const updateCurrentlyUsedTriggersQuery = !listeners.length? "" : `
85
- // UPDATE prostgles.app_triggers
86
- // SET last_used = CASE WHEN (table_name, condition) IN (
87
- // ${listeners.map(l => ` ( ${asValue(l.table_name)}, ${asValue(l.condition)} ) `).join(", ")}
88
- // ) THEN NOW() ELSE last_used END
89
- // WHERE app_id = ${asValue(this.appId)};
90
- // `;
91
-
92
- // const checkedListenerTableCond = listeners.map(l => `${l.table_name}.${l.condition}`);
93
- // let dataTriggerCheckQuery = "";
94
- // if(this.checkedListenerTableCond?.sort().join() !== checkedListenerTableCond.sort().join()){
95
- // this.checkedListenerTableCond = checkedListenerTableCond;
96
- // dataTriggerCheckQuery = `
97
- // /* Delete unused triggers. Might deadlock */
98
- // IF EXISTS ( SELECT 1 FROM prostgles.app_triggers)
99
-
100
- // THEN
101
-
102
- // /* TODO: Fixed deadlocks */
103
- // --LOCK TABLE prostgles.app_triggers IN ACCESS EXCLUSIVE MODE;
104
-
105
- // /* UPDATE currently used triggers */
106
- // ${updateCurrentlyUsedTriggersQuery}
107
-
108
- // /* DELETE stale triggers for current app. Other triggers will be deleted on app startup
109
- // DELETE FROM prostgles.app_triggers
110
- // WHERE app_id = ${asValue(this.appId)}
111
- // AND last_used < NOW() - 4 * ${asValue(this.appCheckFrequencyMS)} * interval '1 millisecond'; -- 10 seconds at the moment
112
- // */
113
-
114
- // END IF;
115
-
116
- // `
117
- // }
118
-
119
- // const queryIdentifier = "prostgles query used to keep track of which prgl backend clients are still connected"
120
- // checkForStaleTriggers = `
121
- // DO $$
122
- // BEGIN
123
- // /*
124
- // ${queryIdentifier}
125
- // ${REALTIME_TRIGGER_CHECK_QUERY}
126
- // ${PubSubManager.EXCLUDE_QUERY_FROM_SCHEMA_WATCH_ID}
127
- // */
128
- // /* prostgles schema must exist */
129
- // IF
130
- // EXISTS (
131
- // SELECT 1
132
- // FROM information_schema.tables
133
- // WHERE table_schema = 'prostgles'
134
- // AND table_name = 'apps'
135
- // )
136
- // THEN
137
-
138
- // /* Last check used to remove disconnected apps */
139
- // UPDATE prostgles.apps
140
- // SET last_check = NOW()
141
- // WHERE id = ${asValue(this.appId)};
142
-
143
- // ${dataTriggerCheckQuery}
144
- // END IF;
145
-
146
- // END $$;`
147
-
148
- // const queryTimeoutMillis = Math.min(5e3, Math.round(this.appCheckFrequencyMS/2));
149
- // const timeout = setTimeout(() => {
150
- // this.db.any(`
151
- // /*
152
- // ${queryIdentifier}
153
- // ${REALTIME_TRIGGER_CHECK_QUERY}
154
- // ${PubSubManager.EXCLUDE_QUERY_FROM_SCHEMA_WATCH_ID}
155
- // */
156
- // DO $$
157
- // BEGIN
158
- // /* PERFORM pg_sleep(\${queryTimeoutMillis}/1e3); */
159
- // PERFORM pg_cancel_backend(pid)
160
- // FROM pg_catalog.pg_stat_activity
161
- // WHERE pid <> pg_backend_pid()
162
- // AND query = \${queryIdentifier};
163
- // END $$;
164
- // `, { queryTimeoutMillis, queryIdentifier })
165
- // }, queryTimeoutMillis);
166
- // await this.db.any(checkForStaleTriggers);
167
- // clearTimeout(timeout);
168
-
169
- // tries = 5;
170
- // log("updated last_check");
171
- // } catch (e: any) {
172
- // tries --;
173
-
174
- // /** In some cases a query idles and blocks everything else. Terminate all similar queries */
175
- // this.db.any(
176
- // "SELECT state, pg_terminate_backend(pid) from pg_stat_activity \
177
- // WHERE query ilike ${qid} \
178
- // AND pid <> pg_backend_pid();",
179
- // { qid: `%${REALTIME_TRIGGER_CHECK_QUERY}%` }
180
- // );
181
-
182
- // /** If no tries left
183
- // * OR
184
- // * If this database was dropped
185
- // *
186
- // * then stop interval
187
- // * */
188
- // if(tries <= 0 || e?.code === "3D000"){ // && e.message.includes(this.db.$cn.database)
189
- // clearInterval(this.appCheck);
190
- // }
191
- // console.error("appCheck FAILED: \n", e, checkForStaleTriggers);
192
- // }
193
-
194
- // this.appChecking = false;
195
- // }, 0.8 * this.appCheckFrequencyMS);
196
- // }
197
73
  }
198
74
 
199
75
  this.postgresNotifListenManager = new PostgresNotifListenManager(this.db, this.notifListener, NOTIF_CHANNEL.getFull(this.appId));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prostgles-server",
3
- "version": "4.2.101",
3
+ "version": "4.2.103",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -257,6 +257,16 @@ export type DBSchemaGenerated = {
257
257
  id: string;
258
258
  };
259
259
  };
260
+ newly_created_table: {
261
+ is_view: false;
262
+ select: true;
263
+ insert: true;
264
+ update: true;
265
+ delete: true;
266
+ columns: {
267
+ id?: null | number;
268
+ };
269
+ };
260
270
  obj_table: {
261
271
  is_view: false;
262
272
  select: true;
@@ -21,7 +21,7 @@
21
21
  },
22
22
  "../..": {
23
23
  "name": "prostgles-server",
24
- "version": "4.2.100",
24
+ "version": "4.2.102",
25
25
  "license": "MIT",
26
26
  "dependencies": {
27
27
  "bluebird": "^3.7.2",
@@ -7,8 +7,8 @@
7
7
  "start": "tsc-watch --onSuccess \"node dist/server/index.js\"",
8
8
  "dev": "NOSTOP=true npm start",
9
9
  "build": "rm -rf ./node_modules/* && rm -rf ./media/* && rm -rf ./dist/* && npm i && tsc",
10
- "test-server": "TEST_TYPE=server node --trace-uncaught --test --experimental-test-coverage dist/server/index.js ",
11
- "test-client": "TEST_TYPE=client node --trace-uncaught --test --experimental-test-coverage dist/server/index.js "
10
+ "test-server": "TEST_TYPE=server node --trace-uncaught --test dist/server/index.js ",
11
+ "test-client": "TEST_TYPE=client node --trace-uncaught --test dist/server/index.js "
12
12
  },
13
13
  "author": "",
14
14
  "license": "ISC",