prostgles-server 4.2.53 → 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/count.d.ts.map +1 -1
- package/dist/DboBuilder/ViewHandler/count.js +3 -2
- package/dist/DboBuilder/ViewHandler/count.js.map +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/count.ts +3 -2
- 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
|
@@ -25,7 +25,14 @@ async function parseUpdateRules(filter, params, tableRules, localParams) {
|
|
|
25
25
|
if (!fields) {
|
|
26
26
|
throw ` Invalid update rule fo r ${this.name}. fields missing `;
|
|
27
27
|
}
|
|
28
|
-
finalUpdateFilter = (await this.prepareWhere({
|
|
28
|
+
finalUpdateFilter = (await this.prepareWhere({
|
|
29
|
+
select: undefined,
|
|
30
|
+
filter,
|
|
31
|
+
forcedFilter,
|
|
32
|
+
filterFields,
|
|
33
|
+
localParams,
|
|
34
|
+
tableRule: tableRules
|
|
35
|
+
})).filter;
|
|
29
36
|
if (tableRules.update.dynamicFields?.length) {
|
|
30
37
|
/**
|
|
31
38
|
* dynamicFields.fields used to allow a custom list of fields for specific records
|
|
@@ -37,10 +44,24 @@ async function parseUpdateRules(filter, params, tableRules, localParams) {
|
|
|
37
44
|
/**
|
|
38
45
|
* Validated filter and fields
|
|
39
46
|
*/
|
|
40
|
-
const condition = await this.prepareWhere({
|
|
41
|
-
|
|
47
|
+
const condition = await this.prepareWhere({
|
|
48
|
+
select: undefined,
|
|
49
|
+
filterFields: this.column_names,
|
|
50
|
+
filter: dfRule.filter,
|
|
51
|
+
localParams,
|
|
52
|
+
tableRule: tableRules
|
|
53
|
+
});
|
|
54
|
+
if (!condition.where) {
|
|
42
55
|
throw "dynamicFields.filter cannot be empty: " + JSON.stringify(dfRule);
|
|
43
|
-
|
|
56
|
+
}
|
|
57
|
+
await this.validateViewRules({
|
|
58
|
+
fields: dfRule.fields,
|
|
59
|
+
filterFields,
|
|
60
|
+
returningFields,
|
|
61
|
+
forcedFilter,
|
|
62
|
+
dynamicFields: tableRules.update.dynamicFields,
|
|
63
|
+
rule: "update"
|
|
64
|
+
});
|
|
44
65
|
await this.find(dfRule.filter, { limit: 0 });
|
|
45
66
|
/** Ensure dynamicFields filters do not overlap */
|
|
46
67
|
for await (const [_dfIndex, _dfRule] of tableRules.update.dynamicFields.entries()) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseUpdateRules.js","sourceRoot":"","sources":["../../lib/DboBuilder/parseUpdateRules.ts"],"names":[],"mappings":";;;AAAA,qDAAkF;AAIlF,gEAA8D;AAE9D;;;GAGG;AACI,KAAK,UAAU,gBAAgB,CAEpC,MAAc,EACd,MAAqB,EACrB,UAAsB,EACtB,WAAyB;IAUzB,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,WAAW,IAAI,EAAE,CAAC;IAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,YAAY,GAA0B,EAAE,EAC1C,UAAU,GAA0B,EAAE,EACtC,QAA4C,EAC5C,eAAe,GAAgB,GAAG,EAClC,YAAY,GAA4B,GAAG,EAC3C,MAAM,GAAgB,GAAG,CAAC;IAE5B,IAAI,iBAAiB,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAEtC,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC,UAAU,CAAC,MAAM;YAAE,MAAM,2BAA2B,GAAG,IAAI,CAAC,IAAI,CAAC;QACtE,CAAC,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAEnF,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,eAAe,IAAI,UAAU,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,CAAC;QAExF,IAAI,CAAC,eAAe,IAAI,MAAM,EAAE,SAAS,EAAE,CAAC;YAC1C,MAAM,0DAA0D,CAAA;QAClE,CAAC;QAED,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,6BAA6B,IAAI,CAAC,IAAI,mBAAmB,CAAC;QAClE,CAAC;QACD,iBAAiB,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,
|
|
1
|
+
{"version":3,"file":"parseUpdateRules.js","sourceRoot":"","sources":["../../lib/DboBuilder/parseUpdateRules.ts"],"names":[],"mappings":"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"}
|
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,
|
|
@@ -6,13 +6,14 @@ import { TableRule } from "../../PublishParser/publishTypesAndUtils";
|
|
|
6
6
|
|
|
7
7
|
export async function count(this: ViewHandler, _filter?: Filter, selectParams?: SelectParams, _param3_unused?: undefined, table_rules?: TableRule, localParams?: LocalParams): Promise<number> {
|
|
8
8
|
const filter = _filter || {};
|
|
9
|
+
const { limit: _limit, ...selectParamsWithoutLimit } = selectParams ?? {};
|
|
9
10
|
try {
|
|
10
11
|
await this._log({ command: "count", localParams, data: { filter } });
|
|
11
|
-
return await this.find(filter, { select:
|
|
12
|
+
return await this.find(filter, { select: selectParamsWithoutLimit?.select ?? "", limit: 0 }, undefined, table_rules, localParams)
|
|
12
13
|
.then(async _allowed => {
|
|
13
14
|
const findQuery = await this.find(
|
|
14
15
|
filter,
|
|
15
|
-
|
|
16
|
+
selectParamsWithoutLimit,
|
|
16
17
|
undefined,
|
|
17
18
|
table_rules,
|
|
18
19
|
{ ...localParams, returnQuery: "noRLS", bypassLimit: true }
|
|
@@ -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 });
|