@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.
- package/package.json +1 -1
- package/src/cube-filter-transformer/contains/contains.d.ts +0 -6
- package/src/cube-filter-transformer/contains/contains.js +10 -2
- package/src/cube-filter-transformer/contains/contains.js.map +1 -1
- package/src/cube-filter-transformer/equals/equals-array.js +9 -3
- package/src/cube-filter-transformer/equals/equals-array.js.map +1 -1
- package/src/cube-filter-transformer/equals/equals.js +9 -2
- package/src/cube-filter-transformer/equals/equals.js.map +1 -1
- package/src/cube-filter-transformer/gt/gt.js +10 -2
- package/src/cube-filter-transformer/gt/gt.js.map +1 -1
- package/src/cube-filter-transformer/gte/gte.js +10 -2
- package/src/cube-filter-transformer/gte/gte.js.map +1 -1
- package/src/cube-filter-transformer/in/in.js +10 -3
- package/src/cube-filter-transformer/in/in.js.map +1 -1
- package/src/cube-filter-transformer/in-date-range/in-date-range.js +11 -3
- package/src/cube-filter-transformer/in-date-range/in-date-range.js.map +1 -1
- package/src/cube-filter-transformer/lt/lt.js +10 -2
- package/src/cube-filter-transformer/lt/lt.js.map +1 -1
- package/src/cube-filter-transformer/lte/lte.js +10 -2
- package/src/cube-filter-transformer/lte/lte.js.map +1 -1
- package/src/cube-filter-transformer/not-In-date-range/not-In-date-range.js +9 -2
- package/src/cube-filter-transformer/not-In-date-range/not-In-date-range.js.map +1 -1
- package/src/cube-filter-transformer/not-contains/not-contains.d.ts +0 -6
- package/src/cube-filter-transformer/not-contains/not-contains.js +10 -2
- package/src/cube-filter-transformer/not-contains/not-contains.js.map +1 -1
- package/src/cube-filter-transformer/not-equals/not-equals-array.js +6 -2
- package/src/cube-filter-transformer/not-equals/not-equals-array.js.map +1 -1
- package/src/cube-filter-transformer/not-equals/not-equals.d.ts +0 -6
- package/src/cube-filter-transformer/not-equals/not-equals.js +14 -6
- package/src/cube-filter-transformer/not-equals/not-equals.js.map +1 -1
- package/src/cube-filter-transformer/not-in/not-in.js +9 -3
- package/src/cube-filter-transformer/not-in/not-in.js.map +1 -1
- package/src/cube-filter-transformer/or/or.js.map +1 -1
- package/src/cube-filter-transformer/sql-expression/sql-expression-parser.d.ts +10 -0
- package/src/cube-filter-transformer/sql-expression/sql-expression-parser.js +102 -0
- package/src/cube-filter-transformer/sql-expression/sql-expression-parser.js.map +1 -0
- package/src/cube-to-duckdb/cube-filter-to-duckdb.d.ts +13 -2
- package/src/cube-to-duckdb/cube-filter-to-duckdb.js +8 -0
- package/src/cube-to-duckdb/cube-filter-to-duckdb.js.map +1 -1
- package/src/index.d.ts +1 -0
- package/src/index.js +4 -1
- package/src/index.js.map +1 -1
- package/src/types/cube-types/query.d.ts +16 -3
- package/src/types/cube-types/query.js +8 -1
- package/src/types/cube-types/query.js.map +1 -1
- package/src/utils/cube-filter-enrichment.d.ts +1 -1
package/package.json
CHANGED
|
@@ -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,
|
|
43
|
-
|
|
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":";;;
|
|
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,
|
|
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;
|
|
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,
|
|
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)(
|
|
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;
|
|
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
|
|
9
|
-
|
|
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;
|
|
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
|
|
9
|
-
|
|
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;
|
|
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,
|
|
63
|
-
if
|
|
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;
|
|
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
|
|
9
|
-
|
|
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
|
|
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;
|
|
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
|
|
9
|
-
|
|
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;
|
|
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
|
|
9
|
-
|
|
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;
|
|
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
|
|
9
|
-
|
|
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,
|
|
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,
|
|
43
|
-
|
|
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;
|
|
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
|
-
|
|
8
|
-
if (
|
|
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,
|
|
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,
|
|
11
|
-
|
|
12
|
-
|
|
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)(
|
|
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],
|
|
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,
|
|
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":";;;
|
|
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,
|
|
70
|
-
if
|
|
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":";;;
|
|
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":";;;
|
|
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 {
|
|
1
|
+
import { QueryFilterWithSQL, QueryFilterWithValues } from '../types/cube-types/query';
|
|
2
2
|
import { Dimension, Measure } from '../types/cube-types/table';
|
|
3
|
-
export type
|
|
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
|
-
|
|
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
|
-
|
|
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":";;;
|
|
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) =>
|
|
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;
|