@stamhoofd/sql 2.83.4 → 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,167 @@
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('Joined 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('Joins 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
+ organization: (0, SQLModernFilter_1.createJoinedRelationFilter)(organizationJoin, {
22
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
23
+ id: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('id'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: false }),
24
+ }),
25
+ };
26
+ await (0, utils_1.testSelect)({
27
+ filter: [
28
+ {
29
+ organization: {
30
+ id: '123',
31
+ },
32
+ },
33
+ ],
34
+ filters,
35
+ query: {
36
+ query: 'SELECT `test_table`.* FROM `test_table` LEFT JOIN `organizations` ON `organizations`.`id` = `test_table`.`organizationId` WHERE `organizations`.`id` = ?',
37
+ params: ['123'],
38
+ },
39
+ });
40
+ });
41
+ it('Joins only once when used twice', async () => {
42
+ const filters = {
43
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
44
+ name: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: false }),
45
+ organization: (0, SQLModernFilter_1.createJoinedRelationFilter)(organizationJoin, {
46
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
47
+ id: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('id'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: false }),
48
+ }),
49
+ };
50
+ await (0, utils_1.testSelect)({
51
+ filter: [
52
+ {
53
+ organization: {
54
+ id: '123',
55
+ },
56
+ },
57
+ {
58
+ organization: {
59
+ id: '124',
60
+ },
61
+ },
62
+ ],
63
+ filters,
64
+ query: {
65
+ query: 'SELECT `test_table`.* FROM `test_table` LEFT JOIN `organizations` ON `organizations`.`id` = `test_table`.`organizationId` WHERE `organizations`.`id` = ? AND `organizations`.`id` = ?',
66
+ params: ['123', '124'],
67
+ },
68
+ });
69
+ });
70
+ it('Does not left join when always true', async () => {
71
+ const filters = {
72
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
73
+ name: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: false }),
74
+ organization: (0, SQLModernFilter_1.createJoinedRelationFilter)(organizationJoin, {
75
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
76
+ id: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('id'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: false }),
77
+ }),
78
+ };
79
+ await (0, utils_1.testSelect)({
80
+ filter: [
81
+ {
82
+ organization: {},
83
+ },
84
+ ],
85
+ filters,
86
+ query: {
87
+ query: 'SELECT `test_table`.* FROM `test_table`',
88
+ params: [],
89
+ },
90
+ });
91
+ });
92
+ it('Does inner join when always true and relationAlwaysExist is false', async () => {
93
+ const filters = {
94
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
95
+ name: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: false }),
96
+ organization: (0, SQLModernFilter_1.createJoinedRelationFilter)(organizationInnerJoin, {
97
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
98
+ id: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('id'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: false }),
99
+ }, { doesRelationAlwaysExist: false }),
100
+ };
101
+ await (0, utils_1.testSelect)({
102
+ filter: [
103
+ {
104
+ organization: {
105
+ id: {
106
+ $gte: null, // always true
107
+ },
108
+ },
109
+ },
110
+ ],
111
+ filters,
112
+ query: {
113
+ query: 'SELECT `test_table`.* FROM `test_table` JOIN `organizations` `o` ON `o`.`id` = `test_table`.`organizationId`',
114
+ params: [],
115
+ },
116
+ });
117
+ });
118
+ it('Does inner join when always true and relationAlwaysExist is true', async () => {
119
+ const filters = {
120
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
121
+ name: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: false }),
122
+ organization: (0, SQLModernFilter_1.createJoinedRelationFilter)(organizationInnerJoin, {
123
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
124
+ id: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('id'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: false }),
125
+ }, { doesRelationAlwaysExist: true }),
126
+ };
127
+ await (0, utils_1.testSelect)({
128
+ filter: [
129
+ {
130
+ organization: {
131
+ id: {
132
+ $gte: null, // always true
133
+ },
134
+ },
135
+ },
136
+ ],
137
+ filters,
138
+ query: {
139
+ query: 'SELECT `test_table`.* FROM `test_table`',
140
+ params: [],
141
+ },
142
+ });
143
+ });
144
+ it('Does not join when unused', async () => {
145
+ const filters = {
146
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
147
+ name: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: false }),
148
+ organization: (0, SQLModernFilter_1.createJoinedRelationFilter)(organizationJoin, {
149
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
150
+ id: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('id'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: false }),
151
+ }),
152
+ };
153
+ await (0, utils_1.testSelect)({
154
+ filter: [
155
+ {
156
+ name: 'Test',
157
+ },
158
+ ],
159
+ filters,
160
+ query: {
161
+ query: 'SELECT `test_table`.* FROM `test_table` WHERE `test_table`.`name` = ?',
162
+ params: ['test'],
163
+ },
164
+ });
165
+ });
166
+ });
167
+ //# sourceMappingURL=joined-relations.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"joined-relations.test.js","sourceRoot":"","sources":["../../../tests/filters/joined-relations.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=special-cases.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"special-cases.test.d.ts","sourceRoot":"","sources":["../../../tests/filters/special-cases.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,114 @@
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('Special filter cases', () => {
7
+ it('Can combine $and with $or', async () => {
8
+ const filters = {
9
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
10
+ name: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: true }),
11
+ age: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('age'), type: SQLModernFilter_1.SQLModernValueType.Number, nullable: false }),
12
+ };
13
+ await (0, utils_1.test)({
14
+ filter: [
15
+ {
16
+ $or: {
17
+ name: 'John Doe',
18
+ age: 11,
19
+ },
20
+ },
21
+ {
22
+ $and: [
23
+ {
24
+ age: 12,
25
+ },
26
+ {
27
+ name: 'Jane Doe',
28
+ },
29
+ ],
30
+ },
31
+ ],
32
+ filters,
33
+ query: {
34
+ query: '(`default`.`name` = ? OR `default`.`age` = ?) AND `default`.`age` = ? AND `default`.`name` = ?',
35
+ params: [
36
+ 'john doe',
37
+ 11,
38
+ 12,
39
+ 'jane doe',
40
+ ],
41
+ },
42
+ });
43
+ });
44
+ it('Cannot filter on unknown columns', async () => {
45
+ const filters = {
46
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
47
+ };
48
+ await (0, utils_1.testError)({
49
+ filter: {
50
+ name: 'John Doe',
51
+ },
52
+ filters,
53
+ error: 'Unknown filter name',
54
+ });
55
+ });
56
+ it('Cannot stack column filters', async () => {
57
+ const filters = {
58
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
59
+ name: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: true }),
60
+ age: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('age'), type: SQLModernFilter_1.SQLModernValueType.Number, nullable: false }),
61
+ };
62
+ await (0, utils_1.testError)({
63
+ filter: {
64
+ name: {
65
+ age: 12,
66
+ },
67
+ },
68
+ filters,
69
+ error: 'Unknown filter age',
70
+ });
71
+ });
72
+ describe('Empty filters', () => {
73
+ it('an empty object filter is always true', async () => {
74
+ const filters = {
75
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
76
+ };
77
+ await (0, utils_1.test)({
78
+ filter: {},
79
+ filters,
80
+ query: {
81
+ query: 'true',
82
+ params: [],
83
+ },
84
+ });
85
+ });
86
+ it('an empty array filter is always true', async () => {
87
+ const filters = {
88
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
89
+ };
90
+ await (0, utils_1.test)({
91
+ filter: [],
92
+ filters,
93
+ query: {
94
+ query: 'true',
95
+ params: [],
96
+ },
97
+ });
98
+ });
99
+ it('a null filter is always true', async () => {
100
+ const filters = {
101
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
102
+ };
103
+ await (0, utils_1.test)({
104
+ filter: null,
105
+ filters,
106
+ query: {
107
+ query: 'true',
108
+ params: [],
109
+ },
110
+ });
111
+ });
112
+ });
113
+ });
114
+ //# sourceMappingURL=special-cases.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"special-cases.test.js","sourceRoot":"","sources":["../../../tests/filters/special-cases.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=wildcard.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wildcard.test.d.ts","sourceRoot":"","sources":["../../../tests/filters/wildcard.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,67 @@
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('Wildcards', () => {
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
+ records: (0, SQLModernFilter_1.createWildcardColumnFilter)((key) => ({ expression: SQL_1.SQL.jsonValue(SQL_1.SQL.jsonValue(SQL_1.SQL.column('settings'), '$.records'), '$.' + key, true), type: SQLModernFilter_1.SQLModernValueType.JSONObject, nullable: true }), (key) => ({
14
+ ...SQLModernFilter_1.baseModernSQLFilterCompilers,
15
+ name: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.jsonValue(SQL_1.SQL.jsonValue(SQL_1.SQL.jsonValue(SQL_1.SQL.column('settings'), '$.records'), '$.' + key, true), '$.name'), type: SQLModernFilter_1.SQLModernValueType.JSONString, nullable: true }),
16
+ })),
17
+ },
18
+ };
19
+ it('Correctly finds the right filter when using object syntax', async () => {
20
+ await (0, utils_1.test)({
21
+ filter: [
22
+ {
23
+ settings: {
24
+ records: {
25
+ a: {
26
+ name: {
27
+ $eq: 'Rex',
28
+ },
29
+ },
30
+ },
31
+ },
32
+ },
33
+ ],
34
+ filters,
35
+ query: {
36
+ query: 'JSON_VALUE(JSON_EXTRACT(JSON_EXTRACT(`default`.`settings`,"$.records"),?),"$.name" RETURNING CHAR CHARACTER SET utf8mb4 ERROR ON ERROR) = ?',
37
+ params: [
38
+ '$.a',
39
+ 'rex',
40
+ ],
41
+ },
42
+ });
43
+ });
44
+ it('Can support this', async () => {
45
+ await (0, utils_1.test)({
46
+ filter: [
47
+ {
48
+ settings: {
49
+ records: {
50
+ a: {
51
+ $neq: null,
52
+ },
53
+ },
54
+ },
55
+ },
56
+ ],
57
+ filters,
58
+ query: {
59
+ query: 'JSON_VALUE(JSON_EXTRACT(`default`.`settings`,"$.records"),? ERROR ON ERROR) IS NOT NULL',
60
+ params: [
61
+ '$.a',
62
+ ],
63
+ },
64
+ });
65
+ });
66
+ });
67
+ //# sourceMappingURL=wildcard.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wildcard.test.js","sourceRoot":"","sources":["../../../tests/filters/wildcard.test.ts"],"names":[],"mappings":";;AAAA,8EAAwL;AACxL,uCAAoC;AACpC,oCAAgC;AAEhC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACvB,MAAM,OAAO,GAA+B;QACxC,GAAG,8CAA4B;QAC/B,IAAI,EAAE,IAAA,oCAAkB,EAAC,EAAE,UAAU,EAAE,SAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,oCAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC7G,GAAG,EAAE,IAAA,oCAAkB,EAAC,EAAE,UAAU,EAAE,SAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,oCAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;QAC5G,QAAQ,EAAE;YACN,GAAG,8CAA4B;YAC/B,OAAO,EAAE,IAAA,4CAA0B,EAC/B,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,EAAE,UAAU,EAAE,SAAG,CAAC,SAAS,CAAC,SAAG,CAAC,SAAS,CAAC,SAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,oCAAkB,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAC3K,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC;gBACd,GAAG,8CAA4B;gBAC/B,IAAI,EAAE,IAAA,oCAAkB,EAAC,EAAE,UAAU,EAAE,SAAG,CAAC,SAAS,CAAC,SAAG,CAAC,SAAS,CAAC,SAAG,CAAC,SAAS,CAAC,SAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,EAAE,IAAI,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,oCAAkB,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;aAC9M,CAAC,CACL;SACJ;KACJ,CAAC;IAEF,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,IAAA,YAAI,EAAC;YACP,MAAM,EAAE;gBACJ;oBACI,QAAQ,EAAE;wBACN,OAAO,EAAE;4BACL,CAAC,EAAE;gCACC,IAAI,EAAE;oCACF,GAAG,EAAE,KAAK;iCACb;6BACJ;yBACJ;qBACJ;iBACJ;aACJ;YACD,OAAO;YACP,KAAK,EAAE;gBACH,KAAK,EAAE,6IAA6I;gBACpJ,MAAM,EAAE;oBACJ,KAAK;oBACL,KAAK;iBACR;aACJ;SACJ,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;QAC9B,MAAM,IAAA,YAAI,EAAC;YACP,MAAM,EAAE;gBACJ;oBACI,QAAQ,EAAE;wBACN,OAAO,EAAE;4BACL,CAAC,EAAE;gCACC,IAAI,EAAE,IAAI;6BACb;yBACJ;qBACJ;iBACJ;aACJ;YACD,OAAO;YACP,KAAK,EAAE;gBACH,KAAK,EAAE,yFAAyF;gBAChG,MAAM,EAAE;oBACJ,KAAK;iBACR;aACJ;SACJ,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ declare const _default: () => Promise<void>;
2
+ export default _default;
3
+ //# sourceMappingURL=jest.global.setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.global.setup.d.ts","sourceRoot":"","sources":["../../tests/jest.global.setup.ts"],"names":[],"mappings":";AAEA,wBAEE"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const test_utils_1 = require("@stamhoofd/test-utils");
4
+ exports.default = async () => {
5
+ await test_utils_1.TestUtils.globalSetup();
6
+ };
7
+ //# sourceMappingURL=jest.global.setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.global.setup.js","sourceRoot":"","sources":["../../tests/jest.global.setup.ts"],"names":[],"mappings":";;AAAA,sDAAkD;AAElD,kBAAe,KAAK,IAAI,EAAE;IACtB,MAAM,sBAAS,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=jest.setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.setup.d.ts","sourceRoot":"","sources":["../../tests/jest.setup.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const test_utils_1 = require("@stamhoofd/test-utils");
4
+ test_utils_1.TestUtils.setup();
5
+ //# sourceMappingURL=jest.setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jest.setup.js","sourceRoot":"","sources":["../../tests/jest.setup.ts"],"names":[],"mappings":";;AAAA,sDAAkD;AAElD,sBAAS,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { PlainObject } from '@simonbackx/simple-encoding';
2
+ import { StamhoofdFilter } from '@stamhoofd/structures';
3
+ import { SQLModernFilterDefinitions } from '../../src/filters/modern/SQLModernFilter';
4
+ import { SQLQuery } from '../../src/SQLExpression';
5
+ import { SQLScalarValue } from '../../src/SQLExpressions';
6
+ export declare function testError({ filter, filters, error }: {
7
+ filter: StamhoofdFilter;
8
+ filters: SQLModernFilterDefinitions;
9
+ error: string;
10
+ }): Promise<void>;
11
+ /**
12
+ * Only compares the WHERE clause of the query.
13
+ */
14
+ export declare function test({ filter, filters, query }: {
15
+ filter: StamhoofdFilter;
16
+ filters: SQLModernFilterDefinitions;
17
+ query: SQLQuery;
18
+ }): Promise<void>;
19
+ /**
20
+ * Use to also test joins. This will use `test_table` as the table name in your query.
21
+ */
22
+ export declare function testSelect({ filter, filters, query }: {
23
+ filter: StamhoofdFilter;
24
+ filters: SQLModernFilterDefinitions;
25
+ query: SQLQuery;
26
+ }): Promise<void>;
27
+ export declare function testMultiple({ testFilters, filters, query }: {
28
+ testFilters: StamhoofdFilter[];
29
+ filters: SQLModernFilterDefinitions;
30
+ query: SQLQuery;
31
+ }): Promise<void>;
32
+ export declare function testMultipleErrors({ testFilters, filters, error }: {
33
+ testFilters: StamhoofdFilter[];
34
+ filters: SQLModernFilterDefinitions;
35
+ error: string;
36
+ }): Promise<void>;
37
+ export declare function doesQueryMatch(query: SQLQuery, withQuery: SQLQuery): void;
38
+ export type TableDefinition = Record<string, {
39
+ type: 'varchar' | 'test' | 'json' | 'datetime' | 'int' | 'int unsigned';
40
+ nullable?: boolean;
41
+ }>;
42
+ export declare function createTableDefinition(tableName: string, definition: TableDefinition): string;
43
+ /**
44
+ * Tests actual MySQL behaviour, for complex queries that depend on MySQL behaviour.
45
+ *
46
+ * Creates a table, inserts a row with provided data. Then runs a query with the provided filter and checks if the row matches the expected query.
47
+ *
48
+ * Snapshots the query.
49
+ */
50
+ export declare function testMatch({ tableDefinition, rows, doMatch, doNotMatch, filters }: {
51
+ doMatch?: StamhoofdFilter[];
52
+ doNotMatch?: StamhoofdFilter[];
53
+ tableDefinition: TableDefinition;
54
+ rows: Record<string, SQLScalarValue | null | PlainObject>[];
55
+ filters: SQLModernFilterDefinitions;
56
+ }): Promise<void>;
57
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../tests/utils/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAA4B,0BAA0B,EAAE,MAAM,0CAA0C,CAAC;AAEhH,OAAO,EAAsB,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG1D,wBAAsB,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,0BAA0B,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,iBAI1I;AAED;;GAEG;AACH,wBAAsB,IAAI,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,0BAA0B,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,iBAiBvI;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,0BAA0B,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,iBAqB7I;AAED,wBAAsB,YAAY,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;IAAE,WAAW,EAAE,eAAe,EAAE,CAAC;IAAC,OAAO,EAAE,0BAA0B,CAAC;IAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,iBAQ3J;AAED,wBAAsB,kBAAkB,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;IAAE,WAAW,EAAE,eAAe,EAAE,CAAC;IAAC,OAAO,EAAE,0BAA0B,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,iBAQ/J;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,QASlE;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE;IAAE,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,KAAK,GAAG,cAAc,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC;AAE9I,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,GAAG,MAAM,CAM5F;AAmBD;;;;;;GAMG;AACH,wBAAsB,SAAS,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAAC,eAAe,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,GAAG,WAAW,CAAC,EAAE,CAAC;IAAC,OAAO,EAAE,0BAA0B,CAAA;CAAE,iBAoG3R"}