@stamhoofd/sql 2.89.2 → 2.90.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 (125) hide show
  1. package/dist/index.d.ts +1 -2
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +9 -10
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/SQLJsonExpressions.d.ts +2 -0
  6. package/dist/src/SQLJsonExpressions.d.ts.map +1 -1
  7. package/dist/src/SQLJsonExpressions.js +8 -0
  8. package/dist/src/SQLJsonExpressions.js.map +1 -1
  9. package/dist/src/SQLSelect.d.ts.map +1 -1
  10. package/dist/src/SQLSelect.js +7 -0
  11. package/dist/src/SQLSelect.js.map +1 -1
  12. package/dist/src/SQLWhere.d.ts +6 -0
  13. package/dist/src/SQLWhere.d.ts.map +1 -1
  14. package/dist/src/SQLWhere.js +39 -1
  15. package/dist/src/SQLWhere.js.map +1 -1
  16. package/dist/src/filters/SQLFilter.d.ts +61 -25
  17. package/dist/src/filters/SQLFilter.d.ts.map +1 -1
  18. package/dist/src/filters/SQLFilter.js +183 -380
  19. package/dist/src/filters/SQLFilter.js.map +1 -1
  20. package/dist/src/filters/{modern/compilers → compilers}/contains.d.ts +1 -1
  21. package/dist/src/filters/compilers/contains.d.ts.map +1 -0
  22. package/dist/src/filters/{modern/compilers → compilers}/contains.js +6 -6
  23. package/dist/src/filters/compilers/contains.js.map +1 -0
  24. package/dist/src/filters/{modern/compilers → compilers}/equals.d.ts +1 -1
  25. package/dist/src/filters/compilers/equals.d.ts.map +1 -0
  26. package/dist/src/filters/{modern/compilers → compilers}/equals.js +7 -7
  27. package/dist/src/filters/compilers/equals.js.map +1 -0
  28. package/dist/src/filters/{modern/compilers → compilers}/greater.d.ts +1 -1
  29. package/dist/src/filters/compilers/greater.d.ts.map +1 -0
  30. package/dist/src/filters/{modern/compilers → compilers}/greater.js +4 -4
  31. package/dist/src/filters/compilers/greater.js.map +1 -0
  32. package/dist/src/filters/{modern/compilers → compilers}/in.d.ts +1 -1
  33. package/dist/src/filters/compilers/in.d.ts.map +1 -0
  34. package/dist/src/filters/{modern/compilers → compilers}/in.js +7 -7
  35. package/dist/src/filters/compilers/in.js.map +1 -0
  36. package/dist/src/filters/compilers/index.d.ts.map +1 -0
  37. package/dist/src/filters/compilers/index.js.map +1 -0
  38. package/dist/src/filters/{modern/compilers → compilers}/less.d.ts +1 -1
  39. package/dist/src/filters/compilers/less.d.ts.map +1 -0
  40. package/dist/src/filters/{modern/compilers → compilers}/less.js +4 -4
  41. package/dist/src/filters/compilers/less.js.map +1 -0
  42. package/dist/src/filters/helpers/isJSONColumn.d.ts +4 -0
  43. package/dist/src/filters/helpers/isJSONColumn.d.ts.map +1 -0
  44. package/dist/src/filters/helpers/isJSONColumn.js +16 -0
  45. package/dist/src/filters/helpers/isJSONColumn.js.map +1 -0
  46. package/dist/src/filters/{modern/helpers → helpers}/normalizeCompareValue.d.ts +2 -2
  47. package/dist/src/filters/helpers/normalizeCompareValue.d.ts.map +1 -0
  48. package/dist/src/filters/{modern/helpers → helpers}/normalizeCompareValue.js +13 -13
  49. package/dist/src/filters/helpers/normalizeCompareValue.js.map +1 -0
  50. package/dist/tests/filters/$and.test.js +49 -18
  51. package/dist/tests/filters/$and.test.js.map +1 -1
  52. package/dist/tests/filters/$contains.test.js +20 -20
  53. package/dist/tests/filters/$contains.test.js.map +1 -1
  54. package/dist/tests/filters/$eq.test.js +59 -53
  55. package/dist/tests/filters/$eq.test.js.map +1 -1
  56. package/dist/tests/filters/$gt.test.js +18 -18
  57. package/dist/tests/filters/$gt.test.js.map +1 -1
  58. package/dist/tests/filters/$gte.test.js +14 -14
  59. package/dist/tests/filters/$gte.test.js.map +1 -1
  60. package/dist/tests/filters/$in.test.js +24 -24
  61. package/dist/tests/filters/$in.test.js.map +1 -1
  62. package/dist/tests/filters/$lt.test.js +14 -14
  63. package/dist/tests/filters/$lt.test.js.map +1 -1
  64. package/dist/tests/filters/$lte.test.js +14 -14
  65. package/dist/tests/filters/$lte.test.js.map +1 -1
  66. package/dist/tests/filters/$neq.test.js +3 -3
  67. package/dist/tests/filters/$neq.test.js.map +1 -1
  68. package/dist/tests/filters/$not.test.js +5 -5
  69. package/dist/tests/filters/$not.test.js.map +1 -1
  70. package/dist/tests/filters/$or.test.js +16 -16
  71. package/dist/tests/filters/$or.test.js.map +1 -1
  72. package/dist/tests/filters/dot-syntax.test.js +10 -10
  73. package/dist/tests/filters/dot-syntax.test.js.map +1 -1
  74. package/dist/tests/filters/exists.test.js +16 -16
  75. package/dist/tests/filters/exists.test.js.map +1 -1
  76. package/dist/tests/filters/joined-relations.test.js +31 -31
  77. package/dist/tests/filters/joined-relations.test.js.map +1 -1
  78. package/dist/tests/filters/special-cases.test.js +11 -11
  79. package/dist/tests/filters/special-cases.test.js.map +1 -1
  80. package/dist/tests/filters/wildcard.test.js +8 -8
  81. package/dist/tests/filters/wildcard.test.js.map +1 -1
  82. package/dist/tests/utils/index.d.ts +7 -7
  83. package/dist/tests/utils/index.d.ts.map +1 -1
  84. package/dist/tests/utils/index.js +6 -6
  85. package/dist/tests/utils/index.js.map +1 -1
  86. package/dist/tsconfig.tsbuildinfo +1 -1
  87. package/package.json +2 -2
  88. package/src/SQLJsonExpressions.ts +10 -0
  89. package/src/SQLSelect.ts +9 -0
  90. package/src/SQLWhere.ts +48 -1
  91. package/src/filters/SQLFilter.ts +203 -485
  92. package/src/filters/{modern/compilers → compilers}/contains.ts +5 -5
  93. package/src/filters/{modern/compilers → compilers}/equals.ts +6 -6
  94. package/src/filters/{modern/compilers → compilers}/greater.ts +3 -3
  95. package/src/filters/{modern/compilers → compilers}/in.ts +6 -6
  96. package/src/filters/{modern/compilers → compilers}/less.ts +3 -3
  97. package/src/filters/helpers/isJSONColumn.ts +13 -0
  98. package/src/filters/{modern/helpers → helpers}/normalizeCompareValue.ts +14 -14
  99. package/dist/src/filters/modern/SQLModernFilter.d.ts +0 -73
  100. package/dist/src/filters/modern/SQLModernFilter.d.ts.map +0 -1
  101. package/dist/src/filters/modern/SQLModernFilter.js +0 -200
  102. package/dist/src/filters/modern/SQLModernFilter.js.map +0 -1
  103. package/dist/src/filters/modern/compilers/contains.d.ts.map +0 -1
  104. package/dist/src/filters/modern/compilers/contains.js.map +0 -1
  105. package/dist/src/filters/modern/compilers/equals.d.ts.map +0 -1
  106. package/dist/src/filters/modern/compilers/equals.js.map +0 -1
  107. package/dist/src/filters/modern/compilers/greater.d.ts.map +0 -1
  108. package/dist/src/filters/modern/compilers/greater.js.map +0 -1
  109. package/dist/src/filters/modern/compilers/in.d.ts.map +0 -1
  110. package/dist/src/filters/modern/compilers/in.js.map +0 -1
  111. package/dist/src/filters/modern/compilers/index.d.ts.map +0 -1
  112. package/dist/src/filters/modern/compilers/index.js.map +0 -1
  113. package/dist/src/filters/modern/compilers/less.d.ts.map +0 -1
  114. package/dist/src/filters/modern/compilers/less.js.map +0 -1
  115. package/dist/src/filters/modern/helpers/isJSONColumn.d.ts +0 -4
  116. package/dist/src/filters/modern/helpers/isJSONColumn.d.ts.map +0 -1
  117. package/dist/src/filters/modern/helpers/isJSONColumn.js +0 -16
  118. package/dist/src/filters/modern/helpers/isJSONColumn.js.map +0 -1
  119. package/dist/src/filters/modern/helpers/normalizeCompareValue.d.ts.map +0 -1
  120. package/dist/src/filters/modern/helpers/normalizeCompareValue.js.map +0 -1
  121. package/src/filters/modern/SQLModernFilter.ts +0 -256
  122. package/src/filters/modern/helpers/isJSONColumn.ts +0 -13
  123. /package/dist/src/filters/{modern/compilers → compilers}/index.d.ts +0 -0
  124. /package/dist/src/filters/{modern/compilers → compilers}/index.js +0 -0
  125. /package/src/filters/{modern/compilers → compilers}/index.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contains.d.ts","sourceRoot":"","sources":["../../../../src/filters/compilers/contains.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIlF,OAAO,EAAqC,mBAAmB,EAAgB,MAAM,cAAc,CAAC;AAGpG,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,eAAe,GAAG,mBAAmB,CAkCvF"}
@@ -3,14 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.$containsSQLFilterCompiler = $containsSQLFilterCompiler;
4
4
  const simple_errors_1 = require("@simonbackx/simple-errors");
5
5
  const structures_1 = require("@stamhoofd/structures");
6
- const SQLExpressions_1 = require("../../../SQLExpressions");
7
- const SQLJsonExpressions_1 = require("../../../SQLJsonExpressions");
8
- const SQLWhere_1 = require("../../../SQLWhere");
9
- const SQLModernFilter_1 = require("../SQLModernFilter");
6
+ const SQLExpressions_1 = require("../../SQLExpressions");
7
+ const SQLJsonExpressions_1 = require("../../SQLJsonExpressions");
8
+ const SQLWhere_1 = require("../../SQLWhere");
9
+ const SQLFilter_1 = require("../SQLFilter");
10
10
  const normalizeCompareValue_1 = require("../helpers/normalizeCompareValue");
11
11
  function $containsSQLFilterCompiler(filter) {
12
12
  return (originalColumn) => {
13
- const column = (0, SQLModernFilter_1.normalizeColumn)(originalColumn);
13
+ const column = (0, SQLFilter_1.normalizeColumn)(originalColumn);
14
14
  const value = (0, normalizeCompareValue_1.normalizeCompareValue)((0, structures_1.assertFilterCompareValue)(filter), column.type);
15
15
  if (typeof value !== 'string') {
16
16
  throw new simple_errors_1.SimpleError({
@@ -18,7 +18,7 @@ function $containsSQLFilterCompiler(filter) {
18
18
  message: 'Expected string at $contains filter',
19
19
  });
20
20
  }
21
- if (column.type === SQLModernFilter_1.SQLModernValueType.JSONArray || column.type === SQLModernFilter_1.SQLModernValueType.JSONObject) {
21
+ if (column.type === SQLFilter_1.SQLValueType.JSONArray || column.type === SQLFilter_1.SQLValueType.JSONObject) {
22
22
  // For JSON arrays and objects, we use JSON_CONTAINS
23
23
  return new SQLWhere_1.SQLWhereEqual(new SQLJsonExpressions_1.SQLJsonSearch(new SQLExpressions_1.SQLLower(column.expression), 'one', (0, SQLExpressions_1.scalarToSQLExpression)('%' + SQLWhere_1.SQLWhereLike.escape(value) + '%')), SQLWhere_1.SQLWhereSign.NotEqual, new SQLExpressions_1.SQLNull());
24
24
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contains.js","sourceRoot":"","sources":["../../../../src/filters/compilers/contains.ts"],"names":[],"mappings":";;AAQA,gEAkCC;AA1CD,6DAAwD;AACxD,sDAAkF;AAClF,yDAAgF;AAChF,iEAAyD;AACzD,6CAA2E;AAC3E,4CAAoG;AACpG,4EAAyE;AAEzE,SAAgB,0BAA0B,CAAC,MAAuB;IAC9D,OAAO,CAAC,cAAgC,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,IAAA,2BAAe,EAAC,cAAc,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAA,6CAAqB,EAAC,IAAA,qCAAwB,EAAC,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAEnF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,2BAAW,CAAC;gBAClB,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,qCAAqC;aACjD,CAAC,CAAC;QACP,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,wBAAY,CAAC,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,wBAAY,CAAC,UAAU,EAAE,CAAC;YACpF,oDAAoD;YACpD,OAAO,IAAI,wBAAa,CACpB,IAAI,kCAAa,CACb,IAAI,yBAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAC/B,KAAK,EACL,IAAA,sCAAqB,EACjB,GAAG,GAAG,uBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CACzC,CACJ,EACD,uBAAY,CAAC,QAAQ,EACrB,IAAI,wBAAO,EAAE,CAChB,CAAC;QACN,CAAC;QAED,OAAO,IAAI,uBAAY,CACnB,MAAM,CAAC,UAAU,EACjB,IAAA,sCAAqB,EACjB,GAAG,GAAG,uBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CACzC,CACJ,CAAC;IACN,CAAC,CAAC;AACN,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { StamhoofdFilter } from '@stamhoofd/structures';
2
- import { SQLSyncFilterRunner } from '../SQLModernFilter';
2
+ import { SQLSyncFilterRunner } from '../SQLFilter';
3
3
  export declare function $equalsSQLFilterCompiler(filter: StamhoofdFilter): SQLSyncFilterRunner;
4
4
  //# sourceMappingURL=equals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"equals.d.ts","sourceRoot":"","sources":["../../../../src/filters/compilers/equals.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIlF,OAAO,EAAqC,mBAAmB,EAAgB,MAAM,cAAc,CAAC;AAIpG,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,eAAe,GAAG,mBAAmB,CA+DrF"}
@@ -2,15 +2,15 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.$equalsSQLFilterCompiler = $equalsSQLFilterCompiler;
4
4
  const structures_1 = require("@stamhoofd/structures");
5
- const SQLExpressions_1 = require("../../../SQLExpressions");
6
- const SQLJsonExpressions_1 = require("../../../SQLJsonExpressions");
7
- const SQLWhere_1 = require("../../../SQLWhere");
8
- const SQLModernFilter_1 = require("../SQLModernFilter");
5
+ const SQLExpressions_1 = require("../../SQLExpressions");
6
+ const SQLJsonExpressions_1 = require("../../SQLJsonExpressions");
7
+ const SQLWhere_1 = require("../../SQLWhere");
8
+ const SQLFilter_1 = require("../SQLFilter");
9
9
  const isJSONColumn_1 = require("../helpers/isJSONColumn");
10
10
  const normalizeCompareValue_1 = require("../helpers/normalizeCompareValue");
11
11
  function $equalsSQLFilterCompiler(filter) {
12
12
  return (originalColumn) => {
13
- const column = (0, SQLModernFilter_1.normalizeColumn)(originalColumn);
13
+ const column = (0, SQLFilter_1.normalizeColumn)(originalColumn);
14
14
  const value = (0, normalizeCompareValue_1.normalizeCompareValue)((0, structures_1.assertFilterCompareValue)(filter), column.type);
15
15
  /**
16
16
  * Special case, checking for equality with a JSON array.
@@ -18,7 +18,7 @@ function $equalsSQLFilterCompiler(filter) {
18
18
  *
19
19
  * This differs from $contains, which will check for 'LIKE' inside the JSON array.
20
20
  */
21
- if (column.type === SQLModernFilter_1.SQLModernValueType.JSONArray) {
21
+ if (column.type === SQLFilter_1.SQLValueType.JSONArray) {
22
22
  let where;
23
23
  if (typeof value === 'string') {
24
24
  where = new SQLWhere_1.SQLWhereEqual(new SQLJsonExpressions_1.SQLJsonSearch(new SQLExpressions_1.SQLLower(column.expression), 'one', (0, SQLExpressions_1.scalarToSQLExpression)(SQLWhere_1.SQLWhereLike.escape(value))), SQLWhere_1.SQLWhereSign.NotEqual, new SQLExpressions_1.SQLNull());
@@ -40,7 +40,7 @@ function $equalsSQLFilterCompiler(filter) {
40
40
  return new SQLWhere_1.SQLWhereEqual(new SQLJsonExpressions_1.SQLJsonValue(column.expression), // casts json null to null, including invalid paths
41
41
  SQLWhere_1.SQLWhereSign.Equal, new SQLExpressions_1.SQLNull());
42
42
  }
43
- return new SQLWhere_1.SQLWhereEqual(column.expression, SQLWhere_1.SQLWhereSign.Equal, (0, SQLExpressions_1.scalarToSQLExpression)(value));
43
+ return new SQLWhere_1.SQLWhereEqual(column.expression, SQLWhere_1.SQLWhereSign.Equal, (0, SQLExpressions_1.scalarToSQLExpression)(value)).setNullable(column.nullable);
44
44
  };
45
45
  }
46
46
  //# sourceMappingURL=equals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"equals.js","sourceRoot":"","sources":["../../../../src/filters/compilers/equals.ts"],"names":[],"mappings":";;AAQA,4DA+DC;AAvED,sDAAkF;AAClF,yDAAgF;AAChF,iEAAwF;AACxF,6CAAiG;AACjG,4CAAoG;AACpG,0DAAuD;AACvD,4EAAyE;AAEzE,SAAgB,wBAAwB,CAAC,MAAuB;IAC5D,OAAO,CAAC,cAAgC,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,IAAA,2BAAe,EAAC,cAAc,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAA,6CAAqB,EAAC,IAAA,qCAAwB,EAAC,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QACnF;;;;;WAKG;QACH,IAAI,MAAM,CAAC,IAAI,KAAK,wBAAY,CAAC,SAAS,EAAE,CAAC;YACzC,IAAI,KAAe,CAAC;YAEpB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC5B,KAAK,GAAG,IAAI,wBAAa,CACrB,IAAI,kCAAa,CACb,IAAI,yBAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAC/B,KAAK,EACL,IAAA,sCAAqB,EACjB,uBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAC7B,CACJ,EACD,uBAAY,CAAC,QAAQ,EACrB,IAAI,wBAAO,EAAE,CAChB,CAAC;YACN,CAAC;iBACI,CAAC;gBACF,KAAK,GAAG,IAAI,oCAAe,CACvB,MAAM,CAAC,UAAU,EACjB,IAAA,sCAAqB,EAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAC/C,CAAC;YACN,CAAC;YAED,0FAA0F;YAC1F,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACjB,KAAK,GAAG,IAAI,qBAAU,CAAC;oBACnB,KAAK;oBACL,IAAI,wBAAa,CACb,MAAM,CAAC,UAAU,EACjB,uBAAY,CAAC,KAAK,EAClB,IAAI,wBAAO,EAAE,CAChB;iBACJ,CAAC,CAAC;YACP,CAAC;YAED,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,KAAK,KAAK,IAAI,IAAI,IAAA,2BAAY,EAAC,MAAM,CAAC,EAAE,CAAC;YACzC,6DAA6D;YAC7D,OAAO,IAAI,wBAAa,CACpB,IAAI,iCAAY,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,mDAAmD;YACxF,uBAAY,CAAC,KAAK,EAClB,IAAI,wBAAO,EAAE,CAChB,CAAC;QACN,CAAC;QAED,OAAO,IAAI,wBAAa,CACpB,MAAM,CAAC,UAAU,EACjB,uBAAY,CAAC,KAAK,EAClB,IAAA,sCAAqB,EAAC,KAAK,CAAC,CAC/B,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC,CAAC;AACN,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { StamhoofdFilter } from '@stamhoofd/structures';
2
- import { SQLSyncFilterRunner } from '../SQLModernFilter';
2
+ import { SQLSyncFilterRunner } from '../SQLFilter';
3
3
  export declare function $greaterThanSQLFilterCompiler(filter: StamhoofdFilter): SQLSyncFilterRunner;
4
4
  //# sourceMappingURL=greater.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"greater.d.ts","sourceRoot":"","sources":["../../../../src/filters/compilers/greater.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGlF,OAAO,EAAqC,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGtF,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,eAAe,GAAG,mBAAmB,CAa1F"}
@@ -2,13 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.$greaterThanSQLFilterCompiler = $greaterThanSQLFilterCompiler;
4
4
  const structures_1 = require("@stamhoofd/structures");
5
- const SQLExpressions_1 = require("../../../SQLExpressions");
6
- const SQLWhere_1 = require("../../../SQLWhere");
7
- const SQLModernFilter_1 = require("../SQLModernFilter");
5
+ const SQLExpressions_1 = require("../../SQLExpressions");
6
+ const SQLWhere_1 = require("../../SQLWhere");
7
+ const SQLFilter_1 = require("../SQLFilter");
8
8
  const normalizeCompareValue_1 = require("../helpers/normalizeCompareValue");
9
9
  function $greaterThanSQLFilterCompiler(filter) {
10
10
  return (originalColumn) => {
11
- const column = (0, SQLModernFilter_1.normalizeColumn)(originalColumn);
11
+ const column = (0, SQLFilter_1.normalizeColumn)(originalColumn);
12
12
  const value = (0, normalizeCompareValue_1.normalizeCompareValue)((0, structures_1.assertFilterCompareValue)(filter), column.type);
13
13
  const base = new SQLWhere_1.SQLWhereEqual(column.expression, SQLWhere_1.SQLWhereSign.Greater, (0, SQLExpressions_1.scalarToSQLExpression)(value)).setNullable(column.nullable);
14
14
  return base;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"greater.js","sourceRoot":"","sources":["../../../../src/filters/compilers/greater.ts"],"names":[],"mappings":";;AAMA,sEAaC;AAnBD,sDAAkF;AAClF,yDAA6D;AAC7D,6CAA6D;AAC7D,4CAAsF;AACtF,4EAAyE;AAEzE,SAAgB,6BAA6B,CAAC,MAAuB;IACjE,OAAO,CAAC,cAAgC,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,IAAA,2BAAe,EAAC,cAAc,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAA,6CAAqB,EAAC,IAAA,qCAAwB,EAAC,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAEnF,MAAM,IAAI,GAAG,IAAI,wBAAa,CAC1B,MAAM,CAAC,UAAU,EACjB,uBAAY,CAAC,OAAO,EACpB,IAAA,sCAAqB,EAAC,KAAK,CAAC,CAC/B,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAE/B,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;AACN,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { StamhoofdFilter } from '@stamhoofd/structures';
2
- import { SQLSyncFilterRunner } from '../SQLModernFilter';
2
+ import { SQLSyncFilterRunner } from '../SQLFilter';
3
3
  export declare function $inSQLFilterCompiler(filter: StamhoofdFilter): SQLSyncFilterRunner;
4
4
  //# sourceMappingURL=in.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in.d.ts","sourceRoot":"","sources":["../../../../src/filters/compilers/in.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAIlF,OAAO,EAAqC,mBAAmB,EAAgB,MAAM,cAAc,CAAC;AAIpG,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,mBAAmB,CAoDjF"}
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.$inSQLFilterCompiler = $inSQLFilterCompiler;
4
4
  const simple_errors_1 = require("@simonbackx/simple-errors");
5
5
  const structures_1 = require("@stamhoofd/structures");
6
- const SQLExpressions_1 = require("../../../SQLExpressions");
7
- const SQLJsonExpressions_1 = require("../../../SQLJsonExpressions");
8
- const SQLWhere_1 = require("../../../SQLWhere");
9
- const SQLModernFilter_1 = require("../SQLModernFilter");
6
+ const SQLExpressions_1 = require("../../SQLExpressions");
7
+ const SQLJsonExpressions_1 = require("../../SQLJsonExpressions");
8
+ const SQLWhere_1 = require("../../SQLWhere");
9
+ const SQLFilter_1 = require("../SQLFilter");
10
10
  const normalizeCompareValue_1 = require("../helpers/normalizeCompareValue");
11
11
  const equals_1 = require("./equals");
12
12
  function $inSQLFilterCompiler(filter) {
@@ -23,7 +23,7 @@ function $inSQLFilterCompiler(filter) {
23
23
  message: 'Too many values in $in filter, maximum is 100',
24
24
  });
25
25
  }
26
- const column = (0, SQLModernFilter_1.normalizeColumn)(originalColumn);
26
+ const column = (0, SQLFilter_1.normalizeColumn)(originalColumn);
27
27
  const values = filter.map(val => (0, normalizeCompareValue_1.normalizeCompareValue)((0, structures_1.assertFilterCompareValue)(val), column.type));
28
28
  if (values.length === 0) {
29
29
  // Return always false
@@ -38,13 +38,13 @@ function $inSQLFilterCompiler(filter) {
38
38
  $inSQLFilterCompiler(valuesWithoutNulls)(column),
39
39
  ]);
40
40
  }
41
- if (column.type === SQLModernFilter_1.SQLModernValueType.JSONArray) {
41
+ if (column.type === SQLFilter_1.SQLValueType.JSONArray) {
42
42
  const jsonValues = JSON.stringify(valuesWithoutNulls);
43
43
  const valuesExpression = (0, SQLExpressions_1.scalarToSQLExpression)(jsonValues);
44
44
  return new SQLJsonExpressions_1.SQLJsonOverlaps(column.expression, valuesExpression);
45
45
  }
46
46
  const valuesExpression = valuesWithoutNulls.length === 1 ? (0, SQLExpressions_1.scalarToSQLExpression)(valuesWithoutNulls[0]) : new SQLExpressions_1.SQLArray(valuesWithoutNulls);
47
- return new SQLWhere_1.SQLWhereEqual(column.expression, SQLWhere_1.SQLWhereSign.Equal, valuesExpression);
47
+ return new SQLWhere_1.SQLWhereEqual(column.expression, SQLWhere_1.SQLWhereSign.Equal, valuesExpression).setNullable(column.nullable);
48
48
  };
49
49
  }
50
50
  //# sourceMappingURL=in.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in.js","sourceRoot":"","sources":["../../../../src/filters/compilers/in.ts"],"names":[],"mappings":";;AASA,oDAoDC;AA7DD,6DAAwD;AACxD,sDAAkF;AAClF,yDAAuE;AACvE,iEAA2D;AAC3D,6CAAyE;AACzE,4CAAoG;AACpG,4EAAyE;AACzE,qCAAoD;AAEpD,SAAgB,oBAAoB,CAAC,MAAuB;IACxD,OAAO,CAAC,cAAgC,EAAE,EAAE;QACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,2BAAW,CAAC;gBAClB,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,8BAA8B;aAC1C,CAAC,CAAC;QACP,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YACtB,MAAM,IAAI,2BAAW,CAAC;gBAClB,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,+CAA+C;aAC3D,CAAC,CAAC;QACP,CAAC;QAED,MAAM,MAAM,GAAG,IAAA,2BAAe,EAAC,cAAc,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAA,6CAAqB,EAAC,IAAA,qCAAwB,EAAC,GAAG,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAEpG,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,sBAAsB;YACtB,OAAO,IAAI,qBAAU,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC;QAED,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,KAAK,kBAAkB,CAAC,MAAM,CAAC;QAE5D,IAAI,OAAO,EAAE,CAAC;YACV,2IAA2I;YAC3I,OAAO,IAAI,qBAAU,CAAC;gBAClB,IAAA,iCAAwB,EAAC,IAAI,CAAC,CAAC,MAAM,CAAC;gBACtC,oBAAoB,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC;aACnD,CAAC,CAAC;QACP,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,wBAAY,CAAC,SAAS,EAAE,CAAC;YACzC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;YACtD,MAAM,gBAAgB,GAAG,IAAA,sCAAqB,EAAC,UAAU,CAAC,CAAC;YAE3D,OAAO,IAAI,oCAAe,CACtB,MAAM,CAAC,UAAU,EACjB,gBAAgB,CACnB,CAAC;QACN,CAAC;QACD,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAA,sCAAqB,EAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,yBAAQ,CAAC,kBAAkB,CAAC,CAAC;QAE3I,OAAO,IAAI,wBAAa,CACpB,MAAM,CAAC,UAAU,EACjB,uBAAY,CAAC,KAAK,EAClB,gBAAgB,CACnB,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC,CAAC;AACN,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/filters/compilers/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,MAAM,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/filters/compilers/index.ts"],"names":[],"mappings":";;;AAAA,iDAAuB;AACvB,oDAA0B;AAC1B,mDAAyB;AACzB,+CAAqB"}
@@ -1,4 +1,4 @@
1
1
  import { StamhoofdFilter } from '@stamhoofd/structures';
2
- import { SQLSyncFilterRunner } from '../SQLModernFilter';
2
+ import { SQLSyncFilterRunner } from '../SQLFilter';
3
3
  export declare function $lessThanSQLFilterCompiler(filter: StamhoofdFilter): SQLSyncFilterRunner;
4
4
  //# sourceMappingURL=less.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"less.d.ts","sourceRoot":"","sources":["../../../../src/filters/compilers/less.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGlF,OAAO,EAAqC,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGtF,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,eAAe,GAAG,mBAAmB,CAYvF"}
@@ -2,13 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.$lessThanSQLFilterCompiler = $lessThanSQLFilterCompiler;
4
4
  const structures_1 = require("@stamhoofd/structures");
5
- const SQLExpressions_1 = require("../../../SQLExpressions");
6
- const SQLWhere_1 = require("../../../SQLWhere");
7
- const SQLModernFilter_1 = require("../SQLModernFilter");
5
+ const SQLExpressions_1 = require("../../SQLExpressions");
6
+ const SQLWhere_1 = require("../../SQLWhere");
7
+ const SQLFilter_1 = require("../SQLFilter");
8
8
  const normalizeCompareValue_1 = require("../helpers/normalizeCompareValue");
9
9
  function $lessThanSQLFilterCompiler(filter) {
10
10
  return (originalColumn) => {
11
- const column = (0, SQLModernFilter_1.normalizeColumn)(originalColumn);
11
+ const column = (0, SQLFilter_1.normalizeColumn)(originalColumn);
12
12
  const value = (0, normalizeCompareValue_1.normalizeCompareValue)((0, structures_1.assertFilterCompareValue)(filter), column.type);
13
13
  const base = new SQLWhere_1.SQLWhereEqual(column.expression, SQLWhere_1.SQLWhereSign.Less, (0, SQLExpressions_1.scalarToSQLExpression)(value)).setNullable(column.nullable);
14
14
  return base;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"less.js","sourceRoot":"","sources":["../../../../src/filters/compilers/less.ts"],"names":[],"mappings":";;AAMA,gEAYC;AAlBD,sDAAkF;AAClF,yDAA6D;AAC7D,6CAA6D;AAC7D,4CAAsF;AACtF,4EAAyE;AAEzE,SAAgB,0BAA0B,CAAC,MAAuB;IAC9D,OAAO,CAAC,cAAgC,EAAE,EAAE;QACxC,MAAM,MAAM,GAAG,IAAA,2BAAe,EAAC,cAAc,CAAC,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAA,6CAAqB,EAAC,IAAA,qCAAwB,EAAC,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAEnF,MAAM,IAAI,GAAG,IAAI,wBAAa,CAC1B,MAAM,CAAC,UAAU,EACjB,uBAAY,CAAC,IAAI,EACjB,IAAA,sCAAqB,EAAC,KAAK,CAAC,CAC/B,CAAC,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;AACN,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { SQLCurrentColumn, SQLValueType } from '../SQLFilter';
2
+ export declare function isJSONColumn({ type }: SQLCurrentColumn): boolean;
3
+ export declare function isJSONType(type: SQLValueType): boolean;
4
+ //# sourceMappingURL=isJSONColumn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isJSONColumn.d.ts","sourceRoot":"","sources":["../../../../src/filters/helpers/isJSONColumn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE9D,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE,gBAAgB,GAAG,OAAO,CAEhE;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAMtD"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isJSONColumn = isJSONColumn;
4
+ exports.isJSONType = isJSONType;
5
+ const SQLFilter_1 = require("../SQLFilter");
6
+ function isJSONColumn({ type }) {
7
+ return isJSONType(type);
8
+ }
9
+ function isJSONType(type) {
10
+ return type === SQLFilter_1.SQLValueType.JSONString
11
+ || type === SQLFilter_1.SQLValueType.JSONBoolean
12
+ || type === SQLFilter_1.SQLValueType.JSONNumber
13
+ || type === SQLFilter_1.SQLValueType.JSONArray
14
+ || type === SQLFilter_1.SQLValueType.JSONObject;
15
+ }
16
+ //# sourceMappingURL=isJSONColumn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isJSONColumn.js","sourceRoot":"","sources":["../../../../src/filters/helpers/isJSONColumn.ts"],"names":[],"mappings":";;AAEA,oCAEC;AAED,gCAMC;AAZD,4CAA8D;AAE9D,SAAgB,YAAY,CAAC,EAAE,IAAI,EAAoB;IACnD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,SAAgB,UAAU,CAAC,IAAkB;IACzC,OAAO,IAAI,KAAK,wBAAY,CAAC,UAAU;WAChC,IAAI,KAAK,wBAAY,CAAC,WAAW;WACjC,IAAI,KAAK,wBAAY,CAAC,UAAU;WAChC,IAAI,KAAK,wBAAY,CAAC,SAAS;WAC/B,IAAI,KAAK,wBAAY,CAAC,UAAU,CAAC;AAC5C,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import { StamhoofdCompareValue } from '@stamhoofd/structures';
2
- import { SQLModernValueType } from '../SQLModernFilter';
2
+ import { SQLValueType } from '../SQLFilter';
3
3
  /**
4
4
  * Prepares a compare value so we can compare it, given a certain column type.
5
5
  *
6
6
  * E.g. if you pass in true - and we are comparing against a mysql boolean column, convert it to 1.
7
7
  */
8
- export declare function normalizeCompareValue(val: StamhoofdCompareValue, againstType: SQLModernValueType): string | number | Date | null | boolean;
8
+ export declare function normalizeCompareValue(val: StamhoofdCompareValue, againstType: SQLValueType): string | number | Date | null | boolean;
9
9
  //# sourceMappingURL=normalizeCompareValue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeCompareValue.d.ts","sourceRoot":"","sources":["../../../../src/filters/helpers/normalizeCompareValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,qBAAqB,EAAE,WAAW,EAAE,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,CAsFpI"}
@@ -1,65 +1,65 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.normalizeCompareValue = normalizeCompareValue;
4
- const SQLModernFilter_1 = require("../SQLModernFilter");
4
+ const SQLFilter_1 = require("../SQLFilter");
5
5
  /**
6
6
  * Prepares a compare value so we can compare it, given a certain column type.
7
7
  *
8
8
  * E.g. if you pass in true - and we are comparing against a mysql boolean column, convert it to 1.
9
9
  */
10
10
  function normalizeCompareValue(val, againstType) {
11
- if (againstType === SQLModernFilter_1.SQLModernValueType.Table) {
11
+ if (againstType === SQLFilter_1.SQLValueType.Table) {
12
12
  throw new Error('Cannot compare at root level');
13
13
  }
14
- if (againstType === SQLModernFilter_1.SQLModernValueType.JSONObject) {
14
+ if (againstType === SQLFilter_1.SQLValueType.JSONObject) {
15
15
  if (val === null) {
16
16
  return null;
17
17
  }
18
18
  throw new Error('Cannot compare with a JSON object');
19
19
  }
20
20
  if (val instanceof Date) {
21
- if (againstType === SQLModernFilter_1.SQLModernValueType.Datetime) {
21
+ if (againstType === SQLFilter_1.SQLValueType.Datetime) {
22
22
  return val;
23
23
  }
24
24
  throw new Error('Cannot compare a date with a non-datetime column');
25
25
  }
26
26
  if (typeof val === 'string') {
27
- if (againstType === SQLModernFilter_1.SQLModernValueType.String || againstType === SQLModernFilter_1.SQLModernValueType.JSONString) {
27
+ if (againstType === SQLFilter_1.SQLValueType.String || againstType === SQLFilter_1.SQLValueType.JSONString) {
28
28
  return val.toLocaleLowerCase();
29
29
  }
30
- if (againstType === SQLModernFilter_1.SQLModernValueType.JSONArray) {
30
+ if (againstType === SQLFilter_1.SQLValueType.JSONArray) {
31
31
  // We'll search inside the array
32
32
  return val.toLocaleLowerCase();
33
33
  }
34
34
  throw new Error('Cannot compare a string with a non-string column');
35
35
  }
36
36
  if (typeof val === 'boolean') {
37
- if (againstType === SQLModernFilter_1.SQLModernValueType.JSONBoolean) {
37
+ if (againstType === SQLFilter_1.SQLValueType.JSONBoolean) {
38
38
  return val;
39
39
  }
40
- if (againstType === SQLModernFilter_1.SQLModernValueType.Boolean || againstType === SQLModernFilter_1.SQLModernValueType.Number) {
40
+ if (againstType === SQLFilter_1.SQLValueType.Boolean || againstType === SQLFilter_1.SQLValueType.Number) {
41
41
  return val === true ? 1 : 0;
42
42
  }
43
- if (againstType === SQLModernFilter_1.SQLModernValueType.JSONArray) {
43
+ if (againstType === SQLFilter_1.SQLValueType.JSONArray) {
44
44
  // We'll search inside the array
45
45
  return val;
46
46
  }
47
47
  throw new Error('Cannot compare a boolean with a non-boolean column');
48
48
  }
49
49
  if (typeof val === 'number') {
50
- if (againstType === SQLModernFilter_1.SQLModernValueType.JSONBoolean) {
50
+ if (againstType === SQLFilter_1.SQLValueType.JSONBoolean) {
51
51
  return val === 1 ? true : false;
52
52
  }
53
- if (againstType === SQLModernFilter_1.SQLModernValueType.Boolean) {
53
+ if (againstType === SQLFilter_1.SQLValueType.Boolean) {
54
54
  if (val !== 1 && val !== 0) {
55
55
  throw new Error('Cannot compare a number with a boolean column');
56
56
  }
57
57
  return val;
58
58
  }
59
- if (againstType === SQLModernFilter_1.SQLModernValueType.Number || againstType === SQLModernFilter_1.SQLModernValueType.JSONNumber) {
59
+ if (againstType === SQLFilter_1.SQLValueType.Number || againstType === SQLFilter_1.SQLValueType.JSONNumber) {
60
60
  return val;
61
61
  }
62
- if (againstType === SQLModernFilter_1.SQLModernValueType.JSONArray) {
62
+ if (againstType === SQLFilter_1.SQLValueType.JSONArray) {
63
63
  // We'll search inside the array
64
64
  return val;
65
65
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"normalizeCompareValue.js","sourceRoot":"","sources":["../../../../src/filters/helpers/normalizeCompareValue.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- const SQLModernFilter_1 = require("../../src/filters/modern/SQLModernFilter");
3
+ const SQLFilter_1 = require("../../src/filters/SQLFilter");
4
4
  const SQL_1 = require("../../src/SQL");
5
5
  const utils_1 = require("../utils");
6
6
  describe('$and', () => {
@@ -12,8 +12,8 @@ describe('$and', () => {
12
12
  });
13
13
  it('If one child is always false, the whole $and is always false', async () => {
14
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 }),
15
+ ...SQLFilter_1.baseSQLFilterCompilers,
16
+ name: (0, SQLFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLFilter_1.SQLValueType.String, nullable: true }),
17
17
  };
18
18
  await (0, utils_1.test)({
19
19
  filter: {
@@ -31,10 +31,41 @@ describe('$and', () => {
31
31
  },
32
32
  });
33
33
  });
34
+ /**
35
+ * Regression:
36
+ * when using $lte on a nullable field, it sometimes didn't group the OR
37
+ * and caused:
38
+ * (birthday >= x) AND birthday <= x OR birthday is null
39
+ * instead of
40
+ * birthday >= x AND (birthday <= x OR birthday is null)
41
+ *
42
+ * This was caused by incorrect WhereNot.isSingle logic ($lte and $gte uses not $gt and not $lt under the hood)
43
+ */
44
+ it('Grouping nullable $lte and $gte correctly inside $and', async () => {
45
+ const filters = {
46
+ ...SQLFilter_1.baseSQLFilterCompilers,
47
+ birthDay: (0, SQLFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('birthDay'), type: SQLFilter_1.SQLValueType.Datetime, nullable: true }),
48
+ };
49
+ await (0, utils_1.test)({
50
+ filter: {
51
+ birthDay: {
52
+ $and: {
53
+ $gte: new Date(200),
54
+ $lte: new Date(500),
55
+ },
56
+ },
57
+ },
58
+ filters,
59
+ query: {
60
+ query: '`default`.`birthDay` >= ? AND (`default`.`birthDay` <= ? OR `default`.`birthDay` IS NULL)',
61
+ params: [new Date(200), new Date(500)],
62
+ },
63
+ });
64
+ });
34
65
  it('An empty $and is always true', async () => {
35
66
  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 }),
67
+ ...SQLFilter_1.baseSQLFilterCompilers,
68
+ name: (0, SQLFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLFilter_1.SQLValueType.String, nullable: true }),
38
69
  };
39
70
  await (0, utils_1.test)({
40
71
  filter: {
@@ -49,8 +80,8 @@ describe('$and', () => {
49
80
  });
50
81
  it('If all children are always true, the whole $and is always true', async () => {
51
82
  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 }),
83
+ ...SQLFilter_1.baseSQLFilterCompilers,
84
+ name: (0, SQLFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLFilter_1.SQLValueType.String, nullable: true }),
54
85
  };
55
86
  await (0, utils_1.test)({
56
87
  filter: {
@@ -74,8 +105,8 @@ describe('$and', () => {
74
105
  });
75
106
  it('Children that are always true are removed from the $and', async () => {
76
107
  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 }),
108
+ ...SQLFilter_1.baseSQLFilterCompilers,
109
+ name: (0, SQLFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLFilter_1.SQLValueType.String, nullable: true }),
79
110
  };
80
111
  await (0, utils_1.test)({
81
112
  filter: {
@@ -98,8 +129,8 @@ describe('$and', () => {
98
129
  });
99
130
  it('Can be used with direct object child', async () => {
100
131
  const filters = {
101
- ...SQLModernFilter_1.baseModernSQLFilterCompilers,
102
- name: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: false }),
132
+ ...SQLFilter_1.baseSQLFilterCompilers,
133
+ name: (0, SQLFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLFilter_1.SQLValueType.String, nullable: false }),
103
134
  };
104
135
  await (0, utils_1.test)({
105
136
  filter: {
@@ -119,9 +150,9 @@ describe('$and', () => {
119
150
  });
120
151
  it('NOT (A AND B) is simplified to (NOT A or not B)', async () => {
121
152
  const filters = {
122
- ...SQLModernFilter_1.baseModernSQLFilterCompilers,
123
- name: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: false }),
124
- createdAt: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('createdAt'), type: SQLModernFilter_1.SQLModernValueType.Datetime, nullable: false }),
153
+ ...SQLFilter_1.baseSQLFilterCompilers,
154
+ name: (0, SQLFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLFilter_1.SQLValueType.String, nullable: false }),
155
+ createdAt: (0, SQLFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('createdAt'), type: SQLFilter_1.SQLValueType.Datetime, nullable: false }),
125
156
  };
126
157
  await (0, utils_1.test)({
127
158
  filter: {
@@ -139,8 +170,8 @@ describe('$and', () => {
139
170
  });
140
171
  it('empty $and branches are removed', async () => {
141
172
  const filters = {
142
- ...SQLModernFilter_1.baseModernSQLFilterCompilers,
143
- name: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: false }),
173
+ ...SQLFilter_1.baseSQLFilterCompilers,
174
+ name: (0, SQLFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLFilter_1.SQLValueType.String, nullable: false }),
144
175
  };
145
176
  await (0, utils_1.test)({
146
177
  filter: {
@@ -158,8 +189,8 @@ describe('$and', () => {
158
189
  });
159
190
  it('deep $and branches are cleaned up', async () => {
160
191
  const filters = {
161
- ...SQLModernFilter_1.baseModernSQLFilterCompilers,
162
- name: (0, SQLModernFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLModernFilter_1.SQLModernValueType.String, nullable: false }),
192
+ ...SQLFilter_1.baseSQLFilterCompilers,
193
+ name: (0, SQLFilter_1.createColumnFilter)({ expression: SQL_1.SQL.column('name'), type: SQLFilter_1.SQLValueType.String, nullable: false }),
163
194
  };
164
195
  await (0, utils_1.test)({
165
196
  filter: {
@@ -1 +1 @@
1
- {"version":3,"file":"$and.test.js","sourceRoot":"","sources":["../../../tests/filters/$and.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"$and.test.js","sourceRoot":"","sources":["../../../tests/filters/$and.test.ts"],"names":[],"mappings":"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"}