@devrev/meerkat-core 0.0.97 → 0.0.98
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 +2 -2
- package/src/ast-builder/ast-builder.js +91 -0
- package/src/ast-builder/ast-builder.js.map +1 -0
- package/src/ast-deserializer/ast-deserializer.js +17 -0
- package/src/ast-deserializer/ast-deserializer.js.map +1 -0
- package/src/ast-serializer/ast-serializer.js +8 -0
- package/src/ast-serializer/ast-serializer.js.map +1 -0
- package/src/ast-validator/dimension-validator.js +49 -0
- package/src/ast-validator/dimension-validator.js.map +1 -0
- package/src/ast-validator/index.js +12 -0
- package/src/ast-validator/index.js.map +1 -0
- package/src/ast-validator/measure-validator.js +155 -0
- package/src/ast-validator/measure-validator.js.map +1 -0
- package/{ast-validator → src/ast-validator}/tests/test-data.js +692 -890
- package/src/ast-validator/tests/test-data.js.map +1 -0
- package/src/ast-validator/types.js +3 -0
- package/src/ast-validator/types.js.map +1 -0
- package/src/ast-validator/utils.js +24 -0
- package/src/ast-validator/utils.js.map +1 -0
- package/src/context-params/context-params-ast.js +42 -0
- package/src/context-params/context-params-ast.js.map +1 -0
- package/src/cube-filter-transformer/and/and.js +14 -0
- package/src/cube-filter-transformer/and/and.js.map +1 -0
- package/src/cube-filter-transformer/base-condition-builder/base-condition-builder.js +145 -0
- package/src/cube-filter-transformer/base-condition-builder/base-condition-builder.js.map +1 -0
- package/src/cube-filter-transformer/contains/contains.js +62 -0
- package/src/cube-filter-transformer/contains/contains.js.map +1 -0
- package/src/cube-filter-transformer/equals/equals-array.js +71 -0
- package/src/cube-filter-transformer/equals/equals-array.js.map +1 -0
- package/src/cube-filter-transformer/equals/equals.js +36 -0
- package/src/cube-filter-transformer/equals/equals.js.map +1 -0
- package/src/cube-filter-transformer/factory.js +120 -0
- package/src/cube-filter-transformer/factory.js.map +1 -0
- package/src/cube-filter-transformer/gt/gt.js +28 -0
- package/src/cube-filter-transformer/gt/gt.js.map +1 -0
- package/src/cube-filter-transformer/gte/gte.js +28 -0
- package/src/cube-filter-transformer/gte/gte.js.map +1 -0
- package/src/cube-filter-transformer/in/in.js +69 -0
- package/src/cube-filter-transformer/in/in.js.map +1 -0
- package/src/cube-filter-transformer/in-date-range/in-date-range.js +21 -0
- package/src/cube-filter-transformer/in-date-range/in-date-range.js.map +1 -0
- package/src/cube-filter-transformer/lt/lt.js +28 -0
- package/src/cube-filter-transformer/lt/lt.js.map +1 -0
- package/src/cube-filter-transformer/lte/lte.js +28 -0
- package/src/cube-filter-transformer/lte/lte.js.map +1 -0
- package/src/cube-filter-transformer/not/not.js +14 -0
- package/src/cube-filter-transformer/not/not.js.map +1 -0
- package/src/cube-filter-transformer/not-In-date-range/not-In-date-range.js +21 -0
- package/src/cube-filter-transformer/not-In-date-range/not-In-date-range.js.map +1 -0
- package/src/cube-filter-transformer/not-contains/not-contains.js +62 -0
- package/src/cube-filter-transformer/not-contains/not-contains.js.map +1 -0
- package/src/cube-filter-transformer/not-equals/not-equals-array.js +21 -0
- package/src/cube-filter-transformer/not-equals/not-equals-array.js.map +1 -0
- package/src/cube-filter-transformer/not-equals/not-equals.js +36 -0
- package/src/cube-filter-transformer/not-equals/not-equals.js.map +1 -0
- package/src/cube-filter-transformer/not-in/not-in.js +76 -0
- package/src/cube-filter-transformer/not-in/not-in.js.map +1 -0
- package/src/cube-filter-transformer/not-set/not-set.js +23 -0
- package/src/cube-filter-transformer/not-set/not-set.js.map +1 -0
- package/src/cube-filter-transformer/or/or.js +14 -0
- package/src/cube-filter-transformer/or/or.js.map +1 -0
- package/src/cube-filter-transformer/set/set.js +23 -0
- package/src/cube-filter-transformer/set/set.js.map +1 -0
- package/src/cube-group-by-transformer/cube-group-by-transformer.js +19 -0
- package/src/cube-group-by-transformer/cube-group-by-transformer.js.map +1 -0
- package/src/cube-limit-offset-transformer/cube-limit-offset-transformer.js +42 -0
- package/src/cube-limit-offset-transformer/cube-limit-offset-transformer.js.map +1 -0
- package/src/cube-measure-transformer/cube-measure-transformer.js +124 -0
- package/src/cube-measure-transformer/cube-measure-transformer.js.map +1 -0
- package/src/cube-order-by-transformer/cube-order-by-transformer.js +34 -0
- package/src/cube-order-by-transformer/cube-order-by-transformer.js.map +1 -0
- package/src/cube-to-duckdb/cube-filter-to-duckdb.js +3 -0
- package/src/cube-to-duckdb/cube-filter-to-duckdb.js.map +1 -0
- package/src/filter-params/filter-params-ast.js +114 -0
- package/src/filter-params/filter-params-ast.js.map +1 -0
- package/src/get-filter-params-sql/get-filter-params-sql.js +25 -0
- package/src/get-filter-params-sql/get-filter-params-sql.js.map +1 -0
- package/src/get-final-base-sql/get-final-base-sql.js +28 -0
- package/src/get-final-base-sql/get-final-base-sql.js.map +1 -0
- package/{get-wrapped-base-query-with-projections → src/get-wrapped-base-query-with-projections}/get-aliased-columns-from-filters.js +39 -64
- package/src/get-wrapped-base-query-with-projections/get-aliased-columns-from-filters.js.map +1 -0
- package/src/get-wrapped-base-query-with-projections/get-projection-clause.js +83 -0
- package/src/get-wrapped-base-query-with-projections/get-projection-clause.js.map +1 -0
- package/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js +32 -0
- package/src/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js.map +1 -0
- package/src/get-wrapped-base-query-with-projections/sql-expression-modifiers.js +32 -0
- package/src/get-wrapped-base-query-with-projections/sql-expression-modifiers.js.map +1 -0
- package/src/index.js +37 -0
- package/src/index.js.map +1 -0
- package/src/joins/joins.js +162 -0
- package/src/joins/joins.js.map +1 -0
- package/src/member-formatters/constants.js +6 -0
- package/src/member-formatters/constants.js.map +1 -0
- package/src/member-formatters/index.js +10 -0
- package/src/member-formatters/index.js.map +1 -0
- package/src/member-formatters/member-key-to-safe-key.js +9 -0
- package/src/member-formatters/member-key-to-safe-key.js.map +1 -0
- package/src/member-formatters/split-into-data-source-and-fields.js +10 -0
- package/src/member-formatters/split-into-data-source-and-fields.js.map +1 -0
- package/src/resolution/resolution.js +112 -0
- package/src/resolution/resolution.js.map +1 -0
- package/src/resolution/types.js +5 -0
- package/src/resolution/types.js.map +1 -0
- package/src/types/cube-types/index.js +6 -0
- package/src/types/cube-types/index.js.map +1 -0
- package/src/types/cube-types/query.js +8 -0
- package/src/types/cube-types/query.js.map +1 -0
- package/src/types/cube-types/table.js +3 -0
- package/src/types/cube-types/table.js.map +1 -0
- package/src/types/duckdb-serialization-types/index.js +11 -0
- package/src/types/duckdb-serialization-types/index.js.map +1 -0
- package/{types → src/types}/duckdb-serialization-types/serialization/Constraint.js +6 -19
- package/src/types/duckdb-serialization-types/serialization/Constraint.js.map +1 -0
- package/{types → src/types}/duckdb-serialization-types/serialization/CreateInfo.js +10 -29
- package/src/types/duckdb-serialization-types/serialization/CreateInfo.js.map +1 -0
- package/{types → src/types}/duckdb-serialization-types/serialization/Expression.js +6 -19
- package/src/types/duckdb-serialization-types/serialization/Expression.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/LogicalOperator.js +28 -0
- package/src/types/duckdb-serialization-types/serialization/LogicalOperator.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/MacroFunction.js +10 -0
- package/src/types/duckdb-serialization-types/serialization/MacroFunction.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/Misc.js +3 -0
- package/src/types/duckdb-serialization-types/serialization/Misc.js.map +1 -0
- package/{types → src/types}/duckdb-serialization-types/serialization/Nodes.js +17 -45
- package/src/types/duckdb-serialization-types/serialization/Nodes.js.map +1 -0
- package/{types → src/types}/duckdb-serialization-types/serialization/ParseInfo.js +20 -54
- package/src/types/duckdb-serialization-types/serialization/ParseInfo.js.map +1 -0
- package/{types → src/types}/duckdb-serialization-types/serialization/ParsedExpression.js +6 -19
- package/src/types/duckdb-serialization-types/serialization/ParsedExpression.js.map +1 -0
- package/{types → src/types}/duckdb-serialization-types/serialization/QueryNode.js +8 -24
- package/src/types/duckdb-serialization-types/serialization/QueryNode.js.map +1 -0
- package/{types → src/types}/duckdb-serialization-types/serialization/ResultModifier.js +4 -9
- package/src/types/duckdb-serialization-types/serialization/ResultModifier.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/Statement.js +3 -0
- package/src/types/duckdb-serialization-types/serialization/Statement.js.map +1 -0
- package/{types → src/types}/duckdb-serialization-types/serialization/TableFilter.js +4 -9
- package/src/types/duckdb-serialization-types/serialization/TableFilter.js.map +1 -0
- package/{types → src/types}/duckdb-serialization-types/serialization/TableRef.js +8 -24
- package/src/types/duckdb-serialization-types/serialization/TableRef.js.map +1 -0
- package/{types → src/types}/duckdb-serialization-types/serialization/Types.js +4 -9
- package/src/types/duckdb-serialization-types/serialization/Types.js.map +1 -0
- package/src/types/duckdb-serialization-types/serialization/example.js +109 -0
- package/src/types/duckdb-serialization-types/serialization/example.js.map +1 -0
- package/src/types/utils.js +69 -0
- package/src/types/utils.js.map +1 -0
- package/{utils → src/utils}/__fixtures__/joins.fixtures.js +228 -316
- package/src/utils/__fixtures__/joins.fixtures.js.map +1 -0
- package/src/utils/base-ast.js +49 -0
- package/src/utils/base-ast.js.map +1 -0
- package/src/utils/cube-filter-enrichment.js +53 -0
- package/src/utils/cube-filter-enrichment.js.map +1 -0
- package/{utils → src/utils}/cube-to-table-schema.js +25 -38
- package/src/utils/cube-to-table-schema.js.map +1 -0
- package/src/utils/cube-type-to-duckdb-type.js +12 -0
- package/src/utils/cube-type-to-duckdb-type.js.map +1 -0
- package/src/utils/find-in-table-schema.js +28 -0
- package/src/utils/find-in-table-schema.js.map +1 -0
- package/src/utils/get-column-names-from-ast.js +45 -0
- package/src/utils/get-column-names-from-ast.js.map +1 -0
- package/src/utils/get-possible-nodes.js +146 -0
- package/src/utils/get-possible-nodes.js.map +1 -0
- package/src/utils/get-type-info.js +34 -0
- package/src/utils/get-type-info.js.map +1 -0
- package/src/utils/is-array-member-type.js +8 -0
- package/src/utils/is-array-member-type.js.map +1 -0
- package/src/utils/key-from-measures-dimension.js +32 -0
- package/src/utils/key-from-measures-dimension.js.map +1 -0
- package/src/utils/meerkat-placeholder-replacer.js +10 -0
- package/src/utils/meerkat-placeholder-replacer.js.map +1 -0
- package/src/utils/modify-meerkat-filter.js +24 -0
- package/src/utils/modify-meerkat-filter.js.map +1 -0
- package/{utils → src/utils}/type-guards.js +10 -28
- package/src/utils/type-guards.js.map +1 -0
- package/ast-builder/ast-builder.js +0 -90
- package/ast-builder/ast-builder.js.map +0 -1
- package/ast-deserializer/ast-deserializer.js +0 -30
- package/ast-deserializer/ast-deserializer.js.map +0 -1
- package/ast-serializer/ast-serializer.js +0 -12
- package/ast-serializer/ast-serializer.js.map +0 -1
- package/ast-validator/dimension-validator.js +0 -54
- package/ast-validator/dimension-validator.js.map +0 -1
- package/ast-validator/index.js +0 -25
- package/ast-validator/index.js.map +0 -1
- package/ast-validator/measure-validator.js +0 -163
- package/ast-validator/measure-validator.js.map +0 -1
- package/ast-validator/tests/test-data.js.map +0 -1
- package/ast-validator/types.js +0 -3
- package/ast-validator/types.js.map +0 -1
- package/ast-validator/utils.js +0 -35
- package/ast-validator/utils.js.map +0 -1
- package/context-params/context-params-ast.js +0 -55
- package/context-params/context-params-ast.js.map +0 -1
- package/cube-filter-transformer/and/and.js +0 -18
- package/cube-filter-transformer/and/and.js.map +0 -1
- package/cube-filter-transformer/base-condition-builder/base-condition-builder.js +0 -160
- package/cube-filter-transformer/base-condition-builder/base-condition-builder.js.map +0 -1
- package/cube-filter-transformer/contains/contains.js +0 -71
- package/cube-filter-transformer/contains/contains.js.map +0 -1
- package/cube-filter-transformer/equals/equals-array.js +0 -77
- package/cube-filter-transformer/equals/equals-array.js.map +0 -1
- package/cube-filter-transformer/equals/equals.js +0 -37
- package/cube-filter-transformer/equals/equals.js.map +0 -1
- package/cube-filter-transformer/factory.js +0 -124
- package/cube-filter-transformer/factory.js.map +0 -1
- package/cube-filter-transformer/gt/gt.js +0 -30
- package/cube-filter-transformer/gt/gt.js.map +0 -1
- package/cube-filter-transformer/gte/gte.js +0 -30
- package/cube-filter-transformer/gte/gte.js.map +0 -1
- package/cube-filter-transformer/in/in.js +0 -78
- package/cube-filter-transformer/in/in.js.map +0 -1
- package/cube-filter-transformer/in-date-range/in-date-range.js +0 -24
- package/cube-filter-transformer/in-date-range/in-date-range.js.map +0 -1
- package/cube-filter-transformer/lt/lt.js +0 -30
- package/cube-filter-transformer/lt/lt.js.map +0 -1
- package/cube-filter-transformer/lte/lte.js +0 -30
- package/cube-filter-transformer/lte/lte.js.map +0 -1
- package/cube-filter-transformer/not/not.js +0 -18
- package/cube-filter-transformer/not/not.js.map +0 -1
- package/cube-filter-transformer/not-In-date-range/not-In-date-range.js +0 -24
- package/cube-filter-transformer/not-In-date-range/not-In-date-range.js.map +0 -1
- package/cube-filter-transformer/not-contains/not-contains.js +0 -71
- package/cube-filter-transformer/not-contains/not-contains.js.map +0 -1
- package/cube-filter-transformer/not-equals/not-equals-array.js +0 -26
- package/cube-filter-transformer/not-equals/not-equals-array.js.map +0 -1
- package/cube-filter-transformer/not-equals/not-equals.js +0 -37
- package/cube-filter-transformer/not-equals/not-equals.js.map +0 -1
- package/cube-filter-transformer/not-in/not-in.js +0 -85
- package/cube-filter-transformer/not-in/not-in.js.map +0 -1
- package/cube-filter-transformer/not-set/not-set.js +0 -27
- package/cube-filter-transformer/not-set/not-set.js.map +0 -1
- package/cube-filter-transformer/or/or.js +0 -18
- package/cube-filter-transformer/or/or.js.map +0 -1
- package/cube-filter-transformer/set/set.js +0 -27
- package/cube-filter-transformer/set/set.js.map +0 -1
- package/cube-group-by-transformer/cube-group-by-transformer.js +0 -25
- package/cube-group-by-transformer/cube-group-by-transformer.js.map +0 -1
- package/cube-limit-offset-transformer/cube-limit-offset-transformer.js +0 -42
- package/cube-limit-offset-transformer/cube-limit-offset-transformer.js.map +0 -1
- package/cube-measure-transformer/cube-measure-transformer.js +0 -127
- package/cube-measure-transformer/cube-measure-transformer.js.map +0 -1
- package/cube-order-by-transformer/cube-order-by-transformer.js +0 -39
- package/cube-order-by-transformer/cube-order-by-transformer.js.map +0 -1
- package/cube-to-duckdb/cube-filter-to-duckdb.js +0 -3
- package/cube-to-duckdb/cube-filter-to-duckdb.js.map +0 -1
- package/filter-params/filter-params-ast.js +0 -115
- package/filter-params/filter-params-ast.js.map +0 -1
- package/get-filter-params-sql/get-filter-params-sql.js +0 -28
- package/get-filter-params-sql/get-filter-params-sql.js.map +0 -1
- package/get-final-base-sql/get-final-base-sql.js +0 -30
- package/get-final-base-sql/get-final-base-sql.js.map +0 -1
- package/get-wrapped-base-query-with-projections/get-aliased-columns-from-filters.js.map +0 -1
- package/get-wrapped-base-query-with-projections/get-projection-clause.js +0 -87
- package/get-wrapped-base-query-with-projections/get-projection-clause.js.map +0 -1
- package/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js +0 -33
- package/get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections.js.map +0 -1
- package/get-wrapped-base-query-with-projections/sql-expression-modifiers.js +0 -60
- package/get-wrapped-base-query-with-projections/sql-expression-modifiers.js.map +0 -1
- package/index.js +0 -66
- package/index.js.map +0 -1
- package/joins/joins.js +0 -170
- package/joins/joins.js.map +0 -1
- package/member-formatters/constants.js +0 -19
- package/member-formatters/constants.js.map +0 -1
- package/member-formatters/index.js +0 -23
- package/member-formatters/index.js.map +0 -1
- package/member-formatters/member-key-to-safe-key.js +0 -13
- package/member-formatters/member-key-to-safe-key.js.map +0 -1
- package/member-formatters/split-into-data-source-and-fields.js +0 -17
- package/member-formatters/split-into-data-source-and-fields.js.map +0 -1
- package/resolution/resolution.js +0 -128
- package/resolution/resolution.js.map +0 -1
- package/resolution/types.js +0 -10
- package/resolution/types.js.map +0 -1
- package/types/cube-types/index.d.js +0 -6
- package/types/cube-types/index.d.js.map +0 -1
- package/types/cube-types/index.js +0 -6
- package/types/cube-types/index.js.map +0 -1
- package/types/cube-types/query.d.js +0 -5
- package/types/cube-types/query.d.js.map +0 -1
- package/types/cube-types/query.js +0 -14
- package/types/cube-types/query.js.map +0 -1
- package/types/cube-types/table.d.js +0 -3
- package/types/cube-types/table.d.js.map +0 -1
- package/types/cube-types/table.js +0 -3
- package/types/cube-types/table.js.map +0 -1
- package/types/duckdb-serialization-types/index.d.js +0 -11
- package/types/duckdb-serialization-types/index.d.js.map +0 -1
- package/types/duckdb-serialization-types/index.js +0 -11
- package/types/duckdb-serialization-types/index.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/Constraint.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/CreateInfo.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/Expression.d.js +0 -3
- package/types/duckdb-serialization-types/serialization/Expression.d.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/Expression.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/LogicalOperator.js +0 -47
- package/types/duckdb-serialization-types/serialization/LogicalOperator.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/MacroFunction.js +0 -15
- package/types/duckdb-serialization-types/serialization/MacroFunction.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/Misc.d.js +0 -3
- package/types/duckdb-serialization-types/serialization/Misc.d.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/Misc.js +0 -3
- package/types/duckdb-serialization-types/serialization/Misc.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/Nodes.d.js +0 -3
- package/types/duckdb-serialization-types/serialization/Nodes.d.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/Nodes.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/ParseInfo.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/ParsedExpression.d.js +0 -3
- package/types/duckdb-serialization-types/serialization/ParsedExpression.d.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/ParsedExpression.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/QueryNode.d.js +0 -3
- package/types/duckdb-serialization-types/serialization/QueryNode.d.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/QueryNode.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/ResultModifier.d.js +0 -3
- package/types/duckdb-serialization-types/serialization/ResultModifier.d.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/ResultModifier.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/Statement.d.js +0 -3
- package/types/duckdb-serialization-types/serialization/Statement.d.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/Statement.js +0 -3
- package/types/duckdb-serialization-types/serialization/Statement.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/TableFilter.d.js +0 -3
- package/types/duckdb-serialization-types/serialization/TableFilter.d.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/TableFilter.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/TableRef.d.js +0 -3
- package/types/duckdb-serialization-types/serialization/TableRef.d.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/TableRef.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/Types.d.js +0 -3
- package/types/duckdb-serialization-types/serialization/Types.d.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/Types.js.map +0 -1
- package/types/duckdb-serialization-types/serialization/example.js +0 -131
- package/types/duckdb-serialization-types/serialization/example.js.map +0 -1
- package/types/utils.js +0 -108
- package/types/utils.js.map +0 -1
- package/utils/__fixtures__/joins.fixtures.js.map +0 -1
- package/utils/base-ast.js +0 -63
- package/utils/base-ast.js.map +0 -1
- package/utils/cube-filter-enrichment.js +0 -63
- package/utils/cube-filter-enrichment.js.map +0 -1
- package/utils/cube-to-table-schema.js.map +0 -1
- package/utils/cube-type-to-duckdb-type.js +0 -17
- package/utils/cube-type-to-duckdb-type.js.map +0 -1
- package/utils/find-in-table-schema.js +0 -40
- package/utils/find-in-table-schema.js.map +0 -1
- package/utils/get-column-names-from-ast.js +0 -45
- package/utils/get-column-names-from-ast.js.map +0 -1
- package/utils/get-possible-nodes.js +0 -152
- package/utils/get-possible-nodes.js.map +0 -1
- package/utils/get-type-info.js +0 -44
- package/utils/get-type-info.js.map +0 -1
- package/utils/is-array-member-type.js +0 -12
- package/utils/is-array-member-type.js.map +0 -1
- package/utils/key-from-measures-dimension.js +0 -35
- package/utils/key-from-measures-dimension.js.map +0 -1
- package/utils/meerkat-placeholder-replacer.js +0 -14
- package/utils/meerkat-placeholder-replacer.js.map +0 -1
- package/utils/modify-meerkat-filter.js +0 -30
- package/utils/modify-meerkat-filter.js.map +0 -1
- package/utils/type-guards.js.map +0 -1
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.notSetTransform = void 0;
|
|
4
|
+
const constants_1 = require("../../member-formatters/constants");
|
|
5
|
+
const Expression_1 = require("../../types/duckdb-serialization-types/serialization/Expression");
|
|
6
|
+
const notSetTransform = (query) => {
|
|
7
|
+
const { member } = query;
|
|
8
|
+
return {
|
|
9
|
+
class: Expression_1.ExpressionClass.OPERATOR,
|
|
10
|
+
type: Expression_1.ExpressionType.OPERATOR_IS_NULL,
|
|
11
|
+
alias: '',
|
|
12
|
+
children: [
|
|
13
|
+
{
|
|
14
|
+
class: 'COLUMN_REF',
|
|
15
|
+
type: 'COLUMN_REF',
|
|
16
|
+
alias: '',
|
|
17
|
+
column_names: member.split(constants_1.COLUMN_NAME_DELIMITER),
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
exports.notSetTransform = notSetTransform;
|
|
23
|
+
//# sourceMappingURL=not-set.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"not-set.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/not-set/not-set.ts"],"names":[],"mappings":";;;AAAA,iEAA0E;AAC1E,gGAGyE;AAGlE,MAAM,eAAe,GAAmC,CAAC,KAAK,EAAE,EAAE;IACvE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,OAAO;QACL,KAAK,EAAE,4BAAe,CAAC,QAAQ;QAC/B,IAAI,EAAE,2BAAc,CAAC,gBAAgB;QACrC,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE;YACR;gBACE,KAAK,EAAE,YAAY;gBACnB,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,EAAE;gBACT,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,iCAAqB,CAAC;aAClD;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AAfW,QAAA,eAAe,mBAe1B"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.orDuckdbCondition = void 0;
|
|
4
|
+
const Expression_1 = require("../../types/duckdb-serialization-types/serialization/Expression");
|
|
5
|
+
const orDuckdbCondition = () => {
|
|
6
|
+
return {
|
|
7
|
+
class: Expression_1.ExpressionClass.CONJUNCTION,
|
|
8
|
+
type: Expression_1.ExpressionType.CONJUNCTION_OR,
|
|
9
|
+
alias: '',
|
|
10
|
+
children: [],
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
exports.orDuckdbCondition = orDuckdbCondition;
|
|
14
|
+
//# sourceMappingURL=or.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setTransform = void 0;
|
|
4
|
+
const constants_1 = require("../../member-formatters/constants");
|
|
5
|
+
const Expression_1 = require("../../types/duckdb-serialization-types/serialization/Expression");
|
|
6
|
+
const setTransform = (query) => {
|
|
7
|
+
const { member } = query;
|
|
8
|
+
return {
|
|
9
|
+
class: Expression_1.ExpressionClass.OPERATOR,
|
|
10
|
+
type: Expression_1.ExpressionType.OPERATOR_IS_NOT_NULL,
|
|
11
|
+
alias: '',
|
|
12
|
+
children: [
|
|
13
|
+
{
|
|
14
|
+
class: 'COLUMN_REF',
|
|
15
|
+
type: 'COLUMN_REF',
|
|
16
|
+
alias: '',
|
|
17
|
+
column_names: member.split(constants_1.COLUMN_NAME_DELIMITER),
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
exports.setTransform = setTransform;
|
|
23
|
+
//# sourceMappingURL=set.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set.js","sourceRoot":"","sources":["../../../../../meerkat-core/src/cube-filter-transformer/set/set.ts"],"names":[],"mappings":";;;AAAA,iEAA0E;AAC1E,gGAGyE;AAGlE,MAAM,YAAY,GAAmC,CAAC,KAAK,EAAE,EAAE;IACpE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACzB,OAAO;QACL,KAAK,EAAE,4BAAe,CAAC,QAAQ;QAC/B,IAAI,EAAE,2BAAc,CAAC,oBAAoB;QACzC,KAAK,EAAE,EAAE;QACT,QAAQ,EAAE;YACR;gBACE,KAAK,EAAE,YAAY;gBACnB,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,EAAE;gBACT,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,iCAAqB,CAAC;aAClD;SACF;KACF,CAAC;AACJ,CAAC,CAAC;AAfW,QAAA,YAAY,gBAevB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cubeDimensionToGroupByAST = void 0;
|
|
4
|
+
const member_formatters_1 = require("../member-formatters");
|
|
5
|
+
const Expression_1 = require("../types/duckdb-serialization-types/serialization/Expression");
|
|
6
|
+
const cubeDimensionToGroupByAST = (dimensions) => {
|
|
7
|
+
const groupByAST = dimensions.map((dimension) => {
|
|
8
|
+
const dimensionAST = {
|
|
9
|
+
class: Expression_1.ExpressionClass.COLUMN_REF,
|
|
10
|
+
type: Expression_1.ExpressionType.COLUMN_REF,
|
|
11
|
+
alias: '',
|
|
12
|
+
column_names: [(0, member_formatters_1.memberKeyToSafeKey)(dimension)],
|
|
13
|
+
};
|
|
14
|
+
return dimensionAST;
|
|
15
|
+
});
|
|
16
|
+
return groupByAST;
|
|
17
|
+
};
|
|
18
|
+
exports.cubeDimensionToGroupByAST = cubeDimensionToGroupByAST;
|
|
19
|
+
//# sourceMappingURL=cube-group-by-transformer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cube-group-by-transformer.js","sourceRoot":"","sources":["../../../../meerkat-core/src/cube-group-by-transformer/cube-group-by-transformer.ts"],"names":[],"mappings":";;;AAAA,4DAA0D;AAE1D,6FAGsE;AAE/D,MAAM,yBAAyB,GAAG,CAAC,UAAoB,EAAE,EAAE;IAChE,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QAC9C,MAAM,YAAY,GAAG;YACnB,KAAK,EAAE,4BAAe,CAAC,UAAU;YACjC,IAAI,EAAE,2BAAc,CAAC,UAAU;YAC/B,KAAK,EAAE,EAAE;YACT,YAAY,EAAE,CAAC,IAAA,sCAAkB,EAAC,SAAS,CAAC,CAAC;SAC9C,CAAC;QAEF,OAAO,YAAY,CAAC;IACtB,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAbW,QAAA,yBAAyB,6BAapC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cubeLimitOffsetToAST = void 0;
|
|
4
|
+
const Expression_1 = require("../types/duckdb-serialization-types/serialization/Expression");
|
|
5
|
+
const ResultModifier_1 = require("../types/duckdb-serialization-types/serialization/ResultModifier");
|
|
6
|
+
const cubeLimitOffsetToAST = (limit, offset) => {
|
|
7
|
+
return {
|
|
8
|
+
type: ResultModifier_1.ResultModifierType.LIMIT_MODIFIER,
|
|
9
|
+
limit: limit
|
|
10
|
+
? {
|
|
11
|
+
class: Expression_1.ExpressionClass.CONSTANT,
|
|
12
|
+
type: Expression_1.ExpressionType.VALUE_CONSTANT,
|
|
13
|
+
alias: '',
|
|
14
|
+
value: {
|
|
15
|
+
type: {
|
|
16
|
+
id: 'INTEGER',
|
|
17
|
+
type_info: null,
|
|
18
|
+
},
|
|
19
|
+
is_null: false,
|
|
20
|
+
value: limit,
|
|
21
|
+
},
|
|
22
|
+
}
|
|
23
|
+
: null,
|
|
24
|
+
offset: offset
|
|
25
|
+
? {
|
|
26
|
+
class: Expression_1.ExpressionClass.CONSTANT,
|
|
27
|
+
type: Expression_1.ExpressionType.VALUE_CONSTANT,
|
|
28
|
+
alias: '',
|
|
29
|
+
value: {
|
|
30
|
+
type: {
|
|
31
|
+
id: 'INTEGER',
|
|
32
|
+
type_info: null,
|
|
33
|
+
},
|
|
34
|
+
is_null: false,
|
|
35
|
+
value: offset,
|
|
36
|
+
},
|
|
37
|
+
}
|
|
38
|
+
: null,
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
exports.cubeLimitOffsetToAST = cubeLimitOffsetToAST;
|
|
42
|
+
//# sourceMappingURL=cube-limit-offset-transformer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cube-limit-offset-transformer.js","sourceRoot":"","sources":["../../../../meerkat-core/src/cube-limit-offset-transformer/cube-limit-offset-transformer.ts"],"names":[],"mappings":";;;AAAA,6FAA+G;AAC/G,qGAAsG;AAE/F,MAAM,oBAAoB,GAAG,CAClC,KAAqB,EACrB,MAAsB,EACtB,EAAE;IACF,OAAO;QACL,IAAI,EAAE,mCAAkB,CAAC,cAAc;QACvC,KAAK,EAAE,KAAK;YACV,CAAC,CAAC;gBACE,KAAK,EAAE,4BAAe,CAAC,QAAQ;gBAC/B,IAAI,EAAE,2BAAc,CAAC,cAAc;gBACnC,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE;oBACL,IAAI,EAAE;wBACJ,EAAE,EAAE,SAAS;wBACb,SAAS,EAAE,IAAI;qBAChB;oBACD,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,KAAK;iBACb;aACF;YACH,CAAC,CAAC,IAAI;QACR,MAAM,EAAE,MAAM;YACZ,CAAC,CAAC;gBACE,KAAK,EAAE,4BAAe,CAAC,QAAQ;gBAC/B,IAAI,EAAE,2BAAc,CAAC,cAAc;gBACnC,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE;oBACL,IAAI,EAAE;wBACJ,EAAE,EAAE,SAAS;wBACb,SAAS,EAAE,IAAI;qBAChB;oBACD,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,MAAM;iBACd;aACF;YACH,CAAC,CAAC,IAAI;KACT,CAAC;AACJ,CAAC,CAAC;AArCW,QAAA,oBAAoB,wBAqC/B"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.applyProjectionToSQLQuery = exports.getAllColumnUsedInMeasures = exports.getSelectReplacedSql = exports.cubeMeasureToSQLSelectString = void 0;
|
|
4
|
+
const member_key_to_safe_key_1 = require("../member-formatters/member-key-to-safe-key");
|
|
5
|
+
const split_into_data_source_and_fields_1 = require("../member-formatters/split-into-data-source-and-fields");
|
|
6
|
+
const meerkat_placeholder_replacer_1 = require("../utils/meerkat-placeholder-replacer");
|
|
7
|
+
const cubeMeasureToSQLSelectString = (measures, tableSchema) => {
|
|
8
|
+
let base = 'SELECT';
|
|
9
|
+
for (let i = 0; i < measures.length; i++) {
|
|
10
|
+
const measure = measures[i];
|
|
11
|
+
if (measure === '*') {
|
|
12
|
+
base += ` ${tableSchema.name}.*`;
|
|
13
|
+
continue;
|
|
14
|
+
}
|
|
15
|
+
const [tableSchemaName, measureKeyWithoutTable] = (0, split_into_data_source_and_fields_1.splitIntoDataSourceAndFields)(measure);
|
|
16
|
+
const aliasKey = (0, member_key_to_safe_key_1.memberKeyToSafeKey)(measure);
|
|
17
|
+
const measureSchema = tableSchema.measures.find((m) => m.name === measureKeyWithoutTable);
|
|
18
|
+
if (!measureSchema) {
|
|
19
|
+
continue;
|
|
20
|
+
}
|
|
21
|
+
if (i > 0) {
|
|
22
|
+
base += ', ';
|
|
23
|
+
}
|
|
24
|
+
let meerkatReplacedSqlString = (0, meerkat_placeholder_replacer_1.meerkatPlaceholderReplacer)(measureSchema.sql, tableSchema.name);
|
|
25
|
+
/**
|
|
26
|
+
* Here we extract the columns used in the measure and replace them with the safeKey.
|
|
27
|
+
* We need to do this because the columns used in the measure are not directly available in the joined table.
|
|
28
|
+
* Thus we need to project them and use them in the join.
|
|
29
|
+
*/
|
|
30
|
+
const columnsUsedInMeasure = getColumnsFromSQL(meerkatReplacedSqlString, tableSchemaName);
|
|
31
|
+
//Replace all the columnsUsedInMeasure with safeKey
|
|
32
|
+
columnsUsedInMeasure === null || columnsUsedInMeasure === void 0 ? void 0 : columnsUsedInMeasure.forEach((measureKey) => {
|
|
33
|
+
const [_, column] = (0, split_into_data_source_and_fields_1.splitIntoDataSourceAndFields)(measureKey);
|
|
34
|
+
const memberKey = `${tableSchemaName}.${column}`;
|
|
35
|
+
const columnKey = (0, member_key_to_safe_key_1.memberKeyToSafeKey)(memberKey);
|
|
36
|
+
meerkatReplacedSqlString = meerkatReplacedSqlString.replace(memberKey, columnKey);
|
|
37
|
+
});
|
|
38
|
+
base += ` ${meerkatReplacedSqlString} AS ${aliasKey} `;
|
|
39
|
+
}
|
|
40
|
+
return base;
|
|
41
|
+
};
|
|
42
|
+
exports.cubeMeasureToSQLSelectString = cubeMeasureToSQLSelectString;
|
|
43
|
+
const addDimensionToSQLProjection = (dimensions, selectString, tableSchema) => {
|
|
44
|
+
if (dimensions.length === 0) {
|
|
45
|
+
return selectString;
|
|
46
|
+
}
|
|
47
|
+
let newSelectString = selectString;
|
|
48
|
+
for (let i = 0; i < dimensions.length; i++) {
|
|
49
|
+
const dimension = dimensions[i];
|
|
50
|
+
const [_, dimensionKeyWithoutTable] = (0, split_into_data_source_and_fields_1.splitIntoDataSourceAndFields)(dimension);
|
|
51
|
+
const dimensionSchema = tableSchema.dimensions.find((m) => m.name === dimensionKeyWithoutTable);
|
|
52
|
+
const aliasKey = (0, member_key_to_safe_key_1.memberKeyToSafeKey)(dimension);
|
|
53
|
+
if (!dimensionSchema) {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
if (i > 0) {
|
|
57
|
+
newSelectString += ',';
|
|
58
|
+
}
|
|
59
|
+
// since alias key is expected to have been unfurled in the base query, we can just use it as is.
|
|
60
|
+
newSelectString += ` ${aliasKey}`;
|
|
61
|
+
}
|
|
62
|
+
return newSelectString;
|
|
63
|
+
};
|
|
64
|
+
const getSelectReplacedSql = (sql, selectString) => {
|
|
65
|
+
/*
|
|
66
|
+
** Replaces the select portion of a SQL string with the selectString passed.
|
|
67
|
+
*/
|
|
68
|
+
const selectRegex = /SELECT\s\*/;
|
|
69
|
+
const match = sql.match(selectRegex);
|
|
70
|
+
if (!match) {
|
|
71
|
+
return sql;
|
|
72
|
+
}
|
|
73
|
+
const selectIndex = match.index;
|
|
74
|
+
if (selectIndex === undefined) {
|
|
75
|
+
throw new Error('SELECT * not found in SQL string');
|
|
76
|
+
}
|
|
77
|
+
const selectLength = match[0].length;
|
|
78
|
+
const beforeSelect = sql.substring(0, selectIndex);
|
|
79
|
+
const afterSelect = sql.substring(selectIndex + selectLength);
|
|
80
|
+
return `${beforeSelect}${selectString}${afterSelect}`;
|
|
81
|
+
};
|
|
82
|
+
exports.getSelectReplacedSql = getSelectReplacedSql;
|
|
83
|
+
/**
|
|
84
|
+
* Get all the columns used in the measures.
|
|
85
|
+
* This is used for extracting the columns used in the measures needed for the projection.
|
|
86
|
+
* Example: The joins implementation uses this to get the columns used in the measures to join the tables.
|
|
87
|
+
* like the SQL for the measure is `SUM(table.total)` and the table name is `table`, then the column used is `total`
|
|
88
|
+
* table cannot be used directly here because the joined table would have column name ambiguity.
|
|
89
|
+
* Thus these columns are projected and directly used in the join.
|
|
90
|
+
*/
|
|
91
|
+
const getAllColumnUsedInMeasures = (measures, tableSchema) => {
|
|
92
|
+
let columns = [];
|
|
93
|
+
measures.forEach((measure) => {
|
|
94
|
+
const columnMatch = getColumnsFromSQL(measure.sql, tableSchema.name);
|
|
95
|
+
if (columnMatch && columnMatch.length > 0) {
|
|
96
|
+
columns = [...columns, ...columnMatch];
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
// Remove duplicates
|
|
100
|
+
return [...new Set(columns)];
|
|
101
|
+
};
|
|
102
|
+
exports.getAllColumnUsedInMeasures = getAllColumnUsedInMeasures;
|
|
103
|
+
const getColumnsFromSQL = (sql, tableName) => {
|
|
104
|
+
const regex = new RegExp(`(${tableName}\\.[a-zA-Z0-9_]+)`, 'g');
|
|
105
|
+
const columnMatch = sql.match(regex);
|
|
106
|
+
return columnMatch;
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* Replace the first SELECT * from the sqlToReplace with the cube measure
|
|
110
|
+
* @param measures
|
|
111
|
+
* @param tableSchema
|
|
112
|
+
* @param sqlToReplace
|
|
113
|
+
* @returns
|
|
114
|
+
*/
|
|
115
|
+
const applyProjectionToSQLQuery = (dimensions, measures, tableSchema, sqlToReplace) => {
|
|
116
|
+
let measureSelectString = (0, exports.cubeMeasureToSQLSelectString)(measures, tableSchema);
|
|
117
|
+
if (measures.length > 0 && dimensions.length > 0) {
|
|
118
|
+
measureSelectString += ', ';
|
|
119
|
+
}
|
|
120
|
+
const selectString = addDimensionToSQLProjection(dimensions, measureSelectString, tableSchema);
|
|
121
|
+
return (0, exports.getSelectReplacedSql)(sqlToReplace, selectString);
|
|
122
|
+
};
|
|
123
|
+
exports.applyProjectionToSQLQuery = applyProjectionToSQLQuery;
|
|
124
|
+
//# sourceMappingURL=cube-measure-transformer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cube-measure-transformer.js","sourceRoot":"","sources":["../../../../meerkat-core/src/cube-measure-transformer/cube-measure-transformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cubeOrderByToAST = void 0;
|
|
4
|
+
const member_key_to_safe_key_1 = require("../member-formatters/member-key-to-safe-key");
|
|
5
|
+
const Expression_1 = require("../types/duckdb-serialization-types/serialization/Expression");
|
|
6
|
+
const Nodes_1 = require("../types/duckdb-serialization-types/serialization/Nodes");
|
|
7
|
+
const ResultModifier_1 = require("../types/duckdb-serialization-types/serialization/ResultModifier");
|
|
8
|
+
const cubeOrderByToAST = (order) => {
|
|
9
|
+
const orderArr = [];
|
|
10
|
+
for (const key in order) {
|
|
11
|
+
const value = order[key];
|
|
12
|
+
const astOrderBy = value === 'asc' ? Nodes_1.OrderType.ASCENDING : Nodes_1.OrderType.DESCENDING;
|
|
13
|
+
const orderByAST = {
|
|
14
|
+
type: astOrderBy,
|
|
15
|
+
null_order: Nodes_1.OrderType.ORDER_DEFAULT,
|
|
16
|
+
expression: {
|
|
17
|
+
class: Expression_1.ExpressionClass.COLUMN_REF,
|
|
18
|
+
type: Expression_1.ExpressionType.COLUMN_REF,
|
|
19
|
+
alias: '',
|
|
20
|
+
/**
|
|
21
|
+
* We need to convert the key in the __ format as they are being projected in this format
|
|
22
|
+
*/
|
|
23
|
+
column_names: [(0, member_key_to_safe_key_1.memberKeyToSafeKey)(key)],
|
|
24
|
+
},
|
|
25
|
+
};
|
|
26
|
+
orderArr.push(orderByAST);
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
type: ResultModifier_1.ResultModifierType.ORDER_MODIFIER,
|
|
30
|
+
orders: orderArr,
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
exports.cubeOrderByToAST = cubeOrderByToAST;
|
|
34
|
+
//# sourceMappingURL=cube-order-by-transformer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cube-order-by-transformer.js","sourceRoot":"","sources":["../../../../meerkat-core/src/cube-order-by-transformer/cube-order-by-transformer.ts"],"names":[],"mappings":";;;AAAA,wFAAiF;AACjF,6FAGsE;AACtE,mFAAoF;AACpF,qGAAsG;AAE/F,MAAM,gBAAgB,GAAG,CAAC,KAAwC,EAAE,EAAE;IAC3E,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE;QACvB,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QACzB,MAAM,UAAU,GACd,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,iBAAS,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAS,CAAC,UAAU,CAAC;QAC/D,MAAM,UAAU,GAAG;YACjB,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE,iBAAS,CAAC,aAAa;YACnC,UAAU,EAAE;gBACV,KAAK,EAAE,4BAAe,CAAC,UAAU;gBACjC,IAAI,EAAE,2BAAc,CAAC,UAAU;gBAC/B,KAAK,EAAE,EAAE;gBACT;;mBAEG;gBACH,YAAY,EAAE,CAAC,IAAA,2CAAkB,EAAC,GAAG,CAAC,CAAC;aACxC;SACF,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC3B;IACD,OAAO;QACL,IAAI,EAAE,mCAAkB,CAAC,cAAc;QACvC,MAAM,EAAE,QAAQ;KACjB,CAAC;AACJ,CAAC,CAAC;AAzBW,QAAA,gBAAgB,oBAyB3B"}
|
|
@@ -0,0 +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":""}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.applyFilterParamsToBaseSQL = exports.getFilterParamsAST = exports.detectAllFilterParamsFromSQL = exports.getFilterByMemberKey = exports.traverseAndFilter = void 0;
|
|
4
|
+
const ast_builder_1 = require("../ast-builder/ast-builder");
|
|
5
|
+
/**
|
|
6
|
+
* Get the query filter with only where filterKey matches
|
|
7
|
+
*/
|
|
8
|
+
const traverseAndFilter = (filter, callback) => {
|
|
9
|
+
if ('member' in filter) {
|
|
10
|
+
return callback(filter) ? filter : null;
|
|
11
|
+
}
|
|
12
|
+
if ('and' in filter) {
|
|
13
|
+
const filteredAndFilters = filter.and
|
|
14
|
+
.map((subFilter) => (0, exports.traverseAndFilter)(subFilter, callback))
|
|
15
|
+
.filter(Boolean);
|
|
16
|
+
const obj = filteredAndFilters.length > 0 ? { and: filteredAndFilters } : null;
|
|
17
|
+
return obj;
|
|
18
|
+
}
|
|
19
|
+
if ('or' in filter) {
|
|
20
|
+
const filteredOrFilters = filter.or
|
|
21
|
+
.map((subFilter) => (0, exports.traverseAndFilter)(subFilter, callback))
|
|
22
|
+
.filter(Boolean);
|
|
23
|
+
const obj = filteredOrFilters.length > 0 ? { or: filteredOrFilters } : null;
|
|
24
|
+
return obj;
|
|
25
|
+
}
|
|
26
|
+
return null;
|
|
27
|
+
};
|
|
28
|
+
exports.traverseAndFilter = traverseAndFilter;
|
|
29
|
+
const getFilterByMemberKey = (filters, memberKey) => {
|
|
30
|
+
if (!filters)
|
|
31
|
+
return [];
|
|
32
|
+
return filters
|
|
33
|
+
.map((filter) => (0, exports.traverseAndFilter)(filter, (value) => value.member === memberKey))
|
|
34
|
+
.filter(Boolean);
|
|
35
|
+
};
|
|
36
|
+
exports.getFilterByMemberKey = getFilterByMemberKey;
|
|
37
|
+
/**
|
|
38
|
+
* Syntax for filter params in SQL:
|
|
39
|
+
* FILTER_PARAMS.cube_name.member_name.filter(sql_expression)
|
|
40
|
+
* Example:
|
|
41
|
+
* SELECT *
|
|
42
|
+
* FROM orders
|
|
43
|
+
* WHERE ${FILTER_PARAMS.order_facts.date.filter('date')}
|
|
44
|
+
* @param sql
|
|
45
|
+
*/
|
|
46
|
+
const detectAllFilterParamsFromSQL = (sql) => {
|
|
47
|
+
const regex = /\${FILTER_PARAMS\.(\w+\.\w+)\.filter\('(\w+)'\)}/g;
|
|
48
|
+
const matches = [];
|
|
49
|
+
let match;
|
|
50
|
+
while ((match = regex.exec(sql)) !== null) {
|
|
51
|
+
matches.push({
|
|
52
|
+
memberKey: match[1],
|
|
53
|
+
filterExpression: match[2],
|
|
54
|
+
matchKey: match[0],
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
return matches;
|
|
58
|
+
};
|
|
59
|
+
exports.detectAllFilterParamsFromSQL = detectAllFilterParamsFromSQL;
|
|
60
|
+
const getFilterParamsAST = (query, tableSchema, filterType = 'PROJECTION_FILTER') => {
|
|
61
|
+
const filterParamKeys = (0, exports.detectAllFilterParamsFromSQL)(tableSchema.sql);
|
|
62
|
+
const filterParamsAST = [];
|
|
63
|
+
for (const filterParamKey of filterParamKeys) {
|
|
64
|
+
const filters = (0, exports.getFilterByMemberKey)(query.filters, filterParamKey.memberKey);
|
|
65
|
+
if (filters && filters.length > 0) {
|
|
66
|
+
filterParamsAST.push({
|
|
67
|
+
memberKey: filterParamKey.memberKey,
|
|
68
|
+
matchKey: filterParamKey.matchKey,
|
|
69
|
+
ast: (0, ast_builder_1.cubeToDuckdbAST)({ filters, measures: [], dimensions: [] }, tableSchema, {
|
|
70
|
+
filterType
|
|
71
|
+
}),
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return filterParamsAST;
|
|
76
|
+
};
|
|
77
|
+
exports.getFilterParamsAST = getFilterParamsAST;
|
|
78
|
+
const replaceWhereClauseWithFiltersParamsSQL = (baseSQL, filterParamsSQL) => {
|
|
79
|
+
let finalSQL = baseSQL;
|
|
80
|
+
for (const filterParam of filterParamsSQL) {
|
|
81
|
+
/**
|
|
82
|
+
* Get SQL expression after WHERE clause
|
|
83
|
+
*/
|
|
84
|
+
const whereClause = filterParam.sql.split('WHERE')[1];
|
|
85
|
+
/**
|
|
86
|
+
* Replace filter param with SQL expression
|
|
87
|
+
*/
|
|
88
|
+
finalSQL = finalSQL.replace(filterParam.matchKey, whereClause);
|
|
89
|
+
}
|
|
90
|
+
return finalSQL;
|
|
91
|
+
};
|
|
92
|
+
const applyFilterParamsToBaseSQL = (baseSQL, filterParamsSQL) => {
|
|
93
|
+
let finalSQL = replaceWhereClauseWithFiltersParamsSQL(baseSQL, filterParamsSQL);
|
|
94
|
+
for (const filterParam of filterParamsSQL) {
|
|
95
|
+
/**
|
|
96
|
+
* Get SQL expression after WHERE clause
|
|
97
|
+
*/
|
|
98
|
+
const whereClause = filterParam.sql.split('WHERE')[1];
|
|
99
|
+
/**
|
|
100
|
+
* Replace filter param with SQL expression
|
|
101
|
+
*/
|
|
102
|
+
finalSQL = finalSQL.replace(filterParam.matchKey, whereClause);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Find all remaining filter params and replace them with TRUE
|
|
106
|
+
*/
|
|
107
|
+
const remainingFilterParams = (0, exports.detectAllFilterParamsFromSQL)(finalSQL);
|
|
108
|
+
for (const filterParam of remainingFilterParams) {
|
|
109
|
+
finalSQL = finalSQL.replace(filterParam.matchKey, 'TRUE');
|
|
110
|
+
}
|
|
111
|
+
return finalSQL;
|
|
112
|
+
};
|
|
113
|
+
exports.applyFilterParamsToBaseSQL = applyFilterParamsToBaseSQL;
|
|
114
|
+
//# sourceMappingURL=filter-params-ast.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter-params-ast.js","sourceRoot":"","sources":["../../../../meerkat-core/src/filter-params/filter-params-ast.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getFilterParamsSQL = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const ast_deserializer_1 = require("../ast-deserializer/ast-deserializer");
|
|
6
|
+
const filter_params_ast_1 = require("../filter-params/filter-params-ast");
|
|
7
|
+
const getFilterParamsSQL = ({ query, tableSchema, filterType, getQueryOutput }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
8
|
+
const filterParamsAST = (0, filter_params_ast_1.getFilterParamsAST)(query, tableSchema, filterType);
|
|
9
|
+
const filterParamsSQL = [];
|
|
10
|
+
for (const filterParamAST of filterParamsAST) {
|
|
11
|
+
if (!filterParamAST.ast) {
|
|
12
|
+
continue;
|
|
13
|
+
}
|
|
14
|
+
const queryOutput = yield getQueryOutput((0, ast_deserializer_1.astDeserializerQuery)(filterParamAST.ast));
|
|
15
|
+
const sql = (0, ast_deserializer_1.deserializeQuery)(queryOutput);
|
|
16
|
+
filterParamsSQL.push({
|
|
17
|
+
memberKey: filterParamAST.memberKey,
|
|
18
|
+
sql: sql,
|
|
19
|
+
matchKey: filterParamAST.matchKey,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return filterParamsSQL;
|
|
23
|
+
});
|
|
24
|
+
exports.getFilterParamsSQL = getFilterParamsSQL;
|
|
25
|
+
//# sourceMappingURL=get-filter-params-sql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-filter-params-sql.js","sourceRoot":"","sources":["../../../../meerkat-core/src/get-filter-params-sql/get-filter-params-sql.ts"],"names":[],"mappings":";;;;AAAA,2EAA8F;AAC9F,0EAAwE;AAGjE,MAAM,kBAAkB,GAAG,CAAO,EACvC,KAAK,EACL,WAAW,EACX,UAAU,EACV,cAAc,EAMf,EAAE,EAAE;IACH,MAAM,eAAe,GAAG,IAAA,sCAAkB,EACxC,KAAK,EACL,WAAW,EACX,UAAU,CACX,CAAC;IACF,MAAM,eAAe,GAAG,EAAE,CAAC;IAC3B,KAAK,MAAM,cAAc,IAAI,eAAe,EAAE;QAC5C,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE;YACvB,SAAS;SACV;QAED,MAAM,WAAW,GAAG,MAAM,cAAc,CAAC,IAAA,uCAAoB,EAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAA;QAClF,MAAM,GAAG,GAAG,IAAA,mCAAgB,EAAC,WAAW,CAAC,CAAC;QAE1C,eAAe,CAAC,IAAI,CAAC;YACnB,SAAS,EAAE,cAAc,CAAC,SAAS;YACnC,GAAG,EAAE,GAAG;YACR,QAAQ,EAAE,cAAc,CAAC,QAAQ;SAClC,CAAC,CAAC;KACJ;IACD,OAAO,eAAe,CAAC;AACzB,CAAC,CAAA,CAAC;AAhCW,QAAA,kBAAkB,sBAgC7B"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getFinalBaseSQL = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const filter_params_ast_1 = require("../filter-params/filter-params-ast");
|
|
6
|
+
const get_filter_params_sql_1 = require("../get-filter-params-sql/get-filter-params-sql");
|
|
7
|
+
const get_wrapped_base_query_with_projections_1 = require("../get-wrapped-base-query-with-projections/get-wrapped-base-query-with-projections");
|
|
8
|
+
const getFinalBaseSQL = ({ query, getQueryOutput, tableSchema, }) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
9
|
+
/**
|
|
10
|
+
* Apply transformation to the supplied base query.
|
|
11
|
+
* This involves updating the filter placeholder with the actual filter values.
|
|
12
|
+
*/
|
|
13
|
+
const baseFilterParamsSQL = yield (0, get_filter_params_sql_1.getFilterParamsSQL)({
|
|
14
|
+
query: query,
|
|
15
|
+
tableSchema,
|
|
16
|
+
filterType: 'BASE_FILTER',
|
|
17
|
+
getQueryOutput,
|
|
18
|
+
});
|
|
19
|
+
const baseSQL = (0, filter_params_ast_1.applyFilterParamsToBaseSQL)(tableSchema.sql, baseFilterParamsSQL);
|
|
20
|
+
const baseSQLWithFilterProjection = (0, get_wrapped_base_query_with_projections_1.getWrappedBaseQueryWithProjections)({
|
|
21
|
+
baseQuery: baseSQL,
|
|
22
|
+
tableSchema,
|
|
23
|
+
query: query,
|
|
24
|
+
});
|
|
25
|
+
return baseSQLWithFilterProjection;
|
|
26
|
+
});
|
|
27
|
+
exports.getFinalBaseSQL = getFinalBaseSQL;
|
|
28
|
+
//# sourceMappingURL=get-final-base-sql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get-final-base-sql.js","sourceRoot":"","sources":["../../../../meerkat-core/src/get-final-base-sql/get-final-base-sql.ts"],"names":[],"mappings":";;;;AAAA,0EAAgF;AAChF,0FAAoF;AACpF,gJAAwI;AAIjI,MAAM,eAAe,GAAG,CAAO,EACpC,KAAK,EACL,cAAc,EACd,WAAW,GACiF,EAAE,EAAE;IAChG;;;OAGG;IACH,MAAM,mBAAmB,GAAG,MAAM,IAAA,0CAAkB,EAAC;QACnD,KAAK,EAAE,KAAK;QACZ,WAAW;QACX,UAAU,EAAE,aAAa;QACzB,cAAc;KACf,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,IAAA,8CAA0B,EACxC,WAAW,CAAC,GAAG,EACf,mBAAmB,CACpB,CAAC;IACF,MAAM,2BAA2B,GAAG,IAAA,4EAAkC,EAAC;QACrE,SAAS,EAAE,OAAO;QAClB,WAAW;QACX,KAAK,EAAE,KAAK;KACb,CAAC,CAAC;IACH,OAAO,2BAA2B,CAAC;AACrC,CAAC,CAAA,CAAC;AAzBW,QAAA,eAAe,mBAyB1B"}
|