@stamhoofd/sql 2.43.3 → 2.44.1
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.
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { StamhoofdFilter } from
|
|
2
|
-
import { SQLExpression } from
|
|
3
|
-
import { SQLColumnExpression, SQLScalarValue } from
|
|
4
|
-
import { SQLSelect } from
|
|
5
|
-
import { SQLWhere } from
|
|
1
|
+
import { StamhoofdFilter } from '@stamhoofd/structures';
|
|
2
|
+
import { SQLExpression } from '../SQLExpression';
|
|
3
|
+
import { SQLColumnExpression, SQLScalarValue } from '../SQLExpressions';
|
|
4
|
+
import { SQLSelect } from '../SQLSelect';
|
|
5
|
+
import { SQLWhere } from '../SQLWhere';
|
|
6
6
|
export type SQLFilterCompiler = (filter: StamhoofdFilter, filters: SQLFilterDefinitions) => SQLWhere | null;
|
|
7
7
|
export type SQLFilterDefinitions = Record<string, SQLFilterCompiler>;
|
|
8
8
|
export declare function andSQLFilterCompiler(filter: StamhoofdFilter, filters: SQLFilterDefinitions): SQLWhere;
|
|
@@ -11,8 +11,8 @@ export declare function notSQLFilterCompiler(filter: StamhoofdFilter, filters: S
|
|
|
11
11
|
export declare function createSQLRelationFilterCompiler(baseSelect: InstanceType<typeof SQLSelect> & SQLExpression, definitions: SQLFilterDefinitions): SQLFilterCompiler;
|
|
12
12
|
export declare function createSQLFilterNamespace(definitions: SQLFilterDefinitions): SQLFilterCompiler;
|
|
13
13
|
export declare enum SQLValueType {
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
JSONBoolean = "JSONBoolean",
|
|
15
|
+
JSONString = "JSONString"
|
|
16
16
|
}
|
|
17
17
|
type SQLExpressionFilterOptions = {
|
|
18
18
|
normalizeValue?: (v: SQLScalarValue | null) => SQLScalarValue | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLFilter.d.ts","sourceRoot":"","sources":["../../../src/filters/SQLFilter.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAqB,mBAAmB,EAAyB,cAAc,EAAoD,MAAM,mBAAmB,CAAC;AAEpK,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAmG,MAAM,aAAa,CAAC;AAExI,MAAM,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,oBAAoB,KAAK,QAAQ,
|
|
1
|
+
{"version":3,"file":"SQLFilter.d.ts","sourceRoot":"","sources":["../../../src/filters/SQLFilter.ts"],"names":[],"mappings":"AACA,OAAO,EAAyB,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE/E,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAqB,mBAAmB,EAAyB,cAAc,EAAoD,MAAM,mBAAmB,CAAC;AAEpK,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAmG,MAAM,aAAa,CAAC;AAExI,MAAM,MAAM,iBAAiB,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,oBAAoB,KAAK,QAAQ,GAAG,IAAI,CAAC;AAC5G,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAErE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,oBAAoB,GAAG,QAAQ,CAGrG;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,oBAAoB,GAAG,QAAQ,CAGpG;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,oBAAoB,GAAG,QAAQ,CAGrG;AA0ED,wBAAgB,+BAA+B,CAAC,UAAU,EAAE,YAAY,CAAC,OAAO,SAAS,CAAC,GAAG,aAAa,EAAE,WAAW,EAAE,oBAAoB,GAAG,iBAAiB,CAYhK;AAGD,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,oBAAoB,GAAG,iBAAiB,CAI7F;AAED,oBAAY,YAAY;IACpB,WAAW,gBAAgB;IAC3B,UAAU,eAAe;CAC5B;AAED,KAAK,0BAA0B,GAAG;IAC9B,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,GAAG,IAAI,KAAK,cAAc,GAAG,IAAI,CAAC;IACrE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,IAAI,CAAC,EAAE,YAAY,CAAC;CACvB,CAAC;AAEF,wBAAgB,iCAAiC,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,GAAE,0BAA+B,GAAG,iBAAiB,CAiQ3I;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,EAAE,OAAO,CAAC,EAAE,0BAA0B,GAAG,iBAAiB,CAGzI;AAED,eAAO,MAAM,sBAAsB,EAAE,oBAIpC,CAAC;AA+CF,eAAO,MAAM,kBAAkB,6BAAuB,CAAC"}
|
|
@@ -41,8 +41,8 @@ function guardFilterCompareValue(val) {
|
|
|
41
41
|
if (val === null) {
|
|
42
42
|
return null;
|
|
43
43
|
}
|
|
44
|
-
if (typeof val === 'object' &&
|
|
45
|
-
if (val[
|
|
44
|
+
if (typeof val === 'object' && '$' in val) {
|
|
45
|
+
if (val['$'] === '$now') {
|
|
46
46
|
return val;
|
|
47
47
|
}
|
|
48
48
|
}
|
|
@@ -70,8 +70,8 @@ function doNormalizeValue(val, options) {
|
|
|
70
70
|
if (val === null) {
|
|
71
71
|
return null;
|
|
72
72
|
}
|
|
73
|
-
if (typeof val === 'object' &&
|
|
74
|
-
const specialValue = val[
|
|
73
|
+
if (typeof val === 'object' && '$' in val) {
|
|
74
|
+
const specialValue = val['$'];
|
|
75
75
|
switch (specialValue) {
|
|
76
76
|
case '$now':
|
|
77
77
|
return doNormalizeValue(new Date());
|
|
@@ -105,7 +105,7 @@ var SQLValueType;
|
|
|
105
105
|
})(SQLValueType || (exports.SQLValueType = SQLValueType = {}));
|
|
106
106
|
function createSQLExpressionFilterCompiler(sqlExpression, options = {}) {
|
|
107
107
|
let { normalizeValue, isJSONObject = false, isJSONValue = false, nullable = false } = options;
|
|
108
|
-
normalizeValue = normalizeValue ?? (
|
|
108
|
+
normalizeValue = normalizeValue ?? (v => v);
|
|
109
109
|
const norm = (val) => {
|
|
110
110
|
const n = doNormalizeValue(guardFilterCompareValue(val), options);
|
|
111
111
|
return normalizeValue(n);
|
|
@@ -130,7 +130,7 @@ function createSQLExpressionFilterCompiler(sqlExpression, options = {}) {
|
|
|
130
130
|
return (filter, filters) => {
|
|
131
131
|
if (typeof filter === 'string' || typeof filter === 'number' || typeof filter === 'boolean' || filter === null || filter === undefined) {
|
|
132
132
|
filter = {
|
|
133
|
-
$eq: filter
|
|
133
|
+
$eq: filter,
|
|
134
134
|
};
|
|
135
135
|
}
|
|
136
136
|
if (Array.isArray(filter)) {
|
|
@@ -142,8 +142,8 @@ function createSQLExpressionFilterCompiler(sqlExpression, options = {}) {
|
|
|
142
142
|
const v = norm(f.$eq);
|
|
143
143
|
// if (typeof v === 'string') {
|
|
144
144
|
// return new SQLWhereEqual(
|
|
145
|
-
// new SQLJsonSearch(sqlExpression, 'one', convertToExpression(v)),
|
|
146
|
-
// SQLWhereSign.NotEqual,
|
|
145
|
+
// new SQLJsonSearch(sqlExpression, 'one', convertToExpression(v)),
|
|
146
|
+
// SQLWhereSign.NotEqual,
|
|
147
147
|
// new SQLNull()
|
|
148
148
|
// );
|
|
149
149
|
// }
|
|
@@ -156,7 +156,7 @@ function createSQLExpressionFilterCompiler(sqlExpression, options = {}) {
|
|
|
156
156
|
if (!Array.isArray(f.$in)) {
|
|
157
157
|
throw new simple_errors_1.SimpleError({
|
|
158
158
|
code: 'invalid_filter',
|
|
159
|
-
message: 'Expected array at $in filter'
|
|
159
|
+
message: 'Expected array at $in filter',
|
|
160
160
|
});
|
|
161
161
|
}
|
|
162
162
|
if (f.$in.length === 0) {
|
|
@@ -170,8 +170,7 @@ function createSQLExpressionFilterCompiler(sqlExpression, options = {}) {
|
|
|
170
170
|
// that makes comparing more difficult, to combat this, we still need to use SQLJsonOverlaps with the JSON null value
|
|
171
171
|
return new SQLWhere_1.SQLWhereOr([
|
|
172
172
|
new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.Equal, new SQLExpressions_1.SQLNull()), // checks path not exists (= mysql null)
|
|
173
|
-
new SQLJsonExpressions_1.SQLJsonOverlaps(sqlExpression, convertToExpression(JSON.stringify(v))
|
|
174
|
-
)
|
|
173
|
+
new SQLJsonExpressions_1.SQLJsonOverlaps(sqlExpression, convertToExpression(JSON.stringify(v))),
|
|
175
174
|
]);
|
|
176
175
|
}
|
|
177
176
|
// else
|
|
@@ -199,7 +198,7 @@ function createSQLExpressionFilterCompiler(sqlExpression, options = {}) {
|
|
|
199
198
|
}
|
|
200
199
|
return new SQLWhere_1.SQLWhereOr([
|
|
201
200
|
new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.Equal, new SQLExpressions_1.SQLNull()),
|
|
202
|
-
new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.Equal, createSqlArray(remaining))
|
|
201
|
+
new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.Equal, createSqlArray(remaining)),
|
|
203
202
|
]);
|
|
204
203
|
}
|
|
205
204
|
return new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.Equal, createSqlArray(v));
|
|
@@ -245,7 +244,7 @@ function createSQLExpressionFilterCompiler(sqlExpression, options = {}) {
|
|
|
245
244
|
return new SQLWhere_1.SQLWhereOr([
|
|
246
245
|
// Null values are also smaller than any value - required for sorting
|
|
247
246
|
new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.Equal, new SQLExpressions_1.SQLNull()),
|
|
248
|
-
base
|
|
247
|
+
base,
|
|
249
248
|
]);
|
|
250
249
|
}
|
|
251
250
|
return new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.LessEqual, convertToExpression(norm(f.$lte)));
|
|
@@ -263,7 +262,7 @@ function createSQLExpressionFilterCompiler(sqlExpression, options = {}) {
|
|
|
263
262
|
return new SQLWhere_1.SQLWhereOr([
|
|
264
263
|
// Null values are also smaller than any value - required for sorting
|
|
265
264
|
new SQLWhere_1.SQLWhereEqual(sqlExpression, SQLWhere_1.SQLWhereSign.Equal, new SQLExpressions_1.SQLNull()),
|
|
266
|
-
base
|
|
265
|
+
base,
|
|
267
266
|
]);
|
|
268
267
|
}
|
|
269
268
|
return base;
|
|
@@ -290,26 +289,32 @@ function createSQLColumnFilterCompiler(name, options) {
|
|
|
290
289
|
return createSQLExpressionFilterCompiler(column, options);
|
|
291
290
|
}
|
|
292
291
|
exports.baseSQLFilterCompilers = {
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
292
|
+
$and: andSQLFilterCompiler,
|
|
293
|
+
$or: orSQLFilterCompiler,
|
|
294
|
+
$not: notSQLFilterCompiler,
|
|
296
295
|
};
|
|
296
|
+
function objectToArray(f) {
|
|
297
|
+
const splitted = [];
|
|
298
|
+
for (const key of Object.keys(f)) {
|
|
299
|
+
splitted.push({ [key]: f[key] });
|
|
300
|
+
}
|
|
301
|
+
return splitted;
|
|
302
|
+
}
|
|
297
303
|
function compileSQLFilter(filter, definitions) {
|
|
298
304
|
if (filter === undefined) {
|
|
299
305
|
return [];
|
|
300
306
|
}
|
|
301
307
|
const runners = [];
|
|
302
|
-
for (const f of (Array.isArray(filter) ? filter : [filter])) {
|
|
308
|
+
for (const f of (Array.isArray(filter) ? filter : (typeof filter === 'object' && filter !== null ? objectToArray(filter) : [filter]))) {
|
|
303
309
|
if (!f) {
|
|
304
310
|
continue;
|
|
305
311
|
}
|
|
312
|
+
if (!(typeof f === 'object' && f !== null)) {
|
|
313
|
+
throw new Error('Unsupported filter at this position: ' + f);
|
|
314
|
+
}
|
|
306
315
|
if (Object.keys(f).length > 1) {
|
|
307
316
|
// Multiple keys in the same object should always be combined with AND
|
|
308
|
-
|
|
309
|
-
for (const key of Object.keys(f)) {
|
|
310
|
-
splitted.push({ [key]: f[key] });
|
|
311
|
-
}
|
|
312
|
-
runners.push(andSQLFilterCompiler(splitted, definitions));
|
|
317
|
+
runners.push(andSQLFilterCompiler(objectToArray(f), definitions));
|
|
313
318
|
continue;
|
|
314
319
|
}
|
|
315
320
|
for (const key of Object.keys(f)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLFilter.js","sourceRoot":"","sources":["../../../src/filters/SQLFilter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SQLFilter.js","sourceRoot":"","sources":["../../../src/filters/SQLFilter.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stamhoofd/sql",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.44.1",
|
|
4
4
|
"main": "./dist/index.js",
|
|
5
5
|
"types": "./dist/index.d.ts",
|
|
6
6
|
"license": "UNLICENCED",
|
|
@@ -15,5 +15,5 @@
|
|
|
15
15
|
"publishConfig": {
|
|
16
16
|
"access": "public"
|
|
17
17
|
},
|
|
18
|
-
"gitHead": "
|
|
18
|
+
"gitHead": "1f8431a9e5c1766e9012d2f0b1edbff4e36b4f6d"
|
|
19
19
|
}
|
package/src/filters/SQLFilter.ts
CHANGED
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
import { SimpleError } from
|
|
2
|
-
import { StamhoofdCompareValue, StamhoofdFilter } from
|
|
3
|
-
import { SQL } from
|
|
4
|
-
import { SQLExpression } from
|
|
5
|
-
import { SQLArray, SQLCast, SQLColumnExpression, SQLNull, SQLSafeValue, SQLScalarValue, scalarToSQLExpression, scalarToSQLJSONExpression } from
|
|
6
|
-
import { SQLJsonContains, SQLJsonOverlaps, SQLJsonSearch, SQLJsonUnquote } from
|
|
7
|
-
import { SQLSelect } from
|
|
8
|
-
import { SQLWhere, SQLWhereAnd, SQLWhereEqual, SQLWhereExists, SQLWhereLike, SQLWhereNot, SQLWhereOr, SQLWhereSign } from
|
|
9
|
-
|
|
10
|
-
export type SQLFilterCompiler = (filter: StamhoofdFilter, filters: SQLFilterDefinitions) => SQLWhere|null;
|
|
11
|
-
export type SQLFilterDefinitions = Record<string, SQLFilterCompiler
|
|
1
|
+
import { SimpleError } from '@simonbackx/simple-errors';
|
|
2
|
+
import { StamhoofdCompareValue, StamhoofdFilter } from '@stamhoofd/structures';
|
|
3
|
+
import { SQL } from '../SQL';
|
|
4
|
+
import { SQLExpression } from '../SQLExpression';
|
|
5
|
+
import { SQLArray, SQLCast, SQLColumnExpression, SQLNull, SQLSafeValue, SQLScalarValue, scalarToSQLExpression, scalarToSQLJSONExpression } from '../SQLExpressions';
|
|
6
|
+
import { SQLJsonContains, SQLJsonOverlaps, SQLJsonSearch, SQLJsonUnquote } from '../SQLJsonExpressions';
|
|
7
|
+
import { SQLSelect } from '../SQLSelect';
|
|
8
|
+
import { SQLWhere, SQLWhereAnd, SQLWhereEqual, SQLWhereExists, SQLWhereLike, SQLWhereNot, SQLWhereOr, SQLWhereSign } from '../SQLWhere';
|
|
9
|
+
|
|
10
|
+
export type SQLFilterCompiler = (filter: StamhoofdFilter, filters: SQLFilterDefinitions) => SQLWhere | null;
|
|
11
|
+
export type SQLFilterDefinitions = Record<string, SQLFilterCompiler>;
|
|
12
12
|
|
|
13
13
|
export function andSQLFilterCompiler(filter: StamhoofdFilter, filters: SQLFilterDefinitions): SQLWhere {
|
|
14
14
|
const runners = compileSQLFilter(filter, filters);
|
|
15
|
-
return new SQLWhereAnd(runners)
|
|
15
|
+
return new SQLWhereAnd(runners);
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
export function orSQLFilterCompiler(filter: StamhoofdFilter, filters: SQLFilterDefinitions): SQLWhere {
|
|
19
19
|
const runners = compileSQLFilter(filter, filters);
|
|
20
|
-
return new SQLWhereOr(runners)
|
|
20
|
+
return new SQLWhereOr(runners);
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
export function notSQLFilterCompiler(filter: StamhoofdFilter, filters: SQLFilterDefinitions): SQLWhere {
|
|
24
24
|
const andRunner = andSQLFilterCompiler(filter, filters);
|
|
25
|
-
return new SQLWhereNot(andRunner)
|
|
25
|
+
return new SQLWhereNot(andRunner);
|
|
26
26
|
}
|
|
27
27
|
|
|
28
28
|
function guardFilterCompareValue(val: any): StamhoofdCompareValue {
|
|
29
29
|
if (val instanceof Date) {
|
|
30
|
-
return val
|
|
30
|
+
return val;
|
|
31
31
|
}
|
|
32
32
|
|
|
33
33
|
if (typeof val === 'string') {
|
|
34
|
-
return val
|
|
34
|
+
return val;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
if (typeof val === 'number') {
|
|
38
|
-
return val
|
|
38
|
+
return val;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
if (typeof val === 'boolean') {
|
|
@@ -46,34 +46,34 @@ function guardFilterCompareValue(val: any): StamhoofdCompareValue {
|
|
|
46
46
|
return null;
|
|
47
47
|
}
|
|
48
48
|
|
|
49
|
-
if (typeof val === 'object' &&
|
|
50
|
-
if (val[
|
|
49
|
+
if (typeof val === 'object' && '$' in val) {
|
|
50
|
+
if (val['$'] === '$now') {
|
|
51
51
|
return val;
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
-
throw new Error('Invalid compare value. Expected a string, number, boolean, date or null.')
|
|
55
|
+
throw new Error('Invalid compare value. Expected a string, number, boolean, date or null.');
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
function doNormalizeValue(val: StamhoofdCompareValue, options?: SQLExpressionFilterOptions): string|number|Date|null|boolean {
|
|
58
|
+
function doNormalizeValue(val: StamhoofdCompareValue, options?: SQLExpressionFilterOptions): string | number | Date | null | boolean {
|
|
59
59
|
if (val instanceof Date) {
|
|
60
|
-
return val
|
|
60
|
+
return val;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
if (typeof val === 'string') {
|
|
64
|
-
return val.toLocaleLowerCase()
|
|
64
|
+
return val.toLocaleLowerCase();
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
if (typeof val === 'boolean') {
|
|
68
68
|
if (options?.type === SQLValueType.JSONBoolean) {
|
|
69
|
-
return val
|
|
69
|
+
return val;
|
|
70
70
|
}
|
|
71
71
|
return val === true ? 1 : 0;
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
if (typeof val === 'number') {
|
|
75
75
|
if (options?.type === SQLValueType.JSONBoolean) {
|
|
76
|
-
return val === 1 ? true : false
|
|
76
|
+
return val === 1 ? true : false;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
return val;
|
|
@@ -83,14 +83,14 @@ function doNormalizeValue(val: StamhoofdCompareValue, options?: SQLExpressionFil
|
|
|
83
83
|
return null;
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
-
if (typeof val === 'object' &&
|
|
87
|
-
const specialValue = val[
|
|
86
|
+
if (typeof val === 'object' && '$' in val) {
|
|
87
|
+
const specialValue = val['$'];
|
|
88
88
|
|
|
89
89
|
switch (specialValue) {
|
|
90
90
|
case '$now':
|
|
91
|
-
return doNormalizeValue(new Date())
|
|
91
|
+
return doNormalizeValue(new Date());
|
|
92
92
|
default:
|
|
93
|
-
throw new Error('Unsupported magic value ' + specialValue)
|
|
93
|
+
throw new Error('Unsupported magic value ' + specialValue);
|
|
94
94
|
}
|
|
95
95
|
}
|
|
96
96
|
|
|
@@ -102,54 +102,54 @@ export function createSQLRelationFilterCompiler(baseSelect: InstanceType<typeof
|
|
|
102
102
|
const f = filter as any;
|
|
103
103
|
|
|
104
104
|
if ('$elemMatch' in f) {
|
|
105
|
-
const w = compileToSQLFilter(f['$elemMatch'], definitions)
|
|
105
|
+
const w = compileToSQLFilter(f['$elemMatch'], definitions);
|
|
106
106
|
const q = baseSelect.clone().where(w);
|
|
107
|
-
return new SQLWhereExists(q)
|
|
107
|
+
return new SQLWhereExists(q);
|
|
108
108
|
}
|
|
109
109
|
|
|
110
|
-
throw new Error('Invalid filter')
|
|
111
|
-
}
|
|
110
|
+
throw new Error('Invalid filter');
|
|
111
|
+
};
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
// Already joined, but creates a namespace
|
|
115
115
|
export function createSQLFilterNamespace(definitions: SQLFilterDefinitions): SQLFilterCompiler {
|
|
116
116
|
return (filter: StamhoofdFilter) => {
|
|
117
|
-
return andSQLFilterCompiler(filter, definitions)
|
|
118
|
-
}
|
|
117
|
+
return andSQLFilterCompiler(filter, definitions);
|
|
118
|
+
};
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
export enum SQLValueType {
|
|
122
|
-
|
|
123
|
-
|
|
122
|
+
JSONBoolean = 'JSONBoolean',
|
|
123
|
+
JSONString = 'JSONString',
|
|
124
124
|
}
|
|
125
125
|
|
|
126
126
|
type SQLExpressionFilterOptions = {
|
|
127
|
-
normalizeValue?: (v: SQLScalarValue|null) => SQLScalarValue|null
|
|
128
|
-
isJSONValue?: boolean
|
|
129
|
-
isJSONObject?: boolean
|
|
130
|
-
nullable?: boolean
|
|
127
|
+
normalizeValue?: (v: SQLScalarValue | null) => SQLScalarValue | null;
|
|
128
|
+
isJSONValue?: boolean;
|
|
129
|
+
isJSONObject?: boolean;
|
|
130
|
+
nullable?: boolean;
|
|
131
131
|
|
|
132
132
|
/**
|
|
133
133
|
* Type of this column, use to normalize values received from filters
|
|
134
134
|
*/
|
|
135
|
-
type?: SQLValueType
|
|
136
|
-
}
|
|
135
|
+
type?: SQLValueType;
|
|
136
|
+
};
|
|
137
137
|
|
|
138
138
|
export function createSQLExpressionFilterCompiler(sqlExpression: SQLExpression, options: SQLExpressionFilterOptions = {}): SQLFilterCompiler {
|
|
139
|
-
let {normalizeValue, isJSONObject = false, isJSONValue = false, nullable = false} = options;
|
|
140
|
-
normalizeValue = normalizeValue ?? (
|
|
139
|
+
let { normalizeValue, isJSONObject = false, isJSONValue = false, nullable = false } = options;
|
|
140
|
+
normalizeValue = normalizeValue ?? (v => v);
|
|
141
141
|
const norm = (val: any) => {
|
|
142
142
|
const n = doNormalizeValue(guardFilterCompareValue(val), options);
|
|
143
143
|
return normalizeValue(n);
|
|
144
|
-
}
|
|
144
|
+
};
|
|
145
145
|
|
|
146
|
-
if(isJSONValue) {
|
|
146
|
+
if (isJSONValue) {
|
|
147
147
|
const castJsonType = (expression: SQLExpression, type: SQLValueType | undefined): SQLExpression => {
|
|
148
|
-
if(type === undefined) {
|
|
148
|
+
if (type === undefined) {
|
|
149
149
|
return expression;
|
|
150
150
|
}
|
|
151
|
-
|
|
152
|
-
switch(type) {
|
|
151
|
+
|
|
152
|
+
switch (type) {
|
|
153
153
|
case SQLValueType.JSONBoolean: {
|
|
154
154
|
return expression;
|
|
155
155
|
}
|
|
@@ -157,24 +157,24 @@ export function createSQLExpressionFilterCompiler(sqlExpression: SQLExpression,
|
|
|
157
157
|
return new SQLCast(new SQLJsonUnquote(expression), 'CHAR');
|
|
158
158
|
}
|
|
159
159
|
}
|
|
160
|
-
}
|
|
161
|
-
|
|
160
|
+
};
|
|
161
|
+
|
|
162
162
|
sqlExpression = castJsonType(sqlExpression, options.type);
|
|
163
163
|
}
|
|
164
164
|
|
|
165
|
-
const convertToExpression = isJSONValue ? scalarToSQLJSONExpression : scalarToSQLExpression
|
|
165
|
+
const convertToExpression = isJSONValue ? scalarToSQLJSONExpression : scalarToSQLExpression;
|
|
166
166
|
|
|
167
167
|
return (filter: StamhoofdFilter, filters: SQLFilterDefinitions) => {
|
|
168
168
|
if (typeof filter === 'string' || typeof filter === 'number' || typeof filter === 'boolean' || filter === null || filter === undefined) {
|
|
169
169
|
filter = {
|
|
170
|
-
$eq: filter
|
|
171
|
-
}
|
|
170
|
+
$eq: filter,
|
|
171
|
+
};
|
|
172
172
|
}
|
|
173
173
|
|
|
174
174
|
if (Array.isArray(filter)) {
|
|
175
|
-
throw new Error('Unexpected array in filter')
|
|
175
|
+
throw new Error('Unexpected array in filter');
|
|
176
176
|
}
|
|
177
|
-
|
|
177
|
+
|
|
178
178
|
const f = filter;
|
|
179
179
|
|
|
180
180
|
if ('$eq' in f) {
|
|
@@ -183,16 +183,16 @@ export function createSQLExpressionFilterCompiler(sqlExpression: SQLExpression,
|
|
|
183
183
|
|
|
184
184
|
// if (typeof v === 'string') {
|
|
185
185
|
// return new SQLWhereEqual(
|
|
186
|
-
// new SQLJsonSearch(sqlExpression, 'one', convertToExpression(v)),
|
|
187
|
-
// SQLWhereSign.NotEqual,
|
|
186
|
+
// new SQLJsonSearch(sqlExpression, 'one', convertToExpression(v)),
|
|
187
|
+
// SQLWhereSign.NotEqual,
|
|
188
188
|
// new SQLNull()
|
|
189
189
|
// );
|
|
190
190
|
// }
|
|
191
191
|
|
|
192
192
|
// else
|
|
193
193
|
return new SQLJsonContains(
|
|
194
|
-
sqlExpression,
|
|
195
|
-
convertToExpression(JSON.stringify(v))
|
|
194
|
+
sqlExpression,
|
|
195
|
+
convertToExpression(JSON.stringify(v)),
|
|
196
196
|
);
|
|
197
197
|
}
|
|
198
198
|
|
|
@@ -203,8 +203,8 @@ export function createSQLExpressionFilterCompiler(sqlExpression: SQLExpression,
|
|
|
203
203
|
if (!Array.isArray(f.$in)) {
|
|
204
204
|
throw new SimpleError({
|
|
205
205
|
code: 'invalid_filter',
|
|
206
|
-
message: 'Expected array at $in filter'
|
|
207
|
-
})
|
|
206
|
+
message: 'Expected array at $in filter',
|
|
207
|
+
});
|
|
208
208
|
}
|
|
209
209
|
|
|
210
210
|
if (f.$in.length === 0) {
|
|
@@ -221,24 +221,24 @@ export function createSQLExpressionFilterCompiler(sqlExpression: SQLExpression,
|
|
|
221
221
|
return new SQLWhereOr([
|
|
222
222
|
new SQLWhereEqual(sqlExpression, SQLWhereSign.Equal, new SQLNull()), // checks path not exists (= mysql null)
|
|
223
223
|
new SQLJsonOverlaps(
|
|
224
|
-
sqlExpression,
|
|
225
|
-
convertToExpression(JSON.stringify(v)) // contains json null
|
|
226
|
-
)
|
|
224
|
+
sqlExpression,
|
|
225
|
+
convertToExpression(JSON.stringify(v)), // contains json null
|
|
226
|
+
),
|
|
227
227
|
]);
|
|
228
228
|
}
|
|
229
229
|
|
|
230
230
|
// else
|
|
231
231
|
return new SQLJsonOverlaps(
|
|
232
|
-
sqlExpression,
|
|
233
|
-
convertToExpression(JSON.stringify(v))
|
|
232
|
+
sqlExpression,
|
|
233
|
+
convertToExpression(JSON.stringify(v)),
|
|
234
234
|
);
|
|
235
235
|
}
|
|
236
236
|
|
|
237
237
|
const createSqlArray = (value: SQLScalarValue[]): SQLArray => {
|
|
238
|
-
if(isJSONValue) {
|
|
238
|
+
if (isJSONValue) {
|
|
239
239
|
const type = options.type;
|
|
240
240
|
|
|
241
|
-
switch(type) {
|
|
241
|
+
switch (type) {
|
|
242
242
|
case SQLValueType.JSONBoolean: {
|
|
243
243
|
// todo;
|
|
244
244
|
break;
|
|
@@ -250,7 +250,7 @@ export function createSQLExpressionFilterCompiler(sqlExpression: SQLExpression,
|
|
|
250
250
|
}
|
|
251
251
|
|
|
252
252
|
return new SQLArray(value);
|
|
253
|
-
}
|
|
253
|
+
};
|
|
254
254
|
|
|
255
255
|
if (nullIncluded) {
|
|
256
256
|
const remaining = v.filter(v => v !== null);
|
|
@@ -259,7 +259,7 @@ export function createSQLExpressionFilterCompiler(sqlExpression: SQLExpression,
|
|
|
259
259
|
}
|
|
260
260
|
return new SQLWhereOr([
|
|
261
261
|
new SQLWhereEqual(sqlExpression, SQLWhereSign.Equal, new SQLNull()),
|
|
262
|
-
new SQLWhereEqual(sqlExpression, SQLWhereSign.Equal, createSqlArray(remaining))
|
|
262
|
+
new SQLWhereEqual(sqlExpression, SQLWhereSign.Equal, createSqlArray(remaining)),
|
|
263
263
|
]);
|
|
264
264
|
}
|
|
265
265
|
return new SQLWhereEqual(sqlExpression, SQLWhereSign.Equal, createSqlArray(v as SQLScalarValue[]));
|
|
@@ -271,9 +271,9 @@ export function createSQLExpressionFilterCompiler(sqlExpression: SQLExpression,
|
|
|
271
271
|
|
|
272
272
|
return new SQLWhereNot(
|
|
273
273
|
new SQLJsonContains(
|
|
274
|
-
sqlExpression,
|
|
275
|
-
convertToExpression(JSON.stringify(v))
|
|
276
|
-
)
|
|
274
|
+
sqlExpression,
|
|
275
|
+
convertToExpression(JSON.stringify(v)),
|
|
276
|
+
),
|
|
277
277
|
);
|
|
278
278
|
}
|
|
279
279
|
return new SQLWhereEqual(sqlExpression, SQLWhereSign.NotEqual, convertToExpression(norm(f.$neq)));
|
|
@@ -281,7 +281,7 @@ export function createSQLExpressionFilterCompiler(sqlExpression: SQLExpression,
|
|
|
281
281
|
|
|
282
282
|
if ('$gt' in f) {
|
|
283
283
|
if (isJSONObject) {
|
|
284
|
-
throw new Error('Greater than is not supported in this place')
|
|
284
|
+
throw new Error('Greater than is not supported in this place');
|
|
285
285
|
}
|
|
286
286
|
|
|
287
287
|
if (f.$gt === null) {
|
|
@@ -295,7 +295,7 @@ export function createSQLExpressionFilterCompiler(sqlExpression: SQLExpression,
|
|
|
295
295
|
|
|
296
296
|
if ('$gte' in f) {
|
|
297
297
|
if (isJSONObject) {
|
|
298
|
-
throw new Error('Greater than is not supported in this place')
|
|
298
|
+
throw new Error('Greater than is not supported in this place');
|
|
299
299
|
}
|
|
300
300
|
|
|
301
301
|
if (f.$gte === null) {
|
|
@@ -307,7 +307,7 @@ export function createSQLExpressionFilterCompiler(sqlExpression: SQLExpression,
|
|
|
307
307
|
|
|
308
308
|
if ('$lte' in f) {
|
|
309
309
|
if (isJSONObject) {
|
|
310
|
-
throw new Error('Greater than is not supported in this place')
|
|
310
|
+
throw new Error('Greater than is not supported in this place');
|
|
311
311
|
}
|
|
312
312
|
|
|
313
313
|
if (f.$lte === null) {
|
|
@@ -321,17 +321,16 @@ export function createSQLExpressionFilterCompiler(sqlExpression: SQLExpression,
|
|
|
321
321
|
return new SQLWhereOr([
|
|
322
322
|
// Null values are also smaller than any value - required for sorting
|
|
323
323
|
new SQLWhereEqual(sqlExpression, SQLWhereSign.Equal, new SQLNull()),
|
|
324
|
-
|
|
324
|
+
base,
|
|
325
325
|
]);
|
|
326
326
|
}
|
|
327
|
-
|
|
327
|
+
|
|
328
328
|
return new SQLWhereEqual(sqlExpression, SQLWhereSign.LessEqual, convertToExpression(norm(f.$lte)));
|
|
329
329
|
}
|
|
330
330
|
|
|
331
|
-
|
|
332
331
|
if ('$lt' in f) {
|
|
333
332
|
if (isJSONObject) {
|
|
334
|
-
throw new Error('Less than is not supported in this place')
|
|
333
|
+
throw new Error('Less than is not supported in this place');
|
|
335
334
|
}
|
|
336
335
|
|
|
337
336
|
if (f.$lt === null) {
|
|
@@ -339,13 +338,13 @@ export function createSQLExpressionFilterCompiler(sqlExpression: SQLExpression,
|
|
|
339
338
|
return new SQLWhereEqual(new SQLSafeValue(1), SQLWhereSign.Equal, new SQLSafeValue(0));
|
|
340
339
|
}
|
|
341
340
|
|
|
342
|
-
const base = new SQLWhereEqual(sqlExpression, SQLWhereSign.Less, convertToExpression(norm(f.$lt)))
|
|
341
|
+
const base = new SQLWhereEqual(sqlExpression, SQLWhereSign.Less, convertToExpression(norm(f.$lt)));
|
|
343
342
|
|
|
344
343
|
if (nullable) {
|
|
345
344
|
return new SQLWhereOr([
|
|
346
345
|
// Null values are also smaller than any value - required for sorting
|
|
347
346
|
new SQLWhereEqual(sqlExpression, SQLWhereSign.Equal, new SQLNull()),
|
|
348
|
-
|
|
347
|
+
base,
|
|
349
348
|
]);
|
|
350
349
|
}
|
|
351
350
|
|
|
@@ -356,54 +355,62 @@ export function createSQLExpressionFilterCompiler(sqlExpression: SQLExpression,
|
|
|
356
355
|
const needle = norm(f.$contains);
|
|
357
356
|
|
|
358
357
|
if (typeof needle !== 'string') {
|
|
359
|
-
throw new Error('Invalid needle for contains filter')
|
|
358
|
+
throw new Error('Invalid needle for contains filter');
|
|
360
359
|
}
|
|
361
360
|
|
|
362
361
|
if (isJSONObject) {
|
|
363
362
|
return new SQLWhereEqual(
|
|
364
363
|
new SQLJsonSearch(
|
|
365
|
-
sqlExpression,
|
|
364
|
+
sqlExpression,
|
|
366
365
|
'one',
|
|
367
366
|
convertToExpression(
|
|
368
|
-
'%'+SQLWhereLike.escape(needle)+'%'
|
|
369
|
-
)
|
|
370
|
-
),
|
|
371
|
-
SQLWhereSign.NotEqual,
|
|
372
|
-
new SQLNull()
|
|
367
|
+
'%' + SQLWhereLike.escape(needle) + '%',
|
|
368
|
+
),
|
|
369
|
+
),
|
|
370
|
+
SQLWhereSign.NotEqual,
|
|
371
|
+
new SQLNull(),
|
|
373
372
|
);
|
|
374
373
|
}
|
|
375
374
|
|
|
376
375
|
if (isJSONValue) {
|
|
377
376
|
// We need to do case insensitive search, so need to convert the sqlExpression from utf8mb4 to varchar
|
|
378
377
|
return new SQLWhereLike(
|
|
379
|
-
new SQLCast(new SQLJsonUnquote(sqlExpression), 'CHAR'),
|
|
378
|
+
new SQLCast(new SQLJsonUnquote(sqlExpression), 'CHAR'),
|
|
380
379
|
convertToExpression(
|
|
381
|
-
'%'+SQLWhereLike.escape(needle)+'%'
|
|
382
|
-
)
|
|
380
|
+
'%' + SQLWhereLike.escape(needle) + '%',
|
|
381
|
+
),
|
|
383
382
|
);
|
|
384
383
|
}
|
|
385
|
-
|
|
384
|
+
|
|
386
385
|
return new SQLWhereLike(
|
|
387
|
-
sqlExpression,
|
|
386
|
+
sqlExpression,
|
|
388
387
|
convertToExpression(
|
|
389
|
-
'%'+SQLWhereLike.escape(needle)+'%'
|
|
390
|
-
)
|
|
388
|
+
'%' + SQLWhereLike.escape(needle) + '%',
|
|
389
|
+
),
|
|
391
390
|
);
|
|
392
391
|
}
|
|
393
392
|
|
|
394
|
-
throw new Error('Invalid filter ' + JSON.stringify(f))
|
|
395
|
-
}
|
|
393
|
+
throw new Error('Invalid filter ' + JSON.stringify(f));
|
|
394
|
+
};
|
|
396
395
|
}
|
|
397
396
|
|
|
398
397
|
export function createSQLColumnFilterCompiler(name: string | SQLColumnExpression, options?: SQLExpressionFilterOptions): SQLFilterCompiler {
|
|
399
398
|
const column = name instanceof SQLColumnExpression ? name : SQL.column(name);
|
|
400
|
-
return createSQLExpressionFilterCompiler(column, options)
|
|
399
|
+
return createSQLExpressionFilterCompiler(column, options);
|
|
401
400
|
}
|
|
402
401
|
|
|
403
402
|
export const baseSQLFilterCompilers: SQLFilterDefinitions = {
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
403
|
+
$and: andSQLFilterCompiler,
|
|
404
|
+
$or: orSQLFilterCompiler,
|
|
405
|
+
$not: notSQLFilterCompiler,
|
|
406
|
+
};
|
|
407
|
+
|
|
408
|
+
function objectToArray(f: StamhoofdFilter & object): StamhoofdFilter[] {
|
|
409
|
+
const splitted: StamhoofdFilter[] = [];
|
|
410
|
+
for (const key of Object.keys(f)) {
|
|
411
|
+
splitted.push({ [key]: f[key] });
|
|
412
|
+
}
|
|
413
|
+
return splitted;
|
|
407
414
|
}
|
|
408
415
|
|
|
409
416
|
function compileSQLFilter(filter: StamhoofdFilter, definitions: SQLFilterDefinitions): SQLWhere[] {
|
|
@@ -411,36 +418,36 @@ function compileSQLFilter(filter: StamhoofdFilter, definitions: SQLFilterDefinit
|
|
|
411
418
|
return [];
|
|
412
419
|
}
|
|
413
420
|
|
|
414
|
-
const runners: SQLWhere[] = []
|
|
421
|
+
const runners: SQLWhere[] = [];
|
|
415
422
|
|
|
416
|
-
for (const f of (Array.isArray(filter) ? filter : [filter])) {
|
|
423
|
+
for (const f of (Array.isArray(filter) ? filter : (typeof filter === 'object' && filter !== null ? objectToArray(filter) : [filter]))) {
|
|
417
424
|
if (!f) {
|
|
418
425
|
continue;
|
|
419
426
|
}
|
|
427
|
+
if (!(typeof f === 'object' && f !== null)) {
|
|
428
|
+
throw new Error('Unsupported filter at this position: ' + f);
|
|
429
|
+
}
|
|
430
|
+
|
|
420
431
|
if (Object.keys(f).length > 1) {
|
|
421
432
|
// Multiple keys in the same object should always be combined with AND
|
|
422
|
-
|
|
423
|
-
for (const key of Object.keys(f)) {
|
|
424
|
-
splitted.push({ [key]: f[key] })
|
|
425
|
-
}
|
|
426
|
-
runners.push(andSQLFilterCompiler(splitted, definitions));
|
|
433
|
+
runners.push(andSQLFilterCompiler(objectToArray(f), definitions));
|
|
427
434
|
continue;
|
|
428
435
|
}
|
|
429
436
|
for (const key of Object.keys(f)) {
|
|
430
437
|
const filter = definitions[key];
|
|
431
438
|
if (!filter) {
|
|
432
|
-
throw new Error('Unsupported filter ' + key)
|
|
439
|
+
throw new Error('Unsupported filter ' + key);
|
|
433
440
|
}
|
|
434
441
|
|
|
435
|
-
const s = filter(f[key] as StamhoofdFilter, definitions)
|
|
442
|
+
const s = filter(f[key] as StamhoofdFilter, definitions);
|
|
436
443
|
if (s === undefined || s === null) {
|
|
437
|
-
throw new Error('Unsupported filter value for ' + key)
|
|
444
|
+
throw new Error('Unsupported filter value for ' + key);
|
|
438
445
|
}
|
|
439
446
|
runners.push(s);
|
|
440
447
|
}
|
|
441
448
|
}
|
|
442
449
|
|
|
443
|
-
return runners
|
|
450
|
+
return runners;
|
|
444
451
|
}
|
|
445
452
|
|
|
446
|
-
export const compileToSQLFilter = andSQLFilterCompiler
|
|
453
|
+
export const compileToSQLFilter = andSQLFilterCompiler;
|