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/DboBuilder.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as pgPromise from 'pg-promise';
|
|
2
2
|
import pg = require('pg-promise/typescript/pg-subset');
|
|
3
|
-
import { ColumnInfo, SQLOptions, DbJoinMaker, PG_COLUMN_UDT_DATA_TYPE, TS_PG_Types, TableInfo as TInfo, SQLHandler, AnyObject, ProstglesError } from "prostgles-types";
|
|
3
|
+
import { ColumnInfo, SQLOptions, DbJoinMaker, PG_COLUMN_UDT_DATA_TYPE, TS_PG_Types, TableInfo as TInfo, SQLHandler, AnyObject, ProstglesError, EXISTS_KEY } from "prostgles-types";
|
|
4
4
|
export declare type SortItem = {
|
|
5
5
|
asc: boolean;
|
|
6
6
|
nulls?: "first" | "last";
|
|
@@ -181,9 +181,7 @@ export declare type ValidatedTableRules = CommonTableRules & {
|
|
|
181
181
|
returningFields: string[];
|
|
182
182
|
};
|
|
183
183
|
};
|
|
184
|
-
export declare function
|
|
185
|
-
export declare const EXISTS_KEYS: readonly ["$exists", "$notExists", "$existsJoined", "$notExistsJoined"];
|
|
186
|
-
export declare type EXISTS_KEY = typeof EXISTS_KEYS[number];
|
|
184
|
+
export declare function makeErrorFromPGError(err: any, localParams?: LocalParams, view?: ViewHandler, allowedKeys?: string[]): Promise<never>;
|
|
187
185
|
/**
|
|
188
186
|
* Ensure the error is an Object and has
|
|
189
187
|
*/
|
package/lib/DboBuilder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DboBuilder.d.ts","sourceRoot":"","sources":["DboBuilder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DboBuilder.d.ts","sourceRoot":"","sources":["DboBuilder.ts"],"names":[],"mappings":"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"}
|
package/lib/DboBuilder.js
CHANGED
|
@@ -27,7 +27,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
27
27
|
return result;
|
|
28
28
|
};
|
|
29
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
exports.canEXECUTE = exports.prepareSort = exports.postgresToTsType = exports.isPlainObject = exports.DboBuilder = exports.parseError = exports.
|
|
30
|
+
exports.canEXECUTE = exports.prepareSort = exports.postgresToTsType = exports.isPlainObject = exports.DboBuilder = exports.parseError = exports.makeErrorFromPGError = exports.escapeTSNames = exports.pgp = void 0;
|
|
31
31
|
const Bluebird = __importStar(require("bluebird"));
|
|
32
32
|
const pgPromise = __importStar(require("pg-promise"));
|
|
33
33
|
const runSQL_1 = require("./DboBuilder/runSQL");
|
|
@@ -86,7 +86,7 @@ function escapeTSNames(str, capitalize = false) {
|
|
|
86
86
|
exports.escapeTSNames = escapeTSNames;
|
|
87
87
|
const shortestPath_1 = require("./shortestPath");
|
|
88
88
|
/* DEBUG CLIENT ERRORS HERE */
|
|
89
|
-
function
|
|
89
|
+
function makeErrorFromPGError(err, localParams, view, allowedKeys) {
|
|
90
90
|
// console.trace(err)
|
|
91
91
|
if (process.env.TEST_TYPE || process.env.PRGL_DEBUG) {
|
|
92
92
|
console.trace(err);
|
|
@@ -111,8 +111,7 @@ function makeErr(err, localParams, view, allowedKeys) {
|
|
|
111
111
|
}
|
|
112
112
|
return Promise.reject(errObject);
|
|
113
113
|
}
|
|
114
|
-
exports.
|
|
115
|
-
exports.EXISTS_KEYS = ["$exists", "$notExists", "$existsJoined", "$notExistsJoined"];
|
|
114
|
+
exports.makeErrorFromPGError = makeErrorFromPGError;
|
|
116
115
|
/**
|
|
117
116
|
* Ensure the error is an Object and has
|
|
118
117
|
*/
|
package/lib/DboBuilder.ts
CHANGED
|
@@ -4,19 +4,14 @@
|
|
|
4
4
|
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
|
5
5
|
*--------------------------------------------------------------------------------------------*/
|
|
6
6
|
|
|
7
|
-
import * as Bluebird from "bluebird";
|
|
8
|
-
import { makeSelectQuery } from "./DboBuilder/QueryBuilder/makeSelectQuery"
|
|
7
|
+
import * as Bluebird from "bluebird";
|
|
9
8
|
|
|
10
9
|
import * as pgPromise from 'pg-promise';
|
|
11
10
|
import { canRunSQL, runSQL } from "./DboBuilder/runSQL";
|
|
12
11
|
import pg = require('pg-promise/typescript/pg-subset');
|
|
13
12
|
import {
|
|
14
|
-
ColumnInfo,
|
|
15
|
-
|
|
16
|
-
DbJoinMaker,
|
|
17
|
-
unpatchText,
|
|
18
|
-
isEmpty,
|
|
19
|
-
asName,
|
|
13
|
+
ColumnInfo, SQLOptions,
|
|
14
|
+
DbJoinMaker,
|
|
20
15
|
PG_COLUMN_UDT_DATA_TYPE,
|
|
21
16
|
TS_PG_Types,
|
|
22
17
|
TableInfo as TInfo,
|
|
@@ -25,7 +20,7 @@ import {
|
|
|
25
20
|
SQLResult,
|
|
26
21
|
Select,
|
|
27
22
|
JoinMaker,
|
|
28
|
-
isObject, isDefined, getKeys, ProstglesError, _PG_geometric
|
|
23
|
+
isObject, isDefined, getKeys, ProstglesError, _PG_geometric, EXISTS_KEY
|
|
29
24
|
} from "prostgles-types";
|
|
30
25
|
|
|
31
26
|
export type SortItem = {
|
|
@@ -340,7 +335,7 @@ export type ValidatedTableRules = CommonTableRules & {
|
|
|
340
335
|
}
|
|
341
336
|
|
|
342
337
|
/* DEBUG CLIENT ERRORS HERE */
|
|
343
|
-
export function
|
|
338
|
+
export function makeErrorFromPGError(err: any, localParams?: LocalParams, view?: ViewHandler, allowedKeys?: string[]) {
|
|
344
339
|
// console.trace(err)
|
|
345
340
|
if (process.env.TEST_TYPE || process.env.PRGL_DEBUG) {
|
|
346
341
|
console.trace(err)
|
|
@@ -367,9 +362,6 @@ export function makeErr(err: any, localParams?: LocalParams, view?: ViewHandler,
|
|
|
367
362
|
}
|
|
368
363
|
return Promise.reject(errObject);
|
|
369
364
|
}
|
|
370
|
-
export const EXISTS_KEYS = ["$exists", "$notExists", "$existsJoined", "$notExistsJoined"] as const;
|
|
371
|
-
export type EXISTS_KEY = typeof EXISTS_KEYS[number];
|
|
372
|
-
|
|
373
365
|
|
|
374
366
|
/**
|
|
375
367
|
* Ensure the error is an Object and has
|
package/lib/Filtering.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Filtering.d.ts","sourceRoot":"","sources":["Filtering.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AACpE,OAAO,EACa,UAAU,EAG7B,MAAM,iBAAiB,CAAC;AAGzB;;;EAGE;AACF,aAAK,mBAAmB,GAAG;IAAG,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,CAAC;AACzG,eAAO,MAAM,eAAe,SAAU,mBAAmB,KAAG,
|
|
1
|
+
{"version":3,"file":"Filtering.d.ts","sourceRoot":"","sources":["Filtering.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AACpE,OAAO,EACa,UAAU,EAG7B,MAAM,iBAAiB,CAAC;AAGzB;;;EAGE;AACF,aAAK,mBAAmB,GAAG;IAAG,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,GAAG,CAAA;CAAE,CAAC;AACzG,eAAO,MAAM,eAAe,SAAU,mBAAmB,KAAG,MAkV3D,CAAA"}
|
package/lib/Filtering.js
CHANGED
|
@@ -9,10 +9,14 @@ const parseFilterItem = (args) => {
|
|
|
9
9
|
return "";
|
|
10
10
|
const mErr = (msg) => {
|
|
11
11
|
throw `${msg}: ${JSON.stringify(_f, null, 2)}`;
|
|
12
|
-
}
|
|
12
|
+
};
|
|
13
|
+
const asValue = (v) => pgp.as.format("$1", [v]);
|
|
13
14
|
const fKeys = (0, prostgles_types_1.getKeys)(_f);
|
|
14
15
|
if (fKeys.length === 0) {
|
|
15
16
|
return "";
|
|
17
|
+
/**
|
|
18
|
+
* { field1: cond1, field2: cond2 }
|
|
19
|
+
*/
|
|
16
20
|
}
|
|
17
21
|
else if (fKeys.length > 1) {
|
|
18
22
|
return fKeys.map(fk => (0, exports.parseFilterItem)({
|
|
@@ -42,17 +46,18 @@ const parseFilterItem = (args) => {
|
|
|
42
46
|
* Parsed left side of the query
|
|
43
47
|
*/
|
|
44
48
|
let leftQ; // = asName(selItem.alias);
|
|
45
|
-
/*
|
|
49
|
+
/*
|
|
50
|
+
Select item not found.
|
|
51
|
+
Check if dot/json notation. Build obj if necessary
|
|
52
|
+
*/
|
|
46
53
|
const dot_notation_delims = ["->", "."];
|
|
47
54
|
if (!selItem) {
|
|
48
55
|
/* See if dot notation. Pick the best matching starting string */
|
|
49
56
|
if (select) {
|
|
50
|
-
selItem = select.find(s => fKey.startsWith(s.alias)
|
|
51
|
-
dot_notation_delims.find(dn => fKey.slice(s.alias.length).startsWith(dn)));
|
|
57
|
+
selItem = select.find(s => dot_notation_delims.find(delimiter => fKey.startsWith(s.alias + delimiter)));
|
|
52
58
|
}
|
|
53
59
|
if (!selItem) {
|
|
54
|
-
mErr("Bad filter. Could not match to a column or alias: ");
|
|
55
|
-
throw " ";
|
|
60
|
+
return mErr("Bad filter. Could not match to a column or alias or dot notation: ");
|
|
56
61
|
}
|
|
57
62
|
let remainingStr = fKey.slice(selItem.alias.length);
|
|
58
63
|
/* Is json path spec */
|
|
@@ -135,7 +140,7 @@ const parseFilterItem = (args) => {
|
|
|
135
140
|
if (!leftQ)
|
|
136
141
|
mErr("Internal error: leftQ missing?!");
|
|
137
142
|
/* Matching sel item */
|
|
138
|
-
if ((0, DboBuilder_1.isPlainObject)(rightF)
|
|
143
|
+
if ((0, DboBuilder_1.isPlainObject)(rightF)) {
|
|
139
144
|
const parseRightVal = (val, expect = null) => {
|
|
140
145
|
const checkIfArr = () => {
|
|
141
146
|
if (!Array.isArray(val))
|
|
@@ -151,126 +156,142 @@ const parseFilterItem = (args) => {
|
|
|
151
156
|
}
|
|
152
157
|
return asValue(val);
|
|
153
158
|
};
|
|
159
|
+
const OPERANDS = [
|
|
160
|
+
...prostgles_types_1.TextFilterKeys,
|
|
161
|
+
...prostgles_types_1.JsonbFilterKeys,
|
|
162
|
+
...prostgles_types_1.CompareFilterKeys,
|
|
163
|
+
...prostgles_types_1.CompareInFilterKeys
|
|
164
|
+
];
|
|
154
165
|
const filterKeys = Object.keys(rightF);
|
|
155
|
-
|
|
156
|
-
|
|
166
|
+
const filterOperand = filterKeys[0];
|
|
167
|
+
/** JSON cannot be compared so we'll cast it to TEXT */
|
|
168
|
+
if (selItem?.column_udt_type === "json" || prostgles_types_1.TextFilterKeys.includes(filterOperand)) {
|
|
169
|
+
leftQ += "::TEXT ";
|
|
157
170
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
if (
|
|
163
|
-
|
|
164
|
-
|
|
171
|
+
/** It's an object key which means it's an equality comparison against a json object */
|
|
172
|
+
if (selItem?.column_udt_type?.startsWith("json") && !OPERANDS.includes(filterOperand)) {
|
|
173
|
+
return leftQ + " = " + parseRightVal(rightF);
|
|
174
|
+
}
|
|
175
|
+
if (filterKeys.length !== 1 && selItem.column_udt_type !== "jsonb") {
|
|
176
|
+
return mErr("Bad filter. Expecting one key only");
|
|
177
|
+
}
|
|
178
|
+
const filterValue = rightF[filterOperand];
|
|
179
|
+
const ALLOWED_FUNCS = [...prostgles_types_1.GeomFilter_Funcs, ...prostgles_types_1.TextFilter_FullTextSearchFilterKeys];
|
|
180
|
+
let funcName;
|
|
181
|
+
let funcArgs;
|
|
182
|
+
/**
|
|
183
|
+
* Filter notation
|
|
184
|
+
* geom && st_makeenvelope(funcArgs)
|
|
185
|
+
*/
|
|
186
|
+
if ((0, prostgles_types_1.isObject)(filterValue) && selItem.column_udt_type !== "jsonb") {
|
|
187
|
+
const filterValueKeys = Object.keys(filterValue);
|
|
188
|
+
if (!filterValueKeys.length || filterValueKeys.length !== 1) {
|
|
165
189
|
return mErr("Bad filter. Expecting a nested object with one key only ");
|
|
166
190
|
}
|
|
167
|
-
|
|
168
|
-
|
|
191
|
+
funcName = filterValueKeys[0];
|
|
192
|
+
funcArgs = filterValue[funcName];
|
|
193
|
+
if (!ALLOWED_FUNCS.includes(funcName)) {
|
|
194
|
+
return mErr(`Bad filter. Nested function ${funcName} could not be found. Expecting one of: ${ALLOWED_FUNCS}`);
|
|
195
|
+
}
|
|
169
196
|
}
|
|
170
197
|
// console.log({ fOpType, fVal, sOpType })
|
|
171
|
-
/** JSON cannot be compared so we'll cast it to TEXT */
|
|
172
|
-
if (selItem?.column_udt_type === "json" || ["$ilike", "$like", "$nilike", "$nlike"].includes(fOpType)) {
|
|
173
|
-
leftQ += "::TEXT ";
|
|
174
|
-
}
|
|
175
198
|
/** st_makeenvelope */
|
|
176
|
-
if (prostgles_types_1.GeomFilterKeys.includes(
|
|
199
|
+
if (prostgles_types_1.GeomFilterKeys.includes(filterOperand) && funcName && prostgles_types_1.GeomFilter_Funcs.includes(funcName)) {
|
|
177
200
|
/** If leftQ is geography then this err can happen: 'Antipodal (180 degrees long) edge detected!' */
|
|
178
|
-
if (
|
|
201
|
+
if (funcName.toLowerCase() === "st_makeenvelope") {
|
|
179
202
|
leftQ += "::geometry";
|
|
180
|
-
|
|
203
|
+
}
|
|
204
|
+
return `${leftQ} ${filterOperand} ${funcName}${parseRightVal(funcArgs, "csv")}`;
|
|
181
205
|
}
|
|
182
|
-
else if (["=", "$eq"].includes(
|
|
183
|
-
if (
|
|
206
|
+
else if (["=", "$eq"].includes(filterOperand) && !funcName) {
|
|
207
|
+
if (filterValue === null)
|
|
184
208
|
return leftQ + " IS NULL ";
|
|
185
|
-
return leftQ + " = " + parseRightVal(
|
|
209
|
+
return leftQ + " = " + parseRightVal(filterValue);
|
|
186
210
|
}
|
|
187
|
-
else if (["<>", "$ne"].includes(
|
|
188
|
-
if (
|
|
211
|
+
else if (["<>", "$ne"].includes(filterOperand)) {
|
|
212
|
+
if (filterValue === null)
|
|
189
213
|
return leftQ + " IS NOT NULL ";
|
|
190
|
-
return leftQ + " <> " + parseRightVal(
|
|
214
|
+
return leftQ + " <> " + parseRightVal(filterValue);
|
|
191
215
|
}
|
|
192
|
-
else if ([">", "$gt"].includes(
|
|
193
|
-
return leftQ + " > " + parseRightVal(
|
|
216
|
+
else if ([">", "$gt"].includes(filterOperand)) {
|
|
217
|
+
return leftQ + " > " + parseRightVal(filterValue);
|
|
194
218
|
}
|
|
195
|
-
else if (["<", "$lt"].includes(
|
|
196
|
-
return leftQ + " < " + parseRightVal(
|
|
219
|
+
else if (["<", "$lt"].includes(filterOperand)) {
|
|
220
|
+
return leftQ + " < " + parseRightVal(filterValue);
|
|
197
221
|
}
|
|
198
|
-
else if ([">=", "$gte"].includes(
|
|
199
|
-
return leftQ + " >= " + parseRightVal(
|
|
222
|
+
else if ([">=", "$gte"].includes(filterOperand)) {
|
|
223
|
+
return leftQ + " >= " + parseRightVal(filterValue);
|
|
200
224
|
}
|
|
201
|
-
else if (["<=", "$lte"].includes(
|
|
202
|
-
return leftQ + " <= " + parseRightVal(
|
|
225
|
+
else if (["<=", "$lte"].includes(filterOperand)) {
|
|
226
|
+
return leftQ + " <= " + parseRightVal(filterValue);
|
|
203
227
|
}
|
|
204
|
-
else if (["$in"].includes(
|
|
205
|
-
if (!
|
|
228
|
+
else if (["$in"].includes(filterOperand)) {
|
|
229
|
+
if (!filterValue?.length) {
|
|
206
230
|
return " FALSE ";
|
|
207
231
|
}
|
|
208
|
-
let _fVal =
|
|
232
|
+
let _fVal = filterValue.filter((v) => v !== null);
|
|
209
233
|
let c1 = "", c2 = "";
|
|
210
|
-
if (_fVal.length)
|
|
234
|
+
if (_fVal.length) {
|
|
211
235
|
c1 = leftQ + " IN " + parseRightVal(_fVal, "csv");
|
|
212
|
-
|
|
236
|
+
}
|
|
237
|
+
if (filterValue.includes(null))
|
|
213
238
|
c2 = ` ${leftQ} IS NULL `;
|
|
214
239
|
return [c1, c2].filter(c => c).join(" OR ");
|
|
215
240
|
}
|
|
216
|
-
else if (["$nin"].includes(
|
|
217
|
-
if (!
|
|
241
|
+
else if (["$nin"].includes(filterOperand)) {
|
|
242
|
+
if (!filterValue?.length) {
|
|
218
243
|
return " TRUE ";
|
|
219
244
|
}
|
|
220
|
-
let _fVal =
|
|
245
|
+
let _fVal = filterValue.filter((v) => v !== null);
|
|
221
246
|
let c1 = "", c2 = "";
|
|
222
247
|
if (_fVal.length)
|
|
223
248
|
c1 = leftQ + " NOT IN " + parseRightVal(_fVal, "csv");
|
|
224
|
-
if (
|
|
249
|
+
if (filterValue.includes(null))
|
|
225
250
|
c2 = ` ${leftQ} IS NOT NULL `;
|
|
226
251
|
return [c1, c2].filter(c => c).join(" AND ");
|
|
227
252
|
}
|
|
228
|
-
else if (["$between"].includes(
|
|
229
|
-
if (!Array.isArray(
|
|
253
|
+
else if (["$between"].includes(filterOperand)) {
|
|
254
|
+
if (!Array.isArray(filterValue) || filterValue.length !== 2) {
|
|
230
255
|
return mErr("Between filter expects an array of two values");
|
|
231
256
|
}
|
|
232
|
-
return leftQ + " BETWEEN " + asValue(
|
|
257
|
+
return leftQ + " BETWEEN " + asValue(filterValue[0]) + " AND " + asValue(filterValue[1]);
|
|
233
258
|
}
|
|
234
|
-
else if (["$ilike"].includes(
|
|
235
|
-
return leftQ + " ILIKE " + asValue(
|
|
259
|
+
else if (["$ilike"].includes(filterOperand)) {
|
|
260
|
+
return leftQ + " ILIKE " + asValue(filterValue);
|
|
236
261
|
}
|
|
237
|
-
else if (["$like"].includes(
|
|
238
|
-
return leftQ + " LIKE " + asValue(
|
|
262
|
+
else if (["$like"].includes(filterOperand)) {
|
|
263
|
+
return leftQ + " LIKE " + asValue(filterValue);
|
|
239
264
|
}
|
|
240
|
-
else if (["$nilike"].includes(
|
|
241
|
-
return leftQ + " NOT ILIKE " + asValue(
|
|
265
|
+
else if (["$nilike"].includes(filterOperand)) {
|
|
266
|
+
return leftQ + " NOT ILIKE " + asValue(filterValue);
|
|
242
267
|
}
|
|
243
|
-
else if (["$nlike"].includes(
|
|
244
|
-
return leftQ + " NOT LIKE " + asValue(
|
|
268
|
+
else if (["$nlike"].includes(filterOperand)) {
|
|
269
|
+
return leftQ + " NOT LIKE " + asValue(filterValue);
|
|
245
270
|
/* MAYBE TEXT OR MAYBE ARRAY */
|
|
246
271
|
}
|
|
247
|
-
else if (["@>", "<@", "$contains", "$containedBy", "&&", "@@"].includes(
|
|
248
|
-
let operand =
|
|
249
|
-
["@>", "$contains"].includes(
|
|
250
|
-
["&&"].includes(
|
|
272
|
+
else if (["@>", "<@", "$contains", "$containedBy", "&&", "@@"].includes(filterOperand)) {
|
|
273
|
+
let operand = filterOperand === "@@" ? "@@" :
|
|
274
|
+
["@>", "$contains"].includes(filterOperand) ? "@>" :
|
|
275
|
+
["&&"].includes(filterOperand) ? "&&" :
|
|
251
276
|
"<@";
|
|
252
277
|
/* Array for sure */
|
|
253
|
-
if (Array.isArray(
|
|
254
|
-
return leftQ + operand + parseRightVal(
|
|
278
|
+
if (Array.isArray(filterValue)) {
|
|
279
|
+
return leftQ + operand + parseRightVal(filterValue, "array");
|
|
255
280
|
/* FTSQuery */
|
|
256
281
|
}
|
|
257
|
-
else if (["@@"].includes(
|
|
282
|
+
else if (["@@"].includes(filterOperand) && prostgles_types_1.TextFilter_FullTextSearchFilterKeys.includes(funcName)) {
|
|
258
283
|
let lq = `to_tsvector(${leftQ}::text)`;
|
|
259
284
|
if (selItem && selItem.columnPGDataType === "tsvector")
|
|
260
285
|
lq = leftQ;
|
|
261
|
-
let res = `${lq} ${operand} ` + `${
|
|
286
|
+
let res = `${lq} ${operand} ` + `${funcName}${parseRightVal(funcArgs, "csv")}`;
|
|
262
287
|
return res;
|
|
263
288
|
}
|
|
264
289
|
else {
|
|
265
|
-
return mErr("Unrecognised filter operand: " +
|
|
290
|
+
return mErr("Unrecognised filter operand: " + filterOperand + " ");
|
|
266
291
|
}
|
|
267
292
|
}
|
|
268
293
|
else {
|
|
269
|
-
|
|
270
|
-
if (selItem?.column_udt_type?.startsWith("json")) {
|
|
271
|
-
return leftQ + " = " + parseRightVal(rightF);
|
|
272
|
-
}
|
|
273
|
-
return mErr("Unrecognised filter operand: " + fOpType + " ");
|
|
294
|
+
return mErr("Unrecognised filter operand: " + filterOperand + " ");
|
|
274
295
|
}
|
|
275
296
|
}
|
|
276
297
|
else {
|