@stamhoofd/sql 2.118.1 → 2.120.0

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 (273) 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} +32 -45
  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 +10 -6
  60. package/dist/filters/SQLFilter.d.ts.map +1 -0
  61. package/{src/filters/SQLFilter.ts → dist/filters/SQLFilter.js} +66 -127
  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 +5 -8
  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/dist/filters/compilers/contains.js +26 -0
  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} +11 -26
  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} +5 -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} +3 -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 -216
  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 -28
  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 -46
  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 -17
  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 -17
  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 -16
  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 -701
  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 -1048
  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 -463
  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 -590
  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/contains.ts +0 -43
  268. package/src/filters/compilers/equals.ts +0 -72
  269. package/src/filters/compilers/greater.ts +0 -20
  270. package/src/filters/compilers/less.ts +0 -19
  271. /package/dist/{src/SQLExpression.d.ts → SQLExpression.d.ts} +0 -0
  272. /package/dist/{src/SQLLogger.d.ts → SQLLogger.d.ts} +0 -0
  273. /package/dist/{src/filters → filters}/compilers/index.d.ts +0 -0
@@ -1,60 +0,0 @@
1
- import { PlainObject } from '@simonbackx/simple-encoding';
2
- import { SortDefinition, SortList } from '@stamhoofd/structures';
3
-
4
- import { SimpleError } from '@simonbackx/simple-errors';
5
- import { SQLExpression } from '../SQLExpression.js';
6
- import { SQLJoin } from '../SQLJoin.js';
7
- import { SQLOrderBy, SQLOrderByDirection } from '../SQLOrderBy.js';
8
- import { SQLSelect } from '../SQLSelect.js';
9
-
10
- export type SQLSortDefinition<T, B extends PlainObject | Date = PlainObject | Date> = SortDefinition<T, B> & {
11
- toSQL(direction: SQLOrderByDirection): SQLOrderBy;
12
- join?: SQLJoin;
13
- select?: (SQLExpression | string)[];
14
- };
15
-
16
- export type SQLSortDefinitions<T = any> = Record<string, SQLSortDefinition<T>>;
17
-
18
- export function applySQLSorter(selectQuery: SQLSelect<any>, sortBy: SortList, definitions: SQLSortDefinitions) {
19
- if (sortBy.length === 0) {
20
- throw new SimpleError({
21
- code: 'empty_sort',
22
- message: 'No sort passed',
23
- });
24
- }
25
-
26
- for (const s of sortBy) {
27
- const d = definitions[s.key];
28
- if (!d) {
29
- throw new Error('Unknown sort key ' + s.key);
30
- }
31
-
32
- selectQuery.orderBy(d.toSQL(s.order));
33
-
34
- if (d.join) {
35
- // Check if no overlap in alias/table (otherwise we'll get issues)
36
- if (selectQuery._joins.find(j => j === d.join)) {
37
- // Already added
38
- }
39
- else {
40
- const name = d.join.table.getSQL({ defaultNamespace: 'default' });
41
-
42
- for (const j of selectQuery._joins) {
43
- if (j.table.getSQL({ defaultNamespace: 'default' }) === name) {
44
- throw new SimpleError({
45
- code: 'sorter_join_overlap',
46
- message: 'This combination of sorters is not possible',
47
- human: $t('e328a7c2-318c-4425-b61a-61e6f4211707'),
48
- });
49
- }
50
- }
51
-
52
- selectQuery.join(d.join);
53
- }
54
- }
55
-
56
- if (d.select) {
57
- selectQuery.select(...d.select);
58
- }
59
- }
60
- }
@@ -1,43 +0,0 @@
1
- import { SimpleError } from '@simonbackx/simple-errors';
2
- import { assertFilterCompareValue, StamhoofdFilter } from '@stamhoofd/structures';
3
- import { scalarToSQLExpression, SQLLower, SQLNull } from '../../SQLExpressions.js';
4
- import { SQLJsonSearch } from '../../SQLJsonExpressions.js';
5
- import { SQLWhereEqual, SQLWhereLike, SQLWhereSign } from '../../SQLWhere.js';
6
- import { normalizeColumn, SQLCurrentColumn, SQLSyncFilterRunner, SQLValueType } from '../SQLFilter.js';
7
- import { normalizeCompareValue } from '../helpers/normalizeCompareValue.js';
8
-
9
- export function $containsSQLFilterCompiler(filter: StamhoofdFilter): SQLSyncFilterRunner {
10
- return (originalColumn: SQLCurrentColumn) => {
11
- const column = normalizeColumn(originalColumn);
12
- const value = normalizeCompareValue(assertFilterCompareValue(filter), column.type);
13
-
14
- if (typeof value !== 'string') {
15
- throw new SimpleError({
16
- code: 'invalid_filter',
17
- message: 'Expected string at $contains filter',
18
- });
19
- }
20
-
21
- if (column.type === SQLValueType.JSONArray || column.type === SQLValueType.JSONObject) {
22
- // For JSON arrays and objects, we use JSON_CONTAINS
23
- return new SQLWhereEqual(
24
- new SQLJsonSearch(
25
- new SQLLower(column.expression),
26
- 'one',
27
- scalarToSQLExpression(
28
- '%' + SQLWhereLike.escape(value) + '%',
29
- ),
30
- ),
31
- SQLWhereSign.NotEqual,
32
- new SQLNull(),
33
- );
34
- }
35
-
36
- return new SQLWhereLike(
37
- column.expression,
38
- scalarToSQLExpression(
39
- '%' + SQLWhereLike.escape(value) + '%',
40
- ),
41
- );
42
- };
43
- }
@@ -1,72 +0,0 @@
1
- import { assertFilterCompareValue, StamhoofdFilter } from '@stamhoofd/structures';
2
- import { scalarToSQLExpression, SQLLower, SQLNull } from '../../SQLExpressions.js';
3
- import { SQLJsonContains, SQLJsonSearch, SQLJsonValue } from '../../SQLJsonExpressions.js';
4
- import { SQLWhere, SQLWhereEqual, SQLWhereLike, SQLWhereOr, SQLWhereSign } from '../../SQLWhere.js';
5
- import { normalizeColumn, SQLCurrentColumn, SQLSyncFilterRunner, SQLValueType } from '../SQLFilter.js';
6
- import { isJSONColumn } from '../helpers/isJSONColumn.js';
7
- import { normalizeCompareValue } from '../helpers/normalizeCompareValue.js';
8
-
9
- export function $equalsSQLFilterCompiler(filter: StamhoofdFilter): SQLSyncFilterRunner {
10
- return (originalColumn: SQLCurrentColumn) => {
11
- const column = normalizeColumn(originalColumn);
12
- const value = normalizeCompareValue(assertFilterCompareValue(filter), 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: SQLWhere;
21
-
22
- if (typeof value === 'string') {
23
- where = new SQLWhereEqual(
24
- new SQLJsonSearch(
25
- new SQLLower(column.expression),
26
- 'one',
27
- scalarToSQLExpression(
28
- SQLWhereLike.escape(value),
29
- ),
30
- ),
31
- SQLWhereSign.NotEqual,
32
- new SQLNull(),
33
- );
34
- }
35
- else {
36
- where = new SQLJsonContains(
37
- column.expression,
38
- scalarToSQLExpression(JSON.stringify(value)),
39
- );
40
- }
41
-
42
- // If comparing against null, also check for native MySQL null (the column does not exist)
43
- if (value === null) {
44
- where = new SQLWhereOr([
45
- where,
46
- new SQLWhereEqual(
47
- column.expression,
48
- SQLWhereSign.Equal,
49
- new SQLNull(),
50
- ),
51
- ]);
52
- }
53
-
54
- return where;
55
- }
56
-
57
- if (value === null && isJSONColumn(column)) {
58
- // JSON values can either resolve to null or "null" in MySQL.
59
- return new SQLWhereEqual(
60
- new SQLJsonValue(column.expression), // casts json null to null, including invalid paths
61
- SQLWhereSign.Equal,
62
- new SQLNull(),
63
- );
64
- }
65
-
66
- return new SQLWhereEqual(
67
- column.expression,
68
- SQLWhereSign.Equal,
69
- scalarToSQLExpression(value),
70
- ).setNullable(column.nullable);
71
- };
72
- }
@@ -1,20 +0,0 @@
1
- import { assertFilterCompareValue, StamhoofdFilter } from '@stamhoofd/structures';
2
- import { scalarToSQLExpression } from '../../SQLExpressions.js';
3
- import { SQLWhereEqual, SQLWhereSign } from '../../SQLWhere.js';
4
- import { normalizeColumn, SQLCurrentColumn, SQLSyncFilterRunner } from '../SQLFilter.js';
5
- import { normalizeCompareValue } from '../helpers/normalizeCompareValue.js';
6
-
7
- export function $greaterThanSQLFilterCompiler(filter: StamhoofdFilter): SQLSyncFilterRunner {
8
- return (originalColumn: SQLCurrentColumn) => {
9
- const column = normalizeColumn(originalColumn);
10
- const value = normalizeCompareValue(assertFilterCompareValue(filter), column.type);
11
-
12
- const base = new SQLWhereEqual(
13
- column.expression,
14
- SQLWhereSign.Greater,
15
- scalarToSQLExpression(value),
16
- ).setNullable(column.nullable);
17
-
18
- return base;
19
- };
20
- }
@@ -1,19 +0,0 @@
1
- import { assertFilterCompareValue, StamhoofdFilter } from '@stamhoofd/structures';
2
- import { scalarToSQLExpression } from '../../SQLExpressions.js';
3
- import { SQLWhereEqual, SQLWhereSign } from '../../SQLWhere.js';
4
- import { normalizeColumn, SQLCurrentColumn, SQLSyncFilterRunner } from '../SQLFilter.js';
5
- import { normalizeCompareValue } from '../helpers/normalizeCompareValue.js';
6
-
7
- export function $lessThanSQLFilterCompiler(filter: StamhoofdFilter): SQLSyncFilterRunner {
8
- return (originalColumn: SQLCurrentColumn) => {
9
- const column = normalizeColumn(originalColumn);
10
- const value = normalizeCompareValue(assertFilterCompareValue(filter), column.type);
11
-
12
- const base = new SQLWhereEqual(
13
- column.expression,
14
- SQLWhereSign.Less,
15
- scalarToSQLExpression(value),
16
- ).setNullable(column.nullable);
17
- return base;
18
- };
19
- }
File without changes