@devrev/meerkat-core 0.0.124 → 0.0.127

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@devrev/meerkat-core",
3
- "version": "0.0.124",
3
+ "version": "0.0.127",
4
4
  "dependencies": {
5
5
  "tslib": "^2.3.0"
6
6
  },
@@ -0,0 +1,6 @@
1
+ import { CubeToParseExpressionTransform } from '../factory';
2
+ /**
3
+ * For array columns: (col IS NULL OR len(col) = 0)
4
+ * For non-array columns: (col IS NULL)
5
+ */
6
+ export declare const emptyTransform: CubeToParseExpressionTransform;
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.emptyTransform = void 0;
4
+ const Expression_1 = require("../../types/duckdb-serialization-types/serialization/Expression");
5
+ const base_condition_builder_1 = require("../base-condition-builder/base-condition-builder");
6
+ const emptyCondition = (columnName, options) => {
7
+ const columnRef = (0, base_condition_builder_1.createColumnRef)(columnName, { isAlias: options.isAlias });
8
+ return {
9
+ class: Expression_1.ExpressionClass.CONJUNCTION,
10
+ type: Expression_1.ExpressionType.CONJUNCTION_OR,
11
+ alias: '',
12
+ children: [
13
+ {
14
+ class: Expression_1.ExpressionClass.OPERATOR,
15
+ type: Expression_1.ExpressionType.OPERATOR_IS_NULL,
16
+ alias: '',
17
+ children: [columnRef],
18
+ },
19
+ {
20
+ class: Expression_1.ExpressionClass.COMPARISON,
21
+ type: Expression_1.ExpressionType.COMPARE_EQUAL,
22
+ alias: '',
23
+ left: {
24
+ class: Expression_1.ExpressionClass.FUNCTION,
25
+ type: Expression_1.ExpressionType.FUNCTION,
26
+ alias: '',
27
+ function_name: 'len',
28
+ schema: '',
29
+ children: [columnRef],
30
+ filter: null,
31
+ order_bys: { type: 'ORDER_MODIFIER', orders: [] },
32
+ distinct: false,
33
+ is_operator: false,
34
+ export_state: false,
35
+ catalog: '',
36
+ },
37
+ right: {
38
+ class: Expression_1.ExpressionClass.CONSTANT,
39
+ type: Expression_1.ExpressionType.VALUE_CONSTANT,
40
+ alias: '',
41
+ value: {
42
+ type: { id: 'INTEGER', type_info: null },
43
+ is_null: false,
44
+ value: 0,
45
+ },
46
+ },
47
+ },
48
+ ],
49
+ };
50
+ };
51
+ const nullCondition = (columnName, options) => ({
52
+ class: Expression_1.ExpressionClass.OPERATOR,
53
+ type: Expression_1.ExpressionType.OPERATOR_IS_NULL,
54
+ alias: '',
55
+ children: [(0, base_condition_builder_1.createColumnRef)(columnName, { isAlias: options.isAlias })],
56
+ });
57
+ /**
58
+ * For array columns: (col IS NULL OR len(col) = 0)
59
+ * For non-array columns: (col IS NULL)
60
+ */
61
+ const emptyTransform = (query, options) => {
62
+ const { member, memberInfo } = query;
63
+ if (memberInfo) {
64
+ switch (memberInfo.type) {
65
+ case 'string_array':
66
+ case 'number_array':
67
+ return emptyCondition(member, options);
68
+ default:
69
+ return nullCondition(member, options);
70
+ }
71
+ }
72
+ return emptyCondition(member, options);
73
+ };
74
+ exports.emptyTransform = emptyTransform;
75
+ //# sourceMappingURL=empty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/empty/empty.ts"],"names":[],"mappings":";;;AAAA,gGAGyE;AACzE,6FAAmF;AAGnF,MAAM,cAAc,GAAG,CACrB,UAAkB,EAClB,OAA6B,EAC7B,EAAE;IACF,MAAM,SAAS,GAAG,IAAA,wCAAe,EAAC,UAAU,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAE5E,OAAO;QACL,KAAK,EAAE,4BAAe,CAAC,WAAW;QAClC,IAAI,EAAE,2BAAc,CAAC,cAAc;QACnC,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE;YACR;gBACE,KAAK,EAAE,4BAAe,CAAC,QAAQ;gBAC/B,IAAI,EAAE,2BAAc,CAAC,gBAAgB;gBACrC,KAAK,EAAE,EAAE;gBACT,QAAQ,EAAE,CAAC,SAAS,CAAC;aACtB;YACD;gBACE,KAAK,EAAE,4BAAe,CAAC,UAAU;gBACjC,IAAI,EAAE,2BAAc,CAAC,aAAa;gBAClC,KAAK,EAAE,EAAE;gBACT,IAAI,EAAE;oBACJ,KAAK,EAAE,4BAAe,CAAC,QAAQ;oBAC/B,IAAI,EAAE,2BAAc,CAAC,QAAQ;oBAC7B,KAAK,EAAE,EAAE;oBACT,aAAa,EAAE,KAAK;oBACpB,MAAM,EAAE,EAAE;oBACV,QAAQ,EAAE,CAAC,SAAS,CAAC;oBACrB,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,EAAE;oBACjD,QAAQ,EAAE,KAAK;oBACf,WAAW,EAAE,KAAK;oBAClB,YAAY,EAAE,KAAK;oBACnB,OAAO,EAAE,EAAE;iBACZ;gBACD,KAAK,EAAE;oBACL,KAAK,EAAE,4BAAe,CAAC,QAAQ;oBAC/B,IAAI,EAAE,2BAAc,CAAC,cAAc;oBACnC,KAAK,EAAE,EAAE;oBACT,KAAK,EAAE;wBACL,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;wBACxC,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,CAAC;qBACT;iBACF;aACF;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CACpB,UAAkB,EAClB,OAA6B,EAC7B,EAAE,CAAC,CAAC;IACJ,KAAK,EAAE,4BAAe,CAAC,QAAQ;IAC/B,IAAI,EAAE,2BAAc,CAAC,gBAAgB;IACrC,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,CAAC,IAAA,wCAAe,EAAC,UAAU,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CACtE,CAAC,CAAC;AAEH;;;GAGG;AACI,MAAM,cAAc,GAAmC,CAC5D,KAAK,EACL,OAAO,EACP,EAAE;IACF,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAErC,IAAI,UAAU,EAAE;QACd,QAAQ,UAAU,CAAC,IAAI,EAAE;YACvB,KAAK,cAAc,CAAC;YACpB,KAAK,cAAc;gBACjB,OAAO,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACzC;gBACE,OAAO,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SACzC;KACF;IAED,OAAO,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC,CAAC;AAjBW,QAAA,cAAc,kBAiBzB"}
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.cubeFilterToDuckdbAST = void 0;
4
4
  const type_guards_1 = require("../utils/type-guards");
5
5
  const and_1 = require("./and/and");
6
+ const empty_1 = require("./empty/empty");
7
+ const not_empty_1 = require("./not-empty/not-empty");
6
8
  const contains_1 = require("./contains/contains");
7
9
  const equals_1 = require("./equals/equals");
8
10
  const gt_1 = require("./gt/gt");
@@ -51,6 +53,12 @@ const cubeFilterOperatorsToDuckdb = (cubeFilter, options) => {
51
53
  case 'set': {
52
54
  return (0, set_1.setTransform)(cubeFilter, options);
53
55
  }
56
+ case 'empty': {
57
+ return (0, empty_1.emptyTransform)(cubeFilter, options);
58
+ }
59
+ case 'notEmpty': {
60
+ return (0, not_empty_1.notEmptyTransform)(cubeFilter, options);
61
+ }
54
62
  default:
55
63
  throw new Error('Could not transform the filter');
56
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../meerkat-core/src/cube-filter-transformer/factory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../meerkat-core/src/cube-filter-transformer/factory.ts"],"names":[],"mappings":";;;AAQA,sDAO8B;AAC9B,mCAA+C;AAC/C,yCAA+C;AAC/C,qDAA0D;AAE1D,kDAAwD;AACxD,4CAAkD;AAClD,gCAAsC;AACtC,mCAAyC;AACzC,iEAAqE;AACrE,gCAAsC;AACtC,gCAAsC;AACtC,mCAAyC;AACzC,6EAAgF;AAChF,8DAAmE;AACnE,wDAA6D;AAC7D,4CAAiD;AACjD,+CAAoD;AACpD,gCAA4C;AAC5C,mCAAyC;AAOzC,uBAAuB;AACvB,MAAM,2BAA2B,GAAG,CAClC,UAAkC,EAClC,OAA+B,EAC/B,EAAE;IACF,QAAQ,UAAU,CAAC,QAAQ,EAAE;QAC3B,KAAK,QAAQ;YACX,OAAO,IAAA,wBAAe,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC9C,KAAK,WAAW;YACd,OAAO,IAAA,+BAAkB,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACjD,KAAK,IAAI;YACP,OAAO,IAAA,gBAAW,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC1C,KAAK,OAAO;YACV,OAAO,IAAA,uBAAc,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC7C,KAAK,UAAU;YACb,OAAO,IAAA,4BAAiB,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAChD,KAAK,aAAa;YAChB,OAAO,IAAA,mCAAoB,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACnD,KAAK,IAAI;YACP,OAAO,IAAA,gBAAW,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC1C,KAAK,KAAK;YACR,OAAO,IAAA,kBAAY,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3C,KAAK,IAAI;YACP,OAAO,IAAA,gBAAW,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC1C,KAAK,KAAK;YACR,OAAO,IAAA,kBAAY,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3C,KAAK,aAAa;YAChB,OAAO,IAAA,oCAAoB,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACnD,KAAK,gBAAgB;YACnB,OAAO,IAAA,2CAAuB,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACtD,KAAK,QAAQ,CAAC,CAAC;YACb,OAAO,IAAA,yBAAe,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;SAC7C;QACD,KAAK,KAAK,CAAC,CAAC;YACV,OAAO,IAAA,kBAAY,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;SAC1C;QACD,KAAK,OAAO,CAAC,CAAC;YACZ,OAAO,IAAA,sBAAc,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;SAC5C;QACD,KAAK,UAAU,CAAC,CAAC;YACf,OAAO,IAAA,6BAAiB,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;SAC/C;QACD;YACE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;KACrD;AACH,CAAC,CAAC;AAEF,MAAM,8BAA8B,GAAG,CACrC,UAA+B,EAC/B,QAAiC,EACjC,OAA+B,EACN,EAAE;IAC3B;;OAEG;IACH,IAAI,CAAC,IAAA,2BAAa,EAAC,UAAU,CAAC,IAAI,IAAA,2BAAa,EAAC,UAAU,CAAC,EAAE;QAC3D,MAAM,IAAI,GAAG,2BAA2B,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,EAAE;YACT,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;SACnD;QACD,OAAO,IAAI,CAAC;KACb;IAED,IAAI,CAAC,IAAA,2BAAa,EAAC,UAAU,CAAC,IAAI,IAAA,0BAAY,EAAC,UAAU,CAAC,EAAE;QAC1D,IAAI,UAAU,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;YAC/B,OAAO,IAAI,CAAC;SACb;QACD,+BAA+B;QAC/B,MAAM,mBAAmB,GAAG,IAAA,wBAAkB,GAAE,CAAC;QACjD,MAAM,IAAI,GAAG,8BAA8B,CACzC,UAAU,CAAC,GAAG,EACd,mBAAmB,EACnB,OAAO,CACR,CAAC;QACF,OAAO,IAAI,CAAC;KACb;IAED,IAAI,CAAC,IAAA,2BAAa,EAAC,UAAU,CAAC,IAAI,IAAA,yBAAW,EAAC,UAAU,CAAC,EAAE;QACzD,IAAI,UAAU,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9B,OAAO,IAAI,CAAC;SACb;QACD,+BAA+B;QAC/B,MAAM,kBAAkB,GAAG,IAAA,sBAAiB,GAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,8BAA8B,CACzC,UAAU,CAAC,EAAE,EACb,kBAAkB,EAClB,OAAO,CACR,CAAC;QACF,OAAO,IAAI,CAAC;KACb;IAED,IAAI,IAAA,2BAAa,EAAC,UAAU,CAAC,EAAE;QAC7B,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE;YAC/B,MAAM,IAAI,GAAG,8BAA8B,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YACvE,IAAI,IAAI,EAAE;gBACR,IAAI,IAAA,yBAAW,EAAC,QAAQ,CAAC,EAAE;oBACzB,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBAC9B;qBAAM;oBACL,QAAQ,GAAG,IAAI,CAAC;iBACjB;aACF;SACF;QACD,OAAO,QAAQ,CAAC;KACjB;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AAEK,MAAM,qBAAqB,GAAG,CACnC,UAAgC,EAChC,GAAoB,EACpB,OAA+B,EAC/B,EAAE;IACF,IAAI,QAAQ,GACT,GAAG,CAAC,IAAmB,CAAC,YAAY,IAAI,IAAI,CAAC;IAEhD,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;QACzB,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;KAC3D;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IAE7B,IAAI,IAAA,2BAAa,EAAC,MAAM,CAAC,EAAE;QACzB,QAAQ,GAAG,2BAA2B,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACzD;IAED,IAAI,IAAA,4BAAc,EAAC,MAAM,CAAC,EAAE;QAC1B,+BAA+B;QAC/B,QAAQ,GAAG,8BAA8B,CACvC,MAAM,EACN,QAAQ,IAAI,IAAI,EAChB,OAAO,CACR,CAAC;KACH;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC,CAAC;AA7BW,QAAA,qBAAqB,yBA6BhC"}
@@ -0,0 +1,6 @@
1
+ import { CubeToParseExpressionTransform } from '../factory';
2
+ /**
3
+ * For array columns: (col IS NOT NULL AND len(col) > 0)
4
+ * For non-array columns: (col IS NOT NULL)
5
+ */
6
+ export declare const notEmptyTransform: CubeToParseExpressionTransform;
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.notEmptyTransform = void 0;
4
+ const Expression_1 = require("../../types/duckdb-serialization-types/serialization/Expression");
5
+ const base_condition_builder_1 = require("../base-condition-builder/base-condition-builder");
6
+ const notEmptyCondition = (columnName, options) => {
7
+ const columnRef = (0, base_condition_builder_1.createColumnRef)(columnName, { isAlias: options.isAlias });
8
+ return {
9
+ class: Expression_1.ExpressionClass.CONJUNCTION,
10
+ type: Expression_1.ExpressionType.CONJUNCTION_AND,
11
+ alias: '',
12
+ children: [
13
+ {
14
+ class: Expression_1.ExpressionClass.OPERATOR,
15
+ type: Expression_1.ExpressionType.OPERATOR_IS_NOT_NULL,
16
+ alias: '',
17
+ children: [columnRef],
18
+ },
19
+ {
20
+ class: Expression_1.ExpressionClass.COMPARISON,
21
+ type: Expression_1.ExpressionType.COMPARE_GREATERTHAN,
22
+ alias: '',
23
+ left: {
24
+ class: Expression_1.ExpressionClass.FUNCTION,
25
+ type: Expression_1.ExpressionType.FUNCTION,
26
+ alias: '',
27
+ function_name: 'len',
28
+ schema: '',
29
+ children: [columnRef],
30
+ filter: null,
31
+ order_bys: { type: 'ORDER_MODIFIER', orders: [] },
32
+ distinct: false,
33
+ is_operator: false,
34
+ export_state: false,
35
+ catalog: '',
36
+ },
37
+ right: {
38
+ class: Expression_1.ExpressionClass.CONSTANT,
39
+ type: Expression_1.ExpressionType.VALUE_CONSTANT,
40
+ alias: '',
41
+ value: {
42
+ type: { id: 'INTEGER', type_info: null },
43
+ is_null: false,
44
+ value: 0,
45
+ },
46
+ },
47
+ },
48
+ ],
49
+ };
50
+ };
51
+ const notNullCondition = (columnName, options) => ({
52
+ class: Expression_1.ExpressionClass.OPERATOR,
53
+ type: Expression_1.ExpressionType.OPERATOR_IS_NOT_NULL,
54
+ alias: '',
55
+ children: [(0, base_condition_builder_1.createColumnRef)(columnName, { isAlias: options.isAlias })],
56
+ });
57
+ /**
58
+ * For array columns: (col IS NOT NULL AND len(col) > 0)
59
+ * For non-array columns: (col IS NOT NULL)
60
+ */
61
+ const notEmptyTransform = (query, options) => {
62
+ const { member, memberInfo } = query;
63
+ if (memberInfo) {
64
+ switch (memberInfo.type) {
65
+ case 'string_array':
66
+ case 'number_array':
67
+ return notEmptyCondition(member, options);
68
+ default:
69
+ return notNullCondition(member, options);
70
+ }
71
+ }
72
+ return notEmptyCondition(member, options);
73
+ };
74
+ exports.notEmptyTransform = notEmptyTransform;
75
+ //# sourceMappingURL=not-empty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"not-empty.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/not-empty/not-empty.ts"],"names":[],"mappings":";;;AAAA,gGAGyE;AACzE,6FAAmF;AAGnF,MAAM,iBAAiB,GAAG,CACxB,UAAkB,EAClB,OAA6B,EAC7B,EAAE;IACF,MAAM,SAAS,GAAG,IAAA,wCAAe,EAAC,UAAU,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAE5E,OAAO;QACL,KAAK,EAAE,4BAAe,CAAC,WAAW;QAClC,IAAI,EAAE,2BAAc,CAAC,eAAe;QACpC,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE;YACR;gBACE,KAAK,EAAE,4BAAe,CAAC,QAAQ;gBAC/B,IAAI,EAAE,2BAAc,CAAC,oBAAoB;gBACzC,KAAK,EAAE,EAAE;gBACT,QAAQ,EAAE,CAAC,SAAS,CAAC;aACtB;YACD;gBACE,KAAK,EAAE,4BAAe,CAAC,UAAU;gBACjC,IAAI,EAAE,2BAAc,CAAC,mBAAmB;gBACxC,KAAK,EAAE,EAAE;gBACT,IAAI,EAAE;oBACJ,KAAK,EAAE,4BAAe,CAAC,QAAQ;oBAC/B,IAAI,EAAE,2BAAc,CAAC,QAAQ;oBAC7B,KAAK,EAAE,EAAE;oBACT,aAAa,EAAE,KAAK;oBACpB,MAAM,EAAE,EAAE;oBACV,QAAQ,EAAE,CAAC,SAAS,CAAC;oBACrB,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,EAAE,EAAE;oBACjD,QAAQ,EAAE,KAAK;oBACf,WAAW,EAAE,KAAK;oBAClB,YAAY,EAAE,KAAK;oBACnB,OAAO,EAAE,EAAE;iBACZ;gBACD,KAAK,EAAE;oBACL,KAAK,EAAE,4BAAe,CAAC,QAAQ;oBAC/B,IAAI,EAAE,2BAAc,CAAC,cAAc;oBACnC,KAAK,EAAE,EAAE;oBACT,KAAK,EAAE;wBACL,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE;wBACxC,OAAO,EAAE,KAAK;wBACd,KAAK,EAAE,CAAC;qBACT;iBACF;aACF;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CACvB,UAAkB,EAClB,OAA6B,EAC7B,EAAE,CAAC,CAAC;IACJ,KAAK,EAAE,4BAAe,CAAC,QAAQ;IAC/B,IAAI,EAAE,2BAAc,CAAC,oBAAoB;IACzC,KAAK,EAAE,EAAE;IACT,QAAQ,EAAE,CAAC,IAAA,wCAAe,EAAC,UAAU,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;CACtE,CAAC,CAAC;AAEH;;;GAGG;AACI,MAAM,iBAAiB,GAAmC,CAC/D,KAAK,EACL,OAAO,EACP,EAAE;IACF,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IAErC,IAAI,UAAU,EAAE;QACd,QAAQ,UAAU,CAAC,IAAI,EAAE;YACvB,KAAK,cAAc,CAAC;YACpB,KAAK,cAAc;gBACjB,OAAO,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC5C;gBACE,OAAO,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;SAC5C;KACF;IAED,OAAO,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC,CAAC;AAjBW,QAAA,iBAAiB,qBAiB5B"}
@@ -5,7 +5,7 @@ const cube_filter_to_duckdb_1 = require("../../cube-to-duckdb/cube-filter-to-duc
5
5
  const Expression_1 = require("../../types/duckdb-serialization-types/serialization/Expression");
6
6
  const is_array_member_type_1 = require("../../utils/is-array-member-type");
7
7
  const base_condition_builder_1 = require("../base-condition-builder/base-condition-builder");
8
- const or_1 = require("../or/or");
8
+ const not_in_1 = require("../not-in/not-in");
9
9
  const sql_expression_parser_1 = require("../sql-expression/sql-expression-parser");
10
10
  const not_equals_array_1 = require("./not-equals-array");
11
11
  const notEqualsTransform = (query, options) => {
@@ -26,19 +26,12 @@ const notEqualsTransform = (query, options) => {
26
26
  return (0, not_equals_array_1.notEqualsArrayTransform)(query, options);
27
27
  }
28
28
  /**
29
- * If there is only one value, we can create a simple equals condition
29
+ * If there is only one value, we can create a simple notEquals condition
30
30
  */
31
31
  if (values.length === 1) {
32
32
  return (0, base_condition_builder_1.baseDuckdbCondition)(member, Expression_1.ExpressionType.COMPARE_NOTEQUAL, values[0], memberInfo, options);
33
33
  }
34
- /**
35
- * If there are multiple values, we need to create an OR condition
36
- */
37
- const orCondition = (0, or_1.orDuckdbCondition)();
38
- values.forEach((value) => {
39
- orCondition.children.push((0, base_condition_builder_1.baseDuckdbCondition)(member, Expression_1.ExpressionType.COMPARE_NOTEQUAL, value, memberInfo, options));
40
- });
41
- return orCondition;
34
+ return (0, not_in_1.notInTransform)(query, options);
42
35
  };
43
36
  exports.notEqualsTransform = notEqualsTransform;
44
37
  //# sourceMappingURL=not-equals.js.map
@@ -1 +1 @@
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,6FAG0D;AAE1D,iCAA6C;AAC7C,mFAA8E;AAC9E,yDAA6D;AAEtD,MAAM,kBAAkB,GAAmC,CAChE,KAAK,EACL,OAAO,EACP,EAAE;IACF,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,EAAE,OAAO,CAAC,CAAC;KAC/E;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,EAAE,OAAO,CAAC,CAAC;KAChD;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,EACV,OAAO,CACR,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,EACV,OAAO,CACR,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAtDW,QAAA,kBAAkB,sBAsD7B"}
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,6FAE0D;AAE1D,6CAAkD;AAClD,mFAA8E;AAC9E,yDAA6D;AAEtD,MAAM,kBAAkB,GAAmC,CAChE,KAAK,EACL,OAAO,EACP,EAAE;IACF,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,EAAE,OAAO,CAAC,CAAC;KAC/E;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,EAAE,OAAO,CAAC,CAAC;KAChD;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,EACV,OAAO,CACR,CAAC;KACH;IAED,OAAO,IAAA,uBAAc,EAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC,CAAC;AAvCW,QAAA,kBAAkB,sBAuC7B"}
@@ -25,7 +25,7 @@ type Member = string;
25
25
  /**
26
26
  * Filter operator string.
27
27
  */
28
- type FilterOperator = 'equals' | 'notEquals' | 'contains' | 'notContains' | 'in' | 'notIn' | 'gt' | 'gte' | 'lt' | 'lte' | 'set' | 'notSet' | 'inDateRange' | 'notInDateRange' | 'onTheDate' | 'beforeDate' | 'afterDate' | 'measureFilter';
28
+ type FilterOperator = 'equals' | 'notEquals' | 'contains' | 'notContains' | 'in' | 'notIn' | 'gt' | 'gte' | 'lt' | 'lte' | 'set' | 'notSet' | 'empty' | 'notEmpty' | 'inDateRange' | 'notInDateRange' | 'onTheDate' | 'beforeDate' | 'afterDate' | 'measureFilter';
29
29
  /**
30
30
  * Query order data type.
31
31
  */
@@ -1 +1 @@
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
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/types/cube-types/query.ts"],"names":[],"mappings":";;;AAwJO,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"}