prostgles-server 3.0.79 → 3.0.80
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 +16 -12
- package/dist/DboBuilder/QueryBuilder/Functions.js.map +1 -1
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.d.ts +5 -7
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.d.ts.map +1 -1
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.js +11 -13
- package/dist/DboBuilder/QueryBuilder/QueryBuilder.js.map +1 -1
- package/dist/DboBuilder/getCondition.d.ts.map +1 -1
- package/dist/DboBuilder/getCondition.js +18 -19
- package/dist/DboBuilder/getCondition.js.map +1 -1
- package/dist/FileManager.d.ts.map +1 -1
- package/dist/FileManager.js +2 -0
- package/dist/FileManager.js.map +1 -1
- package/dist/Filtering.d.ts.map +1 -1
- package/dist/Filtering.js +10 -8
- package/dist/Filtering.js.map +1 -1
- package/dist/Prostgles.d.ts +2 -3
- package/dist/Prostgles.d.ts.map +1 -1
- package/dist/Prostgles.js +1 -1
- package/dist/Prostgles.js.map +1 -1
- package/lib/DboBuilder/QueryBuilder/Functions.d.ts.map +1 -1
- package/lib/DboBuilder/QueryBuilder/Functions.js +16 -12
- package/lib/DboBuilder/QueryBuilder/Functions.ts +21 -14
- package/lib/DboBuilder/QueryBuilder/QueryBuilder.d.ts +2 -2
- package/lib/DboBuilder/QueryBuilder/QueryBuilder.d.ts.map +1 -1
- package/lib/DboBuilder/QueryBuilder/QueryBuilder.js +11 -13
- package/lib/DboBuilder/QueryBuilder/QueryBuilder.ts +24 -21
- package/lib/DboBuilder/getCondition.d.ts.map +1 -1
- package/lib/DboBuilder/getCondition.js +18 -19
- package/lib/DboBuilder/getCondition.ts +21 -19
- package/lib/FileManager.d.ts.map +1 -1
- package/lib/FileManager.js +2 -0
- package/lib/FileManager.ts +2 -0
- package/lib/Filtering.d.ts.map +1 -1
- package/lib/Filtering.js +10 -8
- package/lib/Filtering.ts +13 -10
- package/lib/Prostgles.d.ts +2 -3
- package/lib/Prostgles.d.ts.map +1 -1
- package/lib/Prostgles.js +1 -1
- package/lib/Prostgles.ts +4 -4
- package/package.json +2 -2
- package/tests/client/PID.txt +1 -1
- package/tests/server/package-lock.json +3 -3
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
import { pgp, Filter, LocalParams, isPlainObject, postgresToTsType, SortItem } from "../../DboBuilder";
|
|
8
8
|
import { TableRule } from "../../PublishParser";
|
|
9
|
-
import { SelectParams, isEmpty, FieldFilter, asName, TextFilter_FullTextSearchFilterKeys, ColumnInfo, PG_COLUMN_UDT_DATA_TYPE, isObject, Select } from "prostgles-types";
|
|
9
|
+
import { SelectParams, isEmpty, FieldFilter, asName, TextFilter_FullTextSearchFilterKeys, ColumnInfo, PG_COLUMN_UDT_DATA_TYPE, isObject, Select, JoinSelect } from "prostgles-types";
|
|
10
10
|
import { get } from "../../utils";
|
|
11
11
|
import { TableHandler } from "../TableHandler";
|
|
12
12
|
import { COMPUTED_FIELDS, FieldSpec, FUNCTIONS, FunctionSpec, parseFunction } from "./Functions";
|
|
@@ -174,23 +174,18 @@ export class SelectItemBuilder {
|
|
|
174
174
|
});
|
|
175
175
|
}
|
|
176
176
|
|
|
177
|
-
parseUserSelect = async (userSelect: Select, joinParse?: (key: string, val:
|
|
177
|
+
parseUserSelect = async (userSelect: Select, joinParse?: (key: string, val: JoinSelect, throwErr: (msg: string) => any) => any) => {
|
|
178
178
|
|
|
179
|
-
/*
|
|
179
|
+
/* [col1, col2, col3] */
|
|
180
180
|
if(Array.isArray(userSelect)){
|
|
181
181
|
if(userSelect.find(key => typeof key !== "string")) throw "Invalid array select. Expecting an array of strings";
|
|
182
182
|
|
|
183
183
|
userSelect.map(key => this.addColumn(key, true))
|
|
184
184
|
|
|
185
185
|
/* Empty select */
|
|
186
|
-
} else if(userSelect === ""){
|
|
187
|
-
// select.push({
|
|
188
|
-
// type: "function",
|
|
189
|
-
// alias: "",
|
|
190
|
-
// getFields: () => [],
|
|
191
|
-
// getQuery: () => ""
|
|
192
|
-
// })
|
|
186
|
+
} else if(userSelect === ""){
|
|
193
187
|
return [];
|
|
188
|
+
|
|
194
189
|
} else if(userSelect === "*"){
|
|
195
190
|
this.allowedFields.map(key => this.addColumn(key, true) );
|
|
196
191
|
|
|
@@ -226,7 +221,7 @@ export class SelectItemBuilder {
|
|
|
226
221
|
}
|
|
227
222
|
|
|
228
223
|
/* Aggs and functions */
|
|
229
|
-
} else if(typeof val === "string" ||
|
|
224
|
+
} else if(typeof val === "string" || isObject(val)) {
|
|
230
225
|
|
|
231
226
|
/* Function shorthand notation
|
|
232
227
|
{ id: "$max" } === { id: { $max: ["id"] } } === SELECT MAX(id) AS id
|
|
@@ -260,8 +255,10 @@ export class SelectItemBuilder {
|
|
|
260
255
|
/* Join */
|
|
261
256
|
} else {
|
|
262
257
|
|
|
263
|
-
if(!joinParse)
|
|
264
|
-
|
|
258
|
+
if(!joinParse) {
|
|
259
|
+
throw "Joins dissalowed";
|
|
260
|
+
}
|
|
261
|
+
await joinParse(key, val as JoinSelect, throwErr);
|
|
265
262
|
|
|
266
263
|
}
|
|
267
264
|
|
|
@@ -308,7 +305,7 @@ export async function getNewQuery(
|
|
|
308
305
|
|
|
309
306
|
|
|
310
307
|
|
|
311
|
-
await sBuilder.parseUserSelect(userSelect, async (key, val, throwErr) => {
|
|
308
|
+
await sBuilder.parseUserSelect(userSelect, async (key, val: any, throwErr) => {
|
|
312
309
|
|
|
313
310
|
let j_filter: Filter = {},
|
|
314
311
|
j_selectParams: SelectParams = {},
|
|
@@ -325,19 +322,23 @@ export async function getNewQuery(
|
|
|
325
322
|
} else {
|
|
326
323
|
|
|
327
324
|
/* Full option join { field_name: db.innerJoin.table_name(filter, select) } */
|
|
328
|
-
const JOIN_KEYS = ["$innerJoin", "$leftJoin"];
|
|
329
|
-
const JOIN_PARAMS = ["select", "filter", "$path", "offset", "limit", "orderBy"];
|
|
330
|
-
const joinKeys = Object.keys(val).filter(k => JOIN_KEYS.includes(k));
|
|
325
|
+
const JOIN_KEYS = ["$innerJoin", "$leftJoin"] as const;
|
|
326
|
+
const JOIN_PARAMS = ["select", "filter", "$path", "$condition", "offset", "limit", "orderBy"] as const;
|
|
327
|
+
const joinKeys = Object.keys(val).filter(k => JOIN_KEYS.includes(k as any));
|
|
331
328
|
if(joinKeys.length > 1) {
|
|
332
329
|
throwErr("\nCannot specify more than one join type ( $innerJoin OR $leftJoin )");
|
|
333
330
|
} else if(joinKeys.length === 1) {
|
|
334
|
-
const invalidParams = Object.keys(val).filter(k => ![ ...JOIN_PARAMS, ...JOIN_KEYS ].includes(k));
|
|
335
|
-
if(invalidParams.length)
|
|
331
|
+
const invalidParams = Object.keys(val).filter(k => ![ ...JOIN_PARAMS, ...JOIN_KEYS ].includes(k as any));
|
|
332
|
+
if(invalidParams.length) {
|
|
333
|
+
throw "Invalid join params: " + invalidParams.join(", ");
|
|
334
|
+
}
|
|
336
335
|
|
|
337
336
|
j_isLeftJoin = joinKeys[0] === "$leftJoin";
|
|
338
337
|
j_table = val[joinKeys[0]];
|
|
339
338
|
j_alias = key;
|
|
340
|
-
if(typeof j_table !== "string")
|
|
339
|
+
if(typeof j_table !== "string") {
|
|
340
|
+
throw "\nIssue with select. \nJoin type must be a string table name but got -> " + JSON.stringify({ [key]: val });
|
|
341
|
+
}
|
|
341
342
|
|
|
342
343
|
j_selectParams.select = val.select || "*";
|
|
343
344
|
j_filter = val.filter || {};
|
|
@@ -351,7 +352,9 @@ export async function getNewQuery(
|
|
|
351
352
|
j_table = key;
|
|
352
353
|
}
|
|
353
354
|
}
|
|
354
|
-
if(!j_table)
|
|
355
|
+
if(!j_table) {
|
|
356
|
+
throw "j_table missing"
|
|
357
|
+
}
|
|
355
358
|
const _thisJoinedTable: any = _this.dboBuilder.dbo[j_table];
|
|
356
359
|
if(!_thisJoinedTable) {
|
|
357
360
|
throw `Joined table ${JSON.stringify(j_table)} is disallowed or inexistent \nOr you've forgot to put the function arguments into an array`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getCondition.d.ts","sourceRoot":"","sources":["getCondition.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,WAAW,EAA6B,MAAM,eAAe,CAAC;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAoC,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAM1C;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"getCondition.d.ts","sourceRoot":"","sources":["getCondition.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,WAAW,EAA6B,MAAM,eAAe,CAAC;AAC3F,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAG7C,OAAO,EAAoC,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAM1C;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,WAAW,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,CAAA;CAAE,mBAsQvM"}
|
|
@@ -15,16 +15,16 @@ const FILTER_FUNCS = Functions_1.FUNCTIONS.filter(f => f.canBeUsedForFilter);
|
|
|
15
15
|
* { fff: { $ilike: 'abc' } } => "fff" ilike 'abc'
|
|
16
16
|
*/
|
|
17
17
|
async function getCondition(params) {
|
|
18
|
-
const { filter, select, allowed_colnames, tableAlias, localParams, tableRules } = params;
|
|
19
|
-
let
|
|
18
|
+
const { filter: rawFilter, select, allowed_colnames, tableAlias, localParams, tableRules } = params;
|
|
19
|
+
let filter = { ...rawFilter };
|
|
20
20
|
/* Exists join filter */
|
|
21
21
|
const ERR = "Invalid exists filter. \nExpecting somethibng like: \n | { $exists: { tableName.tableName2: Filter } } \n | { $exists: { \"**.tableName3\": Filter } }\n | { path: string[]; filter: AnyObject }";
|
|
22
22
|
const SP_WILDCARD = "**";
|
|
23
|
-
let existsKeys = (0, prostgles_types_1.getKeys)(
|
|
24
|
-
.filter(k => prostgles_types_1.EXISTS_KEYS.includes(k) && Object.keys(
|
|
23
|
+
let existsKeys = (0, prostgles_types_1.getKeys)(filter)
|
|
24
|
+
.filter(k => prostgles_types_1.EXISTS_KEYS.includes(k) && Object.keys(filter[k] ?? {}).length)
|
|
25
25
|
.map(key => {
|
|
26
26
|
const isJoined = key.toLowerCase().includes("join");
|
|
27
|
-
const filterValue =
|
|
27
|
+
const filterValue = filter[key];
|
|
28
28
|
/**
|
|
29
29
|
* type ExistsJoined =
|
|
30
30
|
* | { "table1.table2": { column: filterValue } }
|
|
@@ -75,13 +75,12 @@ async function getCondition(params) {
|
|
|
75
75
|
// }
|
|
76
76
|
// });
|
|
77
77
|
let funcConds = [];
|
|
78
|
-
const
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
throw `A function filter must contain an array. E.g: { $funcFilterName: ["col1"] } \n but got: ${JSON.stringify((0, prostgles_types_1.pickKeys)(data, [f.name]))} `;
|
|
78
|
+
const funcFilter = FILTER_FUNCS.filter(f => f.name in filter);
|
|
79
|
+
funcFilter.map(f => {
|
|
80
|
+
const funcArgs = filter[f.name];
|
|
81
|
+
if (!Array.isArray(funcArgs)) {
|
|
82
|
+
throw `A function filter must contain an array. E.g: { $funcFilterName: ["col1"] } \n but got: ${JSON.stringify((0, prostgles_types_1.pickKeys)(filter, [f.name]))} `;
|
|
83
|
+
}
|
|
85
84
|
const fields = this.parseFieldFilter(f.getFields(funcArgs), true, allowed_colnames);
|
|
86
85
|
const dissallowedCols = fields.filter(fname => !allowed_colnames.includes(fname));
|
|
87
86
|
if (dissallowedCols.length) {
|
|
@@ -97,7 +96,7 @@ async function getCondition(params) {
|
|
|
97
96
|
const p = this.getValidatedRules(tableRules, localParams);
|
|
98
97
|
const computedFields = p.allColumns.filter(c => c.type === "computed");
|
|
99
98
|
let computedColConditions = [];
|
|
100
|
-
Object.keys(
|
|
99
|
+
Object.keys(filter || {}).map(key => {
|
|
101
100
|
const compCol = computedFields.find(cf => cf.name === key);
|
|
102
101
|
if (compCol) {
|
|
103
102
|
computedColConditions.push(compCol.getQuery({
|
|
@@ -107,8 +106,8 @@ async function getCondition(params) {
|
|
|
107
106
|
/* CTID not available in AFTER trigger */
|
|
108
107
|
// ctidField: this.is_view? undefined : "ctid"
|
|
109
108
|
ctidField: undefined,
|
|
110
|
-
}) + ` = ${DboBuilder_1.pgp.as.format("$1", [
|
|
111
|
-
delete
|
|
109
|
+
}) + ` = ${DboBuilder_1.pgp.as.format("$1", [filter[key]])}`);
|
|
110
|
+
delete filter[key];
|
|
112
111
|
}
|
|
113
112
|
});
|
|
114
113
|
let allowedSelect = [];
|
|
@@ -151,7 +150,7 @@ async function getCondition(params) {
|
|
|
151
150
|
const complexFilters = [];
|
|
152
151
|
const complexFilterKey = "$filter";
|
|
153
152
|
const allowedComparators = [">", "<", "=", "<=", ">=", "<>", "!="];
|
|
154
|
-
if (complexFilterKey in
|
|
153
|
+
if (complexFilterKey in filter) {
|
|
155
154
|
/**
|
|
156
155
|
* { $funcName: [arg1, arg2] }
|
|
157
156
|
* { $column: "column_name" }
|
|
@@ -171,7 +170,7 @@ async function getCondition(params) {
|
|
|
171
170
|
const funcDef = (0, Functions_1.parseFunction)({ func: funcName, args, functions: Functions_1.FUNCTIONS, allowedFields: allowed_colnames });
|
|
172
171
|
return funcDef.getQuery({ args, tableAlias, allColumns: this.columns, allowedFields: allowed_colnames });
|
|
173
172
|
};
|
|
174
|
-
const complexFilter =
|
|
173
|
+
const complexFilter = filter[complexFilterKey];
|
|
175
174
|
if (!Array.isArray(complexFilter)) {
|
|
176
175
|
throw `Invalid $filter. Must contain an array of at least element but got: ${JSON.stringify(complexFilter)} `;
|
|
177
176
|
}
|
|
@@ -197,7 +196,7 @@ async function getCondition(params) {
|
|
|
197
196
|
{ $joinFilter: { $ST_DWithin: [table.col, foreignTable.col, distance] }
|
|
198
197
|
will make an exists filter
|
|
199
198
|
*/
|
|
200
|
-
let filterKeys = Object.keys(
|
|
199
|
+
let filterKeys = Object.keys(filter).filter(k => k !== complexFilterKey && !funcFilter.find(ek => ek.name === k) && !computedFields.find(cf => cf.name === k) && !existsKeys.find(ek => ek.key === k));
|
|
201
200
|
// if(allowed_colnames){
|
|
202
201
|
// const aliasedColumns = (select || []).filter(s =>
|
|
203
202
|
// ["function", "computed", "column"].includes(s.type) && allowed_colnames.includes(s.alias) ||
|
|
@@ -215,7 +214,7 @@ async function getCondition(params) {
|
|
|
215
214
|
}
|
|
216
215
|
/* TODO: Allow filter funcs */
|
|
217
216
|
// const singleFuncs = FUNCTIONS.filter(f => f.singleColArg);
|
|
218
|
-
const f = (0, prostgles_types_1.pickKeys)(
|
|
217
|
+
const f = (0, prostgles_types_1.pickKeys)(filter, filterKeys);
|
|
219
218
|
const q = (0, Filtering_1.parseFilterItem)({
|
|
220
219
|
filter: f,
|
|
221
220
|
tableAlias,
|
|
@@ -17,21 +17,21 @@ const FILTER_FUNCS = FUNCTIONS.filter(f => f.canBeUsedForFilter);
|
|
|
17
17
|
* { fff: { $ilike: 'abc' } } => "fff" ilike 'abc'
|
|
18
18
|
*/
|
|
19
19
|
export async function getCondition(this: ViewHandler, params: { filter: any, select?: SelectItem[], allowed_colnames: string[], tableAlias?: string, localParams?: LocalParams, tableRules?: TableRule }) {
|
|
20
|
-
const { filter, select, allowed_colnames, tableAlias, localParams, tableRules } = params;
|
|
20
|
+
const { filter: rawFilter, select, allowed_colnames, tableAlias, localParams, tableRules } = params;
|
|
21
21
|
|
|
22
22
|
|
|
23
|
-
let
|
|
23
|
+
let filter = { ... (rawFilter as any) } as any;
|
|
24
24
|
|
|
25
25
|
/* Exists join filter */
|
|
26
26
|
const ERR = "Invalid exists filter. \nExpecting somethibng like: \n | { $exists: { tableName.tableName2: Filter } } \n | { $exists: { \"**.tableName3\": Filter } }\n | { path: string[]; filter: AnyObject }"
|
|
27
27
|
const SP_WILDCARD = "**";
|
|
28
|
-
let existsKeys: ExistsFilterConfig[] = getKeys(
|
|
29
|
-
.filter(k => EXISTS_KEYS.includes(k as EXISTS_KEY) && Object.keys(
|
|
28
|
+
let existsKeys: ExistsFilterConfig[] = getKeys(filter)
|
|
29
|
+
.filter(k => EXISTS_KEYS.includes(k as EXISTS_KEY) && Object.keys(filter[k] ?? {}).length)
|
|
30
30
|
.map(key => {
|
|
31
31
|
|
|
32
32
|
const isJoined = key.toLowerCase().includes("join");
|
|
33
33
|
|
|
34
|
-
const filterValue =
|
|
34
|
+
const filterValue = filter[key];
|
|
35
35
|
/**
|
|
36
36
|
* type ExistsJoined =
|
|
37
37
|
* | { "table1.table2": { column: filterValue } }
|
|
@@ -85,13 +85,15 @@ const FILTER_FUNCS = FUNCTIONS.filter(f => f.canBeUsedForFilter);
|
|
|
85
85
|
// });
|
|
86
86
|
// }
|
|
87
87
|
// });
|
|
88
|
+
|
|
88
89
|
let funcConds: string[] = [];
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
90
|
+
const funcFilter = FILTER_FUNCS.filter(f => f.name in filter);
|
|
91
|
+
|
|
92
|
+
funcFilter.map(f => {
|
|
93
|
+
const funcArgs = filter[f.name];
|
|
94
|
+
if (!Array.isArray(funcArgs)) {
|
|
95
|
+
throw `A function filter must contain an array. E.g: { $funcFilterName: ["col1"] } \n but got: ${JSON.stringify(pickKeys(filter, [f.name]))} `;
|
|
96
|
+
}
|
|
95
97
|
const fields = this.parseFieldFilter(f.getFields(funcArgs), true, allowed_colnames);
|
|
96
98
|
|
|
97
99
|
const dissallowedCols = fields.filter(fname => !allowed_colnames.includes(fname))
|
|
@@ -99,7 +101,7 @@ const FILTER_FUNCS = FUNCTIONS.filter(f => f.canBeUsedForFilter);
|
|
|
99
101
|
throw `Invalid/disallowed columns found in function filter: ${dissallowedCols}`
|
|
100
102
|
}
|
|
101
103
|
funcConds.push(f.getQuery({ args: funcArgs, allColumns: this.columns, allowedFields: allowed_colnames, tableAlias }));
|
|
102
|
-
})
|
|
104
|
+
});
|
|
103
105
|
|
|
104
106
|
|
|
105
107
|
let existsCond = "";
|
|
@@ -111,7 +113,7 @@ const FILTER_FUNCS = FUNCTIONS.filter(f => f.canBeUsedForFilter);
|
|
|
111
113
|
const p = this.getValidatedRules(tableRules, localParams);
|
|
112
114
|
const computedFields = p.allColumns.filter(c => c.type === "computed");
|
|
113
115
|
let computedColConditions: string[] = [];
|
|
114
|
-
Object.keys(
|
|
116
|
+
Object.keys(filter || {}).map(key => {
|
|
115
117
|
const compCol = computedFields.find(cf => cf.name === key);
|
|
116
118
|
if (compCol) {
|
|
117
119
|
computedColConditions.push(
|
|
@@ -124,9 +126,9 @@ const FILTER_FUNCS = FUNCTIONS.filter(f => f.canBeUsedForFilter);
|
|
|
124
126
|
// ctidField: this.is_view? undefined : "ctid"
|
|
125
127
|
|
|
126
128
|
ctidField: undefined,
|
|
127
|
-
}) + ` = ${pgp.as.format("$1", [(
|
|
129
|
+
}) + ` = ${pgp.as.format("$1", [(filter as any)[key]])}`
|
|
128
130
|
);
|
|
129
|
-
delete (
|
|
131
|
+
delete (filter as any)[key];
|
|
130
132
|
}
|
|
131
133
|
});
|
|
132
134
|
|
|
@@ -176,7 +178,7 @@ const FILTER_FUNCS = FUNCTIONS.filter(f => f.canBeUsedForFilter);
|
|
|
176
178
|
const complexFilters: string[] = [];
|
|
177
179
|
const complexFilterKey = "$filter";
|
|
178
180
|
const allowedComparators = [">", "<", "=", "<=", ">=", "<>", "!="]
|
|
179
|
-
if (complexFilterKey in
|
|
181
|
+
if (complexFilterKey in filter) {
|
|
180
182
|
|
|
181
183
|
/**
|
|
182
184
|
* { $funcName: [arg1, arg2] }
|
|
@@ -198,7 +200,7 @@ const FILTER_FUNCS = FUNCTIONS.filter(f => f.canBeUsedForFilter);
|
|
|
198
200
|
return funcDef.getQuery({ args, tableAlias, allColumns: this.columns, allowedFields: allowed_colnames });
|
|
199
201
|
}
|
|
200
202
|
|
|
201
|
-
const complexFilter =
|
|
203
|
+
const complexFilter = filter[complexFilterKey];
|
|
202
204
|
if (!Array.isArray(complexFilter)) {
|
|
203
205
|
throw `Invalid $filter. Must contain an array of at least element but got: ${JSON.stringify(complexFilter)} `
|
|
204
206
|
}
|
|
@@ -229,7 +231,7 @@ const FILTER_FUNCS = FUNCTIONS.filter(f => f.canBeUsedForFilter);
|
|
|
229
231
|
will make an exists filter
|
|
230
232
|
*/
|
|
231
233
|
|
|
232
|
-
let filterKeys = Object.keys(
|
|
234
|
+
let filterKeys = Object.keys(filter).filter(k => k !== complexFilterKey && !funcFilter.find(ek => ek.name === k) && !computedFields.find(cf => cf.name === k) && !existsKeys.find(ek => ek.key === k));
|
|
233
235
|
// if(allowed_colnames){
|
|
234
236
|
// const aliasedColumns = (select || []).filter(s =>
|
|
235
237
|
// ["function", "computed", "column"].includes(s.type) && allowed_colnames.includes(s.alias) ||
|
|
@@ -257,7 +259,7 @@ const FILTER_FUNCS = FUNCTIONS.filter(f => f.canBeUsedForFilter);
|
|
|
257
259
|
/* TODO: Allow filter funcs */
|
|
258
260
|
// const singleFuncs = FUNCTIONS.filter(f => f.singleColArg);
|
|
259
261
|
|
|
260
|
-
const f = pickKeys(
|
|
262
|
+
const f = pickKeys(filter, filterKeys);
|
|
261
263
|
const q = parseFilterItem({
|
|
262
264
|
filter: f,
|
|
263
265
|
tableAlias,
|
package/lib/FileManager.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileManager.d.ts","sourceRoot":"","sources":["FileManager.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,EAAE,EAAO,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"FileManager.d.ts","sourceRoot":"","sources":["FileManager.ts"],"names":[],"mappings":"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"}
|
package/lib/FileManager.js
CHANGED
|
@@ -28,6 +28,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
28
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
29
|
exports.bytesToSize = exports.getFileType = exports.getFileTypeFromFilename = exports.removeExpressRoute = exports.asSQLIdentifier = void 0;
|
|
30
30
|
const aws_sdk_1 = require("aws-sdk");
|
|
31
|
+
// import { PutObjectCommand, S3 } from "@aws-sdk/client-s3";
|
|
31
32
|
const fs = __importStar(require("fs"));
|
|
32
33
|
const stream = __importStar(require("stream"));
|
|
33
34
|
const sharp = __importStar(require("sharp"));
|
|
@@ -306,6 +307,7 @@ class FileManager {
|
|
|
306
307
|
};
|
|
307
308
|
let content_length = 0;
|
|
308
309
|
const manager = this.s3Client.upload(params, (err, res) => {
|
|
310
|
+
// const manager = this.s3Client.send(new PutObjectCommand(params), (err: Error, res) => {
|
|
309
311
|
if (err) {
|
|
310
312
|
reject(err.toString());
|
|
311
313
|
console.error(err);
|
package/lib/FileManager.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
|
|
2
2
|
import { S3, IAM } from 'aws-sdk';
|
|
3
3
|
import { ManagedUpload } from 'aws-sdk/clients/s3';
|
|
4
|
+
// import { PutObjectCommand, S3 } from "@aws-sdk/client-s3";
|
|
4
5
|
import * as fs from 'fs';
|
|
5
6
|
import * as stream from 'stream';
|
|
6
7
|
|
|
@@ -386,6 +387,7 @@ export default class FileManager {
|
|
|
386
387
|
|
|
387
388
|
let content_length = 0;
|
|
388
389
|
const manager = this.s3Client.upload(params, (err: Error, res: ManagedUpload.SendData) => {
|
|
390
|
+
// const manager = this.s3Client.send(new PutObjectCommand(params), (err: Error, res) => {
|
|
389
391
|
|
|
390
392
|
if(err){
|
|
391
393
|
reject(err.toString());
|
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,MAqV3D,CAAA"}
|
package/lib/Filtering.js
CHANGED
|
@@ -183,18 +183,20 @@ const parseFilterItem = (args) => {
|
|
|
183
183
|
* Filter notation
|
|
184
184
|
* geom && st_makeenvelope(funcArgs)
|
|
185
185
|
*/
|
|
186
|
-
if ((0, prostgles_types_1.isObject)(filterValue) &&
|
|
186
|
+
if ((0, prostgles_types_1.isObject)(filterValue) && !(filterValue instanceof Date)) {
|
|
187
187
|
const filterValueKeys = Object.keys(filterValue);
|
|
188
|
-
if
|
|
189
|
-
|
|
190
|
-
}
|
|
188
|
+
// if(!filterValueKeys.length || filterValueKeys.length !== 1){
|
|
189
|
+
// return mErr("Bad filter. Expecting a nested object with one key only but got: " + JSON.stringify(filterValue, null, 2));
|
|
190
|
+
// }
|
|
191
191
|
funcName = filterValueKeys[0];
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
return mErr(`Bad filter. Nested function ${funcName} could not be found. Expecting one of: ${ALLOWED_FUNCS}`);
|
|
192
|
+
if (ALLOWED_FUNCS.includes(funcName)) {
|
|
193
|
+
funcArgs = filterValue[funcName];
|
|
194
|
+
// return mErr(`Bad filter. Nested function ${funcName} could not be found. Expecting one of: ${ALLOWED_FUNCS}`);
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
funcName = undefined;
|
|
195
198
|
}
|
|
196
199
|
}
|
|
197
|
-
// console.log({ fOpType, fVal, sOpType })
|
|
198
200
|
/** st_makeenvelope */
|
|
199
201
|
if (prostgles_types_1.GeomFilterKeys.includes(filterOperand) && funcName && prostgles_types_1.GeomFilter_Funcs.includes(funcName)) {
|
|
200
202
|
/** If leftQ is geography then this err can happen: 'Antipodal (180 degrees long) edge detected!' */
|
package/lib/Filtering.ts
CHANGED
|
@@ -224,31 +224,34 @@ export const parseFilterItem = (args: ParseFilterItemArgs): string => {
|
|
|
224
224
|
const filterValue = rightF[filterOperand];
|
|
225
225
|
const ALLOWED_FUNCS = [ ...GeomFilter_Funcs, ...TextFilter_FullTextSearchFilterKeys] as const;
|
|
226
226
|
let funcName: undefined | typeof ALLOWED_FUNCS[number];
|
|
227
|
-
let funcArgs: any[]
|
|
227
|
+
let funcArgs: undefined | any[];
|
|
228
228
|
|
|
229
229
|
/**
|
|
230
230
|
* Filter notation
|
|
231
231
|
* geom && st_makeenvelope(funcArgs)
|
|
232
232
|
*/
|
|
233
|
-
if(isObject(filterValue) &&
|
|
233
|
+
if(isObject(filterValue) && !(filterValue instanceof Date)){
|
|
234
234
|
const filterValueKeys = Object.keys(filterValue);
|
|
235
|
-
if(!filterValueKeys.length || filterValueKeys.length !== 1){
|
|
236
|
-
|
|
237
|
-
}
|
|
235
|
+
// if(!filterValueKeys.length || filterValueKeys.length !== 1){
|
|
236
|
+
// return mErr("Bad filter. Expecting a nested object with one key only but got: " + JSON.stringify(filterValue, null, 2));
|
|
237
|
+
// }
|
|
238
238
|
funcName = filterValueKeys[0] as any;
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
return mErr(`Bad filter. Nested function ${funcName} could not be found. Expecting one of: ${ALLOWED_FUNCS}`);
|
|
239
|
+
if(ALLOWED_FUNCS.includes(funcName as any)){
|
|
240
|
+
funcArgs = filterValue[funcName as any];
|
|
241
|
+
// return mErr(`Bad filter. Nested function ${funcName} could not be found. Expecting one of: ${ALLOWED_FUNCS}`);
|
|
242
|
+
} else {
|
|
243
|
+
funcName = undefined;
|
|
242
244
|
}
|
|
243
|
-
}
|
|
244
|
-
// console.log({ fOpType, fVal, sOpType })
|
|
245
|
+
}
|
|
245
246
|
|
|
246
247
|
/** st_makeenvelope */
|
|
247
248
|
if(GeomFilterKeys.includes(filterOperand as any) && funcName && GeomFilter_Funcs.includes(funcName as any)){
|
|
249
|
+
|
|
248
250
|
/** If leftQ is geography then this err can happen: 'Antipodal (180 degrees long) edge detected!' */
|
|
249
251
|
if(funcName.toLowerCase() === "st_makeenvelope") {
|
|
250
252
|
leftQ += "::geometry";
|
|
251
253
|
}
|
|
254
|
+
|
|
252
255
|
return `${leftQ} ${filterOperand} ${funcName}${parseRightVal(funcArgs, "csv")}`;
|
|
253
256
|
|
|
254
257
|
} else if(["=", "$eq"].includes(filterOperand) && !funcName){
|
package/lib/Prostgles.d.ts
CHANGED
|
@@ -159,11 +159,10 @@ export declare type ProstglesInitOptions<S = void, SUser extends SessionUser = S
|
|
|
159
159
|
| {
|
|
160
160
|
checkIntervalMillis: number;
|
|
161
161
|
};
|
|
162
|
-
watchSchema?:
|
|
163
162
|
/**
|
|
164
|
-
* If
|
|
163
|
+
* If truthy then DBoGenerated.d.ts will be updated and "onReady" will be called with new schema on both client and server
|
|
165
164
|
*/
|
|
166
|
-
boolean
|
|
165
|
+
watchSchema?: boolean
|
|
167
166
|
/**
|
|
168
167
|
* Will only rewrite the DBoGenerated.d.ts found in tsGeneratedTypesDir
|
|
169
168
|
* This is meant to be used in development when server restarts on file change
|
package/lib/Prostgles.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Prostgles.d.ts","sourceRoot":"","sources":["Prostgles.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"Prostgles.d.ts","sourceRoot":"","sources":["Prostgles.ts"],"names":[],"mappings":"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"}
|
package/lib/Prostgles.js
CHANGED
|
@@ -208,7 +208,7 @@ class Prostgles {
|
|
|
208
208
|
this.writeDBSchema(true);
|
|
209
209
|
}
|
|
210
210
|
}
|
|
211
|
-
else if (
|
|
211
|
+
else if ((0, prostgles_types_1.isObject)(watchSchemaType) && "checkIntervalMillis" in watchSchemaType) {
|
|
212
212
|
/* Full re-init. Sockets must reconnect */
|
|
213
213
|
console.log("watchSchema: Full re-initialisation");
|
|
214
214
|
this.init(onReady);
|
package/lib/Prostgles.ts
CHANGED
|
@@ -263,10 +263,10 @@ export type ProstglesInitOptions<S = void, SUser extends SessionUser = SessionUs
|
|
|
263
263
|
*/
|
|
264
264
|
| { checkIntervalMillis: number };
|
|
265
265
|
|
|
266
|
+
/**
|
|
267
|
+
* If truthy then DBoGenerated.d.ts will be updated and "onReady" will be called with new schema on both client and server
|
|
268
|
+
*/
|
|
266
269
|
watchSchema?:
|
|
267
|
-
/**
|
|
268
|
-
* If true then DBoGenerated.d.ts will be updated and "onReady" will be called with new schema on both client and server
|
|
269
|
-
*/
|
|
270
270
|
| boolean
|
|
271
271
|
|
|
272
272
|
/**
|
|
@@ -432,7 +432,7 @@ export class Prostgles {
|
|
|
432
432
|
this.writeDBSchema(true);
|
|
433
433
|
}
|
|
434
434
|
|
|
435
|
-
} else if (
|
|
435
|
+
} else if (isObject(watchSchemaType) && "checkIntervalMillis" in watchSchemaType) {
|
|
436
436
|
/* Full re-init. Sockets must reconnect */
|
|
437
437
|
console.log("watchSchema: Full re-initialisation")
|
|
438
438
|
this.init(onReady);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "prostgles-server",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.80",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -39,7 +39,7 @@
|
|
|
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.23",
|
|
43
43
|
"sharp": "^0.31.0",
|
|
44
44
|
"typescript": "^4.9.5"
|
|
45
45
|
},
|
package/tests/client/PID.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
73502
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
},
|
|
22
22
|
"../..": {
|
|
23
23
|
"name": "prostgles-server",
|
|
24
|
-
"version": "3.0.
|
|
24
|
+
"version": "3.0.79",
|
|
25
25
|
"license": "MIT",
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@aws-sdk/client-s3": "^3.272.0",
|
|
@@ -32,7 +32,7 @@
|
|
|
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.23",
|
|
36
36
|
"sharp": "^0.31.0",
|
|
37
37
|
"typescript": "^4.9.5"
|
|
38
38
|
},
|
|
@@ -1512,7 +1512,7 @@
|
|
|
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.23",
|
|
1516
1516
|
"sharp": "^0.31.0",
|
|
1517
1517
|
"typescript": "^4.9.5"
|
|
1518
1518
|
}
|