@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 "@stamhoofd/structures";
2
- import { SQLExpression } from "../SQLExpression";
3
- import { SQLColumnExpression, SQLScalarValue } from "../SQLExpressions";
4
- import { SQLSelect } from "../SQLSelect";
5
- import { SQLWhere } from "../SQLWhere";
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
- 'JSONBoolean' = "JSONBoolean",
15
- 'JSONString' = "JSONString"
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,GAAC,IAAI,CAAC;AAC1G,MAAM,MAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAA;AAEpE,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,aAAa,gBAAgB;IAC7B,YAAY,eAAe;CAC9B;AAED,KAAK,0BAA0B,GAAG;IAC9B,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,GAAC,IAAI,KAAK,cAAc,GAAC,IAAI,CAAC;IACjE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;OAEG;IACH,IAAI,CAAC,EAAE,YAAY,CAAA;CACtB,CAAA;AAED,wBAAgB,iCAAiC,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,GAAE,0BAA+B,GAAG,iBAAiB,CAkQ3I;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,EAAE,OAAO,CAAC,EAAE,0BAA0B,GAAG,iBAAiB,CAGzI;AAED,eAAO,MAAM,sBAAsB,EAAE,oBAIpC,CAAA;AAuCD,eAAO,MAAM,kBAAkB,6BAAuB,CAAA"}
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' && "$" in val) {
45
- if (val["$"] === '$now') {
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' && "$" in val) {
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 ?? ((v) => v);
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)) // contains json null
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
- '$and': andSQLFilterCompiler,
294
- '$or': orSQLFilterCompiler,
295
- '$not': notSQLFilterCompiler,
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
- const splitted = [];
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.43.3",
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": "1258338deacc6d61a53da939dda894dca3415c84"
18
+ "gitHead": "1f8431a9e5c1766e9012d2f0b1edbff4e36b4f6d"
19
19
  }
@@ -1,41 +1,41 @@
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>
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' && "$" in val) {
50
- if (val["$"] === '$now') {
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' && "$" in val) {
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
- 'JSONBoolean' = 'JSONBoolean',
123
- 'JSONString' = 'JSONString'
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 ?? ((v) => v);
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
- base
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
- base
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
- '$and': andSQLFilterCompiler,
405
- '$or': orSQLFilterCompiler,
406
- '$not': notSQLFilterCompiler,
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
- const splitted: StamhoofdFilter[] = [];
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;