prostgles-server 3.0.77 → 3.0.79
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/DboBuilder/QueryBuilder/Functions.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/Functions.js +18 -0
- package/dist/DboBuilder/QueryBuilder/Functions.js.map +1 -1
- package/dist/DboBuilder/TableHandler.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler.js +1 -1
- package/dist/DboBuilder/TableHandler.js.map +1 -1
- package/dist/DboBuilder/ViewHandler.d.ts +6 -12
- package/dist/DboBuilder/ViewHandler.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler.js +5 -207
- package/dist/DboBuilder/ViewHandler.js.map +1 -1
- package/dist/DboBuilder/delete.d.ts.map +1 -1
- package/dist/DboBuilder/delete.js +1 -1
- package/dist/DboBuilder/delete.js.map +1 -1
- package/dist/DboBuilder/getCondition.d.ts +19 -0
- package/dist/DboBuilder/getCondition.d.ts.map +1 -0
- package/dist/DboBuilder/getCondition.js +236 -0
- package/dist/DboBuilder/getCondition.js.map +1 -0
- package/dist/DboBuilder/insert.d.ts.map +1 -1
- package/dist/DboBuilder/insert.js +2 -2
- package/dist/DboBuilder/insert.js.map +1 -1
- package/dist/DboBuilder/subscribe.d.ts.map +1 -1
- package/dist/DboBuilder/subscribe.js +1 -1
- package/dist/DboBuilder/subscribe.js.map +1 -1
- package/dist/DboBuilder/update.d.ts.map +1 -1
- package/dist/DboBuilder/update.js +2 -2
- package/dist/DboBuilder/update.js.map +1 -1
- package/dist/DboBuilder.d.ts +2 -4
- package/dist/DboBuilder.d.ts.map +1 -1
- package/dist/DboBuilder.js +3 -4
- package/dist/DboBuilder.js.map +1 -1
- package/dist/Filtering.d.ts.map +1 -1
- package/dist/Filtering.js +94 -73
- package/dist/Filtering.js.map +1 -1
- package/dist/PubSubManager/initPubSubManager.d.ts.map +1 -1
- package/dist/PubSubManager/initPubSubManager.js +10 -2
- package/dist/PubSubManager/initPubSubManager.js.map +1 -1
- package/dist/PublishParser.d.ts.map +1 -1
- package/dist/PublishParser.js +8 -3
- package/dist/PublishParser.js.map +1 -1
- package/lib/DboBuilder/QueryBuilder/Functions.d.ts.map +1 -1
- package/lib/DboBuilder/QueryBuilder/Functions.js +18 -0
- package/lib/DboBuilder/QueryBuilder/Functions.ts +23 -0
- package/lib/DboBuilder/TableHandler.d.ts.map +1 -1
- package/lib/DboBuilder/TableHandler.js +1 -1
- package/lib/DboBuilder/TableHandler.ts +2 -2
- package/lib/DboBuilder/ViewHandler.d.ts +1 -14
- package/lib/DboBuilder/ViewHandler.d.ts.map +1 -1
- package/lib/DboBuilder/ViewHandler.js +5 -207
- package/lib/DboBuilder/ViewHandler.ts +9 -248
- package/lib/DboBuilder/delete.d.ts.map +1 -1
- package/lib/DboBuilder/delete.js +1 -1
- package/lib/DboBuilder/delete.ts +2 -2
- package/lib/DboBuilder/getCondition.d.ts +19 -0
- package/lib/DboBuilder/getCondition.d.ts.map +1 -0
- package/lib/DboBuilder/getCondition.js +235 -0
- package/lib/DboBuilder/getCondition.ts +279 -0
- package/lib/DboBuilder/insert.d.ts.map +1 -1
- package/lib/DboBuilder/insert.js +2 -2
- package/lib/DboBuilder/insert.ts +3 -3
- package/lib/DboBuilder/subscribe.d.ts.map +1 -1
- package/lib/DboBuilder/subscribe.js +1 -1
- package/lib/DboBuilder/subscribe.ts +2 -2
- package/lib/DboBuilder/update.d.ts.map +1 -1
- package/lib/DboBuilder/update.js +2 -2
- package/lib/DboBuilder/update.ts +3 -3
- package/lib/DboBuilder.d.ts +2 -4
- package/lib/DboBuilder.d.ts.map +1 -1
- package/lib/DboBuilder.js +3 -4
- package/lib/DboBuilder.ts +5 -13
- package/lib/Filtering.d.ts.map +1 -1
- package/lib/Filtering.js +94 -73
- package/lib/Filtering.ts +104 -79
- package/lib/PubSubManager/initPubSubManager.d.ts.map +1 -1
- package/lib/PubSubManager/initPubSubManager.js +10 -2
- package/lib/PubSubManager/initPubSubManager.ts +11 -2
- package/lib/PublishParser.d.ts.map +1 -1
- package/lib/PublishParser.js +8 -3
- package/lib/PublishParser.ts +10 -4
- package/package.json +4 -4
- package/tests/client/PID.txt +1 -1
- package/tests/server/package-lock.json +7 -7
package/lib/Filtering.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { SelectItem } from "./DboBuilder/QueryBuilder/QueryBuilder";
|
|
|
4
4
|
import {
|
|
5
5
|
isEmpty, getKeys, FullFilter, EXISTS_KEYS, FilterDataType,
|
|
6
6
|
GeomFilterKeys, GeomFilter_Funcs,
|
|
7
|
-
TextFilter_FullTextSearchFilterKeys, CompareFilterKeys, isObject
|
|
7
|
+
TextFilter_FullTextSearchFilterKeys, CompareFilterKeys, isObject, TextFilterKeys, JsonbFilterKeys, CompareInFilterKeys
|
|
8
8
|
} from "prostgles-types";
|
|
9
9
|
import { isPlainObject } from "./DboBuilder";
|
|
10
10
|
|
|
@@ -19,13 +19,17 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
|
|
|
19
19
|
if(!_f || isEmpty(_f)) return "";
|
|
20
20
|
|
|
21
21
|
const mErr = (msg: string) => {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
throw `${msg}: ${JSON.stringify(_f, null, 2)}`
|
|
23
|
+
};
|
|
24
|
+
const asValue = (v: any) => pgp.as.format("$1", [v]);
|
|
25
25
|
|
|
26
26
|
const fKeys = getKeys(_f)
|
|
27
27
|
if(fKeys.length === 0){
|
|
28
|
-
|
|
28
|
+
return "";
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* { field1: cond1, field2: cond2 }
|
|
32
|
+
*/
|
|
29
33
|
} else if(fKeys.length > 1){
|
|
30
34
|
return fKeys.map(fk => parseFilterItem({
|
|
31
35
|
filter: { [fk]: _f[fk] },
|
|
@@ -58,20 +62,21 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
|
|
|
58
62
|
*/
|
|
59
63
|
let leftQ: string | undefined;// = asName(selItem.alias);
|
|
60
64
|
|
|
61
|
-
/*
|
|
65
|
+
/*
|
|
66
|
+
Select item not found.
|
|
67
|
+
Check if dot/json notation. Build obj if necessary
|
|
68
|
+
*/
|
|
62
69
|
const dot_notation_delims = ["->", "."];
|
|
63
70
|
if(!selItem){
|
|
64
71
|
|
|
65
72
|
/* See if dot notation. Pick the best matching starting string */
|
|
66
73
|
if(select){
|
|
67
74
|
selItem = select.find(s =>
|
|
68
|
-
fKey.startsWith(s.alias
|
|
69
|
-
dot_notation_delims.find(dn => fKey.slice(s.alias.length).startsWith(dn))
|
|
75
|
+
dot_notation_delims.find(delimiter => fKey.startsWith(s.alias + delimiter))
|
|
70
76
|
);
|
|
71
77
|
}
|
|
72
78
|
if(!selItem) {
|
|
73
|
-
mErr("Bad filter. Could not match to a column or alias: ");
|
|
74
|
-
throw " "
|
|
79
|
+
return mErr("Bad filter. Could not match to a column or alias or dot notation: ");
|
|
75
80
|
}
|
|
76
81
|
|
|
77
82
|
let remainingStr = fKey.slice(selItem.alias.length);
|
|
@@ -174,7 +179,7 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
|
|
|
174
179
|
if(!leftQ) mErr("Internal error: leftQ missing?!");
|
|
175
180
|
|
|
176
181
|
/* Matching sel item */
|
|
177
|
-
if(isPlainObject(rightF)
|
|
182
|
+
if(isPlainObject(rightF)){
|
|
178
183
|
const parseRightVal = (val: any, expect: "csv" | "array" | null = null) => {
|
|
179
184
|
const checkIfArr = () => {
|
|
180
185
|
if(!Array.isArray(val)) return mErr("This type of filter/column expects an Array of items");
|
|
@@ -192,128 +197,148 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
|
|
|
192
197
|
return asValue(val);
|
|
193
198
|
}
|
|
194
199
|
|
|
200
|
+
const OPERANDS = [
|
|
201
|
+
...TextFilterKeys,
|
|
202
|
+
...JsonbFilterKeys,
|
|
203
|
+
...CompareFilterKeys,
|
|
204
|
+
...CompareInFilterKeys
|
|
205
|
+
] as const;
|
|
206
|
+
|
|
195
207
|
const filterKeys = Object.keys(rightF);
|
|
196
|
-
|
|
197
|
-
|
|
208
|
+
const filterOperand: typeof OPERANDS[number] = filterKeys[0] as any;
|
|
209
|
+
|
|
210
|
+
/** JSON cannot be compared so we'll cast it to TEXT */
|
|
211
|
+
if(selItem?.column_udt_type === "json" || TextFilterKeys.includes(filterOperand as any)){
|
|
212
|
+
leftQ += "::TEXT "
|
|
198
213
|
}
|
|
199
214
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
215
|
+
/** It's an object key which means it's an equality comparison against a json object */
|
|
216
|
+
if(selItem?.column_udt_type?.startsWith("json") && !OPERANDS.includes(filterOperand)){
|
|
217
|
+
return leftQ + " = " + parseRightVal(rightF);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
if(filterKeys.length !== 1 && selItem.column_udt_type !== "jsonb") {
|
|
221
|
+
return mErr("Bad filter. Expecting one key only");
|
|
222
|
+
}
|
|
204
223
|
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
224
|
+
const filterValue = rightF[filterOperand];
|
|
225
|
+
const ALLOWED_FUNCS = [ ...GeomFilter_Funcs, ...TextFilter_FullTextSearchFilterKeys] as const;
|
|
226
|
+
let funcName: undefined | typeof ALLOWED_FUNCS[number];
|
|
227
|
+
let funcArgs: any[] | undefined;
|
|
228
|
+
|
|
229
|
+
/**
|
|
230
|
+
* Filter notation
|
|
231
|
+
* geom && st_makeenvelope(funcArgs)
|
|
232
|
+
*/
|
|
233
|
+
if(isObject(filterValue) && selItem.column_udt_type !== "jsonb"){
|
|
234
|
+
const filterValueKeys = Object.keys(filterValue);
|
|
235
|
+
if(!filterValueKeys.length || filterValueKeys.length !== 1){
|
|
208
236
|
return mErr("Bad filter. Expecting a nested object with one key only ");
|
|
209
237
|
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
238
|
+
funcName = filterValueKeys[0] as any;
|
|
239
|
+
funcArgs = filterValue[funcName as any];
|
|
240
|
+
if(!ALLOWED_FUNCS.includes(funcName as any)){
|
|
241
|
+
return mErr(`Bad filter. Nested function ${funcName} could not be found. Expecting one of: ${ALLOWED_FUNCS}`);
|
|
242
|
+
}
|
|
213
243
|
}
|
|
214
244
|
// console.log({ fOpType, fVal, sOpType })
|
|
215
245
|
|
|
216
|
-
/** JSON cannot be compared so we'll cast it to TEXT */
|
|
217
|
-
if(selItem?.column_udt_type === "json" || ["$ilike", "$like", "$nilike", "$nlike"].includes(fOpType)){
|
|
218
|
-
leftQ += "::TEXT "
|
|
219
|
-
}
|
|
220
|
-
|
|
221
246
|
/** st_makeenvelope */
|
|
222
|
-
if(GeomFilterKeys.includes(
|
|
247
|
+
if(GeomFilterKeys.includes(filterOperand as any) && funcName && GeomFilter_Funcs.includes(funcName as any)){
|
|
223
248
|
/** If leftQ is geography then this err can happen: 'Antipodal (180 degrees long) edge detected!' */
|
|
224
|
-
if(
|
|
225
|
-
|
|
249
|
+
if(funcName.toLowerCase() === "st_makeenvelope") {
|
|
250
|
+
leftQ += "::geometry";
|
|
251
|
+
}
|
|
252
|
+
return `${leftQ} ${filterOperand} ${funcName}${parseRightVal(funcArgs, "csv")}`;
|
|
226
253
|
|
|
227
|
-
} else if(["=", "$eq"].includes(
|
|
228
|
-
if(
|
|
229
|
-
return leftQ + " = " + parseRightVal(
|
|
254
|
+
} else if(["=", "$eq"].includes(filterOperand) && !funcName){
|
|
255
|
+
if(filterValue === null) return leftQ + " IS NULL ";
|
|
256
|
+
return leftQ + " = " + parseRightVal(filterValue);
|
|
230
257
|
|
|
231
|
-
} else if(["<>", "$ne"].includes(
|
|
232
|
-
if(
|
|
233
|
-
return leftQ + " <> " + parseRightVal(
|
|
258
|
+
} else if(["<>", "$ne"].includes(filterOperand)){
|
|
259
|
+
if(filterValue === null) return leftQ + " IS NOT NULL ";
|
|
260
|
+
return leftQ + " <> " + parseRightVal(filterValue);
|
|
234
261
|
|
|
235
|
-
} else if([">", "$gt"].includes(
|
|
236
|
-
return leftQ + " > " + parseRightVal(
|
|
262
|
+
} else if([">", "$gt"].includes(filterOperand)){
|
|
263
|
+
return leftQ + " > " + parseRightVal(filterValue);
|
|
237
264
|
|
|
238
|
-
} else if(["<", "$lt"].includes(
|
|
239
|
-
return leftQ + " < " + parseRightVal(
|
|
265
|
+
} else if(["<", "$lt"].includes(filterOperand)){
|
|
266
|
+
return leftQ + " < " + parseRightVal(filterValue);
|
|
240
267
|
|
|
241
|
-
} else if([">=", "$gte"].includes(
|
|
242
|
-
return leftQ + " >= " + parseRightVal(
|
|
268
|
+
} else if([">=", "$gte"].includes(filterOperand)){
|
|
269
|
+
return leftQ + " >= " + parseRightVal(filterValue);
|
|
243
270
|
|
|
244
|
-
} else if(["<=", "$lte"].includes(
|
|
245
|
-
return leftQ + " <= " + parseRightVal(
|
|
271
|
+
} else if(["<=", "$lte"].includes(filterOperand)){
|
|
272
|
+
return leftQ + " <= " + parseRightVal(filterValue);
|
|
246
273
|
|
|
247
|
-
} else if(["$in"].includes(
|
|
248
|
-
if(!
|
|
274
|
+
} else if(["$in"].includes(filterOperand)){
|
|
275
|
+
if(!filterValue?.length) {
|
|
249
276
|
return " FALSE ";
|
|
250
277
|
}
|
|
251
278
|
|
|
252
|
-
let _fVal: any[] =
|
|
279
|
+
let _fVal: any[] = filterValue.filter((v: any) => v !== null);
|
|
253
280
|
let c1 = "", c2 = "";
|
|
254
|
-
if(_fVal.length)
|
|
255
|
-
|
|
281
|
+
if(_fVal.length) {
|
|
282
|
+
c1 = leftQ + " IN " + parseRightVal(_fVal, "csv");
|
|
283
|
+
}
|
|
284
|
+
if(filterValue.includes(null)) c2 = ` ${leftQ} IS NULL `;
|
|
256
285
|
return [c1, c2].filter(c => c).join(" OR ");
|
|
257
286
|
|
|
258
|
-
} else if(["$nin"].includes(
|
|
259
|
-
if(!
|
|
287
|
+
} else if(["$nin"].includes(filterOperand)){
|
|
288
|
+
if(!filterValue?.length) {
|
|
260
289
|
return " TRUE ";
|
|
261
290
|
}
|
|
262
291
|
|
|
263
|
-
let _fVal: any[] =
|
|
292
|
+
let _fVal: any[] = filterValue.filter((v: any) => v !== null);
|
|
264
293
|
let c1 = "", c2 = "";
|
|
265
294
|
if(_fVal.length) c1 = leftQ + " NOT IN " + parseRightVal(_fVal, "csv");
|
|
266
|
-
if(
|
|
295
|
+
if(filterValue.includes(null)) c2 = ` ${leftQ} IS NOT NULL `;
|
|
267
296
|
return [c1, c2].filter(c => c).join(" AND ");
|
|
268
297
|
|
|
269
|
-
} else if(["$between"].includes(
|
|
270
|
-
if(!Array.isArray(
|
|
298
|
+
} else if(["$between"].includes(filterOperand)){
|
|
299
|
+
if(!Array.isArray(filterValue) || filterValue.length !== 2){
|
|
271
300
|
return mErr("Between filter expects an array of two values");
|
|
272
301
|
}
|
|
273
|
-
return leftQ + " BETWEEN " + asValue(
|
|
302
|
+
return leftQ + " BETWEEN " + asValue(filterValue[0]) + " AND " + asValue(filterValue[1]);
|
|
274
303
|
|
|
275
|
-
} else if(["$ilike"].includes(
|
|
276
|
-
return leftQ + " ILIKE " + asValue(
|
|
304
|
+
} else if(["$ilike"].includes(filterOperand)){
|
|
305
|
+
return leftQ + " ILIKE " + asValue(filterValue);
|
|
277
306
|
|
|
278
|
-
} else if(["$like"].includes(
|
|
279
|
-
return leftQ + " LIKE " + asValue(
|
|
307
|
+
} else if(["$like"].includes(filterOperand)){
|
|
308
|
+
return leftQ + " LIKE " + asValue(filterValue);
|
|
280
309
|
|
|
281
|
-
} else if(["$nilike"].includes(
|
|
282
|
-
return leftQ + " NOT ILIKE " + asValue(
|
|
310
|
+
} else if(["$nilike"].includes(filterOperand)){
|
|
311
|
+
return leftQ + " NOT ILIKE " + asValue(filterValue);
|
|
283
312
|
|
|
284
|
-
} else if(["$nlike"].includes(
|
|
285
|
-
return leftQ + " NOT LIKE " + asValue(
|
|
313
|
+
} else if(["$nlike"].includes(filterOperand)){
|
|
314
|
+
return leftQ + " NOT LIKE " + asValue(filterValue);
|
|
286
315
|
|
|
287
316
|
/* MAYBE TEXT OR MAYBE ARRAY */
|
|
288
|
-
} else if(["@>", "<@", "$contains", "$containedBy", "&&", "@@"].includes(
|
|
289
|
-
let operand =
|
|
290
|
-
["@>", "$contains"].includes(
|
|
291
|
-
["&&"].includes(
|
|
317
|
+
} else if(["@>", "<@", "$contains", "$containedBy", "&&", "@@"].includes(filterOperand)){
|
|
318
|
+
let operand = filterOperand === "@@"? "@@":
|
|
319
|
+
["@>", "$contains"].includes(filterOperand)? "@>" :
|
|
320
|
+
["&&"].includes(filterOperand)? "&&" :
|
|
292
321
|
"<@";
|
|
293
322
|
|
|
294
323
|
/* Array for sure */
|
|
295
|
-
if(Array.isArray(
|
|
296
|
-
return leftQ + operand + parseRightVal(
|
|
324
|
+
if(Array.isArray(filterValue)){
|
|
325
|
+
return leftQ + operand + parseRightVal(filterValue, "array");
|
|
297
326
|
|
|
298
327
|
/* FTSQuery */
|
|
299
|
-
} else if(["@@"].includes(
|
|
328
|
+
} else if(["@@"].includes(filterOperand) && TextFilter_FullTextSearchFilterKeys.includes(funcName! as any)) {
|
|
300
329
|
let lq = `to_tsvector(${leftQ}::text)`;
|
|
301
330
|
if(selItem && selItem.columnPGDataType === "tsvector") lq = leftQ!;
|
|
302
331
|
|
|
303
|
-
let res = `${lq} ${operand} ` + `${
|
|
332
|
+
let res = `${lq} ${operand} ` + `${funcName}${parseRightVal(funcArgs, "csv")}`;
|
|
304
333
|
|
|
305
334
|
return res;
|
|
306
335
|
} else {
|
|
307
|
-
return mErr("Unrecognised filter operand: " +
|
|
336
|
+
return mErr("Unrecognised filter operand: " + filterOperand + " ");
|
|
308
337
|
}
|
|
309
338
|
|
|
310
339
|
} else {
|
|
311
|
-
/** Maybe it's an object key which means it's an equality comparison against a json object */
|
|
312
|
-
if(selItem?.column_udt_type?.startsWith("json")){
|
|
313
|
-
return leftQ + " = " + parseRightVal(rightF);
|
|
314
|
-
}
|
|
315
340
|
|
|
316
|
-
return mErr("Unrecognised filter operand: " +
|
|
341
|
+
return mErr("Unrecognised filter operand: " + filterOperand + " ");
|
|
317
342
|
}
|
|
318
343
|
|
|
319
344
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initPubSubManager.d.ts","sourceRoot":"","sources":["initPubSubManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAG9D,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"initPubSubManager.d.ts","sourceRoot":"","sources":["initPubSubManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAgB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAG9D,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CA0oB/F"}
|
|
@@ -7,6 +7,7 @@ const REALTIME_TRIGGER_CHECK_QUERY = "prostgles-server internal query used to ma
|
|
|
7
7
|
async function initPubSubManager() {
|
|
8
8
|
if (!this.canContinue())
|
|
9
9
|
return undefined;
|
|
10
|
+
let tries = 5;
|
|
10
11
|
try {
|
|
11
12
|
const schema_version = 10;
|
|
12
13
|
const initQuery = `
|
|
@@ -605,13 +606,20 @@ async function initPubSubManager() {
|
|
|
605
606
|
END $$;
|
|
606
607
|
`;
|
|
607
608
|
await this.db.any(appQ);
|
|
609
|
+
tries = 5;
|
|
608
610
|
(0, PubSubManager_1.log)("updated last_check");
|
|
609
611
|
}
|
|
610
612
|
catch (e) {
|
|
613
|
+
tries--;
|
|
611
614
|
/** In some cases a query idles and blocks everything else. Terminate all similar queries */
|
|
612
615
|
this.db.any("SELECT state, pg_terminate_backend(pid) from pg_stat_activity WHERE query ilike ${qid} and pid <> pg_backend_pid();", { qid: "%" + REALTIME_TRIGGER_CHECK_QUERY + "%" });
|
|
613
|
-
/** If
|
|
614
|
-
|
|
616
|
+
/** If no tries left
|
|
617
|
+
* OR
|
|
618
|
+
* If this database was dropped
|
|
619
|
+
*
|
|
620
|
+
* then stop interval
|
|
621
|
+
* */
|
|
622
|
+
if (tries <= 0 || e?.code === "3D000") { // && e.message.includes(this.db.$cn.database)
|
|
615
623
|
clearInterval(this.appCheck);
|
|
616
624
|
}
|
|
617
625
|
console.error("appCheck FAILED: \n", e, appQ);
|
|
@@ -5,6 +5,7 @@ const REALTIME_TRIGGER_CHECK_QUERY = "prostgles-server internal query used to ma
|
|
|
5
5
|
export async function initPubSubManager(this: PubSubManager): Promise<PubSubManager | undefined> {
|
|
6
6
|
if (!this.canContinue()) return undefined;
|
|
7
7
|
|
|
8
|
+
let tries = 5;
|
|
8
9
|
try {
|
|
9
10
|
const schema_version = 10;
|
|
10
11
|
|
|
@@ -617,13 +618,21 @@ export async function initPubSubManager(this: PubSubManager): Promise<PubSubMana
|
|
|
617
618
|
END $$;
|
|
618
619
|
`
|
|
619
620
|
await this.db.any(appQ);
|
|
621
|
+
tries = 5;
|
|
620
622
|
log("updated last_check");
|
|
621
623
|
} catch (e: any) {
|
|
624
|
+
tries --;
|
|
625
|
+
|
|
622
626
|
/** In some cases a query idles and blocks everything else. Terminate all similar queries */
|
|
623
627
|
this.db.any("SELECT state, pg_terminate_backend(pid) from pg_stat_activity WHERE query ilike ${qid} and pid <> pg_backend_pid();", { qid: "%" + REALTIME_TRIGGER_CHECK_QUERY + "%" });
|
|
624
628
|
|
|
625
|
-
/** If
|
|
626
|
-
|
|
629
|
+
/** If no tries left
|
|
630
|
+
* OR
|
|
631
|
+
* If this database was dropped
|
|
632
|
+
*
|
|
633
|
+
* then stop interval
|
|
634
|
+
* */
|
|
635
|
+
if(tries <= 0 || e?.code === "3D000"){ // && e.message.includes(this.db.$cn.database)
|
|
627
636
|
clearInterval(this.appCheck);
|
|
628
637
|
}
|
|
629
638
|
console.error("appCheck FAILED: \n", e, appQ);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PublishParser.d.ts","sourceRoot":"","sources":["PublishParser.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"PublishParser.d.ts","sourceRoot":"","sources":["PublishParser.ts"],"names":[],"mappings":"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"}
|
package/lib/PublishParser.js
CHANGED
|
@@ -199,9 +199,11 @@ class PublishParser {
|
|
|
199
199
|
let parsed_table = {};
|
|
200
200
|
/* Get view or table specific rules */
|
|
201
201
|
const tHandler = this.dbo[tableName];
|
|
202
|
-
if (!tHandler)
|
|
203
|
-
throw { stack: ["getTableRules()"], message: `${tableName} could not be found in dbo` };
|
|
204
202
|
const is_view = tHandler.is_view;
|
|
203
|
+
const canSubscribe = (!is_view || tHandler.columns.some(c => c.references));
|
|
204
|
+
if (!tHandler) {
|
|
205
|
+
throw { stack: ["getTableRules()"], message: `${tableName} could not be found in dbo` };
|
|
206
|
+
}
|
|
205
207
|
const MY_RULES = RULE_TO_METHODS.filter(r => {
|
|
206
208
|
/** Check PG User privileges */
|
|
207
209
|
const pgUserIsAllowedThis = tHandler.tableOrViewInfo.privileges[r.sqlRule];
|
|
@@ -215,6 +217,9 @@ class PublishParser {
|
|
|
215
217
|
throw `Cannot publish realtime rule ${tableName}.${r.rule}. Superuser is required for this`;
|
|
216
218
|
}
|
|
217
219
|
}
|
|
220
|
+
if (r.rule === "subscribe" && !canSubscribe) {
|
|
221
|
+
result = false;
|
|
222
|
+
}
|
|
218
223
|
return result;
|
|
219
224
|
});
|
|
220
225
|
/* All methods allowed. Add no limits for table rules */
|
|
@@ -279,7 +284,7 @@ class PublishParser {
|
|
|
279
284
|
const subKey = "subscribe";
|
|
280
285
|
if (method === "select" && !dissallowedRuleKeys.includes(subKey)) {
|
|
281
286
|
const sr = MY_RULES.find(r => r.rule === subKey);
|
|
282
|
-
if (sr &&
|
|
287
|
+
if (sr && canSubscribe) {
|
|
283
288
|
parsed_table[subKey] = { ...sr.no_limits };
|
|
284
289
|
parsed_table.subscribeOne = { ...sr.no_limits };
|
|
285
290
|
}
|
package/lib/PublishParser.ts
CHANGED
|
@@ -507,10 +507,12 @@ export class PublishParser {
|
|
|
507
507
|
|
|
508
508
|
/* Get view or table specific rules */
|
|
509
509
|
const tHandler = (this.dbo[tableName] as TableHandler | ViewHandler);
|
|
510
|
-
|
|
511
|
-
if (!tHandler) throw { stack: ["getTableRules()"], message: `${tableName} could not be found in dbo` };
|
|
512
|
-
|
|
513
510
|
const is_view = tHandler.is_view;
|
|
511
|
+
const canSubscribe = (!is_view || tHandler.columns.some(c => c.references));
|
|
512
|
+
if (!tHandler) {
|
|
513
|
+
throw { stack: ["getTableRules()"], message: `${tableName} could not be found in dbo` };
|
|
514
|
+
}
|
|
515
|
+
|
|
514
516
|
const MY_RULES = RULE_TO_METHODS.filter(r => {
|
|
515
517
|
|
|
516
518
|
/** Check PG User privileges */
|
|
@@ -528,6 +530,10 @@ export class PublishParser {
|
|
|
528
530
|
}
|
|
529
531
|
}
|
|
530
532
|
|
|
533
|
+
if(r.rule === "subscribe" && !canSubscribe){
|
|
534
|
+
result = false;
|
|
535
|
+
}
|
|
536
|
+
|
|
531
537
|
return result;
|
|
532
538
|
});
|
|
533
539
|
|
|
@@ -605,7 +611,7 @@ export class PublishParser {
|
|
|
605
611
|
|
|
606
612
|
if (method === "select" && !dissallowedRuleKeys.includes(subKey)) {
|
|
607
613
|
const sr = MY_RULES.find(r => r.rule === subKey);
|
|
608
|
-
if (sr &&
|
|
614
|
+
if (sr && canSubscribe) {
|
|
609
615
|
parsed_table[subKey] = { ...sr.no_limits as SubscribeRule };
|
|
610
616
|
parsed_table.subscribeOne = { ...sr.no_limits as SubscribeRule };
|
|
611
617
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prostgles-server",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.79",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -31,15 +31,15 @@
|
|
|
31
31
|
],
|
|
32
32
|
"homepage": "https://prostgles.com",
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@aws-sdk/client-s3": "^3.
|
|
34
|
+
"@aws-sdk/client-s3": "^3.272.0",
|
|
35
35
|
"@types/express": "^4.17.13",
|
|
36
|
-
"aws-sdk": "^2.
|
|
36
|
+
"aws-sdk": "^2.1318.0",
|
|
37
37
|
"bluebird": "^3.7.2",
|
|
38
38
|
"check-disk-space": "^3.3.1",
|
|
39
39
|
"file-type": "^17.1.4",
|
|
40
40
|
"g": "^2.0.1",
|
|
41
41
|
"pg-promise": "^10.11.1",
|
|
42
|
-
"prostgles-types": "^3.0.
|
|
42
|
+
"prostgles-types": "^3.0.20",
|
|
43
43
|
"sharp": "^0.31.0",
|
|
44
44
|
"typescript": "^4.9.5"
|
|
45
45
|
},
|
package/tests/client/PID.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
124772
|
|
@@ -21,18 +21,18 @@
|
|
|
21
21
|
},
|
|
22
22
|
"../..": {
|
|
23
23
|
"name": "prostgles-server",
|
|
24
|
-
"version": "3.0.
|
|
24
|
+
"version": "3.0.78",
|
|
25
25
|
"license": "MIT",
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@aws-sdk/client-s3": "^3.
|
|
27
|
+
"@aws-sdk/client-s3": "^3.272.0",
|
|
28
28
|
"@types/express": "^4.17.13",
|
|
29
|
-
"aws-sdk": "^2.
|
|
29
|
+
"aws-sdk": "^2.1318.0",
|
|
30
30
|
"bluebird": "^3.7.2",
|
|
31
31
|
"check-disk-space": "^3.3.1",
|
|
32
32
|
"file-type": "^17.1.4",
|
|
33
33
|
"g": "^2.0.1",
|
|
34
34
|
"pg-promise": "^10.11.1",
|
|
35
|
-
"prostgles-types": "^3.0.
|
|
35
|
+
"prostgles-types": "^3.0.20",
|
|
36
36
|
"sharp": "^0.31.0",
|
|
37
37
|
"typescript": "^4.9.5"
|
|
38
38
|
},
|
|
@@ -1500,19 +1500,19 @@
|
|
|
1500
1500
|
"prostgles-server": {
|
|
1501
1501
|
"version": "file:../..",
|
|
1502
1502
|
"requires": {
|
|
1503
|
-
"@aws-sdk/client-s3": "^3.
|
|
1503
|
+
"@aws-sdk/client-s3": "^3.272.0",
|
|
1504
1504
|
"@aws-sdk/types": "^3.110.0",
|
|
1505
1505
|
"@types/bluebird": "^3.5.36",
|
|
1506
1506
|
"@types/express": "^4.17.13",
|
|
1507
1507
|
"@types/node": "^18.0.3",
|
|
1508
1508
|
"@types/sharp": "^0.30.4",
|
|
1509
|
-
"aws-sdk": "^2.
|
|
1509
|
+
"aws-sdk": "^2.1318.0",
|
|
1510
1510
|
"bluebird": "^3.7.2",
|
|
1511
1511
|
"check-disk-space": "^3.3.1",
|
|
1512
1512
|
"file-type": "^17.1.4",
|
|
1513
1513
|
"g": "^2.0.1",
|
|
1514
1514
|
"pg-promise": "^10.11.1",
|
|
1515
|
-
"prostgles-types": "^3.0.
|
|
1515
|
+
"prostgles-types": "^3.0.20",
|
|
1516
1516
|
"sharp": "^0.31.0",
|
|
1517
1517
|
"typescript": "^4.9.5"
|
|
1518
1518
|
}
|