@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,917 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const SQLFilter_js_1 = require("../../src/filters/SQLFilter.js");
4
- const SQL_js_1 = require("../../src/SQL.js");
5
- const index_js_1 = require("../utils/index.js");
6
- describe('$contains', () => {
7
- /**
8
- * Tests that should be repeated for all filter types
9
- */
10
- describe('Common checks', () => {
11
- // todo
12
- });
13
- it('Throws when passing non-string values', async () => {
14
- const filters = {
15
- ...SQLFilter_js_1.baseSQLFilterCompilers,
16
- name: (0, SQLFilter_js_1.createColumnFilter)({ expression: SQL_js_1.SQL.column('name'), type: SQLFilter_js_1.SQLValueType.String, nullable: false }),
17
- };
18
- await (0, index_js_1.testMultipleErrors)({
19
- testFilters: [
20
- {
21
- name: {
22
- $contains: ['test'],
23
- },
24
- },
25
- ],
26
- filters,
27
- error: 'Invalid compare value. Expected a string, number, boolean, date or null.',
28
- });
29
- await (0, index_js_1.testMultipleErrors)({
30
- testFilters: [
31
- {
32
- name: {
33
- $contains: 123,
34
- },
35
- },
36
- {
37
- name: {
38
- $contains: true,
39
- },
40
- },
41
- ],
42
- filters,
43
- error: 'Cannot compare',
44
- });
45
- await (0, index_js_1.testMultipleErrors)({
46
- testFilters: [
47
- {
48
- name: {
49
- $contains: null,
50
- },
51
- },
52
- ],
53
- filters,
54
- error: 'Expected string at $contains filter',
55
- });
56
- });
57
- describe('Searching in native string columns', () => {
58
- it('Removes caps in the query', async () => {
59
- const filters = {
60
- ...SQLFilter_js_1.baseSQLFilterCompilers,
61
- name: (0, SQLFilter_js_1.createColumnFilter)({ expression: SQL_js_1.SQL.column('name'), type: SQLFilter_js_1.SQLValueType.String, nullable: false }),
62
- };
63
- await (0, index_js_1.test)({
64
- filter: {
65
- name: {
66
- $contains: 'Caps Are Removed',
67
- },
68
- },
69
- filters,
70
- query: {
71
- query: '`default`.`name` LIKE ?',
72
- params: ['%caps are removed%'],
73
- },
74
- });
75
- });
76
- it('Escapes percentage', async () => {
77
- const filters = {
78
- ...SQLFilter_js_1.baseSQLFilterCompilers,
79
- name: (0, SQLFilter_js_1.createColumnFilter)({ expression: SQL_js_1.SQL.column('name'), type: SQLFilter_js_1.SQLValueType.String, nullable: false }),
80
- };
81
- await (0, index_js_1.test)({
82
- filter: {
83
- name: {
84
- $contains: '%',
85
- },
86
- },
87
- filters,
88
- query: {
89
- query: '`default`.`name` LIKE ?',
90
- params: ['%\\%%'],
91
- },
92
- });
93
- });
94
- it('Escapes underscore', async () => {
95
- const filters = {
96
- ...SQLFilter_js_1.baseSQLFilterCompilers,
97
- name: (0, SQLFilter_js_1.createColumnFilter)({ expression: SQL_js_1.SQL.column('name'), type: SQLFilter_js_1.SQLValueType.String, nullable: false }),
98
- };
99
- await (0, index_js_1.test)({
100
- filter: {
101
- name: {
102
- $contains: '_',
103
- },
104
- },
105
- filters,
106
- query: {
107
- query: '`default`.`name` LIKE ?',
108
- params: ['%\\_%'],
109
- },
110
- });
111
- });
112
- it('Escapes backslash characters', async () => {
113
- const filters = {
114
- ...SQLFilter_js_1.baseSQLFilterCompilers,
115
- name: (0, SQLFilter_js_1.createColumnFilter)({ expression: SQL_js_1.SQL.column('name'), type: SQLFilter_js_1.SQLValueType.String, nullable: false }),
116
- };
117
- await (0, index_js_1.test)({
118
- filter: {
119
- name: {
120
- $contains: '\\%',
121
- },
122
- },
123
- filters,
124
- query: {
125
- query: '`default`.`name` LIKE ?',
126
- params: ['%\\\\\\%%'],
127
- },
128
- });
129
- });
130
- });
131
- describe('MySQL behaviour', () => {
132
- describe('Native MySQL strings', () => {
133
- const tableDefinition = {
134
- name: {
135
- type: 'varchar',
136
- nullable: true,
137
- },
138
- };
139
- const filters = {
140
- ...SQLFilter_js_1.baseSQLFilterCompilers,
141
- name: (0, SQLFilter_js_1.createColumnFilter)({ expression: SQL_js_1.SQL.column('name'), type: SQLFilter_js_1.SQLValueType.String, nullable: true }),
142
- };
143
- it('Can actually search for %', async () => {
144
- await (0, index_js_1.testMatch)({
145
- tableDefinition,
146
- filters,
147
- rows: [
148
- {
149
- name: 'This contains 50% more',
150
- },
151
- ],
152
- doMatch: [
153
- {
154
- name: {
155
- $contains: '50%',
156
- },
157
- },
158
- {
159
- name: {
160
- $contains: '0%',
161
- },
162
- },
163
- {
164
- name: {
165
- $contains: '%',
166
- },
167
- },
168
- ],
169
- doNotMatch: [
170
- {
171
- name: {
172
- $contains: '%%',
173
- },
174
- },
175
- {
176
- name: {
177
- $contains: '%50',
178
- },
179
- },
180
- ],
181
- });
182
- });
183
- it('Does not return values without % when filtering for %', async () => {
184
- await (0, index_js_1.testMatch)({
185
- tableDefinition,
186
- filters,
187
- rows: [
188
- {
189
- name: 'This contains 50 percent more',
190
- },
191
- ],
192
- doNotMatch: [
193
- {
194
- name: {
195
- $contains: '%',
196
- },
197
- },
198
- ],
199
- });
200
- });
201
- it('Can actually search for _', async () => {
202
- await (0, index_js_1.testMatch)({
203
- tableDefinition,
204
- filters,
205
- rows: [
206
- {
207
- name: 'john_doe@example.com',
208
- },
209
- ],
210
- doMatch: [
211
- {
212
- name: {
213
- $contains: 'john_doe',
214
- },
215
- },
216
- {
217
- name: {
218
- $contains: '_',
219
- },
220
- },
221
- {
222
- name: {
223
- $contains: '_doe',
224
- },
225
- },
226
- ],
227
- doNotMatch: [
228
- {
229
- name: {
230
- $contains: '__',
231
- },
232
- },
233
- {
234
- name: {
235
- $contains: 'john__doe',
236
- },
237
- },
238
- ],
239
- });
240
- });
241
- it('Does not return values without _ when filtering for _', async () => {
242
- await (0, index_js_1.testMatch)({
243
- tableDefinition,
244
- filters,
245
- rows: [
246
- {
247
- name: 'johndoe@example.com',
248
- },
249
- ],
250
- doNotMatch: [
251
- {
252
- name: {
253
- $contains: '_',
254
- },
255
- },
256
- {
257
- name: {
258
- $contains: 'john_',
259
- },
260
- },
261
- ],
262
- });
263
- });
264
- it('Can search for backslash', async () => {
265
- await (0, index_js_1.testMatch)({
266
- tableDefinition,
267
- filters,
268
- rows: [
269
- {
270
- name: 'john\\%doe',
271
- },
272
- ],
273
- doMatch: [
274
- {
275
- name: {
276
- $contains: '\\',
277
- },
278
- },
279
- {
280
- name: {
281
- $contains: '\\%',
282
- },
283
- },
284
- ],
285
- doNotMatch: [
286
- {
287
- name: {
288
- $contains: '\\_',
289
- },
290
- },
291
- {
292
- name: {
293
- $contains: '\\\\',
294
- },
295
- },
296
- ],
297
- });
298
- await (0, index_js_1.testMatch)({
299
- tableDefinition,
300
- filters,
301
- rows: [
302
- {
303
- name: 'john\\doe',
304
- },
305
- ],
306
- doNotMatch: [
307
- {
308
- name: {
309
- $contains: '\\%',
310
- },
311
- },
312
- ],
313
- });
314
- });
315
- });
316
- // Same, but for JSON strings:
317
- describe('JSON strings', () => {
318
- const tableDefinition = {
319
- settings: {
320
- type: 'json',
321
- nullable: true,
322
- },
323
- };
324
- const filters = {
325
- ...SQLFilter_js_1.baseSQLFilterCompilers,
326
- 'settings.name': (0, SQLFilter_js_1.createColumnFilter)({ expression: SQL_js_1.SQL.jsonExtract(SQL_js_1.SQL.column('settings'), '$.name'), type: SQLFilter_js_1.SQLValueType.JSONString, nullable: false }),
327
- };
328
- it('Can actually search for %', async () => {
329
- await (0, index_js_1.testMatch)({
330
- tableDefinition,
331
- filters,
332
- rows: [
333
- {
334
- settings: {
335
- name: 'This contains 50% more',
336
- },
337
- },
338
- ],
339
- doMatch: [
340
- {
341
- 'settings.name': {
342
- $contains: '50%',
343
- },
344
- },
345
- {
346
- 'settings.name': {
347
- $contains: '0%',
348
- },
349
- },
350
- {
351
- 'settings.name': {
352
- $contains: '%',
353
- },
354
- },
355
- ],
356
- doNotMatch: [
357
- {
358
- 'settings.name': {
359
- $contains: '%%',
360
- },
361
- },
362
- {
363
- 'settings.name': {
364
- $contains: '%50',
365
- },
366
- },
367
- ],
368
- });
369
- });
370
- it('Does not return values without % when filtering for %', async () => {
371
- await (0, index_js_1.testMatch)({
372
- tableDefinition,
373
- filters,
374
- rows: [
375
- {
376
- settings: {
377
- name: 'This contains 50 percent more',
378
- },
379
- },
380
- ],
381
- doNotMatch: [
382
- {
383
- 'settings.name': {
384
- $contains: '%',
385
- },
386
- },
387
- ],
388
- });
389
- });
390
- it('Can actually search for _', async () => {
391
- await (0, index_js_1.testMatch)({
392
- tableDefinition,
393
- filters,
394
- rows: [
395
- {
396
- settings: {
397
- name: 'john_doe@example.com',
398
- },
399
- },
400
- ],
401
- doMatch: [
402
- {
403
- 'settings.name': {
404
- $contains: 'john_doe',
405
- },
406
- },
407
- {
408
- 'settings.name': {
409
- $contains: '_',
410
- },
411
- },
412
- {
413
- 'settings.name': {
414
- $contains: '_doe',
415
- },
416
- },
417
- ],
418
- doNotMatch: [
419
- {
420
- 'settings.name': {
421
- $contains: '__',
422
- },
423
- },
424
- {
425
- 'settings.name': {
426
- $contains: 'john__doe',
427
- },
428
- },
429
- ],
430
- });
431
- });
432
- it('Does not return values without _ when filtering for _', async () => {
433
- await (0, index_js_1.testMatch)({
434
- tableDefinition,
435
- filters,
436
- rows: [
437
- {
438
- settings: {
439
- name: 'johndoe@example.com',
440
- },
441
- },
442
- ],
443
- doNotMatch: [
444
- {
445
- 'settings.name': {
446
- $contains: '_',
447
- },
448
- },
449
- {
450
- 'settings.name': {
451
- $contains: 'john_',
452
- },
453
- },
454
- ],
455
- });
456
- });
457
- it('Can search for backslash', async () => {
458
- await (0, index_js_1.testMatch)({
459
- tableDefinition,
460
- filters,
461
- rows: [
462
- {
463
- settings: {
464
- name: 'john\\%doe',
465
- },
466
- },
467
- ],
468
- doMatch: [
469
- {
470
- 'settings.name': {
471
- $contains: '\\',
472
- },
473
- },
474
- {
475
- 'settings.name': {
476
- $contains: '\\%',
477
- },
478
- },
479
- ],
480
- doNotMatch: [
481
- {
482
- 'settings.name': {
483
- $contains: '\\_',
484
- },
485
- },
486
- {
487
- 'settings.name': {
488
- $contains: '\\\\',
489
- },
490
- },
491
- ],
492
- });
493
- await (0, index_js_1.testMatch)({
494
- tableDefinition,
495
- filters,
496
- rows: [
497
- {
498
- settings: {
499
- name: 'john\\doe',
500
- },
501
- },
502
- ],
503
- doNotMatch: [
504
- {
505
- 'settings.name': {
506
- $contains: '\\%',
507
- },
508
- },
509
- ],
510
- });
511
- });
512
- });
513
- describe('JSON arrays', () => {
514
- const tableDefinition = {
515
- settings: {
516
- type: 'json',
517
- nullable: true,
518
- },
519
- };
520
- const filters = {
521
- ...SQLFilter_js_1.baseSQLFilterCompilers,
522
- settings: {
523
- ...SQLFilter_js_1.baseSQLFilterCompilers,
524
- names: (0, SQLFilter_js_1.createColumnFilter)({ expression: SQL_js_1.SQL.jsonExtract(SQL_js_1.SQL.column('settings'), '$.names'), type: SQLFilter_js_1.SQLValueType.JSONArray, nullable: false }),
525
- },
526
- };
527
- it('Can search in the array', async () => {
528
- await (0, index_js_1.testMatch)({
529
- tableDefinition,
530
- filters,
531
- rows: [
532
- {
533
- settings: {
534
- names: ['apple', 'BAnana', 'cherry'],
535
- },
536
- },
537
- ],
538
- doMatch: [
539
- {
540
- 'settings.names': {
541
- $contains: 'pple',
542
- },
543
- },
544
- {
545
- settings: {
546
- names: {
547
- $contains: 'pple',
548
- },
549
- },
550
- },
551
- {
552
- 'settings.names': {
553
- $contains: 'banana',
554
- },
555
- },
556
- {
557
- 'settings.names': {
558
- $contains: 'BAnana',
559
- },
560
- },
561
- ],
562
- doNotMatch: [
563
- {
564
- 'settings.names': {
565
- $contains: 'chrry',
566
- },
567
- },
568
- ],
569
- });
570
- });
571
- it('Can search for % in the array', async () => {
572
- await (0, index_js_1.testMatch)({
573
- tableDefinition,
574
- filters,
575
- rows: [
576
- {
577
- settings: {
578
- names: ['apple', 'BAn%ana', 'cherry'],
579
- },
580
- },
581
- ],
582
- doMatch: [
583
- {
584
- 'settings.names': {
585
- $contains: '%',
586
- },
587
- },
588
- {
589
- 'settings.names': {
590
- $contains: 'BAn%ana',
591
- },
592
- },
593
- ],
594
- doNotMatch: [
595
- {
596
- 'settings.names': {
597
- $contains: 'BAnana',
598
- },
599
- },
600
- {
601
- 'settings.names': {
602
- $contains: '%%',
603
- },
604
- },
605
- ],
606
- });
607
- });
608
- it('Can search for backslash in the array', async () => {
609
- await (0, index_js_1.testMatch)({
610
- tableDefinition,
611
- filters,
612
- rows: [
613
- {
614
- settings: {
615
- names: ['apple', 'BAn\\ana', 'cherry'],
616
- },
617
- },
618
- ],
619
- doMatch: [
620
- {
621
- 'settings.names': {
622
- $contains: '\\',
623
- },
624
- },
625
- {
626
- 'settings.names': {
627
- $contains: 'BAn\\ana',
628
- },
629
- },
630
- ],
631
- doNotMatch: [
632
- {
633
- 'settings.names': {
634
- $contains: 'BAnana',
635
- },
636
- },
637
- {
638
- 'settings.names': {
639
- $contains: '\\\\',
640
- },
641
- },
642
- ],
643
- });
644
- });
645
- });
646
- describe('JSON wildcard arrays', () => {
647
- const tableDefinition = {
648
- settings: {
649
- type: 'json',
650
- nullable: true,
651
- },
652
- };
653
- const filters = {
654
- ...SQLFilter_js_1.baseSQLFilterCompilers,
655
- 'settings.names': (0, SQLFilter_js_1.createColumnFilter)({ expression: SQL_js_1.SQL.jsonExtract(SQL_js_1.SQL.column('settings'), '$.parents[*].name'), type: SQLFilter_js_1.SQLValueType.JSONArray, nullable: false }),
656
- };
657
- it('Can search in the array', async () => {
658
- await (0, index_js_1.testMatch)({
659
- tableDefinition,
660
- filters,
661
- rows: [
662
- {
663
- settings: {
664
- parents: [
665
- { name: 'apple' },
666
- { name: 'BAnana' },
667
- { name: 'cherry' },
668
- ],
669
- },
670
- },
671
- ],
672
- doMatch: [
673
- {
674
- 'settings.names': {
675
- $contains: 'pple',
676
- },
677
- },
678
- {
679
- 'settings.names': {
680
- $contains: 'banana',
681
- },
682
- },
683
- {
684
- 'settings.names': {
685
- $contains: 'BAnana',
686
- },
687
- },
688
- ],
689
- doNotMatch: [
690
- {
691
- 'settings.names': {
692
- $contains: 'chrry',
693
- },
694
- },
695
- ],
696
- });
697
- });
698
- });
699
- describe('JSON scalars', () => {
700
- const tableDefinition = {
701
- settings: {
702
- type: 'json',
703
- nullable: true,
704
- },
705
- };
706
- const filters = {
707
- ...SQLFilter_js_1.baseSQLFilterCompilers,
708
- 'settings.scalar': (0, SQLFilter_js_1.createColumnFilter)({ expression: SQL_js_1.SQL.jsonExtract(SQL_js_1.SQL.column('settings'), '$.scalar'), type: SQLFilter_js_1.SQLValueType.JSONScalar, nullable: true }),
709
- };
710
- it('Can actually search strings for %', async () => {
711
- await (0, index_js_1.testMatch)({
712
- tableDefinition,
713
- filters,
714
- rows: [
715
- {
716
- settings: {
717
- scalar: 'This contains 50% more',
718
- },
719
- },
720
- ],
721
- doMatch: [
722
- {
723
- 'settings.scalar': {
724
- $contains: '50%',
725
- },
726
- },
727
- {
728
- 'settings.scalar': {
729
- $contains: '0%',
730
- },
731
- },
732
- {
733
- 'settings.scalar': {
734
- $contains: '%',
735
- },
736
- },
737
- ],
738
- doNotMatch: [
739
- {
740
- 'settings.scalar': {
741
- $contains: '%%',
742
- },
743
- },
744
- {
745
- 'settings.scalar': {
746
- $contains: '%50',
747
- },
748
- },
749
- ],
750
- });
751
- });
752
- it('Null fields do not match', async () => {
753
- await (0, index_js_1.testMatch)({
754
- tableDefinition,
755
- filters,
756
- rows: [
757
- {
758
- settings: {
759
- scalar: null,
760
- },
761
- },
762
- {
763
- settings: {
764
- other: 15,
765
- },
766
- },
767
- ],
768
- doMatch: [],
769
- doNotMatch: [
770
- {
771
- 'settings.scalar': {
772
- $contains: '15',
773
- },
774
- },
775
- {
776
- 'settings.scalar': {
777
- $contains: '',
778
- },
779
- },
780
- ],
781
- });
782
- });
783
- it('Number fields are converted to strings', async () => {
784
- await (0, index_js_1.testMatch)({
785
- tableDefinition,
786
- filters,
787
- rows: [
788
- {
789
- settings: {
790
- scalar: 15,
791
- },
792
- },
793
- ],
794
- doMatch: [
795
- {
796
- 'settings.scalar': {
797
- $contains: '1',
798
- },
799
- },
800
- {
801
- 'settings.scalar': {
802
- $contains: '5',
803
- },
804
- },
805
- {
806
- 'settings.scalar': {
807
- $contains: '15',
808
- },
809
- },
810
- ],
811
- doNotMatch: [
812
- {
813
- 'settings.scalar': {
814
- $contains: '2',
815
- },
816
- },
817
- {
818
- 'settings.scalar': {
819
- $contains: '151',
820
- },
821
- },
822
- ],
823
- });
824
- });
825
- it('Negative number fields are converted to strings', async () => {
826
- await (0, index_js_1.testMatch)({
827
- tableDefinition,
828
- filters,
829
- rows: [
830
- {
831
- settings: {
832
- scalar: -15,
833
- },
834
- },
835
- ],
836
- doMatch: [
837
- {
838
- 'settings.scalar': {
839
- $contains: '1',
840
- },
841
- },
842
- {
843
- 'settings.scalar': {
844
- $contains: '5',
845
- },
846
- },
847
- {
848
- 'settings.scalar': {
849
- $contains: '-',
850
- },
851
- },
852
- {
853
- 'settings.scalar': {
854
- $contains: '15',
855
- },
856
- },
857
- {
858
- 'settings.scalar': {
859
- $contains: '-15',
860
- },
861
- },
862
- {
863
- 'settings.scalar': {
864
- $contains: '-1',
865
- },
866
- },
867
- ],
868
- doNotMatch: [
869
- {
870
- 'settings.scalar': {
871
- $contains: '2',
872
- },
873
- },
874
- {
875
- 'settings.scalar': {
876
- $contains: '151',
877
- },
878
- },
879
- ],
880
- });
881
- });
882
- it('Booleans are converted to strings', async () => {
883
- await (0, index_js_1.testMatch)({
884
- tableDefinition,
885
- filters,
886
- rows: [
887
- {
888
- settings: {
889
- scalar: true,
890
- },
891
- },
892
- ],
893
- doMatch: [
894
- {
895
- 'settings.scalar': {
896
- $contains: 'true',
897
- },
898
- },
899
- ],
900
- doNotMatch: [
901
- {
902
- 'settings.scalar': {
903
- $contains: '1',
904
- },
905
- },
906
- {
907
- 'settings.scalar': {
908
- $contains: '0',
909
- },
910
- },
911
- ],
912
- });
913
- });
914
- });
915
- });
916
- });
917
- //# sourceMappingURL=$contains.test.js.map