prostgles-server 4.2.54 → 4.2.55
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/TableHandler/TableHandler.js +1 -1
- package/dist/DboBuilder/TableHandler/TableHandler.js.map +1 -1
- package/dist/DboBuilder/TableHandler/delete.js +1 -0
- package/dist/DboBuilder/TableHandler/delete.js.map +1 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js +1 -0
- package/dist/DboBuilder/TableHandler/runInsertUpdateQuery.js.map +1 -1
- package/dist/DboBuilder/TableHandler/update.d.ts.map +1 -1
- package/dist/DboBuilder/TableHandler/update.js +1 -0
- package/dist/DboBuilder/TableHandler/update.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/ViewHandler.d.ts +1 -1
- package/dist/DboBuilder/ViewHandler/getExistsCondition.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/getExistsCondition.js +1 -0
- package/dist/DboBuilder/ViewHandler/getExistsCondition.js.map +1 -1
- package/dist/DboBuilder/ViewHandler/parseComplexFilter.d.ts +12 -0
- package/dist/DboBuilder/ViewHandler/parseComplexFilter.d.ts.map +1 -0
- package/dist/DboBuilder/ViewHandler/parseComplexFilter.js +66 -0
- package/dist/DboBuilder/ViewHandler/parseComplexFilter.js.map +1 -0
- package/dist/DboBuilder/ViewHandler/prepareWhere.d.ts +1 -1
- package/dist/DboBuilder/ViewHandler/prepareWhere.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/prepareWhere.js.map +1 -1
- package/dist/DboBuilder/getCondition.d.ts +1 -1
- package/dist/DboBuilder/getCondition.d.ts.map +1 -1
- package/dist/DboBuilder/getCondition.js +9 -52
- package/dist/DboBuilder/getCondition.js.map +1 -1
- package/dist/DboBuilder/getSubscribeRelatedTables.d.ts +1 -1
- package/dist/DboBuilder/getSubscribeRelatedTables.d.ts.map +1 -1
- package/dist/DboBuilder/getSubscribeRelatedTables.js +3 -1
- package/dist/DboBuilder/getSubscribeRelatedTables.js.map +1 -1
- package/dist/DboBuilder/parseUpdateRules.d.ts.map +1 -1
- package/dist/DboBuilder/parseUpdateRules.js +25 -4
- package/dist/DboBuilder/parseUpdateRules.js.map +1 -1
- package/dist/Filtering.d.ts +6 -0
- package/dist/Filtering.d.ts.map +1 -1
- package/dist/Filtering.js +36 -25
- package/dist/Filtering.js.map +1 -1
- package/lib/DboBuilder/TableHandler/TableHandler.ts +1 -1
- package/lib/DboBuilder/TableHandler/delete.ts +1 -1
- package/lib/DboBuilder/TableHandler/runInsertUpdateQuery.ts +1 -0
- package/lib/DboBuilder/TableHandler/update.ts +1 -0
- package/lib/DboBuilder/ViewHandler/getExistsCondition.ts +1 -0
- package/lib/DboBuilder/ViewHandler/parseComplexFilter.ts +82 -0
- package/lib/DboBuilder/ViewHandler/prepareWhere.ts +1 -3
- package/lib/DboBuilder/getCondition.ts +11 -57
- package/lib/DboBuilder/getSubscribeRelatedTables.ts +3 -1
- package/lib/DboBuilder/parseUpdateRules.ts +26 -4
- package/lib/Filtering.ts +40 -25
- package/package.json +1 -1
- package/tests/server/package-lock.json +1 -1
package/dist/Filtering.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { FullFilter } from "prostgles-types";
|
|
2
2
|
import { SelectItem } from "./DboBuilder/QueryBuilder/QueryBuilder";
|
|
3
|
+
export declare const FILTER_OPERANDS: readonly ["$ilike", "$like", "$nilike", "$nlike", ...("@@" | "@>" | "<@" | "?" | "?|" | "?&" | "||" | "-" | "#-" | "@?")[], "=", "$eq", "<>", ">", "<", ">=", "<=", "$eq", "$ne", "$gt", "$gte", "$lte", "$in", "$nin"];
|
|
3
4
|
/**
|
|
4
5
|
* Parse a single filter
|
|
5
6
|
* Ensure only single key objects reach this point
|
|
@@ -11,5 +12,10 @@ type ParseFilterItemArgs = {
|
|
|
11
12
|
allowedColumnNames: string[];
|
|
12
13
|
};
|
|
13
14
|
export declare const parseFilterItem: (args: ParseFilterItemArgs) => string;
|
|
15
|
+
type ParseRightValOpts = {
|
|
16
|
+
expect?: "csv" | "array" | "json" | "jsonb";
|
|
17
|
+
selectItem: SelectItem | undefined;
|
|
18
|
+
};
|
|
19
|
+
export declare const parseFilterRightValue: (val: any, { expect, selectItem }: ParseRightValOpts) => string;
|
|
14
20
|
export {};
|
|
15
21
|
//# sourceMappingURL=Filtering.d.ts.map
|
package/dist/Filtering.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Filtering.d.ts","sourceRoot":"","sources":["../lib/Filtering.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,UAAU,EAQX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"Filtering.d.ts","sourceRoot":"","sources":["../lib/Filtering.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,UAAU,EAQX,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,wCAAwC,CAAC;AAIpE,eAAO,MAAM,eAAe,yNAKlB,CAAC;AAEX;;;EAGE;AACF,KAAK,mBAAmB,GAAG;IACzB,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/B,MAAM,EAAE,UAAU,EAAE,GAAG,SAAS,CAAC;IACjC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,kBAAkB,EAAE,MAAM,EAAE,CAAC;CAC9B,CAAC;AAEF,eAAO,MAAM,eAAe,SAAU,mBAAmB,KAAG,MAsV3D,CAAA;AAED,KAAK,iBAAiB,GAAG;IACvB,MAAM,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IAC5C,UAAU,EAAE,UAAU,GAAG,SAAS,CAAC;CACpC,CAAA;AACD,eAAO,MAAM,qBAAqB,QAAS,GAAG,0BAA0B,iBAAiB,WAkBxF,CAAA"}
|
package/dist/Filtering.js
CHANGED
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.parseFilterItem = void 0;
|
|
3
|
+
exports.parseFilterRightValue = exports.parseFilterItem = exports.FILTER_OPERANDS = void 0;
|
|
4
4
|
const prostgles_types_1 = require("prostgles-types");
|
|
5
5
|
const DboBuilderTypes_1 = require("./DboBuilder/DboBuilderTypes");
|
|
6
|
+
exports.FILTER_OPERANDS = [
|
|
7
|
+
...prostgles_types_1.TextFilterKeys,
|
|
8
|
+
...prostgles_types_1.JsonbFilterKeys,
|
|
9
|
+
...prostgles_types_1.CompareFilterKeys,
|
|
10
|
+
...prostgles_types_1.CompareInFilterKeys
|
|
11
|
+
];
|
|
6
12
|
const parseFilterItem = (args) => {
|
|
7
13
|
const { filter: _f, select, tableAlias, allowedColumnNames } = args;
|
|
8
14
|
if (!_f || (0, prostgles_types_1.isEmpty)(_f))
|
|
@@ -146,29 +152,16 @@ const parseFilterItem = (args) => {
|
|
|
146
152
|
}
|
|
147
153
|
if (!leftQ)
|
|
148
154
|
mErr("Internal error: leftQ missing?!");
|
|
149
|
-
const parseRightVal = (val, expect
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
return DboBuilderTypes_1.pgp.as.format(`($1:${expect})`, [val]);
|
|
157
|
-
}
|
|
158
|
-
else if (expect === "array" || selItem && selItem.columnPGDataType && selItem.columnPGDataType === "ARRAY") {
|
|
159
|
-
checkIfArr();
|
|
160
|
-
return DboBuilderTypes_1.pgp.as.format(" ARRAY[$1:csv]", [val]);
|
|
161
|
-
}
|
|
162
|
-
return asValue(val);
|
|
155
|
+
const parseRightVal = (val, expect) => {
|
|
156
|
+
try {
|
|
157
|
+
return (0, exports.parseFilterRightValue)(val, { selectItem: selItem, expect });
|
|
158
|
+
}
|
|
159
|
+
catch (e) {
|
|
160
|
+
return mErr(e);
|
|
161
|
+
}
|
|
163
162
|
};
|
|
164
163
|
/* Matching sel item */
|
|
165
164
|
if ((0, prostgles_types_1.isObject)(rightF)) {
|
|
166
|
-
const OPERANDS = [
|
|
167
|
-
...prostgles_types_1.TextFilterKeys,
|
|
168
|
-
...prostgles_types_1.JsonbFilterKeys,
|
|
169
|
-
...prostgles_types_1.CompareFilterKeys,
|
|
170
|
-
...prostgles_types_1.CompareInFilterKeys
|
|
171
|
-
];
|
|
172
165
|
const filterKeys = Object.keys(rightF);
|
|
173
166
|
let filterOperand = filterKeys[0];
|
|
174
167
|
/** JSON cannot be compared so we'll cast it to TEXT */
|
|
@@ -176,7 +169,7 @@ const parseFilterItem = (args) => {
|
|
|
176
169
|
leftQ += "::TEXT ";
|
|
177
170
|
}
|
|
178
171
|
/** It's an object key which means it's an equality comparison against a json object */
|
|
179
|
-
if (selItem?.column_udt_type?.startsWith("json") && !
|
|
172
|
+
if (selItem?.column_udt_type?.startsWith("json") && !exports.FILTER_OPERANDS.includes(filterOperand)) {
|
|
180
173
|
return leftQ + " = " + parseRightVal(rightF);
|
|
181
174
|
}
|
|
182
175
|
let filterValue = rightF[filterOperand];
|
|
@@ -252,10 +245,10 @@ const parseFilterItem = (args) => {
|
|
|
252
245
|
if (!filterValue?.length) {
|
|
253
246
|
return " TRUE ";
|
|
254
247
|
}
|
|
255
|
-
const
|
|
248
|
+
const nonNullFilterValues = filterValue.filter((v) => v !== null);
|
|
256
249
|
let c1 = "", c2 = "";
|
|
257
|
-
if (
|
|
258
|
-
c1 = leftQ + " NOT IN " + parseRightVal(
|
|
250
|
+
if (nonNullFilterValues.length)
|
|
251
|
+
c1 = leftQ + " NOT IN " + parseRightVal(nonNullFilterValues, "csv");
|
|
259
252
|
if (filterValue.includes(null))
|
|
260
253
|
c2 = ` ${leftQ} IS NOT NULL `;
|
|
261
254
|
return [c1, c2].filter(c => c).join(" AND ");
|
|
@@ -322,6 +315,24 @@ const parseFilterItem = (args) => {
|
|
|
322
315
|
}
|
|
323
316
|
};
|
|
324
317
|
exports.parseFilterItem = parseFilterItem;
|
|
318
|
+
const parseFilterRightValue = (val, { expect, selectItem }) => {
|
|
319
|
+
const asValue = (v) => DboBuilderTypes_1.pgp.as.format("$1", [v]);
|
|
320
|
+
const checkIfArr = () => {
|
|
321
|
+
if (!Array.isArray(val)) {
|
|
322
|
+
throw "This type of filter/column expects an Array of items";
|
|
323
|
+
}
|
|
324
|
+
};
|
|
325
|
+
if (expect === "csv" || expect?.startsWith("json")) {
|
|
326
|
+
checkIfArr();
|
|
327
|
+
return DboBuilderTypes_1.pgp.as.format(`($1:${expect})`, [val]);
|
|
328
|
+
}
|
|
329
|
+
else if (expect === "array" || selectItem?.columnPGDataType === "ARRAY") {
|
|
330
|
+
checkIfArr();
|
|
331
|
+
return DboBuilderTypes_1.pgp.as.format(" ARRAY[$1:csv]", [val]);
|
|
332
|
+
}
|
|
333
|
+
return asValue(val);
|
|
334
|
+
};
|
|
335
|
+
exports.parseFilterRightValue = parseFilterRightValue;
|
|
325
336
|
// ensure pgp is not NULL!!!
|
|
326
337
|
// const asValue = v => v;// pgp.as.value;
|
|
327
338
|
// const filters: FilterSpec[] = [
|
package/dist/Filtering.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Filtering.js","sourceRoot":"","sources":["../lib/Filtering.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Filtering.js","sourceRoot":"","sources":["../lib/Filtering.ts"],"names":[],"mappings":"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"}
|
|
@@ -149,7 +149,7 @@ export class TableHandler extends ViewHandler {
|
|
|
149
149
|
.then(async _isValid => {
|
|
150
150
|
|
|
151
151
|
const { filterFields, forcedFilter } = table_rules?.select || {};
|
|
152
|
-
const condition = (await this.prepareWhere({ filter, forcedFilter, filterFields, addWhere: false, localParams, tableRule: table_rules })).where;
|
|
152
|
+
const condition = (await this.prepareWhere({ select: undefined, filter, forcedFilter, filterFields, addWhere: false, localParams, tableRule: table_rules })).where;
|
|
153
153
|
|
|
154
154
|
const pubSubManager = await this.dboBuilder.getPubSubManager();
|
|
155
155
|
return pubSubManager.addSync({
|
|
@@ -38,7 +38,6 @@ export async function _delete(this: TableHandler, filter?: Filter, params?: Dele
|
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
|
|
42
41
|
if (params) {
|
|
43
42
|
const good_paramsObj: Record<keyof DeleteParams, 1> = { returning: 1, returnType: 1 };
|
|
44
43
|
const good_params = Object.keys(good_paramsObj);
|
|
@@ -49,6 +48,7 @@ export async function _delete(this: TableHandler, filter?: Filter, params?: Dele
|
|
|
49
48
|
let queryType: keyof pgPromise.ITask<{}> = 'none';
|
|
50
49
|
let queryWithoutRLS = `DELETE FROM ${this.escapedName} `;
|
|
51
50
|
const filterOpts = (await this.prepareWhere({
|
|
51
|
+
select: undefined,
|
|
52
52
|
filter,
|
|
53
53
|
forcedFilter,
|
|
54
54
|
filterFields,
|
|
@@ -34,6 +34,7 @@ export const runInsertUpdateQuery = async (args: RunInsertUpdateQueryArgs) => {
|
|
|
34
34
|
let checkCondition = "WHERE FALSE";
|
|
35
35
|
if(checkFilter){
|
|
36
36
|
const checkCond = await tableHandler.prepareWhere({
|
|
37
|
+
select: undefined,
|
|
37
38
|
localParams: undefined,
|
|
38
39
|
tableRule: undefined,
|
|
39
40
|
filter: checkFilter,
|
|
@@ -42,6 +42,7 @@ export async function getExistsCondition(this: ViewHandler, eConfig: ExistsFilte
|
|
|
42
42
|
|
|
43
43
|
const tableHandler = this.dboBuilder.dbo[targetTable] as TableHandler
|
|
44
44
|
const finalWhere = (await tableHandler.prepareWhere({
|
|
45
|
+
select: undefined,
|
|
45
46
|
filter: targetTableFilter,
|
|
46
47
|
forcedFilter,
|
|
47
48
|
filterFields,
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { AnyObject, isObject } from "prostgles-types";
|
|
2
|
+
import { FILTER_OPERANDS, parseFilterRightValue } from "../../Filtering";
|
|
3
|
+
import { FUNCTIONS, parseFunction } from "../QueryBuilder/Functions";
|
|
4
|
+
import { asNameAlias, parseFunctionObject } from "../QueryBuilder/QueryBuilder";
|
|
5
|
+
import { TableSchemaColumn } from "../DboBuilderTypes";
|
|
6
|
+
|
|
7
|
+
const allowedComparators = FILTER_OPERANDS; //[">", "<", "=", "<=", ">=", "<>", "!="]
|
|
8
|
+
type Args = {
|
|
9
|
+
filter: AnyObject;
|
|
10
|
+
complexFilterKey: string;
|
|
11
|
+
tableAlias: string | undefined;
|
|
12
|
+
allowed_colnames: string[];
|
|
13
|
+
columns: TableSchemaColumn[];
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/* Parse complex filters
|
|
17
|
+
{
|
|
18
|
+
$filter: [
|
|
19
|
+
{ $func: [...] },
|
|
20
|
+
"=",
|
|
21
|
+
value | { $func: [..] }
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
*/
|
|
25
|
+
export const parseComplexFilter = ({
|
|
26
|
+
filter,
|
|
27
|
+
complexFilterKey,
|
|
28
|
+
tableAlias,
|
|
29
|
+
allowed_colnames,
|
|
30
|
+
columns,
|
|
31
|
+
}: Args) => {
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* { $funcName: [arg1, arg2] }
|
|
35
|
+
* { $column: "column_name" }
|
|
36
|
+
*/
|
|
37
|
+
const getFuncQuery = (funcData: AnyObject): string => {
|
|
38
|
+
if(isObject(funcData) && "$column" in funcData){
|
|
39
|
+
const column = funcData["$column"]
|
|
40
|
+
if(typeof column !== "string"){
|
|
41
|
+
throw `expecting: \n { $column: "column_name" } received:\n ${JSON.stringify(funcData)}`;
|
|
42
|
+
}
|
|
43
|
+
if(!allowed_colnames.includes(column)){
|
|
44
|
+
throw `Dissallowed or Invalid column ${column}. Allowed columns: ${allowed_colnames}`;
|
|
45
|
+
}
|
|
46
|
+
return asNameAlias(column, tableAlias)
|
|
47
|
+
}
|
|
48
|
+
const { funcName, args } = parseFunctionObject(funcData);
|
|
49
|
+
const funcDef = parseFunction({ func: funcName, args, functions: FUNCTIONS, allowedFields: allowed_colnames });
|
|
50
|
+
return funcDef.getQuery({ args, tableAlias, allColumns: columns, allowedFields: allowed_colnames });
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const complexFilter = filter[complexFilterKey];
|
|
54
|
+
if (!Array.isArray(complexFilter)) {
|
|
55
|
+
throw `Invalid $filter. Must contain an array of at least element but got: ${JSON.stringify(complexFilter)} `
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
const [leftFilter, comparator, rightFilterOrValue] = complexFilter;
|
|
59
|
+
|
|
60
|
+
const leftVal = getFuncQuery(leftFilter);
|
|
61
|
+
let result = leftVal;
|
|
62
|
+
if (comparator) {
|
|
63
|
+
if (!allowedComparators.includes(comparator)) {
|
|
64
|
+
throw `Invalid $filter. comparator ${JSON.stringify(comparator)} is not valid. Expecting one of: ${allowedComparators}`;
|
|
65
|
+
}
|
|
66
|
+
if (!rightFilterOrValue) {
|
|
67
|
+
throw "Invalid $filter. Expecting a value or function after the comparator";
|
|
68
|
+
}
|
|
69
|
+
const rightVal = isObject(rightFilterOrValue) ?
|
|
70
|
+
getFuncQuery(rightFilterOrValue) :
|
|
71
|
+
parseFilterRightValue(rightFilterOrValue, {
|
|
72
|
+
selectItem: undefined,
|
|
73
|
+
expect: ["$in", "$nin"].includes(comparator)? "array" : undefined
|
|
74
|
+
});
|
|
75
|
+
if (leftVal === rightVal){
|
|
76
|
+
throw "Invalid $filter. Cannot compare two identical function signatures: " + JSON.stringify(leftFilter);
|
|
77
|
+
}
|
|
78
|
+
result += ` ${comparator} ${rightVal}`;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return result;
|
|
82
|
+
}
|
|
@@ -7,7 +7,7 @@ import { getCondition } from "../getCondition";
|
|
|
7
7
|
|
|
8
8
|
type PrepareWhereParams = {
|
|
9
9
|
filter?: Filter;
|
|
10
|
-
select
|
|
10
|
+
select: SelectItem[] | undefined;
|
|
11
11
|
forcedFilter?: AnyObject;
|
|
12
12
|
filterFields?: FieldFilter;
|
|
13
13
|
addWhere?: boolean;
|
|
@@ -69,8 +69,6 @@ export async function prepareWhere(this: ViewHandler, params: PrepareWhereParams
|
|
|
69
69
|
return result;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
|
|
73
|
-
|
|
74
72
|
/* A forced filter condition will not check if the existsJoined filter tables have been published */
|
|
75
73
|
const forcedFilterCond = forcedFilter ? await parseFullFilter(forcedFilter, null, true) : undefined;
|
|
76
74
|
const filterCond = await parseFullFilter(filter, null, false);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AnyObject, isObject, pickKeys } from "prostgles-types";
|
|
2
2
|
import { ExistsFilterConfig, LocalParams, pgp } from "./DboBuilder";
|
|
3
|
-
import { parseFilterItem } from "../Filtering";
|
|
3
|
+
import { FILTER_OPERANDS, parseFilterItem } from "../Filtering";
|
|
4
4
|
import { asValue } from "../PubSubManager/PubSubManager";
|
|
5
5
|
import { TableRule } from "../PublishParser/PublishParser";
|
|
6
6
|
import { FUNCTIONS, parseFunction } from "./QueryBuilder/Functions";
|
|
@@ -8,6 +8,7 @@ import { SelectItem, asNameAlias, parseFunctionObject } from "./QueryBuilder/Que
|
|
|
8
8
|
import { ViewHandler } from "./ViewHandler/ViewHandler";
|
|
9
9
|
import { getExistsCondition } from "./ViewHandler/getExistsCondition";
|
|
10
10
|
import { getExistsFilters } from "./ViewHandler/getExistsFilters";
|
|
11
|
+
import { parseComplexFilter } from "./ViewHandler/parseComplexFilter";
|
|
11
12
|
|
|
12
13
|
const FILTER_FUNCS = FUNCTIONS.filter(f => f.canBeUsedForFilter);
|
|
13
14
|
|
|
@@ -21,7 +22,7 @@ export async function getCondition(
|
|
|
21
22
|
this: ViewHandler,
|
|
22
23
|
params: {
|
|
23
24
|
filter: any,
|
|
24
|
-
select
|
|
25
|
+
select: SelectItem[] | undefined,
|
|
25
26
|
allowed_colnames: string[],
|
|
26
27
|
tableAlias?: string,
|
|
27
28
|
localParams?: LocalParams,
|
|
@@ -115,67 +116,20 @@ export async function getCondition(
|
|
|
115
116
|
allowedSelect = allowedSelect.concat(
|
|
116
117
|
remainingNonSelectedColumns
|
|
117
118
|
);
|
|
118
|
-
|
|
119
|
-
/* Parse complex filters
|
|
120
|
-
{
|
|
121
|
-
$filter: [
|
|
122
|
-
{ $func: [...] },
|
|
123
|
-
"=",
|
|
124
|
-
value | { $func: [..] }
|
|
125
|
-
]
|
|
126
|
-
}
|
|
127
|
-
*/
|
|
128
119
|
const complexFilters: string[] = [];
|
|
129
120
|
const complexFilterKey = "$filter";
|
|
130
|
-
const allowedComparators = [">", "<", "=", "<=", ">=", "<>", "!="]
|
|
131
121
|
if (complexFilterKey in filter) {
|
|
132
122
|
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
throw `expecting: \n { $column: "column_name" } received:\n ${JSON.stringify(funcData)}`;
|
|
142
|
-
}
|
|
143
|
-
if(!allowed_colnames.includes(column)){
|
|
144
|
-
throw `Dissallowed or Invalid column ${column}. Allowed columns: ${allowed_colnames}`;
|
|
145
|
-
}
|
|
146
|
-
return asNameAlias(column, tableAlias)
|
|
147
|
-
}
|
|
148
|
-
const { funcName, args } = parseFunctionObject(funcData);
|
|
149
|
-
const funcDef = parseFunction({ func: funcName, args, functions: FUNCTIONS, allowedFields: allowed_colnames });
|
|
150
|
-
return funcDef.getQuery({ args, tableAlias, allColumns: this.columns, allowedFields: allowed_colnames });
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
const complexFilter = filter[complexFilterKey];
|
|
154
|
-
if (!Array.isArray(complexFilter)) {
|
|
155
|
-
throw `Invalid $filter. Must contain an array of at least element but got: ${JSON.stringify(complexFilter)} `
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
const [leftFilter, comparator, rightFilterOrValue] = complexFilter;
|
|
159
|
-
|
|
160
|
-
const leftVal = getFuncQuery(leftFilter);
|
|
161
|
-
let result = leftVal;
|
|
162
|
-
if (comparator) {
|
|
163
|
-
if (!allowedComparators.includes(comparator)) {
|
|
164
|
-
throw `Invalid $filter. comparator ${JSON.stringify(comparator)} is not valid. Expecting one of: ${allowedComparators}`;
|
|
165
|
-
}
|
|
166
|
-
if (!rightFilterOrValue) {
|
|
167
|
-
throw "Invalid $filter. Expecting a value or function after the comparator";
|
|
168
|
-
}
|
|
169
|
-
const rightVal = isObject(rightFilterOrValue) ? getFuncQuery(rightFilterOrValue) : asValue(rightFilterOrValue);
|
|
170
|
-
if (leftVal === rightVal){
|
|
171
|
-
throw "Invalid $filter. Cannot compare two identical function signatures: " + JSON.stringify(leftFilter);
|
|
172
|
-
}
|
|
173
|
-
result += ` ${comparator} ${rightVal}`;
|
|
174
|
-
}
|
|
175
|
-
complexFilters.push(result);
|
|
123
|
+
const complexFilterCondition = parseComplexFilter({
|
|
124
|
+
filter,
|
|
125
|
+
complexFilterKey,
|
|
126
|
+
tableAlias,
|
|
127
|
+
allowed_colnames,
|
|
128
|
+
columns: this.columns,
|
|
129
|
+
});
|
|
130
|
+
complexFilters.push(complexFilterCondition);
|
|
176
131
|
}
|
|
177
132
|
|
|
178
|
-
|
|
179
133
|
/* Parse join filters
|
|
180
134
|
{ $joinFilter: { $ST_DWithin: [table.col, foreignTable.col, distance] }
|
|
181
135
|
will make an exists filter
|
|
@@ -12,7 +12,7 @@ type Args = {
|
|
|
12
12
|
localParams: LocalParams | undefined;
|
|
13
13
|
newQuery: NewQuery;
|
|
14
14
|
}
|
|
15
|
-
export async function getSubscribeRelatedTables(this: ViewHandler, {
|
|
15
|
+
export async function getSubscribeRelatedTables(this: ViewHandler, { filter, localParams, newQuery }: Args){
|
|
16
16
|
|
|
17
17
|
let viewOptions: ViewSubscriptionOptions | undefined = undefined;
|
|
18
18
|
const { condition } = newQuery.whereOpts;
|
|
@@ -143,6 +143,7 @@ export async function getSubscribeRelatedTables(this: ViewHandler, { selectParam
|
|
|
143
143
|
tableName: j.table,
|
|
144
144
|
tableNameEscaped: asName(j.table),
|
|
145
145
|
condition: (await this.dboBuilder.dbo[j.table]!.prepareWhere!({
|
|
146
|
+
select: undefined,
|
|
146
147
|
filter: {
|
|
147
148
|
$existsJoined: {
|
|
148
149
|
path: reverseParsedPath(j.joinPath, this.name),
|
|
@@ -164,6 +165,7 @@ export async function getSubscribeRelatedTables(this: ViewHandler, { selectParam
|
|
|
164
165
|
tableName: targetTable,
|
|
165
166
|
tableNameEscaped: asName(targetTable),
|
|
166
167
|
condition: (await this.dboBuilder.dbo[targetTable]!.prepareWhere!({
|
|
168
|
+
select: undefined,
|
|
167
169
|
filter: {
|
|
168
170
|
$existsJoined: {
|
|
169
171
|
path: newPath,
|
|
@@ -50,7 +50,14 @@ export async function parseUpdateRules(
|
|
|
50
50
|
if (!fields) {
|
|
51
51
|
throw ` Invalid update rule fo r ${this.name}. fields missing `;
|
|
52
52
|
}
|
|
53
|
-
finalUpdateFilter = (await this.prepareWhere({
|
|
53
|
+
finalUpdateFilter = (await this.prepareWhere({
|
|
54
|
+
select: undefined,
|
|
55
|
+
filter,
|
|
56
|
+
forcedFilter,
|
|
57
|
+
filterFields,
|
|
58
|
+
localParams,
|
|
59
|
+
tableRule: tableRules
|
|
60
|
+
})).filter;
|
|
54
61
|
if (tableRules.update.dynamicFields?.length) {
|
|
55
62
|
/**
|
|
56
63
|
* dynamicFields.fields used to allow a custom list of fields for specific records
|
|
@@ -63,9 +70,24 @@ export async function parseUpdateRules(
|
|
|
63
70
|
/**
|
|
64
71
|
* Validated filter and fields
|
|
65
72
|
*/
|
|
66
|
-
const condition = await this.prepareWhere({
|
|
67
|
-
|
|
68
|
-
|
|
73
|
+
const condition = await this.prepareWhere({
|
|
74
|
+
select: undefined,
|
|
75
|
+
filterFields: this.column_names,
|
|
76
|
+
filter: dfRule.filter,
|
|
77
|
+
localParams,
|
|
78
|
+
tableRule: tableRules
|
|
79
|
+
});
|
|
80
|
+
if (!condition.where) {
|
|
81
|
+
throw "dynamicFields.filter cannot be empty: " + JSON.stringify(dfRule);
|
|
82
|
+
}
|
|
83
|
+
await this.validateViewRules({
|
|
84
|
+
fields: dfRule.fields,
|
|
85
|
+
filterFields,
|
|
86
|
+
returningFields,
|
|
87
|
+
forcedFilter,
|
|
88
|
+
dynamicFields: tableRules.update.dynamicFields,
|
|
89
|
+
rule: "update"
|
|
90
|
+
});
|
|
69
91
|
|
|
70
92
|
|
|
71
93
|
await this.find(dfRule.filter, { limit: 0 });
|
package/lib/Filtering.ts
CHANGED
|
@@ -16,6 +16,14 @@ import {
|
|
|
16
16
|
import { SelectItem } from "./DboBuilder/QueryBuilder/QueryBuilder";
|
|
17
17
|
import { pgp } from "./DboBuilder/DboBuilderTypes";
|
|
18
18
|
|
|
19
|
+
|
|
20
|
+
export const FILTER_OPERANDS = [
|
|
21
|
+
...TextFilterKeys,
|
|
22
|
+
...JsonbFilterKeys,
|
|
23
|
+
...CompareFilterKeys,
|
|
24
|
+
...CompareInFilterKeys
|
|
25
|
+
] as const;
|
|
26
|
+
|
|
19
27
|
/**
|
|
20
28
|
* Parse a single filter
|
|
21
29
|
* Ensure only single key objects reach this point
|
|
@@ -199,35 +207,19 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
|
|
|
199
207
|
|
|
200
208
|
if(!leftQ) mErr("Internal error: leftQ missing?!");
|
|
201
209
|
|
|
202
|
-
const parseRightVal = (val: any, expect
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
checkIfArr();
|
|
208
|
-
return pgp.as.format(`($1:${expect})`, [val]);
|
|
209
|
-
|
|
210
|
-
} else if(expect === "array" || selItem && selItem.columnPGDataType && selItem.columnPGDataType === "ARRAY"){
|
|
211
|
-
checkIfArr();
|
|
212
|
-
return pgp.as.format(" ARRAY[$1:csv]", [val]);
|
|
213
|
-
|
|
210
|
+
const parseRightVal = (val: any, expect?: "csv" | "array" | "json" | "jsonb") => {
|
|
211
|
+
try {
|
|
212
|
+
return parseFilterRightValue(val, { selectItem: selItem, expect });
|
|
213
|
+
} catch(e: any){
|
|
214
|
+
return mErr(e);
|
|
214
215
|
}
|
|
215
|
-
|
|
216
|
-
return asValue(val);
|
|
217
216
|
}
|
|
218
217
|
|
|
219
218
|
/* Matching sel item */
|
|
220
219
|
if(isObject(rightF)){
|
|
221
220
|
|
|
222
|
-
const OPERANDS = [
|
|
223
|
-
...TextFilterKeys,
|
|
224
|
-
...JsonbFilterKeys,
|
|
225
|
-
...CompareFilterKeys,
|
|
226
|
-
...CompareInFilterKeys
|
|
227
|
-
] as const;
|
|
228
|
-
|
|
229
221
|
const filterKeys = Object.keys(rightF);
|
|
230
|
-
let filterOperand: typeof
|
|
222
|
+
let filterOperand: typeof FILTER_OPERANDS[number] = filterKeys[0] as any;
|
|
231
223
|
|
|
232
224
|
/** JSON cannot be compared so we'll cast it to TEXT */
|
|
233
225
|
if(selItem?.column_udt_type === "json" || TextFilterKeys.includes(filterOperand as any)){
|
|
@@ -235,7 +227,7 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
|
|
|
235
227
|
}
|
|
236
228
|
|
|
237
229
|
/** It's an object key which means it's an equality comparison against a json object */
|
|
238
|
-
if(selItem?.column_udt_type?.startsWith("json") && !
|
|
230
|
+
if(selItem?.column_udt_type?.startsWith("json") && !FILTER_OPERANDS.includes(filterOperand)){
|
|
239
231
|
return leftQ + " = " + parseRightVal(rightF);
|
|
240
232
|
}
|
|
241
233
|
|
|
@@ -315,9 +307,9 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
|
|
|
315
307
|
return " TRUE ";
|
|
316
308
|
}
|
|
317
309
|
|
|
318
|
-
const
|
|
310
|
+
const nonNullFilterValues: any[] = filterValue.filter((v: any) => v !== null);
|
|
319
311
|
let c1 = "", c2 = "";
|
|
320
|
-
if(
|
|
312
|
+
if(nonNullFilterValues.length) c1 = leftQ + " NOT IN " + parseRightVal(nonNullFilterValues, "csv");
|
|
321
313
|
if(filterValue.includes(null)) c2 = ` ${leftQ} IS NOT NULL `;
|
|
322
314
|
return [c1, c2].filter(c => c).join(" AND ");
|
|
323
315
|
|
|
@@ -387,6 +379,29 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
|
|
|
387
379
|
}
|
|
388
380
|
}
|
|
389
381
|
|
|
382
|
+
type ParseRightValOpts = {
|
|
383
|
+
expect?: "csv" | "array" | "json" | "jsonb";
|
|
384
|
+
selectItem: SelectItem | undefined;
|
|
385
|
+
}
|
|
386
|
+
export const parseFilterRightValue = (val: any, { expect, selectItem }: ParseRightValOpts) => {
|
|
387
|
+
const asValue = (v: any) => pgp.as.format("$1", [v]);
|
|
388
|
+
const checkIfArr = () => {
|
|
389
|
+
if(!Array.isArray(val)) {
|
|
390
|
+
throw "This type of filter/column expects an Array of items";
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
if(expect === "csv" || expect?.startsWith("json")){
|
|
394
|
+
checkIfArr();
|
|
395
|
+
return pgp.as.format(`($1:${expect})`, [val]);
|
|
396
|
+
|
|
397
|
+
} else if(expect === "array" || selectItem?.columnPGDataType === "ARRAY"){
|
|
398
|
+
checkIfArr();
|
|
399
|
+
return pgp.as.format(" ARRAY[$1:csv]", [val]);
|
|
400
|
+
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
return asValue(val);
|
|
404
|
+
}
|
|
390
405
|
|
|
391
406
|
// ensure pgp is not NULL!!!
|
|
392
407
|
// const asValue = v => v;// pgp.as.value;
|
package/package.json
CHANGED