@devrev/meerkat-core 0.0.109 → 0.0.111

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 (46) hide show
  1. package/package.json +1 -1
  2. package/src/cube-filter-transformer/contains/contains.d.ts +0 -6
  3. package/src/cube-filter-transformer/contains/contains.js +10 -2
  4. package/src/cube-filter-transformer/contains/contains.js.map +1 -1
  5. package/src/cube-filter-transformer/equals/equals-array.js +9 -3
  6. package/src/cube-filter-transformer/equals/equals-array.js.map +1 -1
  7. package/src/cube-filter-transformer/equals/equals.js +9 -2
  8. package/src/cube-filter-transformer/equals/equals.js.map +1 -1
  9. package/src/cube-filter-transformer/gt/gt.js +10 -2
  10. package/src/cube-filter-transformer/gt/gt.js.map +1 -1
  11. package/src/cube-filter-transformer/gte/gte.js +10 -2
  12. package/src/cube-filter-transformer/gte/gte.js.map +1 -1
  13. package/src/cube-filter-transformer/in/in.js +10 -3
  14. package/src/cube-filter-transformer/in/in.js.map +1 -1
  15. package/src/cube-filter-transformer/in-date-range/in-date-range.js +11 -3
  16. package/src/cube-filter-transformer/in-date-range/in-date-range.js.map +1 -1
  17. package/src/cube-filter-transformer/lt/lt.js +10 -2
  18. package/src/cube-filter-transformer/lt/lt.js.map +1 -1
  19. package/src/cube-filter-transformer/lte/lte.js +10 -2
  20. package/src/cube-filter-transformer/lte/lte.js.map +1 -1
  21. package/src/cube-filter-transformer/not-In-date-range/not-In-date-range.js +9 -2
  22. package/src/cube-filter-transformer/not-In-date-range/not-In-date-range.js.map +1 -1
  23. package/src/cube-filter-transformer/not-contains/not-contains.d.ts +0 -6
  24. package/src/cube-filter-transformer/not-contains/not-contains.js +10 -2
  25. package/src/cube-filter-transformer/not-contains/not-contains.js.map +1 -1
  26. package/src/cube-filter-transformer/not-equals/not-equals-array.js +6 -2
  27. package/src/cube-filter-transformer/not-equals/not-equals-array.js.map +1 -1
  28. package/src/cube-filter-transformer/not-equals/not-equals.d.ts +0 -6
  29. package/src/cube-filter-transformer/not-equals/not-equals.js +14 -6
  30. package/src/cube-filter-transformer/not-equals/not-equals.js.map +1 -1
  31. package/src/cube-filter-transformer/not-in/not-in.js +9 -3
  32. package/src/cube-filter-transformer/not-in/not-in.js.map +1 -1
  33. package/src/cube-filter-transformer/or/or.js.map +1 -1
  34. package/src/cube-filter-transformer/sql-expression/sql-expression-parser.d.ts +10 -0
  35. package/src/cube-filter-transformer/sql-expression/sql-expression-parser.js +102 -0
  36. package/src/cube-filter-transformer/sql-expression/sql-expression-parser.js.map +1 -0
  37. package/src/cube-to-duckdb/cube-filter-to-duckdb.d.ts +13 -2
  38. package/src/cube-to-duckdb/cube-filter-to-duckdb.js +8 -0
  39. package/src/cube-to-duckdb/cube-filter-to-duckdb.js.map +1 -1
  40. package/src/index.d.ts +1 -0
  41. package/src/index.js +4 -1
  42. package/src/index.js.map +1 -1
  43. package/src/types/cube-types/query.d.ts +16 -3
  44. package/src/types/cube-types/query.js +8 -1
  45. package/src/types/cube-types/query.js.map +1 -1
  46. package/src/utils/cube-filter-enrichment.d.ts +1 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devrev/meerkat-core",
3
- "version": "0.0.109",
3
+ "version": "0.0.111",
4
4
  "dependencies": {
5
5
  "tslib": "^2.3.0"
6
6
  },
@@ -1,12 +1,6 @@
1
- import { Member, QueryFilter } from '../../types/cube-types/query';
2
1
  import { Dimension, Measure } from '../../types/cube-types/table';
3
2
  import { ExpressionClass, ExpressionType } from '../../types/duckdb-serialization-types/serialization/Expression';
4
3
  import { CubeToParseExpressionTransform } from '../factory';
5
- export interface ContainsFilters extends QueryFilter {
6
- member: Member;
7
- operator: 'contains';
8
- values: string[];
9
- }
10
4
  export declare const containsDuckdbCondition: (columnName: string, value: string, memberInfo: Measure | Dimension) => {
11
5
  class: ExpressionClass;
12
6
  type: ExpressionType;
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.containsTransform = exports.containsDuckdbCondition = void 0;
4
+ const cube_filter_to_duckdb_1 = require("../../cube-to-duckdb/cube-filter-to-duckdb");
4
5
  const constants_1 = require("../../member-formatters/constants");
5
6
  const Expression_1 = require("../../types/duckdb-serialization-types/serialization/Expression");
6
7
  const base_condition_builder_1 = require("../base-condition-builder/base-condition-builder");
7
8
  const or_1 = require("../or/or");
9
+ const sql_expression_parser_1 = require("../sql-expression/sql-expression-parser");
8
10
  const containsDuckdbCondition = (columnName, value, memberInfo) => {
9
11
  return {
10
12
  class: Expression_1.ExpressionClass.FUNCTION,
@@ -39,10 +41,16 @@ const containsDuckdbCondition = (columnName, value, memberInfo) => {
39
41
  };
40
42
  exports.containsDuckdbCondition = containsDuckdbCondition;
41
43
  const containsTransform = (query) => {
42
- const { member, values, memberInfo } = query;
43
- if (!values || values.length === 0) {
44
+ const { member, memberInfo } = query;
45
+ // SQL expressions not supported for contains operator
46
+ if ((0, cube_filter_to_duckdb_1.isQueryOperatorsWithSQLInfo)(query)) {
47
+ return (0, sql_expression_parser_1.getSQLExpressionAST)(member, query.sqlExpression, 'contains');
48
+ }
49
+ // Otherwise, use values
50
+ if (!query.values || query.values.length === 0) {
44
51
  throw new Error('Contains filter must have at least one value');
45
52
  }
53
+ const values = query.values;
46
54
  /**
47
55
  * If there is only one value, we can create a simple Contains condition
48
56
  */
@@ -1 +1 @@
1
- {"version":3,"file":"contains.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/contains/contains.ts"],"names":[],"mappings":";;;AAGA,iEAA0E;AAC1E,gGAGyE;AACzE,6FAAgF;AAEhF,iCAA6C;AAQtC,MAAM,uBAAuB,GAAG,CACrC,UAAkB,EAClB,KAAa,EACb,UAA+B,EAC/B,EAAE;IACF,OAAO;QACL,KAAK,EAAE,4BAAe,CAAC,QAAQ;QAC/B,IAAI,EAAE,2BAAc,CAAC,QAAQ;QAC7B,KAAK,EAAE,EAAE;QACT,aAAa,EAAE,KAAK;QACpB,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACR;gBACE,KAAK,EAAE,YAAY;gBACnB,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,EAAE;gBACT,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,iCAAqB,CAAC;aACtD;YACD;gBACE,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,IAAA,qCAAY,EAAC,IAAI,KAAK,GAAG,EAAE,UAAU,CAAC;aAC9C;SACF;QACD,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE;YACT,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,EAAE;SACX;QACD,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE,EAAE;KACZ,CAAC;AACJ,CAAC,CAAC;AAnCW,QAAA,uBAAuB,2BAmClC;AAEK,MAAM,iBAAiB,GAAmC,CAAC,KAAK,EAAE,EAAE;IACzE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAE7C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAClC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;KACjE;IAED;;OAEG;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,IAAA,+BAAuB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;KAC/D;IAED;;OAEG;IACH,MAAM,WAAW,GAAG,IAAA,sBAAiB,GAAE,CAAC;IACxC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,WAAW,CAAC,QAAQ,CAAC,IAAI,CACvB,IAAA,+BAAuB,EAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CACnD,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAxBW,QAAA,iBAAiB,qBAwB5B"}
1
+ {"version":3,"file":"contains.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/contains/contains.ts"],"names":[],"mappings":";;;AAAA,sFAAyF;AAGzF,iEAA0E;AAC1E,gGAGyE;AACzE,6FAAgF;AAEhF,iCAA6C;AAC7C,mFAA8E;AAEvE,MAAM,uBAAuB,GAAG,CACrC,UAAkB,EAClB,KAAa,EACb,UAA+B,EAC/B,EAAE;IACF,OAAO;QACL,KAAK,EAAE,4BAAe,CAAC,QAAQ;QAC/B,IAAI,EAAE,2BAAc,CAAC,QAAQ;QAC7B,KAAK,EAAE,EAAE;QACT,aAAa,EAAE,KAAK;QACpB,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACR;gBACE,KAAK,EAAE,YAAY;gBACnB,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,EAAE;gBACT,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,iCAAqB,CAAC;aACtD;YACD;gBACE,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,IAAA,qCAAY,EAAC,IAAI,KAAK,GAAG,EAAE,UAAU,CAAC;aAC9C;SACF;QACD,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE;YACT,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,EAAE;SACX;QACD,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE,EAAE;KACZ,CAAC;AACJ,CAAC,CAAC;AAnCW,QAAA,uBAAuB,2BAmClC;AAEK,MAAM,iBAAiB,GAAmC,CAAC,KAAK,EAAE,EAAE;IACzE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAErC,sDAAsD;IACtD,IAAI,IAAA,mDAA2B,EAAC,KAAK,CAAC,EAAE;QACtC,OAAO,IAAA,2CAAmB,EAAC,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;KACrE;IAED,wBAAwB;IACxB,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9C,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;KACjE;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B;;OAEG;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,IAAA,+BAAuB,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;KAC/D;IAED;;OAEG;IACH,MAAM,WAAW,GAAG,IAAA,sBAAiB,GAAE,CAAC;IACxC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,WAAW,CAAC,QAAQ,CAAC,IAAI,CACvB,IAAA,+BAAuB,EAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CACnD,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAhCW,QAAA,iBAAiB,qBAgC5B"}
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.equalsArrayTransform = void 0;
4
+ const cube_filter_to_duckdb_1 = require("../../cube-to-duckdb/cube-filter-to-duckdb");
4
5
  const constants_1 = require("../../member-formatters/constants");
5
6
  const Expression_1 = require("../../types/duckdb-serialization-types/serialization/Expression");
6
7
  const ResultModifier_1 = require("../../types/duckdb-serialization-types/serialization/ResultModifier");
7
8
  const base_condition_builder_1 = require("../base-condition-builder/base-condition-builder");
9
+ const sql_expression_parser_1 = require("../sql-expression/sql-expression-parser");
8
10
  const equalsDuckDbCondition = (columnName, values, memberInfo) => {
9
11
  const columnRef = {
10
12
  class: Expression_1.ExpressionClass.COLUMN_REF,
@@ -58,14 +60,18 @@ const equalsDuckDbCondition = (columnName, values, memberInfo) => {
58
60
  return sqlTree;
59
61
  };
60
62
  const equalsArrayTransform = (query) => {
61
- const { member, values, memberInfo } = query;
63
+ const { member, memberInfo } = query;
64
+ // SQL expressions not supported for equals operator
65
+ if ((0, cube_filter_to_duckdb_1.isQueryOperatorsWithSQLInfo)(query)) {
66
+ return (0, sql_expression_parser_1.getSQLExpressionAST)(member, query.sqlExpression, 'equals');
67
+ }
62
68
  /**
63
69
  * If there is only one value, we can create a simple equals condition
64
70
  */
65
- if (!values) {
71
+ if (!query.values) {
66
72
  throw new Error('In filter must have at least one value');
67
73
  }
68
- return equalsDuckDbCondition(member, values, memberInfo);
74
+ return equalsDuckDbCondition(member, query.values, memberInfo);
69
75
  };
70
76
  exports.equalsArrayTransform = equalsArrayTransform;
71
77
  //# sourceMappingURL=equals-array.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"equals-array.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/equals/equals-array.ts"],"names":[],"mappings":";;;AAAA,iEAA0E;AAE1E,gGAGyE;AACzE,wGAAyG;AACzG,6FAAgF;AAGhF,MAAM,qBAAqB,GAAG,CAC5B,UAAkB,EAClB,MAAgB,EAChB,UAA+B,EAC/B,EAAE;IACF,MAAM,SAAS,GAAG;QAChB,KAAK,EAAE,4BAAe,CAAC,UAAU;QACjC,IAAI,EAAE,2BAAc,CAAC,UAAU;QAC/B,KAAK,EAAE,EAAE;QACT,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,iCAAqB,CAAC;KACtD,CAAC;IAEF,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACzC,MAAM,QAAQ,GAAG;YACf,KAAK,EAAE,4BAAe,CAAC,QAAQ;YAC/B,IAAI,EAAE,2BAAc,CAAC,cAAc;YACnC,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,IAAA,qCAAY,EAAC,KAAK,EAAE,UAAU,CAAC;SACvC,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG;QACxB,KAAK,EAAE,4BAAe,CAAC,QAAQ;QAC/B,IAAI,EAAE,2BAAc,CAAC,QAAQ;QAC7B,KAAK,EAAE,EAAE;QACT,aAAa,EAAE,YAAY;QAC3B,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,aAAa;QACvB,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE;YACT,IAAI,EAAE,mCAAkB,CAAC,cAAc;YACvC,MAAM,EAAE,EAAE;SACX;QACD,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE,EAAE;KACZ,CAAC;IAEF,MAAM,OAAO,GAAG;QACd,KAAK,EAAE,4BAAe,CAAC,QAAQ;QAC/B,IAAI,EAAE,2BAAc,CAAC,QAAQ;QAC7B,KAAK,EAAE,EAAE;QACT,aAAa,EAAE,cAAc;QAC7B,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,CAAC,SAAS,EAAE,iBAAiB,CAAC;QACxC,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE;YACT,IAAI,EAAE,mCAAkB,CAAC,cAAc;YACvC,MAAM,EAAE,EAAE;SACX;QACD,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE,EAAE;KACZ,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEK,MAAM,oBAAoB,GAAmC,CAAC,KAAK,EAAE,EAAE;IAC5E,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAC7C;;OAEG;IACH,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;KAC3D;IACD,OAAO,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAC3D,CAAC,CAAC;AATW,QAAA,oBAAoB,wBAS/B"}
1
+ {"version":3,"file":"equals-array.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/equals/equals-array.ts"],"names":[],"mappings":";;;AAAA,sFAAyF;AACzF,iEAA0E;AAE1E,gGAGyE;AACzE,wGAAyG;AACzG,6FAAgF;AAEhF,mFAA8E;AAE9E,MAAM,qBAAqB,GAAG,CAC5B,UAAkB,EAClB,MAAgB,EAChB,UAA+B,EAC/B,EAAE;IACF,MAAM,SAAS,GAAG;QAChB,KAAK,EAAE,4BAAe,CAAC,UAAU;QACjC,IAAI,EAAE,2BAAc,CAAC,UAAU;QAC/B,KAAK,EAAE,EAAE;QACT,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,iCAAqB,CAAC;KACtD,CAAC;IAEF,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACzC,MAAM,QAAQ,GAAG;YACf,KAAK,EAAE,4BAAe,CAAC,QAAQ;YAC/B,IAAI,EAAE,2BAAc,CAAC,cAAc;YACnC,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,IAAA,qCAAY,EAAC,KAAK,EAAE,UAAU,CAAC;SACvC,CAAC;QACF,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG;QACxB,KAAK,EAAE,4BAAe,CAAC,QAAQ;QAC/B,IAAI,EAAE,2BAAc,CAAC,QAAQ;QAC7B,KAAK,EAAE,EAAE;QACT,aAAa,EAAE,YAAY;QAC3B,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,aAAa;QACvB,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE;YACT,IAAI,EAAE,mCAAkB,CAAC,cAAc;YACvC,MAAM,EAAE,EAAE;SACX;QACD,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE,EAAE;KACZ,CAAC;IAEF,MAAM,OAAO,GAAG;QACd,KAAK,EAAE,4BAAe,CAAC,QAAQ;QAC/B,IAAI,EAAE,2BAAc,CAAC,QAAQ;QAC7B,KAAK,EAAE,EAAE;QACT,aAAa,EAAE,cAAc;QAC7B,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,CAAC,SAAS,EAAE,iBAAiB,CAAC;QACxC,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE;YACT,IAAI,EAAE,mCAAkB,CAAC,cAAc;YACvC,MAAM,EAAE,EAAE;SACX;QACD,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE,EAAE;KACZ,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEK,MAAM,oBAAoB,GAAmC,CAAC,KAAK,EAAE,EAAE;IAC5E,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAErC,oDAAoD;IACpD,IAAI,IAAA,mDAA2B,EAAC,KAAK,CAAC,EAAE;QACtC,OAAO,IAAA,2CAAmB,EAAC,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;KACnE;IAED;;OAEG;IACH,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;QACjB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;KAC3D;IACD,OAAO,qBAAqB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACjE,CAAC,CAAC;AAfW,QAAA,oBAAoB,wBAe/B"}
@@ -1,17 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.equalsTransform = void 0;
4
+ const cube_filter_to_duckdb_1 = require("../../cube-to-duckdb/cube-filter-to-duckdb");
4
5
  const Expression_1 = require("../../types/duckdb-serialization-types/serialization/Expression");
5
6
  const is_array_member_type_1 = require("../../utils/is-array-member-type");
6
7
  const and_1 = require("../and/and");
7
8
  const base_condition_builder_1 = require("../base-condition-builder/base-condition-builder");
9
+ const sql_expression_parser_1 = require("../sql-expression/sql-expression-parser");
8
10
  const equals_array_1 = require("./equals-array");
9
11
  const equalsTransform = (query) => {
10
- const { member, values } = query;
12
+ const { member, memberInfo } = query;
13
+ // SQL expressions not supported for equals operator
14
+ if ((0, cube_filter_to_duckdb_1.isQueryOperatorsWithSQLInfo)(query)) {
15
+ return (0, sql_expression_parser_1.getSQLExpressionAST)(member, query.sqlExpression, 'equals');
16
+ }
17
+ const values = query.values;
11
18
  /**
12
19
  * If the member is an array, we need to use the array transform
13
20
  */
14
- if ((0, is_array_member_type_1.isArrayTypeMember)(query.memberInfo.type)) {
21
+ if ((0, is_array_member_type_1.isArrayTypeMember)(memberInfo.type)) {
15
22
  return (0, equals_array_1.equalsArrayTransform)(query);
16
23
  }
17
24
  if (!values || values.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"equals.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/equals/equals.ts"],"names":[],"mappings":";;;AAAA,gGAAiG;AACjG,2EAAqE;AACrE,oCAAgD;AAChD,6FAAuF;AAEvF,iDAAsD;AAE/C,MAAM,eAAe,GAAmC,CAAC,KAAK,EAAE,EAAE;IACvE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEjC;;OAEG;IACH,IAAI,IAAA,wCAAiB,EAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QAC5C,OAAO,IAAA,mCAAoB,EAAC,KAAK,CAAC,CAAC;KACpC;IAED,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAClC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;KAC/D;IAED;;OAEG;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,IAAA,4CAAmB,EACxB,MAAM,EACN,2BAAc,CAAC,aAAa,EAC5B,MAAM,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,UAAU,CACjB,CAAC;KACH;IAED;;OAEG;IACH,MAAM,YAAY,GAAG,IAAA,wBAAkB,GAAE,CAAC;IAC1C,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,YAAY,CAAC,QAAQ,CAAC,IAAI,CACxB,IAAA,4CAAmB,EACjB,MAAM,EACN,2BAAc,CAAC,aAAa,EAC5B,KAAK,EACL,KAAK,CAAC,UAAU,CACjB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAzCW,QAAA,eAAe,mBAyC1B"}
1
+ {"version":3,"file":"equals.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/equals/equals.ts"],"names":[],"mappings":";;;AAAA,sFAAyF;AACzF,gGAAiG;AACjG,2EAAqE;AACrE,oCAAgD;AAChD,6FAAuF;AAEvF,mFAA8E;AAC9E,iDAAsD;AAE/C,MAAM,eAAe,GAAmC,CAAC,KAAK,EAAE,EAAE;IACvE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAErC,oDAAoD;IACpD,IAAI,IAAA,mDAA2B,EAAC,KAAK,CAAC,EAAE;QACtC,OAAO,IAAA,2CAAmB,EAAC,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;KACnE;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B;;OAEG;IACH,IAAI,IAAA,wCAAiB,EAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACtC,OAAO,IAAA,mCAAoB,EAAC,KAAK,CAAC,CAAC;KACpC;IACD,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAClC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;KAC/D;IACD;;OAEG;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,IAAA,4CAAmB,EACxB,MAAM,EACN,2BAAc,CAAC,aAAa,EAC5B,MAAM,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,UAAU,CACjB,CAAC;KACH;IAED;;OAEG;IACH,MAAM,YAAY,GAAG,IAAA,wBAAkB,GAAE,CAAC;IAC1C,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,YAAY,CAAC,QAAQ,CAAC,IAAI,CACxB,IAAA,4CAAmB,EACjB,MAAM,EACN,2BAAc,CAAC,aAAa,EAC5B,KAAK,EACL,KAAK,CAAC,UAAU,CACjB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AA9CW,QAAA,eAAe,mBA8C1B"}
@@ -1,14 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.gtTransform = void 0;
4
+ const cube_filter_to_duckdb_1 = require("../../cube-to-duckdb/cube-filter-to-duckdb");
4
5
  const Expression_1 = require("../../types/duckdb-serialization-types/serialization/Expression");
5
6
  const base_condition_builder_1 = require("../base-condition-builder/base-condition-builder");
6
7
  const or_1 = require("../or/or");
8
+ const sql_expression_parser_1 = require("../sql-expression/sql-expression-parser");
7
9
  const gtTransform = (query) => {
8
- const { member, values } = query;
9
- if (!values || values.length === 0) {
10
+ const { member } = query;
11
+ // SQL expressions not supported for gt operator
12
+ if ((0, cube_filter_to_duckdb_1.isQueryOperatorsWithSQLInfo)(query)) {
13
+ return (0, sql_expression_parser_1.getSQLExpressionAST)(member, query.sqlExpression, 'gt');
14
+ }
15
+ // Otherwise, use values
16
+ if (!query.values || query.values.length === 0) {
10
17
  throw new Error('GT filter must have at least one value');
11
18
  }
19
+ const values = query.values;
12
20
  /**
13
21
  * If there is only one value, we can create a simple equals condition
14
22
  */
@@ -1 +1 @@
1
- {"version":3,"file":"gt.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/gt/gt.ts"],"names":[],"mappings":";;;AAAA,gGAAiG;AACjG,6FAAuF;AAEvF,iCAA6C;AAEtC,MAAM,WAAW,GAAmC,CAAC,KAAK,EAAE,EAAE;IACnE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEjC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAClC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;KAC3D;IAED;;OAEG;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,IAAA,4CAAmB,EACxB,MAAM,EACN,2BAAc,CAAC,mBAAmB,EAClC,MAAM,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,UAAU,CACjB,CAAC;KACH;IAED;;OAEG;IACH,MAAM,WAAW,GAAG,IAAA,sBAAiB,GAAE,CAAC;IACxC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,WAAW,CAAC,QAAQ,CAAC,IAAI,CACvB,IAAA,4CAAmB,EACjB,MAAM,EACN,2BAAc,CAAC,mBAAmB,EAClC,KAAK,EACL,KAAK,CAAC,UAAU,CACjB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAlCW,QAAA,WAAW,eAkCtB"}
1
+ {"version":3,"file":"gt.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/gt/gt.ts"],"names":[],"mappings":";;;AAAA,sFAAyF;AACzF,gGAAiG;AACjG,6FAAuF;AAEvF,iCAA6C;AAC7C,mFAA8E;AAEvE,MAAM,WAAW,GAAmC,CAAC,KAAK,EAAE,EAAE;IACnE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEzB,gDAAgD;IAChD,IAAI,IAAA,mDAA2B,EAAC,KAAK,CAAC,EAAE;QACtC,OAAO,IAAA,2CAAmB,EAAC,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;KAC/D;IAED,wBAAwB;IACxB,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;KAC3D;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B;;OAEG;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,IAAA,4CAAmB,EACxB,MAAM,EACN,2BAAc,CAAC,mBAAmB,EAClC,MAAM,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,UAAU,CACjB,CAAC;KACH;IAED;;OAEG;IACH,MAAM,WAAW,GAAG,IAAA,sBAAiB,GAAE,CAAC;IACxC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,WAAW,CAAC,QAAQ,CAAC,IAAI,CACvB,IAAA,4CAAmB,EACjB,MAAM,EACN,2BAAc,CAAC,mBAAmB,EAClC,KAAK,EACL,KAAK,CAAC,UAAU,CACjB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AA1CW,QAAA,WAAW,eA0CtB"}
@@ -1,14 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.gteTransform = void 0;
4
+ const cube_filter_to_duckdb_1 = require("../../cube-to-duckdb/cube-filter-to-duckdb");
4
5
  const Expression_1 = require("../../types/duckdb-serialization-types/serialization/Expression");
5
6
  const base_condition_builder_1 = require("../base-condition-builder/base-condition-builder");
6
7
  const or_1 = require("../or/or");
8
+ const sql_expression_parser_1 = require("../sql-expression/sql-expression-parser");
7
9
  const gteTransform = (query) => {
8
- const { member, values } = query;
9
- if (!values || values.length === 0) {
10
+ const { member } = query;
11
+ // SQL expressions not supported for gte operator
12
+ if ((0, cube_filter_to_duckdb_1.isQueryOperatorsWithSQLInfo)(query)) {
13
+ return (0, sql_expression_parser_1.getSQLExpressionAST)(member, query.sqlExpression, 'gte');
14
+ }
15
+ // Otherwise, use values
16
+ if (!query.values || query.values.length === 0) {
10
17
  throw new Error('GTE filter must have at least one value');
11
18
  }
19
+ const { values } = query;
12
20
  /**
13
21
  * If there is only one value, we can create a simple equals condition
14
22
  */
@@ -1 +1 @@
1
- {"version":3,"file":"gte.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/gte/gte.ts"],"names":[],"mappings":";;;AAAA,gGAAiG;AACjG,6FAAuF;AAEvF,iCAA6C;AAEtC,MAAM,YAAY,GAAmC,CAAC,KAAK,EAAE,EAAE;IACpE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEjC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAClC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;KAC5D;IAED;;OAEG;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,IAAA,4CAAmB,EACxB,MAAM,EACN,2BAAc,CAAC,4BAA4B,EAC3C,MAAM,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,UAAU,CACjB,CAAC;KACH;IAED;;OAEG;IACH,MAAM,WAAW,GAAG,IAAA,sBAAiB,GAAE,CAAC;IACxC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,WAAW,CAAC,QAAQ,CAAC,IAAI,CACvB,IAAA,4CAAmB,EACjB,MAAM,EACN,2BAAc,CAAC,4BAA4B,EAC3C,KAAK,EACL,KAAK,CAAC,UAAU,CACjB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAlCW,QAAA,YAAY,gBAkCvB"}
1
+ {"version":3,"file":"gte.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/gte/gte.ts"],"names":[],"mappings":";;;AAAA,sFAAyF;AACzF,gGAAiG;AACjG,6FAAuF;AAEvF,iCAA6C;AAC7C,mFAA8E;AAEvE,MAAM,YAAY,GAAmC,CAAC,KAAK,EAAE,EAAE;IACpE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEzB,iDAAiD;IACjD,IAAI,IAAA,mDAA2B,EAAC,KAAK,CAAC,EAAE;QACtC,OAAO,IAAA,2CAAmB,EAAC,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;KAChE;IAED,wBAAwB;IACxB,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9C,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;KAC5D;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEzB;;OAEG;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,IAAA,4CAAmB,EACxB,MAAM,EACN,2BAAc,CAAC,4BAA4B,EAC3C,MAAM,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,UAAU,CACjB,CAAC;KACH;IAED;;OAEG;IACH,MAAM,WAAW,GAAG,IAAA,sBAAiB,GAAE,CAAC;IACxC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,WAAW,CAAC,QAAQ,CAAC,IAAI,CACvB,IAAA,4CAAmB,EACjB,MAAM,EACN,2BAAc,CAAC,4BAA4B,EAC3C,KAAK,EACL,KAAK,CAAC,UAAU,CACjB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AA1CW,QAAA,YAAY,gBA0CvB"}
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.inTransform = void 0;
4
+ const cube_filter_to_duckdb_1 = require("../../cube-to-duckdb/cube-filter-to-duckdb");
4
5
  const constants_1 = require("../../member-formatters/constants");
5
6
  const Expression_1 = require("../../types/duckdb-serialization-types/serialization/Expression");
6
7
  const base_condition_builder_1 = require("../base-condition-builder/base-condition-builder");
8
+ const sql_expression_parser_1 = require("../sql-expression/sql-expression-parser");
7
9
  const inDuckDbCondition = (columnName, values, memberInfo) => {
8
10
  const sqlTreeValues = values.map((value) => {
9
11
  return {
@@ -59,11 +61,16 @@ const inDuckDbCondition = (columnName, values, memberInfo) => {
59
61
  }
60
62
  };
61
63
  const inTransform = (query) => {
62
- const { member, values, memberInfo } = query;
63
- if (!values) {
64
+ const { member, memberInfo } = query;
65
+ // Check if this is a SQL expression
66
+ if ((0, cube_filter_to_duckdb_1.isQueryOperatorsWithSQLInfo)(query)) {
67
+ return (0, sql_expression_parser_1.getSQLExpressionAST)(member, query.sqlExpression, 'in');
68
+ }
69
+ // Otherwise, use values
70
+ if (!query.values) {
64
71
  throw new Error('In filter must have at least one value');
65
72
  }
66
- return inDuckDbCondition(member, values, memberInfo);
73
+ return inDuckDbCondition(member, query.values, memberInfo);
67
74
  };
68
75
  exports.inTransform = inTransform;
69
76
  //# sourceMappingURL=in.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"in.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/in/in.ts"],"names":[],"mappings":";;;AAAA,iEAA0E;AAE1E,gGAGyE;AACzE,6FAAgF;AAGhF,MAAM,iBAAiB,GAAG,CACxB,UAAkB,EAClB,MAAgB,EAChB,UAA+B,EAC/B,EAAE;IACF,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACzC,OAAO;YACL,KAAK,EAAE,4BAAe,CAAC,QAAQ;YAC/B,IAAI,EAAE,2BAAc,CAAC,cAAc;YACnC,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,IAAA,qCAAY,EAAC,KAAK,EAAE,UAAU,CAAC;SACvC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,MAAM,SAAS,GAAG;QAChB,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,EAAE;QACT,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,iCAAqB,CAAC;KACtD,CAAC;IACF,QAAQ,UAAU,CAAC,IAAI,EAAE;QACvB,KAAK,cAAc,CAAC;QACpB,KAAK,cAAc,CAAC,CAAC;YACnB,OAAO;gBACL,KAAK,EAAE,4BAAe,CAAC,QAAQ;gBAC/B,IAAI,EAAE,2BAAc,CAAC,QAAQ;gBAC7B,KAAK,EAAE,EAAE;gBACT,aAAa,EAAE,IAAI;gBACnB,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE;oBACR,SAAS;oBACT;wBACE,KAAK,EAAE,4BAAe,CAAC,QAAQ;wBAC/B,IAAI,EAAE,2BAAc,CAAC,iBAAiB;wBACtC,KAAK,EAAE,EAAE;wBACT,QAAQ,EAAE,aAAa;qBACxB;iBACF;gBACD,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE;oBACT,IAAI,EAAE,gBAAgB;oBACtB,MAAM,EAAE,EAAE;iBACX;gBACD,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,IAAI;gBACjB,YAAY,EAAE,KAAK;gBACnB,OAAO,EAAE,EAAE;aACZ,CAAC;SACH;QACD,OAAO,CAAC,CAAC;YACP,OAAO;gBACL,KAAK,EAAE,4BAAe,CAAC,QAAQ;gBAC/B,IAAI,EAAE,2BAAc,CAAC,UAAU;gBAC/B,KAAK,EAAE,EAAE;gBACT,QAAQ,EAAE,CAAC,SAAS,EAAE,GAAG,aAAa,CAAC;aACxC,CAAC;SACH;KACF;AACH,CAAC,CAAC;AAEK,MAAM,WAAW,GAAmC,CAAC,KAAK,EAAE,EAAE;IACnE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAC7C,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;KAC3D;IACD,OAAO,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AACvD,CAAC,CAAC;AANW,QAAA,WAAW,eAMtB"}
1
+ {"version":3,"file":"in.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/in/in.ts"],"names":[],"mappings":";;;AAAA,sFAAyF;AACzF,iEAA0E;AAE1E,gGAGyE;AACzE,6FAAgF;AAEhF,mFAA8E;AAE9E,MAAM,iBAAiB,GAAG,CACxB,UAAkB,EAClB,MAAgB,EAChB,UAA+B,EAC/B,EAAE;IACF,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACzC,OAAO;YACL,KAAK,EAAE,4BAAe,CAAC,QAAQ;YAC/B,IAAI,EAAE,2BAAc,CAAC,cAAc;YACnC,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,IAAA,qCAAY,EAAC,KAAK,EAAE,UAAU,CAAC;SACvC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,MAAM,SAAS,GAAG;QAChB,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,EAAE;QACT,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,iCAAqB,CAAC;KACtD,CAAC;IACF,QAAQ,UAAU,CAAC,IAAI,EAAE;QACvB,KAAK,cAAc,CAAC;QACpB,KAAK,cAAc,CAAC,CAAC;YACnB,OAAO;gBACL,KAAK,EAAE,4BAAe,CAAC,QAAQ;gBAC/B,IAAI,EAAE,2BAAc,CAAC,QAAQ;gBAC7B,KAAK,EAAE,EAAE;gBACT,aAAa,EAAE,IAAI;gBACnB,MAAM,EAAE,EAAE;gBACV,QAAQ,EAAE;oBACR,SAAS;oBACT;wBACE,KAAK,EAAE,4BAAe,CAAC,QAAQ;wBAC/B,IAAI,EAAE,2BAAc,CAAC,iBAAiB;wBACtC,KAAK,EAAE,EAAE;wBACT,QAAQ,EAAE,aAAa;qBACxB;iBACF;gBACD,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE;oBACT,IAAI,EAAE,gBAAgB;oBACtB,MAAM,EAAE,EAAE;iBACX;gBACD,QAAQ,EAAE,KAAK;gBACf,WAAW,EAAE,IAAI;gBACjB,YAAY,EAAE,KAAK;gBACnB,OAAO,EAAE,EAAE;aACZ,CAAC;SACH;QACD,OAAO,CAAC,CAAC;YACP,OAAO;gBACL,KAAK,EAAE,4BAAe,CAAC,QAAQ;gBAC/B,IAAI,EAAE,2BAAc,CAAC,UAAU;gBAC/B,KAAK,EAAE,EAAE;gBACT,QAAQ,EAAE,CAAC,SAAS,EAAE,GAAG,aAAa,CAAC;aACxC,CAAC;SACH;KACF;AACH,CAAC,CAAC;AAEK,MAAM,WAAW,GAAmC,CAAC,KAAK,EAAE,EAAE;IACnE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAErC,oCAAoC;IACpC,IAAI,IAAA,mDAA2B,EAAC,KAAK,CAAC,EAAE;QACtC,OAAO,IAAA,2CAAmB,EAAC,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;KAC/D;IAED,wBAAwB;IACxB,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;QACjB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;KAC3D;IAED,OAAO,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAC7D,CAAC,CAAC;AAdW,QAAA,WAAW,eActB"}
@@ -1,16 +1,24 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.inDataRangeTransform = void 0;
4
+ const cube_filter_to_duckdb_1 = require("../../cube-to-duckdb/cube-filter-to-duckdb");
4
5
  const Expression_1 = require("../../types/duckdb-serialization-types/serialization/Expression");
5
6
  const and_1 = require("../and/and");
6
7
  const base_condition_builder_1 = require("../base-condition-builder/base-condition-builder");
8
+ const sql_expression_parser_1 = require("../sql-expression/sql-expression-parser");
7
9
  const inDataRangeTransform = (query) => {
8
- const { member, values } = query;
9
- if (!values || values.length === 0) {
10
+ const { member } = query;
11
+ // SQL expressions not supported for inDateRange operator
12
+ if ((0, cube_filter_to_duckdb_1.isQueryOperatorsWithSQLInfo)(query)) {
13
+ return (0, sql_expression_parser_1.getSQLExpressionAST)(member, query.sqlExpression, 'inDateRange');
14
+ }
15
+ // Otherwise, use values
16
+ if (!query.values || query.values.length === 0) {
10
17
  throw new Error('GT filter must have at least one value');
11
18
  }
19
+ const values = query.values;
12
20
  /**
13
- * If there are multiple values, we need to create an OR condition
21
+ * If there are multiple values, we need to create an AND condition
14
22
  */
15
23
  const andCondition = (0, and_1.andDuckdbCondition)();
16
24
  andCondition.children.push((0, base_condition_builder_1.baseDuckdbCondition)(member, Expression_1.ExpressionType.COMPARE_GREATERTHANOREQUALTO, values[0], query.memberInfo));
@@ -1 +1 @@
1
- {"version":3,"file":"in-date-range.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/in-date-range/in-date-range.ts"],"names":[],"mappings":";;;AAAA,gGAAiG;AACjG,oCAAgD;AAChD,6FAAuF;AAGhF,MAAM,oBAAoB,GAAmC,CAAC,KAAK,EAAE,EAAE;IAC5E,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEjC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAClC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;KAC3D;IAED;;OAEG;IACH,MAAM,YAAY,GAAG,IAAA,wBAAkB,GAAE,CAAC;IAE1C,YAAY,CAAC,QAAQ,CAAC,IAAI,CACxB,IAAA,4CAAmB,EACjB,MAAM,EACN,2BAAc,CAAC,4BAA4B,EAC3C,MAAM,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,UAAU,CACjB,CACF,CAAC;IAEF,YAAY,CAAC,QAAQ,CAAC,IAAI,CACxB,IAAA,4CAAmB,EACjB,MAAM,EACN,2BAAc,CAAC,yBAAyB,EACxC,MAAM,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,UAAU,CACjB,CACF,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AA/BW,QAAA,oBAAoB,wBA+B/B"}
1
+ {"version":3,"file":"in-date-range.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/in-date-range/in-date-range.ts"],"names":[],"mappings":";;;AAAA,sFAAyF;AACzF,gGAAiG;AACjG,oCAAgD;AAChD,6FAAuF;AAEvF,mFAA8E;AAEvE,MAAM,oBAAoB,GAAmC,CAAC,KAAK,EAAE,EAAE;IAC5E,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEzB,yDAAyD;IACzD,IAAI,IAAA,mDAA2B,EAAC,KAAK,CAAC,EAAE;QACtC,OAAO,IAAA,2CAAmB,EAAC,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;KACxE;IAED,wBAAwB;IACxB,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;KAC3D;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B;;OAEG;IACH,MAAM,YAAY,GAAG,IAAA,wBAAkB,GAAE,CAAC;IAE1C,YAAY,CAAC,QAAQ,CAAC,IAAI,CACxB,IAAA,4CAAmB,EACjB,MAAM,EACN,2BAAc,CAAC,4BAA4B,EAC3C,MAAM,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,UAAU,CACjB,CACF,CAAC;IAEF,YAAY,CAAC,QAAQ,CAAC,IAAI,CACxB,IAAA,4CAAmB,EACjB,MAAM,EACN,2BAAc,CAAC,yBAAyB,EACxC,MAAM,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,UAAU,CACjB,CACF,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAvCW,QAAA,oBAAoB,wBAuC/B"}
@@ -1,14 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ltTransform = void 0;
4
+ const cube_filter_to_duckdb_1 = require("../../cube-to-duckdb/cube-filter-to-duckdb");
4
5
  const Expression_1 = require("../../types/duckdb-serialization-types/serialization/Expression");
5
6
  const base_condition_builder_1 = require("../base-condition-builder/base-condition-builder");
6
7
  const or_1 = require("../or/or");
8
+ const sql_expression_parser_1 = require("../sql-expression/sql-expression-parser");
7
9
  const ltTransform = (query) => {
8
- const { member, values } = query;
9
- if (!values || values.length === 0) {
10
+ const { member } = query;
11
+ // SQL expressions not supported for lt operator
12
+ if ((0, cube_filter_to_duckdb_1.isQueryOperatorsWithSQLInfo)(query)) {
13
+ return (0, sql_expression_parser_1.getSQLExpressionAST)(member, query.sqlExpression, 'lt');
14
+ }
15
+ // Otherwise, use values
16
+ if (!query.values || query.values.length === 0) {
10
17
  throw new Error('lt filter must have at least one value');
11
18
  }
19
+ const values = query.values;
12
20
  /**
13
21
  * If there is only one value, we can create a simple equals condition
14
22
  */
@@ -1 +1 @@
1
- {"version":3,"file":"lt.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/lt/lt.ts"],"names":[],"mappings":";;;AAAA,gGAAiG;AACjG,6FAAuF;AAEvF,iCAA6C;AAEtC,MAAM,WAAW,GAAmC,CAAC,KAAK,EAAE,EAAE;IACnE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEjC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAClC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;KAC3D;IAED;;OAEG;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,IAAA,4CAAmB,EACxB,MAAM,EACN,2BAAc,CAAC,gBAAgB,EAC/B,MAAM,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,UAAU,CACjB,CAAC;KACH;IAED;;OAEG;IACH,MAAM,WAAW,GAAG,IAAA,sBAAiB,GAAE,CAAC;IACxC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,WAAW,CAAC,QAAQ,CAAC,IAAI,CACvB,IAAA,4CAAmB,EACjB,MAAM,EACN,2BAAc,CAAC,gBAAgB,EAC/B,KAAK,EACL,KAAK,CAAC,UAAU,CACjB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAlCW,QAAA,WAAW,eAkCtB"}
1
+ {"version":3,"file":"lt.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/lt/lt.ts"],"names":[],"mappings":";;;AAAA,sFAAyF;AACzF,gGAAiG;AACjG,6FAAuF;AAEvF,iCAA6C;AAC7C,mFAA8E;AAEvE,MAAM,WAAW,GAAmC,CAAC,KAAK,EAAE,EAAE;IACnE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEzB,gDAAgD;IAChD,IAAI,IAAA,mDAA2B,EAAC,KAAK,CAAC,EAAE;QACtC,OAAO,IAAA,2CAAmB,EAAC,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;KAC/D;IAED,wBAAwB;IACxB,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;KAC3D;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B;;OAEG;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,IAAA,4CAAmB,EACxB,MAAM,EACN,2BAAc,CAAC,gBAAgB,EAC/B,MAAM,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,UAAU,CACjB,CAAC;KACH;IAED;;OAEG;IACH,MAAM,WAAW,GAAG,IAAA,sBAAiB,GAAE,CAAC;IACxC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,WAAW,CAAC,QAAQ,CAAC,IAAI,CACvB,IAAA,4CAAmB,EACjB,MAAM,EACN,2BAAc,CAAC,gBAAgB,EAC/B,KAAK,EACL,KAAK,CAAC,UAAU,CACjB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AA1CW,QAAA,WAAW,eA0CtB"}
@@ -1,14 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.lteTransform = void 0;
4
+ const cube_filter_to_duckdb_1 = require("../../cube-to-duckdb/cube-filter-to-duckdb");
4
5
  const Expression_1 = require("../../types/duckdb-serialization-types/serialization/Expression");
5
6
  const base_condition_builder_1 = require("../base-condition-builder/base-condition-builder");
6
7
  const or_1 = require("../or/or");
8
+ const sql_expression_parser_1 = require("../sql-expression/sql-expression-parser");
7
9
  const lteTransform = (query) => {
8
- const { member, values } = query;
9
- if (!values || values.length === 0) {
10
+ const { member } = query;
11
+ // SQL expressions not supported for lte operator
12
+ if ((0, cube_filter_to_duckdb_1.isQueryOperatorsWithSQLInfo)(query)) {
13
+ return (0, sql_expression_parser_1.getSQLExpressionAST)(member, query.sqlExpression, 'lte');
14
+ }
15
+ // Otherwise, use values
16
+ if (!query.values || query.values.length === 0) {
10
17
  throw new Error('lte filter must have at least one value');
11
18
  }
19
+ const values = query.values;
12
20
  /**
13
21
  * If there is only one value, we can create a simple equals condition
14
22
  */
@@ -1 +1 @@
1
- {"version":3,"file":"lte.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/lte/lte.ts"],"names":[],"mappings":";;;AAAA,gGAAiG;AACjG,6FAAuF;AAEvF,iCAA6C;AAEtC,MAAM,YAAY,GAAmC,CAAC,KAAK,EAAE,EAAE;IACpE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEjC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAClC,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;KAC5D;IAED;;OAEG;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,IAAA,4CAAmB,EACxB,MAAM,EACN,2BAAc,CAAC,yBAAyB,EACxC,MAAM,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,UAAU,CACjB,CAAC;KACH;IAED;;OAEG;IACH,MAAM,WAAW,GAAG,IAAA,sBAAiB,GAAE,CAAC;IACxC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,WAAW,CAAC,QAAQ,CAAC,IAAI,CACvB,IAAA,4CAAmB,EACjB,MAAM,EACN,2BAAc,CAAC,yBAAyB,EACxC,KAAK,EACL,KAAK,CAAC,UAAU,CACjB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAlCW,QAAA,YAAY,gBAkCvB"}
1
+ {"version":3,"file":"lte.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/lte/lte.ts"],"names":[],"mappings":";;;AAAA,sFAAyF;AACzF,gGAAiG;AACjG,6FAAuF;AAEvF,iCAA6C;AAC7C,mFAA8E;AAEvE,MAAM,YAAY,GAAmC,CAAC,KAAK,EAAE,EAAE;IACpE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEzB,iDAAiD;IACjD,IAAI,IAAA,mDAA2B,EAAC,KAAK,CAAC,EAAE;QACtC,OAAO,IAAA,2CAAmB,EAAC,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;KAChE;IAED,wBAAwB;IACxB,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9C,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;KAC5D;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B;;OAEG;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,IAAA,4CAAmB,EACxB,MAAM,EACN,2BAAc,CAAC,yBAAyB,EACxC,MAAM,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,UAAU,CACjB,CAAC;KACH;IAED;;OAEG;IACH,MAAM,WAAW,GAAG,IAAA,sBAAiB,GAAE,CAAC;IACxC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,WAAW,CAAC,QAAQ,CAAC,IAAI,CACvB,IAAA,4CAAmB,EACjB,MAAM,EACN,2BAAc,CAAC,yBAAyB,EACxC,KAAK,EACL,KAAK,CAAC,UAAU,CACjB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AA1CW,QAAA,YAAY,gBA0CvB"}
@@ -1,14 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.notInDataRangeTransform = void 0;
4
+ const cube_filter_to_duckdb_1 = require("../../cube-to-duckdb/cube-filter-to-duckdb");
4
5
  const Expression_1 = require("../../types/duckdb-serialization-types/serialization/Expression");
5
6
  const base_condition_builder_1 = require("../base-condition-builder/base-condition-builder");
6
7
  const or_1 = require("../or/or");
7
8
  const notInDataRangeTransform = (query) => {
8
- const { member, values } = query;
9
- if (!values || values.length === 0) {
9
+ const { member } = query;
10
+ // SQL expressions not supported for notInDateRange operator
11
+ if ((0, cube_filter_to_duckdb_1.isQueryOperatorsWithSQLInfo)(query)) {
12
+ throw new Error('SQL expressions are not supported for notInDateRange operator. Only "in" and "notIn" operators support SQL expressions.');
13
+ }
14
+ // Otherwise, use values
15
+ if (!query.values || query.values.length === 0) {
10
16
  throw new Error('GT filter must have at least one value');
11
17
  }
18
+ const values = query.values;
12
19
  /**
13
20
  * If there are multiple values, we need to create an OR condition
14
21
  */
@@ -1 +1 @@
1
- {"version":3,"file":"not-In-date-range.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/not-In-date-range/not-In-date-range.ts"],"names":[],"mappings":";;;AAAA,gGAAiG;AACjG,6FAAuF;AAEvF,iCAA6C;AAEtC,MAAM,uBAAuB,GAAmC,CACrE,KAAK,EACL,EAAE;IACF,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEjC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAClC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;KAC3D;IAED;;OAEG;IACH,MAAM,YAAY,GAAG,IAAA,sBAAiB,GAAE,CAAC;IAEzC,YAAY,CAAC,QAAQ,CAAC,IAAI,CACxB,IAAA,4CAAmB,EACjB,MAAM,EACN,2BAAc,CAAC,gBAAgB,EAC/B,MAAM,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,UAAU,CACjB,CACF,CAAC;IAEF,YAAY,CAAC,QAAQ,CAAC,IAAI,CACxB,IAAA,4CAAmB,EACjB,MAAM,EACN,2BAAc,CAAC,mBAAmB,EAClC,MAAM,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,UAAU,CACjB,CACF,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAjCW,QAAA,uBAAuB,2BAiClC"}
1
+ {"version":3,"file":"not-In-date-range.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/not-In-date-range/not-In-date-range.ts"],"names":[],"mappings":";;;AAAA,sFAAyF;AACzF,gGAAiG;AACjG,6FAAuF;AAEvF,iCAA6C;AAEtC,MAAM,uBAAuB,GAAmC,CACrE,KAAK,EACL,EAAE;IACF,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEzB,4DAA4D;IAC5D,IAAI,IAAA,mDAA2B,EAAC,KAAK,CAAC,EAAE;QACtC,MAAM,IAAI,KAAK,CACb,yHAAyH,CAC1H,CAAC;KACH;IAED,wBAAwB;IACxB,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;KAC3D;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B;;OAEG;IACH,MAAM,YAAY,GAAG,IAAA,sBAAiB,GAAE,CAAC;IAEzC,YAAY,CAAC,QAAQ,CAAC,IAAI,CACxB,IAAA,4CAAmB,EACjB,MAAM,EACN,2BAAc,CAAC,gBAAgB,EAC/B,MAAM,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,UAAU,CACjB,CACF,CAAC;IAEF,YAAY,CAAC,QAAQ,CAAC,IAAI,CACxB,IAAA,4CAAmB,EACjB,MAAM,EACN,2BAAc,CAAC,mBAAmB,EAClC,MAAM,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,UAAU,CACjB,CACF,CAAC;IAEF,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AA3CW,QAAA,uBAAuB,2BA2ClC"}
@@ -1,12 +1,6 @@
1
- import { Member, QueryFilter } from '../../types/cube-types/query';
2
1
  import { Dimension, Measure } from '../../types/cube-types/table';
3
2
  import { ExpressionClass, ExpressionType } from '../../types/duckdb-serialization-types/serialization/Expression';
4
3
  import { CubeToParseExpressionTransform } from '../factory';
5
- export interface NotContainsFilters extends QueryFilter {
6
- member: Member;
7
- operator: 'notContains';
8
- values: string[];
9
- }
10
4
  export declare const notContainsDuckdbCondition: (columnName: string, value: string, memberInfo: Measure | Dimension) => {
11
5
  class: ExpressionClass;
12
6
  type: ExpressionType;
@@ -1,10 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.notContainsTransform = exports.notContainsDuckdbCondition = void 0;
4
+ const cube_filter_to_duckdb_1 = require("../../cube-to-duckdb/cube-filter-to-duckdb");
4
5
  const constants_1 = require("../../member-formatters/constants");
5
6
  const Expression_1 = require("../../types/duckdb-serialization-types/serialization/Expression");
6
7
  const base_condition_builder_1 = require("../base-condition-builder/base-condition-builder");
7
8
  const or_1 = require("../or/or");
9
+ const sql_expression_parser_1 = require("../sql-expression/sql-expression-parser");
8
10
  const notContainsDuckdbCondition = (columnName, value, memberInfo) => {
9
11
  return {
10
12
  class: Expression_1.ExpressionClass.FUNCTION,
@@ -39,10 +41,16 @@ const notContainsDuckdbCondition = (columnName, value, memberInfo) => {
39
41
  };
40
42
  exports.notContainsDuckdbCondition = notContainsDuckdbCondition;
41
43
  const notContainsTransform = (query) => {
42
- const { member, values, memberInfo } = query;
43
- if (!values || values.length === 0) {
44
+ const { member, memberInfo } = query;
45
+ // SQL expressions not supported for notContains operator
46
+ if ((0, cube_filter_to_duckdb_1.isQueryOperatorsWithSQLInfo)(query)) {
47
+ return (0, sql_expression_parser_1.getSQLExpressionAST)(member, query.sqlExpression, 'notContains');
48
+ }
49
+ // Otherwise, use values
50
+ if (!query.values || query.values.length === 0) {
44
51
  throw new Error('Contains filter must have at least one value');
45
52
  }
53
+ const values = query.values;
46
54
  /**
47
55
  * If there is only one value, we can create a simple Contains condition
48
56
  */
@@ -1 +1 @@
1
- {"version":3,"file":"not-contains.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/not-contains/not-contains.ts"],"names":[],"mappings":";;;AAAA,iEAA0E;AAG1E,gGAGyE;AACzE,6FAAgF;AAEhF,iCAA6C;AAQtC,MAAM,0BAA0B,GAAG,CACxC,UAAkB,EAClB,KAAa,EACb,UAA+B,EAC/B,EAAE;IACF,OAAO;QACL,KAAK,EAAE,4BAAe,CAAC,QAAQ;QAC/B,IAAI,EAAE,2BAAc,CAAC,QAAQ;QAC7B,KAAK,EAAE,EAAE;QACT,aAAa,EAAE,KAAK;QACpB,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACR;gBACE,KAAK,EAAE,YAAY;gBACnB,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,EAAE;gBACT,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,iCAAqB,CAAC;aACtD;YACD;gBACE,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,IAAA,qCAAY,EAAC,IAAI,KAAK,GAAG,EAAE,UAAU,CAAC;aAC9C;SACF;QACD,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE;YACT,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,EAAE;SACX;QACD,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE,EAAE;KACZ,CAAC;AACJ,CAAC,CAAC;AAnCW,QAAA,0BAA0B,8BAmCrC;AAEK,MAAM,oBAAoB,GAAmC,CAAC,KAAK,EAAE,EAAE;IAC5E,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAE7C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAClC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;KACjE;IAED;;OAEG;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,IAAA,kCAA0B,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;KAClE;IAED;;OAEG;IACH,MAAM,WAAW,GAAG,IAAA,sBAAiB,GAAE,CAAC;IACxC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,WAAW,CAAC,QAAQ,CAAC,IAAI,CACvB,IAAA,kCAA0B,EAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CACtD,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAxBW,QAAA,oBAAoB,wBAwB/B"}
1
+ {"version":3,"file":"not-contains.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/not-contains/not-contains.ts"],"names":[],"mappings":";;;AAAA,sFAAyF;AACzF,iEAA0E;AAE1E,gGAGyE;AACzE,6FAAgF;AAEhF,iCAA6C;AAC7C,mFAA8E;AAEvE,MAAM,0BAA0B,GAAG,CACxC,UAAkB,EAClB,KAAa,EACb,UAA+B,EAC/B,EAAE;IACF,OAAO;QACL,KAAK,EAAE,4BAAe,CAAC,QAAQ;QAC/B,IAAI,EAAE,2BAAc,CAAC,QAAQ;QAC7B,KAAK,EAAE,EAAE;QACT,aAAa,EAAE,KAAK;QACpB,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACR;gBACE,KAAK,EAAE,YAAY;gBACnB,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,EAAE;gBACT,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,iCAAqB,CAAC;aACtD;YACD;gBACE,KAAK,EAAE,UAAU;gBACjB,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,IAAA,qCAAY,EAAC,IAAI,KAAK,GAAG,EAAE,UAAU,CAAC;aAC9C;SACF;QACD,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE;YACT,IAAI,EAAE,gBAAgB;YACtB,MAAM,EAAE,EAAE;SACX;QACD,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,KAAK;QACnB,OAAO,EAAE,EAAE;KACZ,CAAC;AACJ,CAAC,CAAC;AAnCW,QAAA,0BAA0B,8BAmCrC;AAEK,MAAM,oBAAoB,GAAmC,CAAC,KAAK,EAAE,EAAE;IAC5E,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAErC,yDAAyD;IACzD,IAAI,IAAA,mDAA2B,EAAC,KAAK,CAAC,EAAE;QACtC,OAAO,IAAA,2CAAmB,EAAC,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;KACxE;IAED,wBAAwB;IACxB,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9C,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;KACjE;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B;;OAEG;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,IAAA,kCAA0B,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;KAClE;IAED;;OAEG;IACH,MAAM,WAAW,GAAG,IAAA,sBAAiB,GAAE,CAAC;IACxC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,WAAW,CAAC,QAAQ,CAAC,IAAI,CACvB,IAAA,kCAA0B,EAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CACtD,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAhCW,QAAA,oBAAoB,wBAgC/B"}
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.notEqualsArrayTransform = void 0;
4
+ const cube_filter_to_duckdb_1 = require("../../cube-to-duckdb/cube-filter-to-duckdb");
4
5
  const equals_array_1 = require("../equals/equals-array");
5
6
  const not_1 = require("../not/not");
6
7
  const notEqualsArrayTransform = (query) => {
7
- const { values } = query;
8
- if (!values || values.length === 0) {
8
+ // SQL expressions not supported for notEquals operator
9
+ if ((0, cube_filter_to_duckdb_1.isQueryOperatorsWithSQLInfo)(query)) {
10
+ throw new Error('SQL expressions are not supported for notEquals operator. Only "in" and "notIn" operators support SQL expressions.');
11
+ }
12
+ if (!query.values || query.values.length === 0) {
9
13
  throw new Error('Equals filter must have at least one value');
10
14
  }
11
15
  const notWrapper = (0, not_1.notDuckdbCondition)();
@@ -1 +1 @@
1
- {"version":3,"file":"not-equals-array.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/not-equals/not-equals-array.ts"],"names":[],"mappings":";;;AAAA,yDAA8D;AAE9D,oCAAgD;AAEzC,MAAM,uBAAuB,GAAmC,CACrE,KAAK,EACL,EAAE;IACF,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEzB,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAClC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;KAC/D;IAED,MAAM,UAAU,GAAG,IAAA,wBAAkB,GAAE,CAAC;IACxC,MAAM,eAAe,GAAG,IAAA,mCAAoB,EAAC,KAAK,CAAC,CAAC;IACpD;;;OAGG;IACH,UAAU,CAAC,QAAQ,GAAG,CAAC,eAAe,CAAC,CAAC;IAExC,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAlBW,QAAA,uBAAuB,2BAkBlC"}
1
+ {"version":3,"file":"not-equals-array.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/not-equals/not-equals-array.ts"],"names":[],"mappings":";;;AAAA,sFAAyF;AACzF,yDAA8D;AAE9D,oCAAgD;AAEzC,MAAM,uBAAuB,GAAmC,CACrE,KAAK,EACL,EAAE;IACF,uDAAuD;IACvD,IAAI,IAAA,mDAA2B,EAAC,KAAK,CAAC,EAAE;QACtC,MAAM,IAAI,KAAK,CACb,oHAAoH,CACrH,CAAC;KACH;IAED,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9C,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;KAC/D;IAED,MAAM,UAAU,GAAG,IAAA,wBAAkB,GAAE,CAAC;IACxC,MAAM,eAAe,GAAG,IAAA,mCAAoB,EAAC,KAAK,CAAC,CAAC;IACpD;;;OAGG;IACH,UAAU,CAAC,QAAQ,GAAG,CAAC,eAAe,CAAC,CAAC;IAExC,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAvBW,QAAA,uBAAuB,2BAuBlC"}
@@ -1,8 +1,2 @@
1
- import { Member, QueryFilter } from '../../types/cube-types/query';
2
1
  import { CubeToParseExpressionTransform } from '../factory';
3
- export interface NotEqualsFilters extends QueryFilter {
4
- member: Member;
5
- operator: 'notEquals';
6
- values: string[];
7
- }
8
2
  export declare const notEqualsTransform: CubeToParseExpressionTransform;
@@ -1,34 +1,42 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.notEqualsTransform = void 0;
4
+ const cube_filter_to_duckdb_1 = require("../../cube-to-duckdb/cube-filter-to-duckdb");
4
5
  const Expression_1 = require("../../types/duckdb-serialization-types/serialization/Expression");
5
6
  const is_array_member_type_1 = require("../../utils/is-array-member-type");
6
7
  const base_condition_builder_1 = require("../base-condition-builder/base-condition-builder");
7
8
  const or_1 = require("../or/or");
9
+ const sql_expression_parser_1 = require("../sql-expression/sql-expression-parser");
8
10
  const not_equals_array_1 = require("./not-equals-array");
9
11
  const notEqualsTransform = (query) => {
10
- const { member, values } = query;
11
- if (!values || values.length === 0) {
12
- throw new Error('Equals filter must have at least one value');
12
+ const { member, memberInfo } = query;
13
+ // SQL expressions not supported for notEquals operator
14
+ if ((0, cube_filter_to_duckdb_1.isQueryOperatorsWithSQLInfo)(query)) {
15
+ return (0, sql_expression_parser_1.getSQLExpressionAST)(member, query.sqlExpression, 'notEquals');
13
16
  }
17
+ // Otherwise, use values
18
+ if (!query.values || query.values.length === 0) {
19
+ throw new Error('NotEquals filter must have at least one value');
20
+ }
21
+ const values = query.values;
14
22
  /**
15
23
  * If the member is an array, we need to use the array transform
16
24
  */
17
- if ((0, is_array_member_type_1.isArrayTypeMember)(query.memberInfo.type)) {
25
+ if ((0, is_array_member_type_1.isArrayTypeMember)(memberInfo.type)) {
18
26
  return (0, not_equals_array_1.notEqualsArrayTransform)(query);
19
27
  }
20
28
  /**
21
29
  * If there is only one value, we can create a simple equals condition
22
30
  */
23
31
  if (values.length === 1) {
24
- return (0, base_condition_builder_1.baseDuckdbCondition)(member, Expression_1.ExpressionType.COMPARE_NOTEQUAL, values[0], query.memberInfo);
32
+ return (0, base_condition_builder_1.baseDuckdbCondition)(member, Expression_1.ExpressionType.COMPARE_NOTEQUAL, values[0], memberInfo);
25
33
  }
26
34
  /**
27
35
  * If there are multiple values, we need to create an OR condition
28
36
  */
29
37
  const orCondition = (0, or_1.orDuckdbCondition)();
30
38
  values.forEach((value) => {
31
- orCondition.children.push((0, base_condition_builder_1.baseDuckdbCondition)(member, Expression_1.ExpressionType.COMPARE_NOTEQUAL, value, query.memberInfo));
39
+ orCondition.children.push((0, base_condition_builder_1.baseDuckdbCondition)(member, Expression_1.ExpressionType.COMPARE_NOTEQUAL, value, memberInfo));
32
40
  });
33
41
  return orCondition;
34
42
  };
@@ -1 +1 @@
1
- {"version":3,"file":"not-equals.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/not-equals/not-equals.ts"],"names":[],"mappings":";;;AACA,gGAAiG;AACjG,2EAAqE;AACrE,6FAAuF;AAEvF,iCAA6C;AAC7C,yDAA6D;AAQtD,MAAM,kBAAkB,GAAmC,CAAC,KAAK,EAAE,EAAE;IAC1E,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IAEjC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAClC,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;KAC/D;IAED;;OAEG;IACH,IAAI,IAAA,wCAAiB,EAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QAC5C,OAAO,IAAA,0CAAuB,EAAC,KAAK,CAAC,CAAC;KACvC;IAED;;OAEG;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,IAAA,4CAAmB,EACxB,MAAM,EACN,2BAAc,CAAC,gBAAgB,EAC/B,MAAM,CAAC,CAAC,CAAC,EACT,KAAK,CAAC,UAAU,CACjB,CAAC;KACH;IAED;;OAEG;IACH,MAAM,WAAW,GAAG,IAAA,sBAAiB,GAAE,CAAC;IACxC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,WAAW,CAAC,QAAQ,CAAC,IAAI,CACvB,IAAA,4CAAmB,EACjB,MAAM,EACN,2BAAc,CAAC,gBAAgB,EAC/B,KAAK,EACL,KAAK,CAAC,UAAU,CACjB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAzCW,QAAA,kBAAkB,sBAyC7B"}
1
+ {"version":3,"file":"not-equals.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/not-equals/not-equals.ts"],"names":[],"mappings":";;;AAAA,sFAAyF;AACzF,gGAAiG;AACjG,2EAAqE;AACrE,6FAAuF;AAEvF,iCAA6C;AAC7C,mFAA8E;AAC9E,yDAA6D;AAEtD,MAAM,kBAAkB,GAAmC,CAAC,KAAK,EAAE,EAAE;IAC1E,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAErC,uDAAuD;IACvD,IAAI,IAAA,mDAA2B,EAAC,KAAK,CAAC,EAAE;QACtC,OAAO,IAAA,2CAAmB,EAAC,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;KACtE;IAED,wBAAwB;IACxB,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9C,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;KAClE;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAE5B;;OAEG;IACH,IAAI,IAAA,wCAAiB,EAAC,UAAU,CAAC,IAAI,CAAC,EAAE;QACtC,OAAO,IAAA,0CAAuB,EAAC,KAAK,CAAC,CAAC;KACvC;IAED;;OAEG;IACH,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,OAAO,IAAA,4CAAmB,EACxB,MAAM,EACN,2BAAc,CAAC,gBAAgB,EAC/B,MAAM,CAAC,CAAC,CAAC,EACT,UAAU,CACX,CAAC;KACH;IAED;;OAEG;IACH,MAAM,WAAW,GAAG,IAAA,sBAAiB,GAAE,CAAC;IACxC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QACvB,WAAW,CAAC,QAAQ,CAAC,IAAI,CACvB,IAAA,4CAAmB,EACjB,MAAM,EACN,2BAAc,CAAC,gBAAgB,EAC/B,KAAK,EACL,UAAU,CACX,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAjDW,QAAA,kBAAkB,sBAiD7B"}
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.notInTransform = void 0;
4
+ const cube_filter_to_duckdb_1 = require("../../cube-to-duckdb/cube-filter-to-duckdb");
5
+ const sql_expression_parser_1 = require("../sql-expression/sql-expression-parser");
4
6
  const constants_1 = require("../../member-formatters/constants");
5
7
  const Expression_1 = require("../../types/duckdb-serialization-types/serialization/Expression");
6
8
  const base_condition_builder_1 = require("../base-condition-builder/base-condition-builder");
@@ -66,11 +68,15 @@ const notInDuckDbCondition = (columnName, values, memberInfo) => {
66
68
  }
67
69
  };
68
70
  const notInTransform = (query) => {
69
- const { member, values, memberInfo } = query;
70
- if (!values) {
71
+ const { member, memberInfo } = query;
72
+ // Check if this is a SQL expression
73
+ if ((0, cube_filter_to_duckdb_1.isQueryOperatorsWithSQLInfo)(query)) {
74
+ return (0, sql_expression_parser_1.getSQLExpressionAST)(member, query.sqlExpression, 'notIn');
75
+ }
76
+ if (!query.values) {
71
77
  throw new Error('Not in filter must have at least one value');
72
78
  }
73
- return notInDuckDbCondition(member, values, memberInfo);
79
+ return notInDuckDbCondition(member, query.values, memberInfo);
74
80
  };
75
81
  exports.notInTransform = notInTransform;
76
82
  //# sourceMappingURL=not-in.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"not-in.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/not-in/not-in.ts"],"names":[],"mappings":";;;AAGA,iEAA0E;AAC1E,gGAGyE;AACzE,6FAAgF;AAEhF,MAAM,oBAAoB,GAAG,CAC3B,UAAkB,EAClB,MAAgB,EAChB,UAA+B,EAC/B,EAAE;IACF,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACzC,OAAO;YACL,KAAK,EAAE,4BAAe,CAAC,QAAQ;YAC/B,IAAI,EAAE,2BAAc,CAAC,cAAc;YACnC,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,IAAA,qCAAY,EAAC,KAAK,EAAE,UAAU,CAAC;SACvC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,MAAM,SAAS,GAAG;QAChB,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,EAAE;QACT,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,iCAAqB,CAAC;KACtD,CAAC;IACF,QAAQ,UAAU,CAAC,IAAI,EAAE;QACvB,KAAK,cAAc,CAAC;QACpB,KAAK,cAAc,CAAC,CAAC;YACnB,OAAO;gBACL,KAAK,EAAE,4BAAe,CAAC,QAAQ;gBAC/B,IAAI,EAAE,2BAAc,CAAC,YAAY;gBACjC,KAAK,EAAE,EAAE;gBACT,QAAQ,EAAE;oBACR;wBACE,KAAK,EAAE,4BAAe,CAAC,QAAQ;wBAC/B,IAAI,EAAE,2BAAc,CAAC,QAAQ;wBAC7B,KAAK,EAAE,EAAE;wBACT,aAAa,EAAE,IAAI;wBACnB,MAAM,EAAE,EAAE;wBACV,QAAQ,EAAE;4BACR,SAAS;4BACT;gCACE,KAAK,EAAE,4BAAe,CAAC,QAAQ;gCAC/B,IAAI,EAAE,2BAAc,CAAC,iBAAiB;gCACtC,KAAK,EAAE,EAAE;gCACT,QAAQ,EAAE,aAAa;6BACxB;yBACF;wBACD,MAAM,EAAE,IAAI;wBACZ,SAAS,EAAE;4BACT,IAAI,EAAE,gBAAgB;4BACtB,MAAM,EAAE,EAAE;yBACX;wBACD,QAAQ,EAAE,KAAK;wBACf,WAAW,EAAE,IAAI;wBACjB,YAAY,EAAE,KAAK;wBACnB,OAAO,EAAE,EAAE;qBACZ;iBACF;aACF,CAAC;SACH;QACD,OAAO,CAAC,CAAC;YACP,OAAO;gBACL,KAAK,EAAE,4BAAe,CAAC,QAAQ;gBAC/B,IAAI,EAAE,2BAAc,CAAC,cAAc;gBACnC,KAAK,EAAE,EAAE;gBACT,QAAQ,EAAE,CAAC,SAAS,EAAE,GAAG,aAAa,CAAC;aACxC,CAAC;SACH;KACF;AACH,CAAC,CAAC;AAEK,MAAM,cAAc,GAAmC,CAAC,KAAK,EAAE,EAAE;IACtE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAC7C,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;KAC/D;IAED,OAAO,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;AAC1D,CAAC,CAAC;AAPW,QAAA,cAAc,kBAOzB"}
1
+ {"version":3,"file":"not-in.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/not-in/not-in.ts"],"names":[],"mappings":";;;AAAA,sFAAyF;AAGzF,mFAA8E;AAE9E,iEAA0E;AAC1E,gGAGyE;AACzE,6FAAgF;AAEhF,MAAM,oBAAoB,GAAG,CAC3B,UAAkB,EAClB,MAAgB,EAChB,UAA+B,EAC/B,EAAE;IACF,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACzC,OAAO;YACL,KAAK,EAAE,4BAAe,CAAC,QAAQ;YAC/B,IAAI,EAAE,2BAAc,CAAC,cAAc;YACnC,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,IAAA,qCAAY,EAAC,KAAK,EAAE,UAAU,CAAC;SACvC,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,MAAM,SAAS,GAAG;QAChB,KAAK,EAAE,YAAY;QACnB,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,EAAE;QACT,YAAY,EAAE,UAAU,CAAC,KAAK,CAAC,iCAAqB,CAAC;KACtD,CAAC;IACF,QAAQ,UAAU,CAAC,IAAI,EAAE;QACvB,KAAK,cAAc,CAAC;QACpB,KAAK,cAAc,CAAC,CAAC;YACnB,OAAO;gBACL,KAAK,EAAE,4BAAe,CAAC,QAAQ;gBAC/B,IAAI,EAAE,2BAAc,CAAC,YAAY;gBACjC,KAAK,EAAE,EAAE;gBACT,QAAQ,EAAE;oBACR;wBACE,KAAK,EAAE,4BAAe,CAAC,QAAQ;wBAC/B,IAAI,EAAE,2BAAc,CAAC,QAAQ;wBAC7B,KAAK,EAAE,EAAE;wBACT,aAAa,EAAE,IAAI;wBACnB,MAAM,EAAE,EAAE;wBACV,QAAQ,EAAE;4BACR,SAAS;4BACT;gCACE,KAAK,EAAE,4BAAe,CAAC,QAAQ;gCAC/B,IAAI,EAAE,2BAAc,CAAC,iBAAiB;gCACtC,KAAK,EAAE,EAAE;gCACT,QAAQ,EAAE,aAAa;6BACxB;yBACF;wBACD,MAAM,EAAE,IAAI;wBACZ,SAAS,EAAE;4BACT,IAAI,EAAE,gBAAgB;4BACtB,MAAM,EAAE,EAAE;yBACX;wBACD,QAAQ,EAAE,KAAK;wBACf,WAAW,EAAE,IAAI;wBACjB,YAAY,EAAE,KAAK;wBACnB,OAAO,EAAE,EAAE;qBACZ;iBACF;aACF,CAAC;SACH;QACD,OAAO,CAAC,CAAC;YACP,OAAO;gBACL,KAAK,EAAE,4BAAe,CAAC,QAAQ;gBAC/B,IAAI,EAAE,2BAAc,CAAC,cAAc;gBACnC,KAAK,EAAE,EAAE;gBACT,QAAQ,EAAE,CAAC,SAAS,EAAE,GAAG,aAAa,CAAC;aACxC,CAAC;SACH;KACF;AACH,CAAC,CAAC;AAEK,MAAM,cAAc,GAAmC,CAAC,KAAK,EAAE,EAAE;IACtE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAErC,oCAAoC;IACpC,IAAI,IAAA,mDAA2B,EAAC,KAAK,CAAC,EAAE;QACtC,OAAO,IAAA,2CAAmB,EAAC,MAAM,EAAE,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;KAClE;IAED,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;QACjB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;KAC/D;IAED,OAAO,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAChE,CAAC,CAAC;AAbW,QAAA,cAAc,kBAazB"}
@@ -1 +1 @@
1
- {"version":3,"file":"or.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/or/or.ts"],"names":[],"mappings":";;;AACA,gGAAkH;AAE3G,MAAM,iBAAiB,GAAG,GAA0B,EAAE;IAC3D,OAAO;QACL,KAAK,EAAE,4BAAe,CAAC,WAAW;QAClC,IAAI,EAAE,2BAAc,CAAC,cAAc;QACnC,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACb,CAAC;AACJ,CAAC,CAAC;AAPW,QAAA,iBAAiB,qBAO5B"}
1
+ {"version":3,"file":"or.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/or/or.ts"],"names":[],"mappings":";;;AAAA,gGAGyE;AAGlE,MAAM,iBAAiB,GAAG,GAA0B,EAAE;IAC3D,OAAO;QACL,KAAK,EAAE,4BAAe,CAAC,WAAW;QAClC,IAAI,EAAE,2BAAc,CAAC,cAAc;QACnC,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,EAAE;KACb,CAAC;AACJ,CAAC,CAAC;AAPW,QAAA,iBAAiB,qBAO5B"}
@@ -0,0 +1,10 @@
1
+ import { FilterOperator } from '../../types/cube-types/query';
2
+ import { ParsedExpression } from '../../types/duckdb-serialization-types/serialization/ParsedExpression';
3
+ export declare const getSQLExpressionAST: (member: string, sqlExpression: string, operator: FilterOperator) => ParsedExpression;
4
+ /**
5
+ * Extract SQL expression placeholders from generated SQL and replace them
6
+ *
7
+ * @param sql - Generated SQL string
8
+ * @returns SQL with placeholders replaced by actual expressions
9
+ */
10
+ export declare const applySQLExpressions: (sql: string) => string;
@@ -0,0 +1,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applySQLExpressions = exports.getSQLExpressionAST = void 0;
4
+ const constants_1 = require("../../member-formatters/constants");
5
+ const Expression_1 = require("../../types/duckdb-serialization-types/serialization/Expression");
6
+ /**
7
+ * Encode a string to base64 (works in both browser and Node.js)
8
+ */
9
+ const toBase64 = (str) => {
10
+ const bytes = new TextEncoder().encode(str);
11
+ let binary = '';
12
+ for (let i = 0; i < bytes.length; i++) {
13
+ binary += String.fromCharCode(bytes[i]);
14
+ }
15
+ return btoa(binary);
16
+ };
17
+ /**
18
+ * Decode a base64 string (works in both browser and Node.js)
19
+ */
20
+ const fromBase64 = (base64) => {
21
+ const binary = atob(base64);
22
+ const bytes = new Uint8Array(binary.length);
23
+ for (let i = 0; i < binary.length; i++) {
24
+ bytes[i] = binary.charCodeAt(i);
25
+ }
26
+ return new TextDecoder().decode(bytes);
27
+ };
28
+ const getSQLPlaceholder = (sqlExpression) => {
29
+ return `__MEERKAT_SQL_EXPR__${toBase64(sqlExpression)}__`;
30
+ };
31
+ const createInOperatorAST = (member, sqlExpression) => {
32
+ const sqlPlaceholder = getSQLPlaceholder(sqlExpression);
33
+ const columnRef = {
34
+ class: Expression_1.ExpressionClass.COLUMN_REF,
35
+ type: Expression_1.ExpressionType.COLUMN_REF,
36
+ alias: '',
37
+ column_names: member.split(constants_1.COLUMN_NAME_DELIMITER),
38
+ };
39
+ // Create a placeholder constant node for the SQL expression
40
+ // This will be replaced with actual SQL during query generation
41
+ const sqlExpressionNode = {
42
+ class: Expression_1.ExpressionClass.CONSTANT,
43
+ type: Expression_1.ExpressionType.VALUE_CONSTANT,
44
+ alias: '',
45
+ value: { type: { id: 'VARCHAR' }, is_null: false, value: sqlPlaceholder },
46
+ };
47
+ return {
48
+ class: Expression_1.ExpressionClass.OPERATOR,
49
+ type: Expression_1.ExpressionType.COMPARE_IN,
50
+ alias: '',
51
+ children: [columnRef, sqlExpressionNode],
52
+ };
53
+ };
54
+ const createNotInOperatorAST = (member, sqlExpression) => {
55
+ const sqlPlaceholder = getSQLPlaceholder(sqlExpression);
56
+ const columnRef = {
57
+ class: Expression_1.ExpressionClass.COLUMN_REF,
58
+ type: Expression_1.ExpressionType.COLUMN_REF,
59
+ alias: '',
60
+ column_names: member.split(constants_1.COLUMN_NAME_DELIMITER),
61
+ };
62
+ // Create a placeholder constant node for the SQL expression
63
+ // This will be replaced with actual SQL during query generation
64
+ const sqlExpressionNode = {
65
+ class: Expression_1.ExpressionClass.CONSTANT,
66
+ type: Expression_1.ExpressionType.VALUE_CONSTANT,
67
+ alias: '',
68
+ value: { type: { id: 'VARCHAR' }, is_null: false, value: sqlPlaceholder },
69
+ };
70
+ return {
71
+ class: Expression_1.ExpressionClass.OPERATOR,
72
+ type: Expression_1.ExpressionType.COMPARE_NOT_IN,
73
+ alias: '',
74
+ children: [columnRef, sqlExpressionNode],
75
+ };
76
+ };
77
+ const getSQLExpressionAST = (member, sqlExpression, operator) => {
78
+ switch (operator) {
79
+ case 'in':
80
+ return createInOperatorAST(member, sqlExpression);
81
+ case 'notIn':
82
+ return createNotInOperatorAST(member, sqlExpression);
83
+ default:
84
+ throw new Error(`SQL expressions are not supported for ${operator} operator. Only "in" and "notIn" operators support SQL expressions.`);
85
+ }
86
+ };
87
+ exports.getSQLExpressionAST = getSQLExpressionAST;
88
+ /**
89
+ * Extract SQL expression placeholders from generated SQL and replace them
90
+ *
91
+ * @param sql - Generated SQL string
92
+ * @returns SQL with placeholders replaced by actual expressions
93
+ */
94
+ const applySQLExpressions = (sql) => {
95
+ // Replace quoted placeholders (DuckDB uses single quotes for VARCHAR constants)
96
+ return sql.replace(/'__MEERKAT_SQL_EXPR__([A-Za-z0-9+/=]+)__'/g, (_, encoded) => {
97
+ // Decode the base64 SQL expression
98
+ return fromBase64(encoded);
99
+ });
100
+ };
101
+ exports.applySQLExpressions = applySQLExpressions;
102
+ //# sourceMappingURL=sql-expression-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-expression-parser.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/sql-expression/sql-expression-parser.ts"],"names":[],"mappings":";;;AAAA,iEAA0E;AAE1E,gGAGyE;AAGzE;;GAEG;AACH,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAU,EAAE;IACvC,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5C,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACrC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KACzC;IACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,GAAG,CAAC,MAAc,EAAU,EAAE;IAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KACjC;IACD,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CAAC,aAAqB,EAAU,EAAE;IAC1D,OAAO,uBAAuB,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC;AAC5D,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAC1B,MAAc,EACd,aAAqB,EACH,EAAE;IACpB,MAAM,cAAc,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,SAAS,GAAqB;QAClC,KAAK,EAAE,4BAAe,CAAC,UAAU;QACjC,IAAI,EAAE,2BAAc,CAAC,UAAU;QAC/B,KAAK,EAAE,EAAE;QACT,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,iCAAqB,CAAC;KAClD,CAAC;IAEF,4DAA4D;IAC5D,gEAAgE;IAChE,MAAM,iBAAiB,GAAqB;QAC1C,KAAK,EAAE,4BAAe,CAAC,QAAQ;QAC/B,IAAI,EAAE,2BAAc,CAAC,cAAc;QACnC,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE;KAC1E,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,4BAAe,CAAC,QAAQ;QAC/B,IAAI,EAAE,2BAAc,CAAC,UAAU;QAC/B,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,CAAC,SAAS,EAAE,iBAAiB,CAAC;KACzC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,sBAAsB,GAAG,CAC7B,MAAc,EACd,aAAqB,EACH,EAAE;IACpB,MAAM,cAAc,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAExD,MAAM,SAAS,GAAqB;QAClC,KAAK,EAAE,4BAAe,CAAC,UAAU;QACjC,IAAI,EAAE,2BAAc,CAAC,UAAU;QAC/B,KAAK,EAAE,EAAE;QACT,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,iCAAqB,CAAC;KAClD,CAAC;IAEF,4DAA4D;IAC5D,gEAAgE;IAChE,MAAM,iBAAiB,GAAqB;QAC1C,KAAK,EAAE,4BAAe,CAAC,QAAQ;QAC/B,IAAI,EAAE,2BAAc,CAAC,cAAc;QACnC,KAAK,EAAE,EAAE;QACT,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAE;KAC1E,CAAC;IAEF,OAAO;QACL,KAAK,EAAE,4BAAe,CAAC,QAAQ;QAC/B,IAAI,EAAE,2BAAc,CAAC,cAAc;QACnC,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE,CAAC,SAAS,EAAE,iBAAiB,CAAC;KACzC,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,mBAAmB,GAAG,CACjC,MAAc,EACd,aAAqB,EACrB,QAAwB,EACN,EAAE;IACpB,QAAQ,QAAQ,EAAE;QAChB,KAAK,IAAI;YACP,OAAO,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACpD,KAAK,OAAO;YACV,OAAO,sBAAsB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACvD;YACE,MAAM,IAAI,KAAK,CACb,yCAAyC,QAAQ,qEAAqE,CACvH,CAAC;KACL;AACH,CAAC,CAAC;AAfW,QAAA,mBAAmB,uBAe9B;AAEF;;;;;GAKG;AACI,MAAM,mBAAmB,GAAG,CAAC,GAAW,EAAU,EAAE;IACzD,gFAAgF;IAChF,OAAO,GAAG,CAAC,OAAO,CAChB,4CAA4C,EAC5C,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE;QACb,mCAAmC;QACnC,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC,CACF,CAAC;AACJ,CAAC,CAAC;AATW,QAAA,mBAAmB,uBAS9B"}
@@ -1,8 +1,15 @@
1
- import { QueryFilter } from '../types/cube-types/query';
1
+ import { QueryFilterWithSQL, QueryFilterWithValues } from '../types/cube-types/query';
2
2
  import { Dimension, Measure } from '../types/cube-types/table';
3
- export type QueryOperatorsWithInfo = QueryFilter & {
3
+ export type QueryOperatorsWithInfoSQL = QueryFilterWithSQL & {
4
4
  memberInfo: Measure | Dimension;
5
5
  };
6
+ /**
7
+ * Query filter with member info added
8
+ */
9
+ export type QueryOperatorsWithInfoValues = QueryFilterWithValues & {
10
+ memberInfo: Measure | Dimension;
11
+ };
12
+ export type QueryOperatorsWithInfo = QueryOperatorsWithInfoSQL | QueryOperatorsWithInfoValues;
6
13
  export type LogicalAndFilterWithInfo = {
7
14
  and: (QueryOperatorsWithInfo | {
8
15
  or: (QueryOperatorsWithInfo | LogicalAndFilterWithInfo)[];
@@ -14,3 +21,7 @@ export type LogicalOrFilterWithInfo = {
14
21
  export type QueryFilterWithInfo = (QueryOperatorsWithInfo | LogicalAndFilterWithInfo | LogicalOrFilterWithInfo) | (QueryOperatorsWithInfo | LogicalAndFilterWithInfo | LogicalOrFilterWithInfo)[];
15
22
  export type QueryFiltersWithInfoSingular = QueryOperatorsWithInfo | LogicalAndFilterWithInfo | LogicalOrFilterWithInfo;
16
23
  export type QueryFiltersWithInfo = QueryFiltersWithInfoSingular[];
24
+ /**
25
+ * Type guard to check if filter uses SQL expression
26
+ */
27
+ export declare const isQueryOperatorsWithSQLInfo: (filter: QueryOperatorsWithInfo) => filter is QueryOperatorsWithInfoSQL;
@@ -1,3 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isQueryOperatorsWithSQLInfo = void 0;
4
+ /**
5
+ * Type guard to check if filter uses SQL expression
6
+ */
7
+ const isQueryOperatorsWithSQLInfo = (filter) => {
8
+ return 'sqlExpression' in filter && typeof filter.sqlExpression === 'string';
9
+ };
10
+ exports.isQueryOperatorsWithSQLInfo = isQueryOperatorsWithSQLInfo;
3
11
  //# sourceMappingURL=cube-filter-to-duckdb.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cube-filter-to-duckdb.js","sourceRoot":"","sources":["../../../../meerkat-core/src/cube-to-duckdb/cube-filter-to-duckdb.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"cube-filter-to-duckdb.js","sourceRoot":"","sources":["../../../../meerkat-core/src/cube-to-duckdb/cube-filter-to-duckdb.ts"],"names":[],"mappings":";;;AAmDA;;GAEG;AACI,MAAM,2BAA2B,GAAG,CACzC,MAA8B,EACO,EAAE;IACvC,OAAO,eAAe,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,CAAC;AAC/E,CAAC,CAAC;AAJW,QAAA,2BAA2B,+BAItC"}
package/src/index.d.ts CHANGED
@@ -4,6 +4,7 @@ export * from './ast-serializer/ast-serializer';
4
4
  export * from './ast-validator';
5
5
  export * from './constants/exports';
6
6
  export { detectApplyContextParamsToBaseSQL } from './context-params/context-params-ast';
7
+ export { applySQLExpressions, getSQLExpressionAST, } from './cube-filter-transformer/sql-expression/sql-expression-parser';
7
8
  export * from './cube-measure-transformer/cube-measure-transformer';
8
9
  export * from './cube-to-duckdb/cube-filter-to-duckdb';
9
10
  export { applyFilterParamsToBaseSQL, detectAllFilterParamsFromSQL, getFilterParamsAST, } from './filter-params/filter-params-ast';
package/src/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.meerkatPlaceholderReplacer = exports.BASE_TABLE_NAME = exports.getFinalBaseSQL = exports.getFilterParamsSQL = exports.getFilterParamsAST = exports.detectAllFilterParamsFromSQL = exports.applyFilterParamsToBaseSQL = exports.detectApplyContextParamsToBaseSQL = void 0;
3
+ exports.meerkatPlaceholderReplacer = exports.BASE_TABLE_NAME = exports.getFinalBaseSQL = exports.getFilterParamsSQL = exports.getFilterParamsAST = exports.detectAllFilterParamsFromSQL = exports.applyFilterParamsToBaseSQL = exports.getSQLExpressionAST = exports.applySQLExpressions = exports.detectApplyContextParamsToBaseSQL = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  tslib_1.__exportStar(require("./ast-builder/ast-builder"), exports);
6
6
  tslib_1.__exportStar(require("./ast-deserializer/ast-deserializer"), exports);
@@ -9,6 +9,9 @@ tslib_1.__exportStar(require("./ast-validator"), exports);
9
9
  tslib_1.__exportStar(require("./constants/exports"), exports);
10
10
  var context_params_ast_1 = require("./context-params/context-params-ast");
11
11
  Object.defineProperty(exports, "detectApplyContextParamsToBaseSQL", { enumerable: true, get: function () { return context_params_ast_1.detectApplyContextParamsToBaseSQL; } });
12
+ var sql_expression_parser_1 = require("./cube-filter-transformer/sql-expression/sql-expression-parser");
13
+ Object.defineProperty(exports, "applySQLExpressions", { enumerable: true, get: function () { return sql_expression_parser_1.applySQLExpressions; } });
14
+ Object.defineProperty(exports, "getSQLExpressionAST", { enumerable: true, get: function () { return sql_expression_parser_1.getSQLExpressionAST; } });
12
15
  tslib_1.__exportStar(require("./cube-measure-transformer/cube-measure-transformer"), exports);
13
16
  tslib_1.__exportStar(require("./cube-to-duckdb/cube-filter-to-duckdb"), exports);
14
17
  var filter_params_ast_1 = require("./filter-params/filter-params-ast");
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../meerkat-core/src/index.ts"],"names":[],"mappings":";;;;AAAA,oEAA0C;AAC1C,8EAAoD;AACpD,0EAAgD;AAChD,0DAAgC;AAChC,8DAAoC;AACpC,0EAAwF;AAA/E,uIAAA,iCAAiC,OAAA;AAC1C,8FAAoE;AACpE,iFAAuD;AACvD,uEAI2C;AAHzC,+HAAA,0BAA0B,OAAA;AAC1B,iIAAA,4BAA4B,OAAA;AAC5B,uHAAA,kBAAkB,OAAA;AAEpB,uFAAmF;AAA1E,2HAAA,kBAAkB,OAAA;AAC3B,8EAA0E;AAAjE,qHAAA,eAAe,OAAA;AACxB,oFAA0D;AAC1D,wDAA8B;AAC9B,8DAAoC;AACpC,kEAAwC;AACxC,kEAAwC;AACxC,8EAAoD;AACpD,6EAAmD;AACnD,yEAA+C;AAC/C,6DAAmC;AAEnC,mEAAyC;AACzC,mFAAyD;AACzD,wDAA8B;AAC9B,6CAAmD;AAA1C,2GAAA,eAAe,OAAA;AACxB,uEAA6C;AAC7C,4EAAkD;AAClD,qEAA2C;AAC3C,qFAAkF;AAAzE,0IAAA,0BAA0B,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../meerkat-core/src/index.ts"],"names":[],"mappings":";;;;AAAA,oEAA0C;AAC1C,8EAAoD;AACpD,0EAAgD;AAChD,0DAAgC;AAChC,8DAAoC;AACpC,0EAAwF;AAA/E,uIAAA,iCAAiC,OAAA;AAC1C,wGAGwE;AAFtE,4HAAA,mBAAmB,OAAA;AACnB,4HAAA,mBAAmB,OAAA;AAErB,8FAAoE;AACpE,iFAAuD;AACvD,uEAI2C;AAHzC,+HAAA,0BAA0B,OAAA;AAC1B,iIAAA,4BAA4B,OAAA;AAC5B,uHAAA,kBAAkB,OAAA;AAEpB,uFAAmF;AAA1E,2HAAA,kBAAkB,OAAA;AAC3B,8EAA0E;AAAjE,qHAAA,eAAe,OAAA;AACxB,oFAA0D;AAC1D,wDAA8B;AAC9B,8DAAoC;AACpC,kEAAwC;AACxC,kEAAwC;AACxC,8EAAoD;AACpD,6EAAmD;AACnD,yEAA+C;AAC/C,6DAAmC;AAEnC,mEAAyC;AACzC,mFAAyD;AACzD,wDAA8B;AAC9B,6CAAmD;AAA1C,2GAAA,eAAe,OAAA;AACxB,uEAA6C;AAC7C,4EAAkD;AAClD,qEAA2C;AAC3C,qFAAkF;AAAzE,0IAAA,0BAA0B,OAAA"}
@@ -35,11 +35,20 @@ type QueryOrderType = 'asc' | 'desc';
35
35
  */
36
36
  type ApiScopes = 'graphql' | 'meta' | 'data' | 'jobs';
37
37
  export type FilterType = 'BASE_FILTER' | 'PROJECTION_FILTER';
38
- interface QueryFilter {
38
+ type QueryFilterWithValues = {
39
39
  member: Member;
40
40
  operator: FilterOperator;
41
41
  values?: string[];
42
- }
42
+ };
43
+ type QueryFilterWithSQL = {
44
+ member: Member;
45
+ operator: Omit<FilterOperator, 'set' | 'notSet'>;
46
+ sqlExpression: string;
47
+ };
48
+ /**
49
+ * Query filter - supports either values array or SQL expression
50
+ */
51
+ type QueryFilter = QueryFilterWithValues | QueryFilterWithSQL;
43
52
  /**
44
53
  * Query 'and'-filters type definition.
45
54
  */
@@ -96,4 +105,8 @@ interface Query {
96
105
  offset?: number;
97
106
  order?: Record<string, QueryOrderType>;
98
107
  }
99
- export { ApiScopes, ApiType, FilterOperator, JoinPath, LogicalAndFilter, LogicalOrFilter, MeerkatQueryFilter, Member, MemberType, Query, QueryFilter, QueryOrderType, QueryType, RequestType, ResultType };
108
+ /**
109
+ * Type guard to check if filter uses SQL expression
110
+ */
111
+ export declare const isQueryFilterWithSQL: (filter: QueryFilter) => filter is QueryFilterWithSQL;
112
+ export { ApiScopes, ApiType, FilterOperator, JoinPath, LogicalAndFilter, LogicalOrFilter, MeerkatQueryFilter, Member, MemberType, Query, QueryFilter, QueryFilterWithSQL, QueryFilterWithValues, QueryOrderType, QueryType, RequestType, ResultType, };
@@ -1,8 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isJoinNode = void 0;
3
+ exports.isQueryFilterWithSQL = exports.isJoinNode = void 0;
4
4
  const isJoinNode = (node) => {
5
5
  return 'right' in node;
6
6
  };
7
7
  exports.isJoinNode = isJoinNode;
8
+ /**
9
+ * Type guard to check if filter uses SQL expression
10
+ */
11
+ const isQueryFilterWithSQL = (filter) => {
12
+ return 'sqlExpression' in filter && typeof filter.sqlExpression === 'string';
13
+ };
14
+ exports.isQueryFilterWithSQL = isQueryFilterWithSQL;
8
15
  //# sourceMappingURL=query.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/types/cube-types/query.ts"],"names":[],"mappings":";;;AA6IO,MAAM,UAAU,GAAG,CAAC,IAA2B,EAAoB,EAAE;IAC1E,OAAO,OAAO,IAAI,IAAI,CAAC;AACzB,CAAC,CAAC;AAFW,QAAA,UAAU,cAErB"}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/types/cube-types/query.ts"],"names":[],"mappings":";;;AAsJO,MAAM,UAAU,GAAG,CAAC,IAA2B,EAAoB,EAAE;IAC1E,OAAO,OAAO,IAAI,IAAI,CAAC;AACzB,CAAC,CAAC;AAFW,QAAA,UAAU,cAErB;AAkBF;;GAEG;AACI,MAAM,oBAAoB,GAAG,CAClC,MAAmB,EACW,EAAE;IAChC,OAAO,eAAe,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,CAAC;AAC/E,CAAC,CAAC;AAJW,QAAA,oBAAoB,wBAI/B"}
@@ -1,4 +1,4 @@
1
1
  import { LogicalAndFilterWithInfo, LogicalOrFilterWithInfo, QueryFiltersWithInfo, QueryOperatorsWithInfo } from '../cube-to-duckdb/cube-filter-to-duckdb';
2
2
  import { TableSchema } from '../types/cube-types/table';
3
- export declare const cubeFiltersEnrichmentInternal: (filters: (QueryOperatorsWithInfo | LogicalAndFilterWithInfo | LogicalOrFilterWithInfo) | QueryFiltersWithInfo, tableSchema: TableSchema) => QueryOperatorsWithInfo | QueryFiltersWithInfo | null;
3
+ export declare const cubeFiltersEnrichmentInternal: (filters: (QueryOperatorsWithInfo | LogicalAndFilterWithInfo | LogicalOrFilterWithInfo) | QueryFiltersWithInfo, tableSchema: TableSchema) => import("../cube-to-duckdb/cube-filter-to-duckdb").QueryOperatorsWithInfoSQL | import("../cube-to-duckdb/cube-filter-to-duckdb").QueryOperatorsWithInfoValues | QueryFiltersWithInfo | null;
4
4
  export declare const cubeFiltersEnrichment: (filters: QueryFiltersWithInfo, tableSchema: TableSchema) => QueryFiltersWithInfo | null;