@stamhoofd/sql 2.119.0 → 2.120.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.
Files changed (272) hide show
  1. package/dist/{src/ModelCache.d.ts → ModelCache.d.ts} +1 -1
  2. package/dist/ModelCache.d.ts.map +1 -0
  3. package/{src/ModelCache.ts → dist/ModelCache.js} +8 -16
  4. package/dist/ModelCache.js.map +1 -0
  5. package/dist/{src/QueryableModel.d.ts → QueryableModel.d.ts} +7 -6
  6. package/dist/QueryableModel.d.ts.map +1 -0
  7. package/dist/{src/QueryableModel.js → QueryableModel.js} +9 -13
  8. package/dist/QueryableModel.js.map +1 -0
  9. package/dist/{src/SQL.d.ts → SQL.d.ts} +7 -5
  10. package/dist/SQL.d.ts.map +1 -0
  11. package/dist/SQL.js +100 -0
  12. package/dist/SQL.js.map +1 -0
  13. package/dist/{src/SQLDelete.d.ts → SQLDelete.d.ts} +2 -2
  14. package/dist/SQLDelete.d.ts.map +1 -0
  15. package/dist/{src/SQLDelete.js → SQLDelete.js} +8 -12
  16. package/dist/SQLDelete.js.map +1 -0
  17. package/dist/SQLExpression.d.ts.map +1 -0
  18. package/dist/{src/SQLExpression.js → SQLExpression.js} +3 -8
  19. package/dist/SQLExpression.js.map +1 -0
  20. package/dist/{src/SQLExpressions.d.ts → SQLExpressions.d.ts} +2 -2
  21. package/dist/SQLExpressions.d.ts.map +1 -0
  22. package/dist/{src/SQLExpressions.js → SQLExpressions.js} +78 -115
  23. package/dist/SQLExpressions.js.map +1 -0
  24. package/dist/{src/SQLInsert.d.ts → SQLInsert.d.ts} +3 -2
  25. package/dist/SQLInsert.d.ts.map +1 -0
  26. package/dist/{src/SQLInsert.js → SQLInsert.js} +17 -21
  27. package/dist/SQLInsert.js.map +1 -0
  28. package/dist/{src/SQLJoin.d.ts → SQLJoin.d.ts} +1 -1
  29. package/dist/SQLJoin.d.ts.map +1 -0
  30. package/{src/SQLJoin.ts → dist/SQLJoin.js} +15 -18
  31. package/dist/SQLJoin.js.map +1 -0
  32. package/dist/{src/SQLJsonExpressions.d.ts → SQLJsonExpressions.d.ts} +2 -2
  33. package/dist/SQLJsonExpressions.d.ts.map +1 -0
  34. package/dist/{src/SQLJsonExpressions.js → SQLJsonExpressions.js} +31 -44
  35. package/dist/SQLJsonExpressions.js.map +1 -0
  36. package/dist/SQLLogger.d.ts.map +1 -0
  37. package/dist/{src/SQLLogger.js → SQLLogger.js} +5 -8
  38. package/dist/SQLLogger.js.map +1 -0
  39. package/dist/{src/SQLOrderBy.d.ts → SQLOrderBy.d.ts} +1 -1
  40. package/dist/SQLOrderBy.d.ts.map +1 -0
  41. package/dist/{src/SQLOrderBy.js → SQLOrderBy.js} +8 -13
  42. package/dist/SQLOrderBy.js.map +1 -0
  43. package/dist/{src/SQLSelect.d.ts → SQLSelect.d.ts} +3 -3
  44. package/dist/SQLSelect.d.ts.map +1 -0
  45. package/dist/{src/SQLSelect.js → SQLSelect.js} +24 -29
  46. package/dist/SQLSelect.js.map +1 -0
  47. package/dist/{src/SQLTranslatedStringHelper.d.ts → SQLTranslatedStringHelper.d.ts} +3 -2
  48. package/dist/SQLTranslatedStringHelper.d.ts.map +1 -0
  49. package/dist/SQLTranslatedStringHelper.js +33 -0
  50. package/dist/SQLTranslatedStringHelper.js.map +1 -0
  51. package/dist/{src/SQLUpdate.d.ts → SQLUpdate.d.ts} +3 -2
  52. package/dist/SQLUpdate.d.ts.map +1 -0
  53. package/{src/SQLUpdate.ts → dist/SQLUpdate.js} +18 -35
  54. package/dist/SQLUpdate.js.map +1 -0
  55. package/dist/{src/SQLWhere.d.ts → SQLWhere.d.ts} +3 -3
  56. package/dist/SQLWhere.d.ts.map +1 -0
  57. package/dist/{src/SQLWhere.js → SQLWhere.js} +42 -56
  58. package/dist/SQLWhere.js.map +1 -0
  59. package/dist/{src/filters → filters}/SQLFilter.d.ts +5 -5
  60. package/dist/filters/SQLFilter.d.ts.map +1 -0
  61. package/{src/filters/SQLFilter.ts → dist/filters/SQLFilter.js} +55 -121
  62. package/dist/filters/SQLFilter.js.map +1 -0
  63. package/dist/{src/filters → filters}/SQLSorter.d.ts +6 -6
  64. package/dist/filters/SQLSorter.d.ts.map +1 -0
  65. package/dist/{src/filters → filters}/SQLSorter.js +4 -7
  66. package/dist/filters/SQLSorter.js.map +1 -0
  67. package/dist/filters/compilers/contains.d.ts +4 -0
  68. package/dist/filters/compilers/contains.d.ts.map +1 -0
  69. package/{src/filters/compilers/contains.ts → dist/filters/compilers/contains.js} +7 -25
  70. package/dist/filters/compilers/contains.js.map +1 -0
  71. package/dist/filters/compilers/equals.d.ts +4 -0
  72. package/dist/filters/compilers/equals.d.ts.map +1 -0
  73. package/dist/filters/compilers/equals.js +44 -0
  74. package/dist/filters/compilers/equals.js.map +1 -0
  75. package/dist/filters/compilers/greater.d.ts +4 -0
  76. package/dist/filters/compilers/greater.d.ts.map +1 -0
  77. package/dist/filters/compilers/greater.js +15 -0
  78. package/dist/filters/compilers/greater.js.map +1 -0
  79. package/dist/filters/compilers/in.d.ts +4 -0
  80. package/dist/filters/compilers/in.d.ts.map +1 -0
  81. package/{src/filters/compilers/in.ts → dist/filters/compilers/in.js} +7 -21
  82. package/dist/filters/compilers/in.js.map +1 -0
  83. package/dist/filters/compilers/index.d.ts.map +1 -0
  84. package/{src/filters/compilers/index.ts → dist/filters/compilers/index.js} +1 -0
  85. package/dist/filters/compilers/index.js.map +1 -0
  86. package/dist/filters/compilers/less.d.ts +4 -0
  87. package/dist/filters/compilers/less.d.ts.map +1 -0
  88. package/dist/filters/compilers/less.js +15 -0
  89. package/dist/filters/compilers/less.js.map +1 -0
  90. package/dist/filters/helpers/isJSONColumn.d.ts +5 -0
  91. package/dist/filters/helpers/isJSONColumn.d.ts.map +1 -0
  92. package/{src/filters/helpers/isJSONColumn.ts → dist/filters/helpers/isJSONColumn.js} +4 -5
  93. package/dist/filters/helpers/isJSONColumn.js.map +1 -0
  94. package/dist/{src/filters → filters}/helpers/normalizeCompareValue.d.ts +1 -1
  95. package/dist/filters/helpers/normalizeCompareValue.d.ts.map +1 -0
  96. package/{src/filters/helpers/normalizeCompareValue.ts → dist/filters/helpers/normalizeCompareValue.js} +2 -20
  97. package/dist/filters/helpers/normalizeCompareValue.js.map +1 -0
  98. package/dist/index.d.ts +14 -14
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +14 -25
  101. package/dist/index.js.map +1 -1
  102. package/package.json +6 -6
  103. package/dist/src/ModelCache.d.ts.map +0 -1
  104. package/dist/src/ModelCache.js +0 -57
  105. package/dist/src/ModelCache.js.map +0 -1
  106. package/dist/src/QueryableModel.d.ts.map +0 -1
  107. package/dist/src/QueryableModel.js.map +0 -1
  108. package/dist/src/SQL.d.ts.map +0 -1
  109. package/dist/src/SQL.js +0 -103
  110. package/dist/src/SQL.js.map +0 -1
  111. package/dist/src/SQLDelete.d.ts.map +0 -1
  112. package/dist/src/SQLDelete.js.map +0 -1
  113. package/dist/src/SQLExpression.d.ts.map +0 -1
  114. package/dist/src/SQLExpression.js.map +0 -1
  115. package/dist/src/SQLExpressions.d.ts.map +0 -1
  116. package/dist/src/SQLExpressions.js.map +0 -1
  117. package/dist/src/SQLInsert.d.ts.map +0 -1
  118. package/dist/src/SQLInsert.js.map +0 -1
  119. package/dist/src/SQLJoin.d.ts.map +0 -1
  120. package/dist/src/SQLJoin.js +0 -61
  121. package/dist/src/SQLJoin.js.map +0 -1
  122. package/dist/src/SQLJsonExpressions.d.ts.map +0 -1
  123. package/dist/src/SQLJsonExpressions.js.map +0 -1
  124. package/dist/src/SQLLogger.d.ts.map +0 -1
  125. package/dist/src/SQLLogger.js.map +0 -1
  126. package/dist/src/SQLOrderBy.d.ts.map +0 -1
  127. package/dist/src/SQLOrderBy.js.map +0 -1
  128. package/dist/src/SQLSelect.d.ts.map +0 -1
  129. package/dist/src/SQLSelect.js.map +0 -1
  130. package/dist/src/SQLTranslatedStringHelper.d.ts.map +0 -1
  131. package/dist/src/SQLTranslatedStringHelper.js +0 -37
  132. package/dist/src/SQLTranslatedStringHelper.js.map +0 -1
  133. package/dist/src/SQLUpdate.d.ts.map +0 -1
  134. package/dist/src/SQLUpdate.js +0 -60
  135. package/dist/src/SQLUpdate.js.map +0 -1
  136. package/dist/src/SQLWhere.d.ts.map +0 -1
  137. package/dist/src/SQLWhere.js.map +0 -1
  138. package/dist/src/filters/SQLFilter.d.ts.map +0 -1
  139. package/dist/src/filters/SQLFilter.js +0 -220
  140. package/dist/src/filters/SQLFilter.js.map +0 -1
  141. package/dist/src/filters/SQLSorter.d.ts.map +0 -1
  142. package/dist/src/filters/SQLSorter.js.map +0 -1
  143. package/dist/src/filters/compilers/contains.d.ts +0 -4
  144. package/dist/src/filters/compilers/contains.d.ts.map +0 -1
  145. package/dist/src/filters/compilers/contains.js +0 -29
  146. package/dist/src/filters/compilers/contains.js.map +0 -1
  147. package/dist/src/filters/compilers/equals.d.ts +0 -4
  148. package/dist/src/filters/compilers/equals.d.ts.map +0 -1
  149. package/dist/src/filters/compilers/equals.js +0 -47
  150. package/dist/src/filters/compilers/equals.js.map +0 -1
  151. package/dist/src/filters/compilers/greater.d.ts +0 -4
  152. package/dist/src/filters/compilers/greater.d.ts.map +0 -1
  153. package/dist/src/filters/compilers/greater.js +0 -18
  154. package/dist/src/filters/compilers/greater.js.map +0 -1
  155. package/dist/src/filters/compilers/in.d.ts +0 -4
  156. package/dist/src/filters/compilers/in.d.ts.map +0 -1
  157. package/dist/src/filters/compilers/in.js +0 -51
  158. package/dist/src/filters/compilers/in.js.map +0 -1
  159. package/dist/src/filters/compilers/index.d.ts.map +0 -1
  160. package/dist/src/filters/compilers/index.js +0 -8
  161. package/dist/src/filters/compilers/index.js.map +0 -1
  162. package/dist/src/filters/compilers/less.d.ts +0 -4
  163. package/dist/src/filters/compilers/less.d.ts.map +0 -1
  164. package/dist/src/filters/compilers/less.js +0 -18
  165. package/dist/src/filters/compilers/less.js.map +0 -1
  166. package/dist/src/filters/helpers/isJSONColumn.d.ts +0 -4
  167. package/dist/src/filters/helpers/isJSONColumn.d.ts.map +0 -1
  168. package/dist/src/filters/helpers/isJSONColumn.js +0 -17
  169. package/dist/src/filters/helpers/isJSONColumn.js.map +0 -1
  170. package/dist/src/filters/helpers/normalizeCompareValue.d.ts.map +0 -1
  171. package/dist/src/filters/helpers/normalizeCompareValue.js +0 -87
  172. package/dist/src/filters/helpers/normalizeCompareValue.js.map +0 -1
  173. package/dist/tests/filters/$and.test.d.ts +0 -2
  174. package/dist/tests/filters/$and.test.d.ts.map +0 -1
  175. package/dist/tests/filters/$and.test.js +0 -216
  176. package/dist/tests/filters/$and.test.js.map +0 -1
  177. package/dist/tests/filters/$contains.test.d.ts +0 -2
  178. package/dist/tests/filters/$contains.test.d.ts.map +0 -1
  179. package/dist/tests/filters/$contains.test.js +0 -917
  180. package/dist/tests/filters/$contains.test.js.map +0 -1
  181. package/dist/tests/filters/$eq.test.d.ts +0 -2
  182. package/dist/tests/filters/$eq.test.d.ts.map +0 -1
  183. package/dist/tests/filters/$eq.test.js +0 -1464
  184. package/dist/tests/filters/$eq.test.js.map +0 -1
  185. package/dist/tests/filters/$gt.test.d.ts +0 -2
  186. package/dist/tests/filters/$gt.test.d.ts.map +0 -1
  187. package/dist/tests/filters/$gt.test.js +0 -641
  188. package/dist/tests/filters/$gt.test.js.map +0 -1
  189. package/dist/tests/filters/$gte.test.d.ts +0 -2
  190. package/dist/tests/filters/$gte.test.d.ts.map +0 -1
  191. package/dist/tests/filters/$gte.test.js +0 -433
  192. package/dist/tests/filters/$gte.test.js.map +0 -1
  193. package/dist/tests/filters/$in.test.d.ts +0 -2
  194. package/dist/tests/filters/$in.test.d.ts.map +0 -1
  195. package/dist/tests/filters/$in.test.js +0 -773
  196. package/dist/tests/filters/$in.test.js.map +0 -1
  197. package/dist/tests/filters/$lt.test.d.ts +0 -2
  198. package/dist/tests/filters/$lt.test.d.ts.map +0 -1
  199. package/dist/tests/filters/$lt.test.js +0 -433
  200. package/dist/tests/filters/$lt.test.js.map +0 -1
  201. package/dist/tests/filters/$lte.test.d.ts +0 -2
  202. package/dist/tests/filters/$lte.test.d.ts.map +0 -1
  203. package/dist/tests/filters/$lte.test.js +0 -472
  204. package/dist/tests/filters/$lte.test.js.map +0 -1
  205. package/dist/tests/filters/$neq.test.d.ts +0 -2
  206. package/dist/tests/filters/$neq.test.d.ts.map +0 -1
  207. package/dist/tests/filters/$neq.test.js +0 -32
  208. package/dist/tests/filters/$neq.test.js.map +0 -1
  209. package/dist/tests/filters/$not.test.d.ts +0 -2
  210. package/dist/tests/filters/$not.test.d.ts.map +0 -1
  211. package/dist/tests/filters/$not.test.js +0 -50
  212. package/dist/tests/filters/$not.test.js.map +0 -1
  213. package/dist/tests/filters/$or.test.d.ts +0 -2
  214. package/dist/tests/filters/$or.test.d.ts.map +0 -1
  215. package/dist/tests/filters/$or.test.js +0 -185
  216. package/dist/tests/filters/$or.test.js.map +0 -1
  217. package/dist/tests/filters/SQLTranslatedStringHelper.test.d.ts +0 -2
  218. package/dist/tests/filters/SQLTranslatedStringHelper.test.d.ts.map +0 -1
  219. package/dist/tests/filters/SQLTranslatedStringHelper.test.js +0 -491
  220. package/dist/tests/filters/SQLTranslatedStringHelper.test.js.map +0 -1
  221. package/dist/tests/filters/dot-syntax.test.d.ts +0 -2
  222. package/dist/tests/filters/dot-syntax.test.d.ts.map +0 -1
  223. package/dist/tests/filters/dot-syntax.test.js +0 -210
  224. package/dist/tests/filters/dot-syntax.test.js.map +0 -1
  225. package/dist/tests/filters/exists.test.d.ts +0 -2
  226. package/dist/tests/filters/exists.test.d.ts.map +0 -1
  227. package/dist/tests/filters/exists.test.js +0 -96
  228. package/dist/tests/filters/exists.test.js.map +0 -1
  229. package/dist/tests/filters/joined-relations.test.d.ts +0 -2
  230. package/dist/tests/filters/joined-relations.test.d.ts.map +0 -1
  231. package/dist/tests/filters/joined-relations.test.js +0 -167
  232. package/dist/tests/filters/joined-relations.test.js.map +0 -1
  233. package/dist/tests/filters/special-cases.test.d.ts +0 -2
  234. package/dist/tests/filters/special-cases.test.d.ts.map +0 -1
  235. package/dist/tests/filters/special-cases.test.js +0 -114
  236. package/dist/tests/filters/special-cases.test.js.map +0 -1
  237. package/dist/tests/filters/wildcard.test.d.ts +0 -2
  238. package/dist/tests/filters/wildcard.test.d.ts.map +0 -1
  239. package/dist/tests/filters/wildcard.test.js +0 -67
  240. package/dist/tests/filters/wildcard.test.js.map +0 -1
  241. package/dist/tests/jest.global.setup.d.ts +0 -3
  242. package/dist/tests/jest.global.setup.d.ts.map +0 -1
  243. package/dist/tests/jest.global.setup.js +0 -7
  244. package/dist/tests/jest.global.setup.js.map +0 -1
  245. package/dist/tests/jest.setup.d.ts +0 -2
  246. package/dist/tests/jest.setup.d.ts.map +0 -1
  247. package/dist/tests/jest.setup.js +0 -5
  248. package/dist/tests/jest.setup.js.map +0 -1
  249. package/dist/tests/utils/index.d.ts +0 -57
  250. package/dist/tests/utils/index.d.ts.map +0 -1
  251. package/dist/tests/utils/index.js +0 -206
  252. package/dist/tests/utils/index.js.map +0 -1
  253. package/dist/tsconfig.tsbuildinfo +0 -1
  254. package/src/QueryableModel.ts +0 -134
  255. package/src/SQL.ts +0 -128
  256. package/src/SQLDelete.ts +0 -73
  257. package/src/SQLExpression.ts +0 -34
  258. package/src/SQLExpressions.ts +0 -587
  259. package/src/SQLInsert.ts +0 -113
  260. package/src/SQLJsonExpressions.ts +0 -283
  261. package/src/SQLLogger.ts +0 -82
  262. package/src/SQLOrderBy.ts +0 -69
  263. package/src/SQLSelect.ts +0 -520
  264. package/src/SQLTranslatedStringHelper.ts +0 -40
  265. package/src/SQLWhere.ts +0 -744
  266. package/src/filters/SQLSorter.ts +0 -60
  267. package/src/filters/compilers/equals.ts +0 -73
  268. package/src/filters/compilers/greater.ts +0 -21
  269. package/src/filters/compilers/less.ts +0 -20
  270. /package/dist/{src/SQLExpression.d.ts → SQLExpression.d.ts} +0 -0
  271. /package/dist/{src/SQLLogger.d.ts → SQLLogger.d.ts} +0 -0
  272. /package/dist/{src/filters → filters}/compilers/index.d.ts +0 -0
@@ -1,80 +1,40 @@
1
1
  import { SimpleError } from '@simonbackx/simple-errors';
2
- import { compileFilter, FilterCompiler, FilterDefinitions, filterDefinitionsToCompiler, RequiredFilterCompiler, type StamhoofdCompareValue, StamhoofdFilter } from '@stamhoofd/structures';
3
- import { SQLExpression, SQLExpressionOptions, SQLQuery } from '../SQLExpression.js';
2
+ import { compileFilter, filterDefinitionsToCompiler } from '@stamhoofd/structures';
4
3
  import { SQLSafeValue } from '../SQLExpressions.js';
5
- import { SQLJoin } from '../SQLJoin.js';
6
4
  import { SQLJsonValue } from '../SQLJsonExpressions.js';
7
- import { SQLSelect } from '../SQLSelect.js';
8
- import { SQLWhere, SQLWhereAnd, SQLWhereExists, SQLWhereJoin, SQLWhereNot, SQLWhereOr } from '../SQLWhere.js';
5
+ import { SQLWhereAnd, SQLWhereExists, SQLWhereJoin, SQLWhereNot, SQLWhereOr } from '../SQLWhere.js';
9
6
  import { $containsSQLFilterCompiler } from './compilers/contains.js';
10
7
  import { $equalsSQLFilterCompiler, $greaterThanSQLFilterCompiler, $inSQLFilterCompiler, $lessThanSQLFilterCompiler } from './compilers/index.js';
11
-
12
- export type SQLSyncFilterRunner = (column: SQLCurrentColumn) => SQLWhere;
13
- export type SQLFilterRunner = (column: SQLCurrentColumn) => Promise<SQLWhere> | SQLWhere;
14
- export type SQLFilterCompiler = FilterCompiler<SQLFilterRunner>;
15
- export type SQLRequiredFilterCompiler = RequiredFilterCompiler<SQLFilterRunner>;
16
- export type SQLFilterDefinitions = FilterDefinitions<SQLFilterRunner>;
17
-
18
- export enum SQLValueType {
8
+ export var SQLValueType;
9
+ (function (SQLValueType) {
19
10
  /** At the root of a select */
20
- Table = 'Table',
21
-
11
+ SQLValueType["Table"] = "Table";
22
12
  /** Column with type string */
23
- String = 'String',
24
-
13
+ SQLValueType["String"] = "String";
25
14
  /** MySQL Datetime */
26
- Datetime = 'Datetime',
27
-
15
+ SQLValueType["Datetime"] = "Datetime";
28
16
  /** Column with type number */
29
- Number = 'Number',
30
-
17
+ SQLValueType["Number"] = "Number";
31
18
  /** Column with type boolean, meaning 1 or 0 */
32
- Boolean = 'Boolean',
33
-
19
+ SQLValueType["Boolean"] = "Boolean";
34
20
  /** True or false in JSON */
35
- JSONBoolean = 'JSONBoolean',
36
- JSONString = 'JSONString',
37
- JSONNumber = 'JSONNumber',
38
-
21
+ SQLValueType["JSONBoolean"] = "JSONBoolean";
22
+ SQLValueType["JSONString"] = "JSONString";
23
+ SQLValueType["JSONNumber"] = "JSONNumber";
39
24
  /**
40
25
  * Either boolean, string, number or null (if nullable). Only use this if you cannot determine the type at compile time.
41
26
  */
42
- JSONScalar = 'JSONScalar',
43
-
27
+ SQLValueType["JSONScalar"] = "JSONScalar";
44
28
  /** [...] */
45
- JSONArray = 'JSONArray',
46
-
29
+ SQLValueType["JSONArray"] = "JSONArray";
47
30
  /** {...} */
48
- JSONObject = 'JSONObject',
49
- }
50
-
51
- export type SQLCurrentColumn = {
52
- expression: SQLExpression;
53
-
54
- /**
55
- * MySQL nullable. Please fill this in correctly! If a value can be null, can not exist (=mysql null), or can be JSONNull, set this to true.
56
- *
57
- * Mainly > and < operators will make sure the behaviour is consistent with MySQL sorting (normally comparing with null will always return false in MySQL)
58
- */
59
- nullable?: boolean;
60
-
61
- /**
62
- * JSON nullable
63
- */
64
-
65
- /**
66
- * Type of this column, use to normalize values received from filters
67
- */
68
- type: SQLValueType;
69
- checkPermission?: (filter: StamhoofdFilter) => Promise<void>;
70
- };
71
-
72
- export function createColumnFilter(column: SQLCurrentColumn, childDefinitions?: SQLFilterDefinitions): SQLFilterCompiler {
73
- return (filter: StamhoofdFilter) => {
31
+ SQLValueType["JSONObject"] = "JSONObject";
32
+ })(SQLValueType || (SQLValueType = {}));
33
+ export function createColumnFilter(column, childDefinitions) {
34
+ return (filter) => {
74
35
  const compiler = childDefinitions ? filterDefinitionsToCompiler(childDefinitions) : filterDefinitionsToCompiler(baseSQLFilterCompilers);
75
36
  const runner = $andSQLFilterCompiler(filter, compiler);
76
-
77
- return async (_: SQLCurrentColumn) => {
37
+ return async (_) => {
78
38
  if (column.checkPermission) {
79
39
  await column.checkPermission(filter);
80
40
  }
@@ -85,13 +45,11 @@ export function createColumnFilter(column: SQLCurrentColumn, childDefinitions?:
85
45
  };
86
46
  };
87
47
  }
88
-
89
- export function createWildcardColumnFilter(getColumn: (key: string) => SQLCurrentColumn, childDefinitions?: (key: string) => SQLFilterDefinitions, options?: { checkPermission?: (key: string) => Promise<void> }): SQLFilterCompiler {
90
- const wildcardCompiler = (filter: StamhoofdFilter, _, key: string) => {
48
+ export function createWildcardColumnFilter(getColumn, childDefinitions, options) {
49
+ const wildcardCompiler = (filter, _, key) => {
91
50
  const compiler = childDefinitions ? filterDefinitionsToCompiler(childDefinitions(key)) : filterDefinitionsToCompiler(baseSQLFilterCompilers);
92
51
  const runner = $andSQLFilterCompiler(filter, compiler);
93
-
94
- return async (_: SQLCurrentColumn) => {
52
+ return async (_) => {
95
53
  if (options?.checkPermission) {
96
54
  await options.checkPermission(key);
97
55
  }
@@ -105,24 +63,20 @@ export function createWildcardColumnFilter(getColumn: (key: string) => SQLCurren
105
63
  });
106
64
  };
107
65
  };
108
-
109
- return (filter: StamhoofdFilter) => {
66
+ return (filter) => {
110
67
  return $andSQLFilterCompiler(filter, wildcardCompiler);
111
68
  };
112
69
  }
113
-
114
70
  /**
115
71
  * Filter with a subquery that should return at least one result.
116
72
  */
117
- export function createExistsFilter(baseSelect: InstanceType<typeof SQLSelect> & SQLExpression, definitions: SQLFilterDefinitions): SQLFilterCompiler {
118
- return (filter: StamhoofdFilter, _: SQLFilterCompiler) => {
73
+ export function createExistsFilter(baseSelect, definitions) {
74
+ return (filter, _) => {
119
75
  if (filter !== null && typeof filter === 'object' && '$elemMatch' in filter) {
120
- filter = filter['$elemMatch'] as StamhoofdFilter;
76
+ filter = filter['$elemMatch'];
121
77
  }
122
-
123
78
  const runner = compileToSQLRunner(filter, definitions);
124
-
125
- return async (_: SQLCurrentColumn) => {
79
+ return async (_) => {
126
80
  const w = await runner({
127
81
  expression: SQLRootExpression,
128
82
  type: SQLValueType.Table,
@@ -135,19 +89,17 @@ export function createExistsFilter(baseSelect: InstanceType<typeof SQLSelect> &
135
89
  };
136
90
  };
137
91
  }
138
-
139
92
  /**
140
93
  * WARNING: only use this on one-to-one relations. Using it on one-to-many relations will result in duplicate results.
141
94
  *
142
95
  * By default doesRelationAlwaysExist is set to true, this means we expect the relation to always exist. This helps optimize the query (dropping the join if the where clause in the join is always true)
143
96
  */
144
- export function createJoinedRelationFilter(join: SQLJoin, definitions: SQLFilterDefinitions, options: { doesRelationAlwaysExist: boolean } = { doesRelationAlwaysExist: true }): SQLFilterCompiler {
145
- return (filter: StamhoofdFilter, _: SQLFilterCompiler) => {
97
+ export function createJoinedRelationFilter(join, definitions, options = { doesRelationAlwaysExist: true }) {
98
+ return (filter, _) => {
146
99
  if (filter !== null && typeof filter === 'object' && '$elemMatch' in filter) {
147
- filter = filter['$elemMatch'] as StamhoofdFilter;
100
+ filter = filter['$elemMatch'];
148
101
  }
149
-
150
- return async (_: SQLCurrentColumn) => {
102
+ return async (_) => {
151
103
  const w = await compileToSQLFilter(filter, definitions);
152
104
  return new SQLWhereJoin(join, w, {
153
105
  doesRelationAlwaysExist: options.doesRelationAlwaysExist,
@@ -155,77 +107,61 @@ export function createJoinedRelationFilter(join: SQLJoin, definitions: SQLFilter
155
107
  };
156
108
  };
157
109
  }
158
-
159
- export function $andSQLFilterCompiler(filter: StamhoofdFilter, filters: SQLFilterCompiler): SQLFilterRunner {
110
+ export function $andSQLFilterCompiler(filter, filters) {
160
111
  const runners = compileSQLFilter(filter, filters);
161
-
162
- return async (column: SQLCurrentColumn) => {
112
+ return async (column) => {
163
113
  const wheres = (await Promise.all(
164
- runners.map(runner => (runner(column))),
165
- ));
166
-
114
+ // eslint-disable-next-line @typescript-eslint/await-thenable
115
+ runners.map(runner => (runner(column)))));
167
116
  return new SQLWhereAnd(wheres);
168
117
  };
169
118
  }
170
-
171
- export function $orSQLFilterCompiler(filter: StamhoofdFilter, filters: SQLFilterCompiler): SQLFilterRunner {
119
+ export function $orSQLFilterCompiler(filter, filters) {
172
120
  const runners = compileSQLFilter(filter, filters);
173
-
174
- return async (column: SQLCurrentColumn) => {
121
+ return async (column) => {
175
122
  const wheres = (await Promise.all(
176
- runners.map(runner => (runner(column))),
177
- ));
178
-
123
+ // eslint-disable-next-line @typescript-eslint/await-thenable
124
+ runners.map(runner => (runner(column)))));
179
125
  return new SQLWhereOr(wheres);
180
126
  };
181
127
  }
182
-
183
- export function $notSQLFilterCompiler(filter: StamhoofdFilter, filters: SQLFilterCompiler): SQLFilterRunner {
128
+ export function $notSQLFilterCompiler(filter, filters) {
184
129
  const andRunner = $andSQLFilterCompiler(filter, filters);
185
-
186
- return async (column: SQLCurrentColumn) => {
130
+ return async (column) => {
187
131
  return new SQLWhereNot(await andRunner(column));
188
132
  };
189
133
  }
190
-
191
- function invertFilterCompiler(compiler: SQLRequiredFilterCompiler): SQLRequiredFilterCompiler {
192
- return (filter: StamhoofdFilter, parentCompiler: SQLFilterCompiler) => {
134
+ function invertFilterCompiler(compiler) {
135
+ return (filter, parentCompiler) => {
193
136
  const runner = compiler(filter, parentCompiler);
194
137
  return async (column) => {
195
138
  return new SQLWhereNot(await runner(column));
196
139
  };
197
140
  };
198
141
  }
199
-
200
- export const baseSQLFilterCompilers: SQLFilterDefinitions = {
142
+ export const baseSQLFilterCompilers = {
201
143
  $and: $andSQLFilterCompiler,
202
144
  $or: $orSQLFilterCompiler,
203
145
  $not: $notSQLFilterCompiler,
204
146
  $eq: $equalsSQLFilterCompiler,
205
147
  $neq: invertFilterCompiler($equalsSQLFilterCompiler),
206
-
207
148
  $lt: $lessThanSQLFilterCompiler,
208
149
  $gt: $greaterThanSQLFilterCompiler,
209
150
  $lte: invertFilterCompiler($greaterThanSQLFilterCompiler),
210
151
  $gte: invertFilterCompiler($lessThanSQLFilterCompiler),
211
-
212
152
  $in: $inSQLFilterCompiler,
213
-
214
153
  $contains: $containsSQLFilterCompiler,
215
154
  };
216
-
217
- const compileSQLFilter = compileFilter<SQLFilterRunner>;
218
-
219
- export const SQLRootExpression: SQLExpression = {
220
- getSQL(options?: SQLExpressionOptions): SQLQuery {
155
+ const compileSQLFilter = (compileFilter);
156
+ export const SQLRootExpression = {
157
+ getSQL(options) {
221
158
  throw new SimpleError({
222
159
  code: 'invalid_filter',
223
160
  message: 'Root level filters are not allowed to use $eq or $neq',
224
161
  });
225
162
  },
226
163
  };
227
-
228
- export function compileToSQLRunner(filter: StamhoofdFilter, definitions: SQLFilterDefinitions): SQLFilterRunner {
164
+ export function compileToSQLRunner(filter, definitions) {
229
165
  if (filter === null) {
230
166
  return () => {
231
167
  return new SQLWhereAnd([]); // No filter, return empty where
@@ -234,21 +170,21 @@ export function compileToSQLRunner(filter: StamhoofdFilter, definitions: SQLFilt
234
170
  const compiler = filterDefinitionsToCompiler(definitions); // this compiler searches in the definition for the right compiler for the given key
235
171
  const runner = $andSQLFilterCompiler(filter, compiler);
236
172
  return runner;
237
- };
238
-
239
- export async function compileToSQLFilter(filter: StamhoofdFilter, filters: SQLFilterDefinitions): Promise<SQLWhere> {
173
+ }
174
+ ;
175
+ export async function compileToSQLFilter(filter, filters) {
240
176
  const runner = compileToSQLRunner(filter, filters);
241
177
  return await runner({
242
178
  expression: SQLRootExpression,
243
179
  type: SQLValueType.Table,
244
180
  nullable: false,
245
181
  });
246
- };
247
-
182
+ }
183
+ ;
248
184
  /**
249
185
  * Casts json strings, numbers and booleans to native MySQL types. This includes json null to mysql null.
250
186
  */
251
- export function normalizeColumn(column: SQLCurrentColumn, hint?: StamhoofdCompareValue): SQLCurrentColumn {
187
+ export function normalizeColumn(column, hint) {
252
188
  if (column.type === SQLValueType.JSONString || (column.type === SQLValueType.JSONScalar && typeof hint === 'string')) {
253
189
  return {
254
190
  expression: new SQLJsonValue(column.expression, 'CHAR'),
@@ -256,7 +192,6 @@ export function normalizeColumn(column: SQLCurrentColumn, hint?: StamhoofdCompar
256
192
  nullable: column.nullable,
257
193
  };
258
194
  }
259
-
260
195
  if (column.type === SQLValueType.JSONNumber || (column.type === SQLValueType.JSONScalar && typeof hint === 'number')) {
261
196
  return {
262
197
  expression: new SQLJsonValue(column.expression, 'SIGNED'),
@@ -264,7 +199,6 @@ export function normalizeColumn(column: SQLCurrentColumn, hint?: StamhoofdCompar
264
199
  nullable: column.nullable,
265
200
  };
266
201
  }
267
-
268
202
  if (column.type === SQLValueType.JSONBoolean || (column.type === SQLValueType.JSONScalar && typeof hint === 'boolean')) {
269
203
  return {
270
204
  expression: new SQLJsonValue(column.expression, 'UNSIGNED'),
@@ -272,6 +206,6 @@ export function normalizeColumn(column: SQLCurrentColumn, hint?: StamhoofdCompar
272
206
  nullable: column.nullable,
273
207
  };
274
208
  }
275
-
276
209
  return column;
277
210
  }
211
+ //# sourceMappingURL=SQLFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SQLFilter.js","sourceRoot":"","sources":["../../src/filters/SQLFilter.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- import { PlainObject } from '@simonbackx/simple-encoding';
2
- import { SortDefinition, SortList } from '@stamhoofd/structures';
3
- import { SQLExpression } from '../SQLExpression.js';
4
- import { SQLJoin } from '../SQLJoin.js';
5
- import { SQLOrderBy, SQLOrderByDirection } from '../SQLOrderBy.js';
6
- import { SQLSelect } from '../SQLSelect.js';
1
+ import type { PlainObject } from '@simonbackx/simple-encoding';
2
+ import type { SortDefinition, SortList } from '@stamhoofd/structures';
3
+ import type { SQLExpression } from '../SQLExpression.js';
4
+ import type { SQLJoin } from '../SQLJoin.js';
5
+ import type { SQLOrderBy, SQLOrderByDirection } from '../SQLOrderBy.js';
6
+ import type { SQLSelect } from '../SQLSelect.js';
7
7
  export type SQLSortDefinition<T, B extends PlainObject | Date = PlainObject | Date> = SortDefinition<T, B> & {
8
8
  toSQL(direction: SQLOrderByDirection): SQLOrderBy;
9
9
  join?: SQLJoin;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SQLSorter.d.ts","sourceRoot":"","sources":["../../src/filters/SQLSorter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAE/D,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAEjD,MAAM,MAAM,iBAAiB,CAAC,CAAC,EAAE,CAAC,SAAS,WAAW,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,IAAI,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;IACzG,KAAK,CAAC,SAAS,EAAE,mBAAmB,GAAG,UAAU,CAAC;IAClD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,CAAC,aAAa,GAAG,MAAM,CAAC,EAAE,CAAC;CACvC,CAAC;AAEF,MAAM,MAAM,kBAAkB,CAAC,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AAE/E,wBAAgB,cAAc,CAAC,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,kBAAkB,QA0C5G"}
@@ -1,10 +1,7 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.applySQLSorter = applySQLSorter;
4
- const simple_errors_1 = require("@simonbackx/simple-errors");
5
- function applySQLSorter(selectQuery, sortBy, definitions) {
1
+ import { SimpleError } from '@simonbackx/simple-errors';
2
+ export function applySQLSorter(selectQuery, sortBy, definitions) {
6
3
  if (sortBy.length === 0) {
7
- throw new simple_errors_1.SimpleError({
4
+ throw new SimpleError({
8
5
  code: 'empty_sort',
9
6
  message: 'No sort passed',
10
7
  });
@@ -24,7 +21,7 @@ function applySQLSorter(selectQuery, sortBy, definitions) {
24
21
  const name = d.join.table.getSQL({ defaultNamespace: 'default' });
25
22
  for (const j of selectQuery._joins) {
26
23
  if (j.table.getSQL({ defaultNamespace: 'default' }) === name) {
27
- throw new simple_errors_1.SimpleError({
24
+ throw new SimpleError({
28
25
  code: 'sorter_join_overlap',
29
26
  message: 'This combination of sorters is not possible',
30
27
  human: $t('%GU'),
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SQLSorter.js","sourceRoot":"","sources":["../../src/filters/SQLSorter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAexD,MAAM,UAAU,cAAc,CAAC,WAA2B,EAAE,MAAgB,EAAE,WAA+B;IACzG,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,WAAW,CAAC;YAClB,IAAI,EAAE,YAAY;YAClB,OAAO,EAAE,gBAAgB;SAC5B,CAAC,CAAC;IACP,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,CAAC,CAAC,EAAE,CAAC;YACL,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QACjD,CAAC;QAED,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAEtC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YACT,kEAAkE;YAClE,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7C,gBAAgB;YACpB,CAAC;iBACI,CAAC;gBACF,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,CAAC;gBAElE,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC;oBACjC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;wBAC3D,MAAM,IAAI,WAAW,CAAC;4BAClB,IAAI,EAAE,qBAAqB;4BAC3B,OAAO,EAAE,6CAA6C;4BACtD,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC;yBACnB,CAAC,CAAC;oBACP,CAAC;gBACL,CAAC;gBAED,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;QACL,CAAC;QAED,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YACX,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;QACpC,CAAC;IACL,CAAC;AACL,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { StamhoofdFilter } from '@stamhoofd/structures';
2
+ import type { SQLSyncFilterRunner } from '../SQLFilter.js';
3
+ export declare function $containsSQLFilterCompiler(filter: StamhoofdFilter): SQLSyncFilterRunner;
4
+ //# sourceMappingURL=contains.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contains.d.ts","sourceRoot":"","sources":["../../../src/filters/compilers/contains.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAK7D,OAAO,KAAK,EAAoB,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AAI5E,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,eAAe,GAAG,mBAAmB,CAmCvF"}
@@ -1,44 +1,26 @@
1
1
  import { SimpleError } from '@simonbackx/simple-errors';
2
- import { assertFilterCompareValue, StamhoofdFilter } from '@stamhoofd/structures';
2
+ import { assertFilterCompareValue } from '@stamhoofd/structures';
3
3
  import { scalarToSQLExpression, SQLLower, SQLNull } from '../../SQLExpressions.js';
4
4
  import { SQLJsonSearch } from '../../SQLJsonExpressions.js';
5
5
  import { SQLWhereEqual, SQLWhereLike, SQLWhereSign } from '../../SQLWhere.js';
6
- import { normalizeColumn, SQLCurrentColumn, SQLSyncFilterRunner, SQLValueType } from '../SQLFilter.js';
6
+ import { normalizeColumn, SQLValueType } from '../SQLFilter.js';
7
7
  import { normalizeCompareValue } from '../helpers/normalizeCompareValue.js';
8
-
9
- export function $containsSQLFilterCompiler(filter: StamhoofdFilter): SQLSyncFilterRunner {
10
- return (originalColumn: SQLCurrentColumn) => {
8
+ export function $containsSQLFilterCompiler(filter) {
9
+ return (originalColumn) => {
11
10
  const v = assertFilterCompareValue(filter);
12
11
  const column = normalizeColumn(originalColumn, v);
13
12
  const value = normalizeCompareValue(v, column.type);
14
-
15
13
  if (typeof value !== 'string') {
16
14
  throw new SimpleError({
17
15
  code: 'invalid_filter',
18
16
  message: 'Expected string at $contains filter',
19
17
  });
20
18
  }
21
-
22
19
  if (column.type === SQLValueType.JSONArray || column.type === SQLValueType.JSONObject) {
23
20
  // For JSON arrays and objects, we use JSON_CONTAINS
24
- return new SQLWhereEqual(
25
- new SQLJsonSearch(
26
- new SQLLower(column.expression),
27
- 'one',
28
- scalarToSQLExpression(
29
- '%' + SQLWhereLike.escape(value) + '%',
30
- ),
31
- ),
32
- SQLWhereSign.NotEqual,
33
- new SQLNull(),
34
- );
21
+ return new SQLWhereEqual(new SQLJsonSearch(new SQLLower(column.expression), 'one', scalarToSQLExpression('%' + SQLWhereLike.escape(value) + '%')), SQLWhereSign.NotEqual, new SQLNull());
35
22
  }
36
-
37
- return new SQLWhereLike(
38
- column.expression,
39
- scalarToSQLExpression(
40
- '%' + SQLWhereLike.escape(value) + '%',
41
- ),
42
- );
23
+ return new SQLWhereLike(column.expression, scalarToSQLExpression('%' + SQLWhereLike.escape(value) + '%'));
43
24
  };
44
25
  }
26
+ //# sourceMappingURL=contains.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contains.js","sourceRoot":"","sources":["../../../src/filters/compilers/contains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,MAAM,UAAU,0BAA0B,CAAC,MAAuB;IAC9D,OAAO,CAAC,cAAgC,EAAE,EAAE;QACxC,MAAM,CAAC,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,eAAe,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,qBAAqB,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAEpD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,WAAW,CAAC;gBAClB,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,qCAAqC;aACjD,CAAC,CAAC;QACP,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,UAAU,EAAE,CAAC;YACpF,oDAAoD;YACpD,OAAO,IAAI,aAAa,CACpB,IAAI,aAAa,CACb,IAAI,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAC/B,KAAK,EACL,qBAAqB,CACjB,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CACzC,CACJ,EACD,YAAY,CAAC,QAAQ,EACrB,IAAI,OAAO,EAAE,CAChB,CAAC;QACN,CAAC;QAED,OAAO,IAAI,YAAY,CACnB,MAAM,CAAC,UAAU,EACjB,qBAAqB,CACjB,GAAG,GAAG,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CACzC,CACJ,CAAC;IACN,CAAC,CAAC;AACN,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { StamhoofdFilter } from '@stamhoofd/structures';
2
+ import type { SQLSyncFilterRunner } from '../SQLFilter.js';
3
+ export declare function $equalsSQLFilterCompiler(filter: StamhoofdFilter): SQLSyncFilterRunner;
4
+ //# sourceMappingURL=equals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"equals.d.ts","sourceRoot":"","sources":["../../../src/filters/compilers/equals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAM7D,OAAO,KAAK,EAAoB,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AAK5E,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,eAAe,GAAG,mBAAmB,CAgErF"}
@@ -0,0 +1,44 @@
1
+ import { assertFilterCompareValue } from '@stamhoofd/structures';
2
+ import { scalarToSQLExpression, SQLLower, SQLNull } from '../../SQLExpressions.js';
3
+ import { SQLJsonContains, SQLJsonSearch, SQLJsonValue } from '../../SQLJsonExpressions.js';
4
+ import { SQLWhereEqual, SQLWhereLike, SQLWhereOr, SQLWhereSign } from '../../SQLWhere.js';
5
+ import { normalizeColumn, SQLValueType } from '../SQLFilter.js';
6
+ import { isJSONColumn } from '../helpers/isJSONColumn.js';
7
+ import { normalizeCompareValue } from '../helpers/normalizeCompareValue.js';
8
+ export function $equalsSQLFilterCompiler(filter) {
9
+ return (originalColumn) => {
10
+ const v = assertFilterCompareValue(filter);
11
+ const column = normalizeColumn(originalColumn, v);
12
+ const value = normalizeCompareValue(v, column.type);
13
+ /**
14
+ * Special case, checking for equality with a JSON array.
15
+ * This should return true if the JSON array contains the value exactly.
16
+ *
17
+ * This differs from $contains, which will check for 'LIKE' inside the JSON array.
18
+ */
19
+ if (column.type === SQLValueType.JSONArray) {
20
+ let where;
21
+ if (typeof value === 'string') {
22
+ where = new SQLWhereEqual(new SQLJsonSearch(new SQLLower(column.expression), 'one', scalarToSQLExpression(SQLWhereLike.escape(value))), SQLWhereSign.NotEqual, new SQLNull());
23
+ }
24
+ else {
25
+ where = new SQLJsonContains(column.expression, scalarToSQLExpression(JSON.stringify(value)));
26
+ }
27
+ // If comparing against null, also check for native MySQL null (the column does not exist)
28
+ if (value === null) {
29
+ where = new SQLWhereOr([
30
+ where,
31
+ new SQLWhereEqual(column.expression, SQLWhereSign.Equal, new SQLNull()),
32
+ ]);
33
+ }
34
+ return where;
35
+ }
36
+ if (value === null && isJSONColumn(column)) {
37
+ // JSON values can either resolve to null or "null" in MySQL.
38
+ return new SQLWhereEqual(new SQLJsonValue(column.expression), // casts json null to null, including invalid paths
39
+ SQLWhereSign.Equal, new SQLNull());
40
+ }
41
+ return new SQLWhereEqual(column.expression, SQLWhereSign.Equal, scalarToSQLExpression(value)).setNullable(column.nullable);
42
+ };
43
+ }
44
+ //# sourceMappingURL=equals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"equals.js","sourceRoot":"","sources":["../../../src/filters/compilers/equals.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3F,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE1F,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,MAAM,UAAU,wBAAwB,CAAC,MAAuB;IAC5D,OAAO,CAAC,cAAgC,EAAE,EAAE;QACxC,MAAM,CAAC,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,eAAe,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,qBAAqB,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACpD;;;;;WAKG;QACH,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,CAAC,SAAS,EAAE,CAAC;YACzC,IAAI,KAAe,CAAC;YAEpB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC5B,KAAK,GAAG,IAAI,aAAa,CACrB,IAAI,aAAa,CACb,IAAI,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAC/B,KAAK,EACL,qBAAqB,CACjB,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAC7B,CACJ,EACD,YAAY,CAAC,QAAQ,EACrB,IAAI,OAAO,EAAE,CAChB,CAAC;YACN,CAAC;iBACI,CAAC;gBACF,KAAK,GAAG,IAAI,eAAe,CACvB,MAAM,CAAC,UAAU,EACjB,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAC/C,CAAC;YACN,CAAC;YAED,0FAA0F;YAC1F,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,KAAK,GAAG,IAAI,UAAU,CAAC;oBACnB,KAAK;oBACL,IAAI,aAAa,CACb,MAAM,CAAC,UAAU,EACjB,YAAY,CAAC,KAAK,EAClB,IAAI,OAAO,EAAE,CAChB;iBACJ,CAAC,CAAC;YACP,CAAC;YAED,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,KAAK,KAAK,IAAI,IAAI,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC;YACzC,6DAA6D;YAC7D,OAAO,IAAI,aAAa,CACpB,IAAI,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,mDAAmD;YACxF,YAAY,CAAC,KAAK,EAClB,IAAI,OAAO,EAAE,CAChB,CAAC;QACN,CAAC;QAED,OAAO,IAAI,aAAa,CACpB,MAAM,CAAC,UAAU,EACjB,YAAY,CAAC,KAAK,EAClB,qBAAqB,CAAC,KAAK,CAAC,CAC/B,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC,CAAC;AACN,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { StamhoofdFilter } from '@stamhoofd/structures';
2
+ import type { SQLSyncFilterRunner } from '../SQLFilter.js';
3
+ export declare function $greaterThanSQLFilterCompiler(filter: StamhoofdFilter): SQLSyncFilterRunner;
4
+ //# sourceMappingURL=greater.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"greater.d.ts","sourceRoot":"","sources":["../../../src/filters/compilers/greater.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAI7D,OAAO,KAAK,EAAoB,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAI7E,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,eAAe,GAAG,mBAAmB,CAc1F"}
@@ -0,0 +1,15 @@
1
+ import { assertFilterCompareValue } from '@stamhoofd/structures';
2
+ import { scalarToSQLExpression } from '../../SQLExpressions.js';
3
+ import { SQLWhereEqual, SQLWhereSign } from '../../SQLWhere.js';
4
+ import { normalizeColumn } from '../SQLFilter.js';
5
+ import { normalizeCompareValue } from '../helpers/normalizeCompareValue.js';
6
+ export function $greaterThanSQLFilterCompiler(filter) {
7
+ return (originalColumn) => {
8
+ const v = assertFilterCompareValue(filter);
9
+ const column = normalizeColumn(originalColumn, v);
10
+ const value = normalizeCompareValue(v, column.type);
11
+ const base = new SQLWhereEqual(column.expression, SQLWhereSign.Greater, scalarToSQLExpression(value)).setNullable(column.nullable);
12
+ return base;
13
+ };
14
+ }
15
+ //# sourceMappingURL=greater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"greater.js","sourceRoot":"","sources":["../../../src/filters/compilers/greater.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAE5E,MAAM,UAAU,6BAA6B,CAAC,MAAuB;IACjE,OAAO,CAAC,cAAgC,EAAE,EAAE;QACxC,MAAM,CAAC,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG,eAAe,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,qBAAqB,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAEpD,MAAM,IAAI,GAAG,IAAI,aAAa,CAC1B,MAAM,CAAC,UAAU,EACjB,YAAY,CAAC,OAAO,EACpB,qBAAqB,CAAC,KAAK,CAAC,CAC/B,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAE/B,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;AACN,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { StamhoofdFilter } from '@stamhoofd/structures';
2
+ import type { SQLSyncFilterRunner } from '../SQLFilter.js';
3
+ export declare function $inSQLFilterCompiler(filter: StamhoofdFilter): SQLSyncFilterRunner;
4
+ //# sourceMappingURL=in.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in.d.ts","sourceRoot":"","sources":["../../../src/filters/compilers/in.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAK7D,OAAO,KAAK,EAAoB,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AAK5E,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,mBAAmB,CAoDjF"}
@@ -1,21 +1,19 @@
1
1
  import { SimpleError } from '@simonbackx/simple-errors';
2
- import { assertFilterCompareValue, StamhoofdFilter } from '@stamhoofd/structures';
2
+ import { assertFilterCompareValue } from '@stamhoofd/structures';
3
3
  import { scalarToSQLExpression, SQLArray } from '../../SQLExpressions.js';
4
4
  import { SQLJsonOverlaps } from '../../SQLJsonExpressions.js';
5
5
  import { SQLWhereEqual, SQLWhereOr, SQLWhereSign } from '../../SQLWhere.js';
6
- import { normalizeColumn, SQLCurrentColumn, SQLSyncFilterRunner, SQLValueType } from '../SQLFilter.js';
6
+ import { normalizeColumn, SQLValueType } from '../SQLFilter.js';
7
7
  import { normalizeCompareValue } from '../helpers/normalizeCompareValue.js';
8
8
  import { $equalsSQLFilterCompiler } from './equals.js';
9
-
10
- export function $inSQLFilterCompiler(filter: StamhoofdFilter): SQLSyncFilterRunner {
11
- return (originalColumn: SQLCurrentColumn) => {
9
+ export function $inSQLFilterCompiler(filter) {
10
+ return (originalColumn) => {
12
11
  if (!Array.isArray(filter)) {
13
12
  throw new SimpleError({
14
13
  code: 'invalid_filter',
15
14
  message: 'Expected array at $in filter',
16
15
  });
17
16
  }
18
-
19
17
  if (filter.length > 1000) {
20
18
  throw new SimpleError({
21
19
  code: 'invalid_filter',
@@ -27,13 +25,10 @@ export function $inSQLFilterCompiler(filter: StamhoofdFilter): SQLSyncFilterRunn
27
25
  // Return always false
28
26
  return new SQLWhereOr([]);
29
27
  }
30
-
31
28
  const column = normalizeColumn(originalColumn, assertFilterCompareValue(filter.find(f => f !== null) ?? null));
32
29
  const values = filter.map(val => normalizeCompareValue(assertFilterCompareValue(val), column.type));
33
-
34
30
  const valuesWithoutNulls = values.filter(val => val !== null);
35
31
  const hasNull = values.length !== valuesWithoutNulls.length;
36
-
37
32
  if (hasNull) {
38
33
  // We cannot 'in' check with null. On top of that, null has some special behaviour when used in JSON values (e.g. JSON null vs MySQL null).
39
34
  return new SQLWhereOr([
@@ -41,22 +36,13 @@ export function $inSQLFilterCompiler(filter: StamhoofdFilter): SQLSyncFilterRunn
41
36
  $inSQLFilterCompiler(valuesWithoutNulls)(column),
42
37
  ]);
43
38
  }
44
-
45
39
  if (column.type === SQLValueType.JSONArray) {
46
40
  const jsonValues = JSON.stringify(valuesWithoutNulls);
47
41
  const valuesExpression = scalarToSQLExpression(jsonValues);
48
-
49
- return new SQLJsonOverlaps(
50
- column.expression,
51
- valuesExpression,
52
- );
42
+ return new SQLJsonOverlaps(column.expression, valuesExpression);
53
43
  }
54
44
  const valuesExpression = valuesWithoutNulls.length === 1 ? scalarToSQLExpression(valuesWithoutNulls[0]) : new SQLArray(valuesWithoutNulls);
55
-
56
- return new SQLWhereEqual(
57
- column.expression,
58
- SQLWhereSign.Equal,
59
- valuesExpression,
60
- ).setNullable(column.nullable);
45
+ return new SQLWhereEqual(column.expression, SQLWhereSign.Equal, valuesExpression).setNullable(column.nullable);
61
46
  };
62
47
  }
48
+ //# sourceMappingURL=in.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in.js","sourceRoot":"","sources":["../../../src/filters/compilers/in.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/filters/compilers/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC"}