@stamhoofd/sql 2.83.5 → 2.84.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 (176) hide show
  1. package/dist/index.d.ts +1 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +9 -0
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/QueryableModel.d.ts +1 -0
  6. package/dist/src/QueryableModel.d.ts.map +1 -1
  7. package/dist/src/QueryableModel.js +20 -2
  8. package/dist/src/QueryableModel.js.map +1 -1
  9. package/dist/src/SQL.d.ts +9 -16
  10. package/dist/src/SQL.d.ts.map +1 -1
  11. package/dist/src/SQL.js +16 -13
  12. package/dist/src/SQL.js.map +1 -1
  13. package/dist/src/SQLDelete.d.ts +2 -2
  14. package/dist/src/SQLDelete.d.ts.map +1 -1
  15. package/dist/src/SQLDelete.js +13 -3
  16. package/dist/src/SQLDelete.js.map +1 -1
  17. package/dist/src/SQLExpression.d.ts +3 -0
  18. package/dist/src/SQLExpression.d.ts.map +1 -1
  19. package/dist/src/SQLExpression.js.map +1 -1
  20. package/dist/src/SQLExpressions.d.ts +17 -6
  21. package/dist/src/SQLExpressions.d.ts.map +1 -1
  22. package/dist/src/SQLExpressions.js +20 -12
  23. package/dist/src/SQLExpressions.js.map +1 -1
  24. package/dist/src/SQLJoin.d.ts +3 -3
  25. package/dist/src/SQLJoin.d.ts.map +1 -1
  26. package/dist/src/SQLJoin.js +5 -1
  27. package/dist/src/SQLJoin.js.map +1 -1
  28. package/dist/src/SQLJsonExpressions.d.ts +22 -0
  29. package/dist/src/SQLJsonExpressions.d.ts.map +1 -1
  30. package/dist/src/SQLJsonExpressions.js +56 -4
  31. package/dist/src/SQLJsonExpressions.js.map +1 -1
  32. package/dist/src/SQLSelect.d.ts +10 -4
  33. package/dist/src/SQLSelect.d.ts.map +1 -1
  34. package/dist/src/SQLSelect.js +25 -11
  35. package/dist/src/SQLSelect.js.map +1 -1
  36. package/dist/src/SQLWhere.d.ts +29 -1
  37. package/dist/src/SQLWhere.d.ts.map +1 -1
  38. package/dist/src/SQLWhere.js +181 -12
  39. package/dist/src/SQLWhere.js.map +1 -1
  40. package/dist/src/filters/SQLFilter.d.ts +1 -0
  41. package/dist/src/filters/SQLFilter.d.ts.map +1 -1
  42. package/dist/src/filters/SQLFilter.js +8 -0
  43. package/dist/src/filters/SQLFilter.js.map +1 -1
  44. package/dist/src/filters/modern/SQLModernFilter.d.ts +73 -0
  45. package/dist/src/filters/modern/SQLModernFilter.d.ts.map +1 -0
  46. package/dist/src/filters/modern/SQLModernFilter.js +200 -0
  47. package/dist/src/filters/modern/SQLModernFilter.js.map +1 -0
  48. package/dist/src/filters/modern/compilers/contains.d.ts +4 -0
  49. package/dist/src/filters/modern/compilers/contains.d.ts.map +1 -0
  50. package/dist/src/filters/modern/compilers/contains.js +28 -0
  51. package/dist/src/filters/modern/compilers/contains.js.map +1 -0
  52. package/dist/src/filters/modern/compilers/equals.d.ts +4 -0
  53. package/dist/src/filters/modern/compilers/equals.d.ts.map +1 -0
  54. package/dist/src/filters/modern/compilers/equals.js +46 -0
  55. package/dist/src/filters/modern/compilers/equals.js.map +1 -0
  56. package/dist/src/filters/modern/compilers/greater.d.ts +4 -0
  57. package/dist/src/filters/modern/compilers/greater.d.ts.map +1 -0
  58. package/dist/src/filters/modern/compilers/greater.js +17 -0
  59. package/dist/src/filters/modern/compilers/greater.js.map +1 -0
  60. package/dist/src/filters/modern/compilers/in.d.ts +4 -0
  61. package/dist/src/filters/modern/compilers/in.d.ts.map +1 -0
  62. package/dist/src/filters/modern/compilers/in.js +50 -0
  63. package/dist/src/filters/modern/compilers/in.js.map +1 -0
  64. package/dist/src/filters/modern/compilers/index.d.ts +5 -0
  65. package/dist/src/filters/modern/compilers/index.d.ts.map +1 -0
  66. package/dist/src/filters/modern/compilers/index.js +8 -0
  67. package/dist/src/filters/modern/compilers/index.js.map +1 -0
  68. package/dist/src/filters/modern/compilers/less.d.ts +4 -0
  69. package/dist/src/filters/modern/compilers/less.d.ts.map +1 -0
  70. package/dist/src/filters/modern/compilers/less.js +17 -0
  71. package/dist/src/filters/modern/compilers/less.js.map +1 -0
  72. package/dist/src/filters/modern/helpers/isJSONColumn.d.ts +4 -0
  73. package/dist/src/filters/modern/helpers/isJSONColumn.d.ts.map +1 -0
  74. package/dist/src/filters/modern/helpers/isJSONColumn.js +16 -0
  75. package/dist/src/filters/modern/helpers/isJSONColumn.js.map +1 -0
  76. package/dist/src/filters/modern/helpers/normalizeCompareValue.d.ts +9 -0
  77. package/dist/src/filters/modern/helpers/normalizeCompareValue.d.ts.map +1 -0
  78. package/dist/src/filters/modern/helpers/normalizeCompareValue.js +82 -0
  79. package/dist/src/filters/modern/helpers/normalizeCompareValue.js.map +1 -0
  80. package/dist/tests/filters/$and.test.d.ts +2 -0
  81. package/dist/tests/filters/$and.test.d.ts.map +1 -0
  82. package/dist/tests/filters/$and.test.js +185 -0
  83. package/dist/tests/filters/$and.test.js.map +1 -0
  84. package/dist/tests/filters/$contains.test.d.ts +2 -0
  85. package/dist/tests/filters/$contains.test.d.ts.map +1 -0
  86. package/dist/tests/filters/$contains.test.js +701 -0
  87. package/dist/tests/filters/$contains.test.js.map +1 -0
  88. package/dist/tests/filters/$eq.test.d.ts +2 -0
  89. package/dist/tests/filters/$eq.test.d.ts.map +1 -0
  90. package/dist/tests/filters/$eq.test.js +986 -0
  91. package/dist/tests/filters/$eq.test.js.map +1 -0
  92. package/dist/tests/filters/$gt.test.d.ts +2 -0
  93. package/dist/tests/filters/$gt.test.d.ts.map +1 -0
  94. package/dist/tests/filters/$gt.test.js +463 -0
  95. package/dist/tests/filters/$gt.test.js.map +1 -0
  96. package/dist/tests/filters/$gte.test.d.ts +2 -0
  97. package/dist/tests/filters/$gte.test.d.ts.map +1 -0
  98. package/dist/tests/filters/$gte.test.js +433 -0
  99. package/dist/tests/filters/$gte.test.js.map +1 -0
  100. package/dist/tests/filters/$in.test.d.ts +2 -0
  101. package/dist/tests/filters/$in.test.d.ts.map +1 -0
  102. package/dist/tests/filters/$in.test.js +590 -0
  103. package/dist/tests/filters/$in.test.js.map +1 -0
  104. package/dist/tests/filters/$lt.test.d.ts +2 -0
  105. package/dist/tests/filters/$lt.test.d.ts.map +1 -0
  106. package/dist/tests/filters/$lt.test.js +433 -0
  107. package/dist/tests/filters/$lt.test.js.map +1 -0
  108. package/dist/tests/filters/$lte.test.d.ts +2 -0
  109. package/dist/tests/filters/$lte.test.d.ts.map +1 -0
  110. package/dist/tests/filters/$lte.test.js +472 -0
  111. package/dist/tests/filters/$lte.test.js.map +1 -0
  112. package/dist/tests/filters/$neq.test.d.ts +2 -0
  113. package/dist/tests/filters/$neq.test.d.ts.map +1 -0
  114. package/dist/tests/filters/$neq.test.js +32 -0
  115. package/dist/tests/filters/$neq.test.js.map +1 -0
  116. package/dist/tests/filters/$not.test.d.ts +2 -0
  117. package/dist/tests/filters/$not.test.d.ts.map +1 -0
  118. package/dist/tests/filters/$not.test.js +50 -0
  119. package/dist/tests/filters/$not.test.js.map +1 -0
  120. package/dist/tests/filters/$or.test.d.ts +2 -0
  121. package/dist/tests/filters/$or.test.d.ts.map +1 -0
  122. package/dist/tests/filters/$or.test.js +185 -0
  123. package/dist/tests/filters/$or.test.js.map +1 -0
  124. package/dist/tests/filters/dot-syntax.test.d.ts +2 -0
  125. package/dist/tests/filters/dot-syntax.test.d.ts.map +1 -0
  126. package/dist/tests/filters/dot-syntax.test.js +210 -0
  127. package/dist/tests/filters/dot-syntax.test.js.map +1 -0
  128. package/dist/tests/filters/exists.test.d.ts +2 -0
  129. package/dist/tests/filters/exists.test.d.ts.map +1 -0
  130. package/dist/tests/filters/exists.test.js +106 -0
  131. package/dist/tests/filters/exists.test.js.map +1 -0
  132. package/dist/tests/filters/joined-relations.test.d.ts +2 -0
  133. package/dist/tests/filters/joined-relations.test.d.ts.map +1 -0
  134. package/dist/tests/filters/joined-relations.test.js +167 -0
  135. package/dist/tests/filters/joined-relations.test.js.map +1 -0
  136. package/dist/tests/filters/special-cases.test.d.ts +2 -0
  137. package/dist/tests/filters/special-cases.test.d.ts.map +1 -0
  138. package/dist/tests/filters/special-cases.test.js +114 -0
  139. package/dist/tests/filters/special-cases.test.js.map +1 -0
  140. package/dist/tests/filters/wildcard.test.d.ts +2 -0
  141. package/dist/tests/filters/wildcard.test.d.ts.map +1 -0
  142. package/dist/tests/filters/wildcard.test.js +67 -0
  143. package/dist/tests/filters/wildcard.test.js.map +1 -0
  144. package/dist/tests/jest.global.setup.d.ts +3 -0
  145. package/dist/tests/jest.global.setup.d.ts.map +1 -0
  146. package/dist/tests/jest.global.setup.js +7 -0
  147. package/dist/tests/jest.global.setup.js.map +1 -0
  148. package/dist/tests/jest.setup.d.ts +2 -0
  149. package/dist/tests/jest.setup.d.ts.map +1 -0
  150. package/dist/tests/jest.setup.js +5 -0
  151. package/dist/tests/jest.setup.js.map +1 -0
  152. package/dist/tests/utils/index.d.ts +57 -0
  153. package/dist/tests/utils/index.d.ts.map +1 -0
  154. package/dist/tests/utils/index.js +206 -0
  155. package/dist/tests/utils/index.js.map +1 -0
  156. package/dist/tsconfig.tsbuildinfo +1 -1
  157. package/package.json +4 -3
  158. package/src/QueryableModel.ts +22 -2
  159. package/src/SQL.ts +21 -30
  160. package/src/SQLDelete.ts +26 -15
  161. package/src/SQLExpression.ts +4 -0
  162. package/src/SQLExpressions.ts +23 -14
  163. package/src/SQLJoin.ts +8 -4
  164. package/src/SQLJsonExpressions.ts +65 -4
  165. package/src/SQLSelect.ts +31 -15
  166. package/src/SQLWhere.ts +208 -13
  167. package/src/filters/SQLFilter.ts +8 -0
  168. package/src/filters/modern/SQLModernFilter.ts +256 -0
  169. package/src/filters/modern/compilers/contains.ts +43 -0
  170. package/src/filters/modern/compilers/equals.ts +72 -0
  171. package/src/filters/modern/compilers/greater.ts +20 -0
  172. package/src/filters/modern/compilers/in.ts +62 -0
  173. package/src/filters/modern/compilers/index.ts +4 -0
  174. package/src/filters/modern/compilers/less.ts +19 -0
  175. package/src/filters/modern/helpers/isJSONColumn.ts +13 -0
  176. package/src/filters/modern/helpers/normalizeCompareValue.ts +95 -0
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const SQLModernFilter_1 = require("../../src/filters/modern/SQLModernFilter");
4
+ const SQL_1 = require("../../src/SQL");
5
+ const utils_1 = require("../utils");
6
+ describe('$or', () => {
7
+ /**
8
+ * Tests that should be repeated for all filter types
9
+ */
10
+ describe('Common checks', () => {
11
+ // todo
12
+ });
13
+ it('If one child is always true, the whole $or is always true', async () => {
14
+ const filters = {
15
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
16
+ name: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: true }),
17
+ };
18
+ await (0, utils_1.test)({
19
+ filter: {
20
+ name: {
21
+ $or: {
22
+ $eq: 'John Doe',
23
+ $gte: null, // This will always be true
24
+ },
25
+ },
26
+ },
27
+ filters,
28
+ query: {
29
+ query: 'true',
30
+ params: [],
31
+ },
32
+ });
33
+ });
34
+ it('An empty $or is always false', async () => {
35
+ const filters = {
36
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
37
+ name: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: true }),
38
+ };
39
+ await (0, utils_1.test)({
40
+ filter: {
41
+ $or: {},
42
+ },
43
+ filters,
44
+ query: {
45
+ query: '',
46
+ params: [],
47
+ },
48
+ });
49
+ });
50
+ it('If all children are always false, the whole $or is always false', async () => {
51
+ const filters = {
52
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
53
+ name: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: true }),
54
+ };
55
+ await (0, utils_1.test)({
56
+ filter: {
57
+ name: {
58
+ $or: [
59
+ {
60
+ $lt: null, // This will always be false
61
+ },
62
+ {
63
+ $in: [],
64
+ },
65
+ ],
66
+ },
67
+ },
68
+ filters,
69
+ query: {
70
+ query: '',
71
+ params: [],
72
+ },
73
+ });
74
+ });
75
+ it('Children that are always false are removed from the $or', async () => {
76
+ const filters = {
77
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
78
+ name: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: true }),
79
+ };
80
+ await (0, utils_1.test)({
81
+ filter: {
82
+ name: {
83
+ $or: [
84
+ { $eq: 'John Doe' },
85
+ { $lt: null },
86
+ { $in: [] },
87
+ { $neq: 'test' },
88
+ ],
89
+ },
90
+ },
91
+ filters,
92
+ query: {
93
+ query: '`default`.`name` = ? OR `default`.`name` != ?',
94
+ params: ['john doe', 'test'],
95
+ },
96
+ });
97
+ });
98
+ it('$or object children are $and together', async () => {
99
+ const filters = {
100
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
101
+ name: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: true }),
102
+ age: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('age'), type: SQLModernFilter_1.SQLModernValueType.Number, nullable: false }),
103
+ };
104
+ await (0, utils_1.test)({
105
+ filter: [
106
+ {
107
+ $or: [
108
+ {
109
+ name: 'John Doe',
110
+ age: 11,
111
+ },
112
+ {
113
+ name: 'Jane Doe',
114
+ age: 12,
115
+ },
116
+ ],
117
+ },
118
+ ],
119
+ filters,
120
+ query: {
121
+ query: '(`default`.`name` = ? AND `default`.`age` = ?) OR (`default`.`name` = ? AND `default`.`age` = ?)',
122
+ params: [
123
+ 'john doe',
124
+ 11,
125
+ 'jane doe',
126
+ 12,
127
+ ],
128
+ },
129
+ });
130
+ });
131
+ it('empty $or branches are removed', async () => {
132
+ const filters = {
133
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
134
+ name: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: false }),
135
+ };
136
+ await (0, utils_1.test)({
137
+ filter: {
138
+ name: 'John Doe',
139
+ $or: [
140
+ {
141
+ $or: [],
142
+ },
143
+ {
144
+ $not: {
145
+ $or: [],
146
+ },
147
+ },
148
+ ],
149
+ },
150
+ filters,
151
+ query: {
152
+ query: '`default`.`name` = ?',
153
+ params: ['john doe'],
154
+ },
155
+ });
156
+ });
157
+ it('deep $or branches are cleaned up', async () => {
158
+ const filters = {
159
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
160
+ name: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: false }),
161
+ };
162
+ await (0, utils_1.test)({
163
+ filter: {
164
+ $or: {
165
+ name: 'John Doe',
166
+ $or: [
167
+ {
168
+ $or: [
169
+ {
170
+ name: 'Jane Doe',
171
+ },
172
+ ],
173
+ },
174
+ ],
175
+ },
176
+ },
177
+ filters,
178
+ query: {
179
+ query: '`default`.`name` = ? OR `default`.`name` = ?',
180
+ params: ['john doe', 'jane doe'],
181
+ },
182
+ });
183
+ });
184
+ });
185
+ //# sourceMappingURL=$or.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"$or.test.js","sourceRoot":"","sources":["../../../tests/filters/$or.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=dot-syntax.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dot-syntax.test.d.ts","sourceRoot":"","sources":["../../../tests/filters/dot-syntax.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,210 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const SQLModernFilter_1 = require("../../src/filters/modern/SQLModernFilter");
4
+ const SQL_1 = require("../../src/SQL");
5
+ const utils_1 = require("../utils");
6
+ describe('Dot syntax', () => {
7
+ const filters = {
8
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
9
+ name: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: true }),
10
+ age: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('age'), type: SQLModernFilter_1.SQLModernValueType.Number, nullable: false }),
11
+ settings: {
12
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
13
+ name: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.jsonValue(SQL_1.SQL.column('settings'), '$.name'), type: SQLModernFilter_1.SQLModernValueType.JSONString, nullable: true }),
14
+ age: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.jsonValue(SQL_1.SQL.column('settings'), '$.age'), type: SQLModernFilter_1.SQLModernValueType.JSONNumber, nullable: true }),
15
+ dog: {
16
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
17
+ name: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.jsonValue(SQL_1.SQL.column('settings'), '$.dog.name'), type: SQLModernFilter_1.SQLModernValueType.JSONString, nullable: true }),
18
+ age: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.jsonValue(SQL_1.SQL.column('settings'), '$.dog.age'), type: SQLModernFilter_1.SQLModernValueType.JSONNumber, nullable: true }),
19
+ },
20
+ },
21
+ };
22
+ it('Correctly finds the right filter when using object syntax', async () => {
23
+ await (0, utils_1.test)({
24
+ filter: [
25
+ {
26
+ settings: {
27
+ dog: {
28
+ name: 'Rex',
29
+ },
30
+ },
31
+ },
32
+ ],
33
+ filters,
34
+ query: {
35
+ query: 'JSON_VALUE(`default`.`settings`,"$.dog.name" RETURNING CHAR CHARACTER SET utf8mb4 ERROR ON ERROR) = ?',
36
+ params: [
37
+ 'rex',
38
+ ],
39
+ },
40
+ });
41
+ });
42
+ it('Correctly finds the right filter when using dot syntax', async () => {
43
+ await (0, utils_1.test)({
44
+ filter: [
45
+ {
46
+ 'settings.dog.name': {
47
+ $eq: 'Rex',
48
+ },
49
+ },
50
+ ],
51
+ filters,
52
+ query: {
53
+ query: 'JSON_VALUE(`default`.`settings`,"$.dog.name" RETURNING CHAR CHARACTER SET utf8mb4 ERROR ON ERROR) = ?',
54
+ params: [
55
+ 'rex',
56
+ ],
57
+ },
58
+ });
59
+ });
60
+ it('Correctly finds the right filter when combining object with dot syntax', async () => {
61
+ await (0, utils_1.test)({
62
+ filter: [
63
+ {
64
+ settings: {
65
+ 'dog.name': {
66
+ $eq: 'Rex',
67
+ },
68
+ },
69
+ },
70
+ ],
71
+ filters,
72
+ query: {
73
+ query: 'JSON_VALUE(`default`.`settings`,"$.dog.name" RETURNING CHAR CHARACTER SET utf8mb4 ERROR ON ERROR) = ?',
74
+ params: [
75
+ 'rex',
76
+ ],
77
+ },
78
+ });
79
+ });
80
+ it('Can group with multiple syntax styles', async () => {
81
+ await (0, utils_1.test)({
82
+ filter: [
83
+ {
84
+ settings: {
85
+ 'age': 12,
86
+ 'dog.name': {
87
+ $eq: 'Rex',
88
+ },
89
+ 'dog.age': {
90
+ $eq: 4,
91
+ },
92
+ },
93
+ },
94
+ ],
95
+ filters,
96
+ query: {
97
+ query: 'JSON_VALUE(`default`.`settings`,"$.age" RETURNING UNSIGNED ERROR ON ERROR) = ? AND JSON_VALUE(`default`.`settings`,"$.dog.name" RETURNING CHAR CHARACTER SET utf8mb4 ERROR ON ERROR) = ? AND JSON_VALUE(`default`.`settings`,"$.dog.age" RETURNING UNSIGNED ERROR ON ERROR) = ?',
98
+ params: [
99
+ 12,
100
+ 'rex',
101
+ 4,
102
+ ],
103
+ },
104
+ });
105
+ });
106
+ it('Can group with object syntax styles', async () => {
107
+ await (0, utils_1.test)({
108
+ filter: [
109
+ {
110
+ settings: {
111
+ age: 12,
112
+ dog: {
113
+ name: 'Rex',
114
+ age: 4,
115
+ },
116
+ },
117
+ },
118
+ ],
119
+ filters,
120
+ query: {
121
+ query: 'JSON_VALUE(`default`.`settings`,"$.age" RETURNING UNSIGNED ERROR ON ERROR) = ? AND JSON_VALUE(`default`.`settings`,"$.dog.name" RETURNING CHAR CHARACTER SET utf8mb4 ERROR ON ERROR) = ? AND JSON_VALUE(`default`.`settings`,"$.dog.age" RETURNING UNSIGNED ERROR ON ERROR) = ?',
122
+ params: [
123
+ 12,
124
+ 'rex',
125
+ 4,
126
+ ],
127
+ },
128
+ });
129
+ });
130
+ it('Can group with object syntax styles $and', async () => {
131
+ await (0, utils_1.test)({
132
+ filter: [
133
+ {
134
+ settings: [
135
+ {
136
+ age: 12,
137
+ },
138
+ {
139
+ dog: {
140
+ name: 'Rex',
141
+ },
142
+ },
143
+ {
144
+ dog: {
145
+ age: 4,
146
+ },
147
+ },
148
+ ],
149
+ },
150
+ ],
151
+ filters,
152
+ query: {
153
+ query: 'JSON_VALUE(`default`.`settings`,"$.age" RETURNING UNSIGNED ERROR ON ERROR) = ? AND JSON_VALUE(`default`.`settings`,"$.dog.name" RETURNING CHAR CHARACTER SET utf8mb4 ERROR ON ERROR) = ? AND JSON_VALUE(`default`.`settings`,"$.dog.age" RETURNING UNSIGNED ERROR ON ERROR) = ?',
154
+ params: [
155
+ 12,
156
+ 'rex',
157
+ 4,
158
+ ],
159
+ },
160
+ });
161
+ });
162
+ it('Can group with object syntax styles $or', async () => {
163
+ await (0, utils_1.test)({
164
+ filter: [
165
+ {
166
+ settings: {
167
+ $or: [
168
+ {
169
+ age: 12,
170
+ },
171
+ {
172
+ dog: {
173
+ name: 'Rex',
174
+ },
175
+ },
176
+ {
177
+ dog: {
178
+ age: 4,
179
+ },
180
+ },
181
+ ],
182
+ },
183
+ },
184
+ ],
185
+ filters,
186
+ query: {
187
+ query: 'JSON_VALUE(`default`.`settings`,"$.age" RETURNING UNSIGNED ERROR ON ERROR) = ? OR JSON_VALUE(`default`.`settings`,"$.dog.name" RETURNING CHAR CHARACTER SET utf8mb4 ERROR ON ERROR) = ? OR JSON_VALUE(`default`.`settings`,"$.dog.age" RETURNING UNSIGNED ERROR ON ERROR) = ?',
188
+ params: [
189
+ 12,
190
+ 'rex',
191
+ 4,
192
+ ],
193
+ },
194
+ });
195
+ });
196
+ it('Throw error for unknown subfilters', async () => {
197
+ await (0, utils_1.testError)({
198
+ filter: [
199
+ {
200
+ 'settings.dot.name': {
201
+ $eq: 'Rex',
202
+ },
203
+ },
204
+ ],
205
+ filters,
206
+ error: 'Unknown filter dot.name',
207
+ });
208
+ });
209
+ });
210
+ //# sourceMappingURL=dot-syntax.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dot-syntax.test.js","sourceRoot":"","sources":["../../../tests/filters/dot-syntax.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=exists.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exists.test.d.ts","sourceRoot":"","sources":["../../../tests/filters/exists.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const SQLModernFilter_1 = require("../../src/filters/modern/SQLModernFilter");
4
+ const SQL_1 = require("../../src/SQL");
5
+ const utils_1 = require("../utils");
6
+ describe('Exists relations', () => {
7
+ const organizationJoin = SQL_1.SQL.leftJoin('organizations')
8
+ .where(SQL_1.SQL.column('id'), SQL_1.SQL.parentColumn('organizationId'));
9
+ const organizationInnerJoin = SQL_1.SQL.innerJoin('organizations', 'o')
10
+ .where(SQL_1.SQL.column('id'), SQL_1.SQL.parentColumn('organizationId'));
11
+ /**
12
+ * Tests that should be repeated for all filter types
13
+ */
14
+ describe('Common checks', () => {
15
+ // todo
16
+ });
17
+ it('Added when used', async () => {
18
+ const filters = {
19
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
20
+ name: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: false }),
21
+ organizations: (0, SQLModernFilter_1.createExistsFilter)(SQL_1.SQL.select()
22
+ .from('organizations', 'o')
23
+ .where(SQL_1.SQL.parentColumn('organizationId'), SQL_1.SQL.column('id')), {
24
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
25
+ id: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('id'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: false }),
26
+ }),
27
+ };
28
+ await (0, utils_1.testSelect)({
29
+ filter: [
30
+ {
31
+ organizations: {
32
+ $elemMatch: {
33
+ id: '123',
34
+ },
35
+ },
36
+ },
37
+ ],
38
+ filters,
39
+ query: {
40
+ query: 'SELECT `test_table`.* FROM `test_table` WHERE EXISTS (SELECT `o`.* FROM `organizations` `o` WHERE `test_table`.`organizationId` = `o`.`id` AND `o`.`id` = ?)',
41
+ params: ['123'],
42
+ },
43
+ });
44
+ });
45
+ it('Also added when always true', async () => {
46
+ const filters = {
47
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
48
+ name: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: false }),
49
+ organizations: (0, SQLModernFilter_1.createExistsFilter)(SQL_1.SQL.select()
50
+ .from('organizations', 'o')
51
+ .where(SQL_1.SQL.parentColumn('organizationId'), SQL_1.SQL.column('id')), {
52
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
53
+ id: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('id'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: false }),
54
+ }),
55
+ };
56
+ await (0, utils_1.testSelect)({
57
+ filter: [
58
+ {
59
+ organizations: {
60
+ $elemMatch: {
61
+ id: {
62
+ $gte: null, // always true
63
+ },
64
+ },
65
+ },
66
+ },
67
+ ],
68
+ filters,
69
+ query: {
70
+ query: 'SELECT `test_table`.* FROM `test_table` WHERE EXISTS (SELECT `o`.* FROM `organizations` `o` WHERE `test_table`.`organizationId` = `o`.`id`)',
71
+ params: [],
72
+ },
73
+ });
74
+ });
75
+ it('Not added when always false', async () => {
76
+ const filters = {
77
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
78
+ name: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: false }),
79
+ organizations: (0, SQLModernFilter_1.createExistsFilter)(SQL_1.SQL.select()
80
+ .from('organizations', 'o')
81
+ .where(SQL_1.SQL.parentColumn('organizationId'), SQL_1.SQL.column('id')), {
82
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
83
+ id: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('id'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: false }),
84
+ }),
85
+ };
86
+ await (0, utils_1.testSelect)({
87
+ filter: [
88
+ {
89
+ organizations: {
90
+ $elemMatch: {
91
+ id: {
92
+ $lt: null, // always false
93
+ },
94
+ },
95
+ },
96
+ },
97
+ ],
98
+ filters,
99
+ query: {
100
+ query: '',
101
+ params: [],
102
+ },
103
+ });
104
+ });
105
+ });
106
+ //# sourceMappingURL=exists.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exists.test.js","sourceRoot":"","sources":["../../../tests/filters/exists.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=joined-relations.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"joined-relations.test.d.ts","sourceRoot":"","sources":["../../../tests/filters/joined-relations.test.ts"],"names":[],"mappings":""}