@tinqerjs/tinqer 0.0.21
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/dist/expressions/expression.d.ts +313 -0
- package/dist/expressions/expression.d.ts.map +1 -0
- package/dist/expressions/expression.js +56 -0
- package/dist/expressions/expression.js.map +1 -0
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/linq/database-context.d.ts +18 -0
- package/dist/linq/database-context.d.ts.map +1 -0
- package/dist/linq/database-context.js +23 -0
- package/dist/linq/database-context.js.map +1 -0
- package/dist/linq/database-schema.d.ts +18 -0
- package/dist/linq/database-schema.d.ts.map +1 -0
- package/dist/linq/database-schema.js +23 -0
- package/dist/linq/database-schema.js.map +1 -0
- package/dist/linq/deletable.d.ts +30 -0
- package/dist/linq/deletable.d.ts.map +1 -0
- package/dist/linq/deletable.js +46 -0
- package/dist/linq/deletable.js.map +1 -0
- package/dist/linq/delete-from.d.ts +19 -0
- package/dist/linq/delete-from.d.ts.map +1 -0
- package/dist/linq/delete-from.js +11 -0
- package/dist/linq/delete-from.js.map +1 -0
- package/dist/linq/from.d.ts +19 -0
- package/dist/linq/from.d.ts.map +1 -0
- package/dist/linq/from.js +11 -0
- package/dist/linq/from.js.map +1 -0
- package/dist/linq/functions.d.ts +96 -0
- package/dist/linq/functions.d.ts.map +1 -0
- package/dist/linq/functions.js +136 -0
- package/dist/linq/functions.js.map +1 -0
- package/dist/linq/grouping.d.ts +26 -0
- package/dist/linq/grouping.d.ts.map +1 -0
- package/dist/linq/grouping.js +47 -0
- package/dist/linq/grouping.js.map +1 -0
- package/dist/linq/insert-into.d.ts +19 -0
- package/dist/linq/insert-into.d.ts.map +1 -0
- package/dist/linq/insert-into.js +11 -0
- package/dist/linq/insert-into.js.map +1 -0
- package/dist/linq/insertable.d.ts +30 -0
- package/dist/linq/insertable.d.ts.map +1 -0
- package/dist/linq/insertable.js +37 -0
- package/dist/linq/insertable.js.map +1 -0
- package/dist/linq/query-builder.d.ts +24 -0
- package/dist/linq/query-builder.d.ts.map +1 -0
- package/dist/linq/query-builder.js +21 -0
- package/dist/linq/query-builder.js.map +1 -0
- package/dist/linq/queryable.d.ts +61 -0
- package/dist/linq/queryable.d.ts.map +1 -0
- package/dist/linq/queryable.js +148 -0
- package/dist/linq/queryable.js.map +1 -0
- package/dist/linq/terminal-query.d.ts +10 -0
- package/dist/linq/terminal-query.d.ts.map +1 -0
- package/dist/linq/terminal-query.js +12 -0
- package/dist/linq/terminal-query.js.map +1 -0
- package/dist/linq/updatable.d.ts +57 -0
- package/dist/linq/updatable.d.ts.map +1 -0
- package/dist/linq/updatable.js +84 -0
- package/dist/linq/updatable.js.map +1 -0
- package/dist/linq/update.d.ts +19 -0
- package/dist/linq/update.d.ts.map +1 -0
- package/dist/linq/update.js +11 -0
- package/dist/linq/update.js.map +1 -0
- package/dist/parser/ast-types.d.ts +114 -0
- package/dist/parser/ast-types.d.ts.map +1 -0
- package/dist/parser/ast-types.js +6 -0
- package/dist/parser/ast-types.js.map +1 -0
- package/dist/parser/ast-visitor.d.ts +32 -0
- package/dist/parser/ast-visitor.d.ts.map +1 -0
- package/dist/parser/ast-visitor.js +666 -0
- package/dist/parser/ast-visitor.js.map +1 -0
- package/dist/parser/normalize-joins.d.ts +3 -0
- package/dist/parser/normalize-joins.d.ts.map +1 -0
- package/dist/parser/normalize-joins.js +109 -0
- package/dist/parser/normalize-joins.js.map +1 -0
- package/dist/parser/normalize-window-filters.d.ts +13 -0
- package/dist/parser/normalize-window-filters.d.ts.map +1 -0
- package/dist/parser/normalize-window-filters.js +212 -0
- package/dist/parser/normalize-window-filters.js.map +1 -0
- package/dist/parser/oxc-parser.d.ts +11 -0
- package/dist/parser/oxc-parser.d.ts.map +1 -0
- package/dist/parser/oxc-parser.js +27 -0
- package/dist/parser/oxc-parser.js.map +1 -0
- package/dist/parser/parse-cache-config.d.ts +31 -0
- package/dist/parser/parse-cache-config.d.ts.map +1 -0
- package/dist/parser/parse-cache-config.js +33 -0
- package/dist/parser/parse-cache-config.js.map +1 -0
- package/dist/parser/parse-cache.d.ts +65 -0
- package/dist/parser/parse-cache.d.ts.map +1 -0
- package/dist/parser/parse-cache.js +146 -0
- package/dist/parser/parse-cache.js.map +1 -0
- package/dist/parser/parse-query.d.ts +24 -0
- package/dist/parser/parse-query.d.ts.map +1 -0
- package/dist/parser/parse-query.js +118 -0
- package/dist/parser/parse-query.js.map +1 -0
- package/dist/parser/types.d.ts +11 -0
- package/dist/parser/types.d.ts.map +1 -0
- package/dist/parser/types.js +2 -0
- package/dist/parser/types.js.map +1 -0
- package/dist/plans/delete-plan.d.ts +44 -0
- package/dist/plans/delete-plan.d.ts.map +1 -0
- package/dist/plans/delete-plan.js +209 -0
- package/dist/plans/delete-plan.js.map +1 -0
- package/dist/plans/insert-plan.d.ts +50 -0
- package/dist/plans/insert-plan.d.ts.map +1 -0
- package/dist/plans/insert-plan.js +240 -0
- package/dist/plans/insert-plan.js.map +1 -0
- package/dist/plans/plan-execution.d.ts +39 -0
- package/dist/plans/plan-execution.d.ts.map +1 -0
- package/dist/plans/plan-execution.js +32 -0
- package/dist/plans/plan-execution.js.map +1 -0
- package/dist/plans/select-plan.d.ts +74 -0
- package/dist/plans/select-plan.d.ts.map +1 -0
- package/dist/plans/select-plan.js +551 -0
- package/dist/plans/select-plan.js.map +1 -0
- package/dist/plans/update-plan.d.ts +61 -0
- package/dist/plans/update-plan.d.ts.map +1 -0
- package/dist/plans/update-plan.js +297 -0
- package/dist/plans/update-plan.js.map +1 -0
- package/dist/query-tree/operations.d.ts +430 -0
- package/dist/query-tree/operations.d.ts.map +1 -0
- package/dist/query-tree/operations.js +8 -0
- package/dist/query-tree/operations.js.map +1 -0
- package/dist/visitors/aggregates/average.d.ts +11 -0
- package/dist/visitors/aggregates/average.d.ts.map +1 -0
- package/dist/visitors/aggregates/average.js +56 -0
- package/dist/visitors/aggregates/average.js.map +1 -0
- package/dist/visitors/aggregates/max.d.ts +11 -0
- package/dist/visitors/aggregates/max.d.ts.map +1 -0
- package/dist/visitors/aggregates/max.js +56 -0
- package/dist/visitors/aggregates/max.js.map +1 -0
- package/dist/visitors/aggregates/min.d.ts +11 -0
- package/dist/visitors/aggregates/min.d.ts.map +1 -0
- package/dist/visitors/aggregates/min.js +56 -0
- package/dist/visitors/aggregates/min.js.map +1 -0
- package/dist/visitors/aggregates/sum.d.ts +11 -0
- package/dist/visitors/aggregates/sum.d.ts.map +1 -0
- package/dist/visitors/aggregates/sum.js +56 -0
- package/dist/visitors/aggregates/sum.js.map +1 -0
- package/dist/visitors/ast-visitor.d.ts +15 -0
- package/dist/visitors/ast-visitor.d.ts.map +1 -0
- package/dist/visitors/ast-visitor.js +20 -0
- package/dist/visitors/ast-visitor.js.map +1 -0
- package/dist/visitors/boolean/comparison.d.ts +12 -0
- package/dist/visitors/boolean/comparison.d.ts.map +1 -0
- package/dist/visitors/boolean/comparison.js +128 -0
- package/dist/visitors/boolean/comparison.js.map +1 -0
- package/dist/visitors/boolean/logical.d.ts +12 -0
- package/dist/visitors/boolean/logical.d.ts.map +1 -0
- package/dist/visitors/boolean/logical.js +68 -0
- package/dist/visitors/boolean/logical.js.map +1 -0
- package/dist/visitors/boolean-predicates/all.d.ts +11 -0
- package/dist/visitors/boolean-predicates/all.d.ts.map +1 -0
- package/dist/visitors/boolean-predicates/all.js +49 -0
- package/dist/visitors/boolean-predicates/all.js.map +1 -0
- package/dist/visitors/boolean-predicates/any.d.ts +11 -0
- package/dist/visitors/boolean-predicates/any.d.ts.map +1 -0
- package/dist/visitors/boolean-predicates/any.js +48 -0
- package/dist/visitors/boolean-predicates/any.js.map +1 -0
- package/dist/visitors/common/identifier.d.ts +13 -0
- package/dist/visitors/common/identifier.d.ts.map +1 -0
- package/dist/visitors/common/identifier.js +46 -0
- package/dist/visitors/common/identifier.js.map +1 -0
- package/dist/visitors/common/literal.d.ts +13 -0
- package/dist/visitors/common/literal.d.ts.map +1 -0
- package/dist/visitors/common/literal.js +45 -0
- package/dist/visitors/common/literal.js.map +1 -0
- package/dist/visitors/common/member-access.d.ts +15 -0
- package/dist/visitors/common/member-access.d.ts.map +1 -0
- package/dist/visitors/common/member-access.js +192 -0
- package/dist/visitors/common/member-access.js.map +1 -0
- package/dist/visitors/contains/index.d.ts +11 -0
- package/dist/visitors/contains/index.d.ts.map +1 -0
- package/dist/visitors/contains/index.js +26 -0
- package/dist/visitors/contains/index.js.map +1 -0
- package/dist/visitors/count/index.d.ts +11 -0
- package/dist/visitors/count/index.d.ts.map +1 -0
- package/dist/visitors/count/index.js +47 -0
- package/dist/visitors/count/index.js.map +1 -0
- package/dist/visitors/delete/allow-full-delete.d.ts +14 -0
- package/dist/visitors/delete/allow-full-delete.d.ts.map +1 -0
- package/dist/visitors/delete/allow-full-delete.js +26 -0
- package/dist/visitors/delete/allow-full-delete.js.map +1 -0
- package/dist/visitors/delete/index.d.ts +10 -0
- package/dist/visitors/delete/index.d.ts.map +1 -0
- package/dist/visitors/delete/index.js +53 -0
- package/dist/visitors/delete/index.js.map +1 -0
- package/dist/visitors/delete/where-delete.d.ts +15 -0
- package/dist/visitors/delete/where-delete.d.ts.map +1 -0
- package/dist/visitors/delete/where-delete.js +59 -0
- package/dist/visitors/delete/where-delete.js.map +1 -0
- package/dist/visitors/distinct/index.d.ts +16 -0
- package/dist/visitors/distinct/index.d.ts.map +1 -0
- package/dist/visitors/distinct/index.js +20 -0
- package/dist/visitors/distinct/index.js.map +1 -0
- package/dist/visitors/from/index.d.ts +12 -0
- package/dist/visitors/from/index.d.ts.map +1 -0
- package/dist/visitors/from/index.js +58 -0
- package/dist/visitors/from/index.js.map +1 -0
- package/dist/visitors/groupby/index.d.ts +11 -0
- package/dist/visitors/groupby/index.d.ts.map +1 -0
- package/dist/visitors/groupby/index.js +51 -0
- package/dist/visitors/groupby/index.js.map +1 -0
- package/dist/visitors/groupjoin/index.d.ts +8 -0
- package/dist/visitors/groupjoin/index.d.ts.map +1 -0
- package/dist/visitors/groupjoin/index.js +184 -0
- package/dist/visitors/groupjoin/index.js.map +1 -0
- package/dist/visitors/index.d.ts +13 -0
- package/dist/visitors/index.d.ts.map +1 -0
- package/dist/visitors/index.js +266 -0
- package/dist/visitors/index.js.map +1 -0
- package/dist/visitors/insert/index.d.ts +10 -0
- package/dist/visitors/insert/index.d.ts.map +1 -0
- package/dist/visitors/insert/index.js +54 -0
- package/dist/visitors/insert/index.js.map +1 -0
- package/dist/visitors/insert/returning.d.ts +15 -0
- package/dist/visitors/insert/returning.d.ts.map +1 -0
- package/dist/visitors/insert/returning.js +60 -0
- package/dist/visitors/insert/returning.js.map +1 -0
- package/dist/visitors/insert/values.d.ts +15 -0
- package/dist/visitors/insert/values.d.ts.map +1 -0
- package/dist/visitors/insert/values.js +37 -0
- package/dist/visitors/insert/values.js.map +1 -0
- package/dist/visitors/join/context.d.ts +16 -0
- package/dist/visitors/join/context.d.ts.map +1 -0
- package/dist/visitors/join/context.js +6 -0
- package/dist/visitors/join/context.js.map +1 -0
- package/dist/visitors/join/expression.d.ts +16 -0
- package/dist/visitors/join/expression.d.ts.map +1 -0
- package/dist/visitors/join/expression.js +162 -0
- package/dist/visitors/join/expression.js.map +1 -0
- package/dist/visitors/join/index.d.ts +10 -0
- package/dist/visitors/join/index.d.ts.map +1 -0
- package/dist/visitors/join/index.js +9 -0
- package/dist/visitors/join/index.js.map +1 -0
- package/dist/visitors/join/join.d.ts +12 -0
- package/dist/visitors/join/join.d.ts.map +1 -0
- package/dist/visitors/join/join.js +348 -0
- package/dist/visitors/join/join.js.map +1 -0
- package/dist/visitors/join/result-selector.d.ts +16 -0
- package/dist/visitors/join/result-selector.d.ts.map +1 -0
- package/dist/visitors/join/result-selector.js +121 -0
- package/dist/visitors/join/result-selector.js.map +1 -0
- package/dist/visitors/join/shape.d.ts +16 -0
- package/dist/visitors/join/shape.d.ts.map +1 -0
- package/dist/visitors/join/shape.js +157 -0
- package/dist/visitors/join/shape.js.map +1 -0
- package/dist/visitors/orderby/context.d.ts +20 -0
- package/dist/visitors/orderby/context.d.ts.map +1 -0
- package/dist/visitors/orderby/context.js +25 -0
- package/dist/visitors/orderby/context.js.map +1 -0
- package/dist/visitors/orderby/index.d.ts +7 -0
- package/dist/visitors/orderby/index.d.ts.map +1 -0
- package/dist/visitors/orderby/index.js +7 -0
- package/dist/visitors/orderby/index.js.map +1 -0
- package/dist/visitors/orderby/key-selector.d.ts +13 -0
- package/dist/visitors/orderby/key-selector.d.ts.map +1 -0
- package/dist/visitors/orderby/key-selector.js +236 -0
- package/dist/visitors/orderby/key-selector.js.map +1 -0
- package/dist/visitors/orderby/orderby.d.ts +20 -0
- package/dist/visitors/orderby/orderby.d.ts.map +1 -0
- package/dist/visitors/orderby/orderby.js +83 -0
- package/dist/visitors/orderby/orderby.js.map +1 -0
- package/dist/visitors/orderby/thenby.d.ts +20 -0
- package/dist/visitors/orderby/thenby.d.ts.map +1 -0
- package/dist/visitors/orderby/thenby.js +76 -0
- package/dist/visitors/orderby/thenby.js.map +1 -0
- package/dist/visitors/predicates/first.d.ts +11 -0
- package/dist/visitors/predicates/first.d.ts.map +1 -0
- package/dist/visitors/predicates/first.js +47 -0
- package/dist/visitors/predicates/first.js.map +1 -0
- package/dist/visitors/predicates/last.d.ts +11 -0
- package/dist/visitors/predicates/last.d.ts.map +1 -0
- package/dist/visitors/predicates/last.js +48 -0
- package/dist/visitors/predicates/last.js.map +1 -0
- package/dist/visitors/predicates/single.d.ts +11 -0
- package/dist/visitors/predicates/single.d.ts.map +1 -0
- package/dist/visitors/predicates/single.js +48 -0
- package/dist/visitors/predicates/single.js.map +1 -0
- package/dist/visitors/reverse/index.d.ts +11 -0
- package/dist/visitors/reverse/index.d.ts.map +1 -0
- package/dist/visitors/reverse/index.js +14 -0
- package/dist/visitors/reverse/index.js.map +1 -0
- package/dist/visitors/select/context.d.ts +30 -0
- package/dist/visitors/select/context.d.ts.map +1 -0
- package/dist/visitors/select/context.js +30 -0
- package/dist/visitors/select/context.js.map +1 -0
- package/dist/visitors/select/index.d.ts +16 -0
- package/dist/visitors/select/index.d.ts.map +1 -0
- package/dist/visitors/select/index.js +180 -0
- package/dist/visitors/select/index.js.map +1 -0
- package/dist/visitors/select/projection.d.ts +13 -0
- package/dist/visitors/select/projection.d.ts.map +1 -0
- package/dist/visitors/select/projection.js +642 -0
- package/dist/visitors/select/projection.js.map +1 -0
- package/dist/visitors/select-many/index.d.ts +8 -0
- package/dist/visitors/select-many/index.d.ts.map +1 -0
- package/dist/visitors/select-many/index.js +244 -0
- package/dist/visitors/select-many/index.js.map +1 -0
- package/dist/visitors/shared/generic-visitor.d.ts +21 -0
- package/dist/visitors/shared/generic-visitor.d.ts.map +1 -0
- package/dist/visitors/shared/generic-visitor.js +32 -0
- package/dist/visitors/shared/generic-visitor.js.map +1 -0
- package/dist/visitors/shared/predicate-visitor.d.ts +21 -0
- package/dist/visitors/shared/predicate-visitor.d.ts.map +1 -0
- package/dist/visitors/shared/predicate-visitor.js +49 -0
- package/dist/visitors/shared/predicate-visitor.js.map +1 -0
- package/dist/visitors/shared/value-visitor.d.ts +21 -0
- package/dist/visitors/shared/value-visitor.d.ts.map +1 -0
- package/dist/visitors/shared/value-visitor.js +38 -0
- package/dist/visitors/shared/value-visitor.js.map +1 -0
- package/dist/visitors/take-skip/skip.d.ts +15 -0
- package/dist/visitors/take-skip/skip.d.ts.map +1 -0
- package/dist/visitors/take-skip/skip.js +209 -0
- package/dist/visitors/take-skip/skip.js.map +1 -0
- package/dist/visitors/take-skip/take.d.ts +15 -0
- package/dist/visitors/take-skip/take.d.ts.map +1 -0
- package/dist/visitors/take-skip/take.js +76 -0
- package/dist/visitors/take-skip/take.js.map +1 -0
- package/dist/visitors/types.d.ts +170 -0
- package/dist/visitors/types.d.ts.map +1 -0
- package/dist/visitors/types.js +184 -0
- package/dist/visitors/types.js.map +1 -0
- package/dist/visitors/update/allow-full-update.d.ts +14 -0
- package/dist/visitors/update/allow-full-update.d.ts.map +1 -0
- package/dist/visitors/update/allow-full-update.js +26 -0
- package/dist/visitors/update/allow-full-update.js.map +1 -0
- package/dist/visitors/update/index.d.ts +10 -0
- package/dist/visitors/update/index.d.ts.map +1 -0
- package/dist/visitors/update/index.js +54 -0
- package/dist/visitors/update/index.js.map +1 -0
- package/dist/visitors/update/returning-update.d.ts +15 -0
- package/dist/visitors/update/returning-update.d.ts.map +1 -0
- package/dist/visitors/update/returning-update.js +60 -0
- package/dist/visitors/update/returning-update.js.map +1 -0
- package/dist/visitors/update/set.d.ts +15 -0
- package/dist/visitors/update/set.d.ts.map +1 -0
- package/dist/visitors/update/set.js +46 -0
- package/dist/visitors/update/set.js.map +1 -0
- package/dist/visitors/update/where-update.d.ts +15 -0
- package/dist/visitors/update/where-update.d.ts.map +1 -0
- package/dist/visitors/update/where-update.js +59 -0
- package/dist/visitors/update/where-update.js.map +1 -0
- package/dist/visitors/utils.d.ts +36 -0
- package/dist/visitors/utils.d.ts.map +1 -0
- package/dist/visitors/utils.js +104 -0
- package/dist/visitors/utils.js.map +1 -0
- package/dist/visitors/value/array-literal.d.ts +12 -0
- package/dist/visitors/value/array-literal.d.ts.map +1 -0
- package/dist/visitors/value/array-literal.js +23 -0
- package/dist/visitors/value/array-literal.js.map +1 -0
- package/dist/visitors/value/call-expression.d.ts +12 -0
- package/dist/visitors/value/call-expression.d.ts.map +1 -0
- package/dist/visitors/value/call-expression.js +165 -0
- package/dist/visitors/value/call-expression.js.map +1 -0
- package/dist/visitors/value/object-literal.d.ts +12 -0
- package/dist/visitors/value/object-literal.d.ts.map +1 -0
- package/dist/visitors/value/object-literal.js +98 -0
- package/dist/visitors/value/object-literal.js.map +1 -0
- package/dist/visitors/visitor-utils.d.ts +22 -0
- package/dist/visitors/visitor-utils.d.ts.map +1 -0
- package/dist/visitors/visitor-utils.js +64 -0
- package/dist/visitors/visitor-utils.js.map +1 -0
- package/dist/visitors/where/boolean-method.d.ts +12 -0
- package/dist/visitors/where/boolean-method.d.ts.map +1 -0
- package/dist/visitors/where/boolean-method.js +150 -0
- package/dist/visitors/where/boolean-method.js.map +1 -0
- package/dist/visitors/where/case-insensitive-functions.d.ts +13 -0
- package/dist/visitors/where/case-insensitive-functions.d.ts.map +1 -0
- package/dist/visitors/where/case-insensitive-functions.js +72 -0
- package/dist/visitors/where/case-insensitive-functions.js.map +1 -0
- package/dist/visitors/where/column.d.ts +14 -0
- package/dist/visitors/where/column.d.ts.map +1 -0
- package/dist/visitors/where/column.js +57 -0
- package/dist/visitors/where/column.js.map +1 -0
- package/dist/visitors/where/comparison.d.ts +12 -0
- package/dist/visitors/where/comparison.d.ts.map +1 -0
- package/dist/visitors/where/comparison.js +141 -0
- package/dist/visitors/where/comparison.js.map +1 -0
- package/dist/visitors/where/context.d.ts +32 -0
- package/dist/visitors/where/context.d.ts.map +1 -0
- package/dist/visitors/where/context.js +18 -0
- package/dist/visitors/where/context.js.map +1 -0
- package/dist/visitors/where/index.d.ts +16 -0
- package/dist/visitors/where/index.d.ts.map +1 -0
- package/dist/visitors/where/index.js +82 -0
- package/dist/visitors/where/index.js.map +1 -0
- package/dist/visitors/where/logical.d.ts +12 -0
- package/dist/visitors/where/logical.d.ts.map +1 -0
- package/dist/visitors/where/logical.js +43 -0
- package/dist/visitors/where/logical.js.map +1 -0
- package/dist/visitors/where/predicate.d.ts +13 -0
- package/dist/visitors/where/predicate.d.ts.map +1 -0
- package/dist/visitors/where/predicate.js +131 -0
- package/dist/visitors/where/predicate.js.map +1 -0
- package/dist/visitors/where/value.d.ts +13 -0
- package/dist/visitors/where/value.d.ts.map +1 -0
- package/dist/visitors/where/value.js +356 -0
- package/dist/visitors/where/value.js.map +1 -0
- package/dist/visitors/window/index.d.ts +18 -0
- package/dist/visitors/window/index.d.ts.map +1 -0
- package/dist/visitors/window/index.js +156 -0
- package/dist/visitors/window/index.js.map +1 -0
- package/package.json +50 -0
|
@@ -0,0 +1,642 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SELECT projection visitor
|
|
3
|
+
* Converts AST expressions to projection expressions (columns, objects, values)
|
|
4
|
+
*/
|
|
5
|
+
import { createAutoParam } from "./context.js";
|
|
6
|
+
import { isWindowFunctionCall, visitWindowFunction } from "../window/index.js";
|
|
7
|
+
/**
|
|
8
|
+
* Visit a projection expression in SELECT context
|
|
9
|
+
* Returns Expression (ValueExpression or ObjectExpression)
|
|
10
|
+
*/
|
|
11
|
+
export function visitProjection(node, context) {
|
|
12
|
+
if (!node)
|
|
13
|
+
return null;
|
|
14
|
+
switch (node.type) {
|
|
15
|
+
case "ObjectExpression": {
|
|
16
|
+
// Object projection: { id: x.id, name: x.name }
|
|
17
|
+
return visitObjectProjection(node, context);
|
|
18
|
+
}
|
|
19
|
+
case "MemberExpression": {
|
|
20
|
+
// Column projection: x.name
|
|
21
|
+
return visitColumnProjection(node, context);
|
|
22
|
+
}
|
|
23
|
+
case "Identifier": {
|
|
24
|
+
// Direct identifier (could be table param or query param)
|
|
25
|
+
return visitIdentifierProjection(node, context);
|
|
26
|
+
}
|
|
27
|
+
case "Literal":
|
|
28
|
+
case "NumericLiteral":
|
|
29
|
+
case "StringLiteral":
|
|
30
|
+
case "BooleanLiteral":
|
|
31
|
+
case "NullLiteral": {
|
|
32
|
+
// Literal value projection
|
|
33
|
+
return visitLiteralProjection(node, context);
|
|
34
|
+
}
|
|
35
|
+
case "BinaryExpression": {
|
|
36
|
+
// Arithmetic, concatenation, or comparison
|
|
37
|
+
return visitBinaryProjection(node, context);
|
|
38
|
+
}
|
|
39
|
+
case "CallExpression": {
|
|
40
|
+
// Method calls (string methods, etc.)
|
|
41
|
+
return visitMethodProjection(node, context);
|
|
42
|
+
}
|
|
43
|
+
case "UnaryExpression": {
|
|
44
|
+
// Unary operations (negation, etc.)
|
|
45
|
+
return visitUnaryProjection(node, context);
|
|
46
|
+
}
|
|
47
|
+
case "ConditionalExpression": {
|
|
48
|
+
// Ternary operator (CASE WHEN)
|
|
49
|
+
return visitConditionalProjection(node, context);
|
|
50
|
+
}
|
|
51
|
+
case "LogicalExpression": {
|
|
52
|
+
// Null coalescing operator (??)
|
|
53
|
+
const logical = node;
|
|
54
|
+
if (logical.operator === "??") {
|
|
55
|
+
const left = visitProjection(logical.left, context);
|
|
56
|
+
const right = visitProjection(logical.right, context);
|
|
57
|
+
if (left && right) {
|
|
58
|
+
return {
|
|
59
|
+
type: "coalesce",
|
|
60
|
+
expressions: [left, right],
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
case "ParenthesizedExpression": {
|
|
67
|
+
// Unwrap parentheses
|
|
68
|
+
const paren = node;
|
|
69
|
+
return visitProjection(paren.expression, context);
|
|
70
|
+
}
|
|
71
|
+
default:
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Visit object projection
|
|
77
|
+
*/
|
|
78
|
+
function visitObjectProjection(node, context) {
|
|
79
|
+
const properties = {};
|
|
80
|
+
for (const prop of node.properties) {
|
|
81
|
+
// Handle spread operator
|
|
82
|
+
if ("type" in prop && prop.type === "SpreadElement") {
|
|
83
|
+
// Spread operator expands to all columns from the source
|
|
84
|
+
// Use a special key that will be detected by the SQL generator
|
|
85
|
+
properties["__spread__"] = {
|
|
86
|
+
type: "allColumns",
|
|
87
|
+
};
|
|
88
|
+
continue;
|
|
89
|
+
}
|
|
90
|
+
// Extract property key
|
|
91
|
+
let key = null;
|
|
92
|
+
if (prop.key?.type === "Identifier") {
|
|
93
|
+
key = prop.key.name;
|
|
94
|
+
}
|
|
95
|
+
else if (prop.key?.type === "Literal" || prop.key?.type === "StringLiteral") {
|
|
96
|
+
key = String(prop.key.value);
|
|
97
|
+
}
|
|
98
|
+
if (key && prop.value) {
|
|
99
|
+
const value = visitProjection(prop.value, context);
|
|
100
|
+
if (value) {
|
|
101
|
+
properties[key] = value;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
type: "object",
|
|
107
|
+
properties,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Visit column projection
|
|
112
|
+
*/
|
|
113
|
+
function visitColumnProjection(node, context) {
|
|
114
|
+
if (!node.computed && node.property.type === "Identifier") {
|
|
115
|
+
const propertyName = node.property.name;
|
|
116
|
+
// Simple member access: x.name
|
|
117
|
+
if (node.object.type === "Identifier") {
|
|
118
|
+
const objectName = node.object.name;
|
|
119
|
+
// Check if this is accessing JOIN result shape (e.g., result.joined or joined.u)
|
|
120
|
+
if (context.tableParams.has(objectName) && context.currentResultShape) {
|
|
121
|
+
// Look up the property in the result shape
|
|
122
|
+
const shapeProp = context.currentResultShape.properties.get(propertyName);
|
|
123
|
+
if (shapeProp) {
|
|
124
|
+
if (shapeProp.type === "reference") {
|
|
125
|
+
// It's a table reference - return a reference expression
|
|
126
|
+
const refShape = shapeProp;
|
|
127
|
+
return {
|
|
128
|
+
type: "reference",
|
|
129
|
+
source: { type: "joinParam", paramIndex: refShape.sourceTable },
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
else if (shapeProp.type === "column") {
|
|
133
|
+
// It's a column from the JOIN result
|
|
134
|
+
const colShape = shapeProp;
|
|
135
|
+
return {
|
|
136
|
+
type: "column",
|
|
137
|
+
name: colShape.columnName,
|
|
138
|
+
source: { type: "joinParam", paramIndex: colShape.sourceTable },
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
else if (shapeProp.type === "object") {
|
|
142
|
+
// It's a nested object from the JOIN result
|
|
143
|
+
// We need to return this as a placeholder that will be resolved further
|
|
144
|
+
// when accessing properties on it
|
|
145
|
+
return {
|
|
146
|
+
type: "column",
|
|
147
|
+
name: propertyName, // Keep the property name for now
|
|
148
|
+
table: objectName, // Mark that this is from the joined result
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// Grouping parameter access (g.key, g.count(), etc.)
|
|
154
|
+
if (context.groupingParams.has(objectName)) {
|
|
155
|
+
if (propertyName === "key") {
|
|
156
|
+
// g.key refers to the GROUP BY key expression
|
|
157
|
+
return context.groupKeyExpression || null;
|
|
158
|
+
}
|
|
159
|
+
// Other properties on grouping params will be handled by method calls
|
|
160
|
+
return null;
|
|
161
|
+
}
|
|
162
|
+
// Table parameter column
|
|
163
|
+
if (context.tableParams.has(objectName)) {
|
|
164
|
+
return {
|
|
165
|
+
type: "column",
|
|
166
|
+
name: propertyName,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
// Query parameter property
|
|
170
|
+
if (context.queryParams.has(objectName)) {
|
|
171
|
+
return {
|
|
172
|
+
type: "param",
|
|
173
|
+
param: objectName,
|
|
174
|
+
property: propertyName,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
// Nested member access: x.address.city or g.key.category or joined.u.name
|
|
179
|
+
if (node.object.type === "MemberExpression") {
|
|
180
|
+
const innerMember = node.object;
|
|
181
|
+
// Special case for JOIN result shape: joined.u.name or result.joined.user.name
|
|
182
|
+
// We need to handle deeper nesting
|
|
183
|
+
if (innerMember.object.type === "Identifier" &&
|
|
184
|
+
innerMember.property.type === "Identifier" &&
|
|
185
|
+
!innerMember.computed) {
|
|
186
|
+
const outerName = innerMember.object.name;
|
|
187
|
+
const middleName = innerMember.property.name;
|
|
188
|
+
// Check if this is accessing JOIN result shape
|
|
189
|
+
if (context.tableParams.has(outerName) && context.currentResultShape) {
|
|
190
|
+
// Look up the middle property in the result shape
|
|
191
|
+
const shapeProp = context.currentResultShape.properties.get(middleName);
|
|
192
|
+
if (shapeProp && shapeProp.type === "reference") {
|
|
193
|
+
// It's a table reference - return column with table marker
|
|
194
|
+
const refShape = shapeProp;
|
|
195
|
+
return {
|
|
196
|
+
type: "column",
|
|
197
|
+
name: propertyName,
|
|
198
|
+
source: { type: "joinParam", paramIndex: refShape.sourceTable },
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
else if (shapeProp && shapeProp.type === "object") {
|
|
202
|
+
// It's a nested object - look deeper
|
|
203
|
+
const nestedShape = shapeProp;
|
|
204
|
+
const deepProp = nestedShape.properties.get(propertyName);
|
|
205
|
+
if (deepProp && deepProp.type === "reference") {
|
|
206
|
+
// Found a table reference at the deeper level
|
|
207
|
+
const refShape = deepProp;
|
|
208
|
+
// We're accessing a property on this reference, so return just the table marker
|
|
209
|
+
// The actual column name will be added by the outer expression
|
|
210
|
+
return {
|
|
211
|
+
type: "reference",
|
|
212
|
+
source: { type: "joinParam", paramIndex: refShape.sourceTable },
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
else if (innerMember.object.type === "MemberExpression") {
|
|
219
|
+
// Even deeper nesting: result.joined.user accessing .name
|
|
220
|
+
// First resolve the inner member expression
|
|
221
|
+
const innerResult = visitColumnProjection(innerMember, context);
|
|
222
|
+
if (innerResult && innerResult.type === "reference") {
|
|
223
|
+
// We got a reference back, now access the property on it
|
|
224
|
+
const refExpr = innerResult;
|
|
225
|
+
return {
|
|
226
|
+
type: "column",
|
|
227
|
+
name: propertyName,
|
|
228
|
+
source: refExpr.source, // Use the same source as the reference
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
const innerExpr = visitColumnProjection(innerMember, context);
|
|
233
|
+
// If inner expression is an object (like g.key returning a composite key)
|
|
234
|
+
if (innerExpr && innerExpr.type === "object") {
|
|
235
|
+
const objExpr = innerExpr;
|
|
236
|
+
// Extract the specific property from the object
|
|
237
|
+
if (objExpr.properties[propertyName]) {
|
|
238
|
+
return objExpr.properties[propertyName];
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
// If inner expression is a reference, convert to column access
|
|
242
|
+
if (innerExpr && innerExpr.type === "reference") {
|
|
243
|
+
const refExpr = innerExpr;
|
|
244
|
+
return {
|
|
245
|
+
type: "column",
|
|
246
|
+
name: propertyName,
|
|
247
|
+
source: refExpr.source, // Use the same source as the reference
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
// Regular nested column access
|
|
251
|
+
if (innerExpr && innerExpr.type === "column") {
|
|
252
|
+
const innerCol = innerExpr;
|
|
253
|
+
// If the inner column has a table, use it
|
|
254
|
+
if (innerCol.table) {
|
|
255
|
+
return {
|
|
256
|
+
type: "column",
|
|
257
|
+
name: propertyName,
|
|
258
|
+
table: innerCol.name, // The inner column's name becomes the table reference
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
// Otherwise concatenate for nested property access
|
|
262
|
+
return {
|
|
263
|
+
type: "column",
|
|
264
|
+
name: `${innerCol.name}.${propertyName}`,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
return null;
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Visit identifier projection
|
|
273
|
+
*/
|
|
274
|
+
function visitIdentifierProjection(node, context) {
|
|
275
|
+
const name = node.name;
|
|
276
|
+
// Table parameter (entire row)
|
|
277
|
+
if (context.tableParams.has(name)) {
|
|
278
|
+
return {
|
|
279
|
+
type: "column",
|
|
280
|
+
name,
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
// Query parameter
|
|
284
|
+
if (context.queryParams.has(name)) {
|
|
285
|
+
return {
|
|
286
|
+
type: "param",
|
|
287
|
+
param: name,
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
return null;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Visit literal projection
|
|
294
|
+
*/
|
|
295
|
+
function visitLiteralProjection(node, context) {
|
|
296
|
+
// NULL is special - not parameterized
|
|
297
|
+
if (node.value === null) {
|
|
298
|
+
return {
|
|
299
|
+
type: "constant",
|
|
300
|
+
value: null,
|
|
301
|
+
valueType: "null",
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
// Auto-parameterize other literals
|
|
305
|
+
const paramName = createAutoParam(context, node.value);
|
|
306
|
+
return {
|
|
307
|
+
type: "param",
|
|
308
|
+
param: paramName,
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Visit binary expression in projection
|
|
313
|
+
*/
|
|
314
|
+
function visitBinaryProjection(node, context) {
|
|
315
|
+
// Comparison operators - return as boolean expressions
|
|
316
|
+
if (["==", "===", "!=", "!==", ">", ">=", "<", "<="].includes(node.operator)) {
|
|
317
|
+
const left = visitProjection(node.left, context);
|
|
318
|
+
const right = visitProjection(node.right, context);
|
|
319
|
+
if (!left || !right)
|
|
320
|
+
return null;
|
|
321
|
+
const op = node.operator === "===" ? "==" : node.operator === "!==" ? "!=" : node.operator;
|
|
322
|
+
return {
|
|
323
|
+
type: "comparison",
|
|
324
|
+
operator: op,
|
|
325
|
+
left: left,
|
|
326
|
+
right: right,
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
// Arithmetic operators
|
|
330
|
+
if (["+", "-", "*", "/", "%"].includes(node.operator)) {
|
|
331
|
+
const left = visitProjection(node.left, context);
|
|
332
|
+
const right = visitProjection(node.right, context);
|
|
333
|
+
if (!left || !right)
|
|
334
|
+
return null;
|
|
335
|
+
// Check for string concatenation (+)
|
|
336
|
+
if (node.operator === "+" && (isStringExpression(left) || isStringExpression(right))) {
|
|
337
|
+
return {
|
|
338
|
+
type: "concat",
|
|
339
|
+
left: left,
|
|
340
|
+
right: right,
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
// Regular arithmetic
|
|
344
|
+
return {
|
|
345
|
+
type: "arithmetic",
|
|
346
|
+
operator: node.operator,
|
|
347
|
+
left: left,
|
|
348
|
+
right: right,
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
return null;
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Visit method call in projection
|
|
355
|
+
*/
|
|
356
|
+
function visitMethodProjection(node, context) {
|
|
357
|
+
// Check for window function calls first
|
|
358
|
+
const windowFunctionType = isWindowFunctionCall(node, context);
|
|
359
|
+
if (windowFunctionType) {
|
|
360
|
+
// Create a wrapper that adapts visitProjection to the expected signature
|
|
361
|
+
const expressionVisitor = (node, ctx) => visitProjection(node, ctx);
|
|
362
|
+
return visitWindowFunction(node, windowFunctionType, context, expressionVisitor);
|
|
363
|
+
}
|
|
364
|
+
if (node.callee.type !== "MemberExpression")
|
|
365
|
+
return null;
|
|
366
|
+
const memberCallee = node.callee;
|
|
367
|
+
if (memberCallee.property.type !== "Identifier")
|
|
368
|
+
return null;
|
|
369
|
+
const methodName = memberCallee.property.name;
|
|
370
|
+
// Check if this is a method call on a grouping parameter (e.g., g.count())
|
|
371
|
+
if (memberCallee.object.type === "Identifier") {
|
|
372
|
+
const objectName = memberCallee.object.name;
|
|
373
|
+
if (context.groupingParams.has(objectName)) {
|
|
374
|
+
// Handle aggregate methods on grouping parameter
|
|
375
|
+
if (methodName === "count") {
|
|
376
|
+
return {
|
|
377
|
+
type: "aggregate",
|
|
378
|
+
function: "count",
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
else if (methodName === "sum") {
|
|
382
|
+
// sum() requires a selector argument
|
|
383
|
+
if (node.arguments && node.arguments.length > 0) {
|
|
384
|
+
const arg = node.arguments[0];
|
|
385
|
+
if (arg && arg.type === "ArrowFunctionExpression") {
|
|
386
|
+
const lambda = arg;
|
|
387
|
+
// Parse the selector lambda
|
|
388
|
+
const selector = parseSelectorLambda(lambda, context);
|
|
389
|
+
if (selector) {
|
|
390
|
+
// Accept any value expression, not just columns
|
|
391
|
+
return {
|
|
392
|
+
type: "aggregate",
|
|
393
|
+
function: "sum",
|
|
394
|
+
expression: selector,
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
else if (["avg", "average", "min", "max"].includes(methodName)) {
|
|
401
|
+
// Similar handling for other aggregates
|
|
402
|
+
if (node.arguments && node.arguments.length > 0) {
|
|
403
|
+
const arg = node.arguments[0];
|
|
404
|
+
if (arg && arg.type === "ArrowFunctionExpression") {
|
|
405
|
+
const lambda = arg;
|
|
406
|
+
const selector = parseSelectorLambda(lambda, context);
|
|
407
|
+
if (selector) {
|
|
408
|
+
// Accept any value expression, not just columns
|
|
409
|
+
// Map "average" to "avg" for SQL
|
|
410
|
+
const functionName = methodName === "average" ? "avg" : methodName;
|
|
411
|
+
return {
|
|
412
|
+
type: "aggregate",
|
|
413
|
+
function: functionName,
|
|
414
|
+
expression: selector,
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
// String methods
|
|
423
|
+
if (["toLowerCase", "toUpperCase"].includes(methodName)) {
|
|
424
|
+
const obj = visitProjection(memberCallee.object, context);
|
|
425
|
+
if (!obj)
|
|
426
|
+
return null;
|
|
427
|
+
return {
|
|
428
|
+
type: "stringMethod",
|
|
429
|
+
object: obj,
|
|
430
|
+
method: methodName,
|
|
431
|
+
};
|
|
432
|
+
}
|
|
433
|
+
// Check for unsupported Date methods
|
|
434
|
+
if (methodName === "getTime") {
|
|
435
|
+
throw new Error(`Unsupported method: ${methodName}(). Date arithmetic is not supported.`);
|
|
436
|
+
}
|
|
437
|
+
// Check for Date.now() static call
|
|
438
|
+
if (memberCallee.object.type === "Identifier" &&
|
|
439
|
+
memberCallee.object.name === "Date" &&
|
|
440
|
+
methodName === "now") {
|
|
441
|
+
throw new Error("Unsupported call expression: Date.now(). External functions are not supported.");
|
|
442
|
+
}
|
|
443
|
+
return null;
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Helper to parse selector lambda in aggregate functions
|
|
447
|
+
*/
|
|
448
|
+
function parseSelectorLambda(lambda, context) {
|
|
449
|
+
// Get the lambda body
|
|
450
|
+
let bodyExpr = null;
|
|
451
|
+
if (lambda.body.type === "BlockStatement") {
|
|
452
|
+
const returnStmt = lambda.body.body.find((stmt) => stmt.type === "ReturnStatement");
|
|
453
|
+
if (returnStmt) {
|
|
454
|
+
bodyExpr = returnStmt.argument || null;
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
else {
|
|
458
|
+
bodyExpr = lambda.body;
|
|
459
|
+
}
|
|
460
|
+
if (!bodyExpr)
|
|
461
|
+
return null;
|
|
462
|
+
// Add lambda parameter to table params temporarily
|
|
463
|
+
const tempContext = { ...context };
|
|
464
|
+
tempContext.tableParams = new Set(context.tableParams);
|
|
465
|
+
if (lambda.params && lambda.params.length > 0) {
|
|
466
|
+
const firstParam = lambda.params[0];
|
|
467
|
+
if (firstParam && firstParam.type === "Identifier") {
|
|
468
|
+
tempContext.tableParams.add(firstParam.name);
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
return visitProjection(bodyExpr, tempContext);
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* Visit unary expression in projection
|
|
475
|
+
*/
|
|
476
|
+
function visitUnaryProjection(node, context) {
|
|
477
|
+
// Unary minus
|
|
478
|
+
if (node.operator === "-") {
|
|
479
|
+
if (node.argument.type === "NumericLiteral" || node.argument.type === "Literal") {
|
|
480
|
+
const lit = node.argument;
|
|
481
|
+
if (typeof lit.value === "number") {
|
|
482
|
+
const value = -lit.value;
|
|
483
|
+
const paramName = createAutoParam(context, value);
|
|
484
|
+
return {
|
|
485
|
+
type: "param",
|
|
486
|
+
param: paramName,
|
|
487
|
+
};
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
// Negate other expressions
|
|
491
|
+
const arg = visitProjection(node.argument, context);
|
|
492
|
+
if (arg) {
|
|
493
|
+
return {
|
|
494
|
+
type: "arithmetic",
|
|
495
|
+
operator: "*",
|
|
496
|
+
left: { type: "constant", value: -1 },
|
|
497
|
+
right: arg,
|
|
498
|
+
};
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
// Unary plus (pass through)
|
|
502
|
+
if (node.operator === "+") {
|
|
503
|
+
return visitProjection(node.argument, context);
|
|
504
|
+
}
|
|
505
|
+
return null;
|
|
506
|
+
}
|
|
507
|
+
/**
|
|
508
|
+
* Visit conditional (ternary) expression
|
|
509
|
+
*/
|
|
510
|
+
function visitConditionalProjection(node, context) {
|
|
511
|
+
// Ternary operator: condition ? thenExpr : elseExpr
|
|
512
|
+
// Converts to SQL: CASE WHEN condition THEN thenExpr ELSE elseExpr END
|
|
513
|
+
if (!node.test || !node.consequent || !node.alternate) {
|
|
514
|
+
return null;
|
|
515
|
+
}
|
|
516
|
+
// Parse the condition (this should produce a boolean expression)
|
|
517
|
+
// We need to convert it from AST to our expression format
|
|
518
|
+
// For now, we'll handle simple comparisons
|
|
519
|
+
const condition = visitBooleanCondition(node.test, context);
|
|
520
|
+
if (!condition) {
|
|
521
|
+
return null;
|
|
522
|
+
}
|
|
523
|
+
// Parse the then branch
|
|
524
|
+
const thenExpr = visitProjection(node.consequent, context);
|
|
525
|
+
if (!thenExpr) {
|
|
526
|
+
return null;
|
|
527
|
+
}
|
|
528
|
+
// Parse the else branch
|
|
529
|
+
const elseExpr = visitProjection(node.alternate, context);
|
|
530
|
+
if (!elseExpr) {
|
|
531
|
+
return null;
|
|
532
|
+
}
|
|
533
|
+
return {
|
|
534
|
+
type: "case",
|
|
535
|
+
conditions: [
|
|
536
|
+
{
|
|
537
|
+
when: condition,
|
|
538
|
+
then: thenExpr,
|
|
539
|
+
},
|
|
540
|
+
],
|
|
541
|
+
else: elseExpr,
|
|
542
|
+
};
|
|
543
|
+
}
|
|
544
|
+
/**
|
|
545
|
+
* Helper to convert AST boolean expressions for CASE WHEN
|
|
546
|
+
*/
|
|
547
|
+
function visitBooleanCondition(node, context) {
|
|
548
|
+
if (!node)
|
|
549
|
+
return null;
|
|
550
|
+
switch (node.type) {
|
|
551
|
+
case "BinaryExpression": {
|
|
552
|
+
// Comparison operators
|
|
553
|
+
if (["==", "===", "!=", "!==", ">", ">=", "<", "<="].includes(node.operator)) {
|
|
554
|
+
const left = visitProjection(node.left, context);
|
|
555
|
+
const right = visitProjection(node.right, context);
|
|
556
|
+
if (left && right) {
|
|
557
|
+
const op = node.operator === "===" ? "==" : node.operator === "!==" ? "!=" : node.operator;
|
|
558
|
+
return {
|
|
559
|
+
type: "comparison",
|
|
560
|
+
operator: op,
|
|
561
|
+
left: left,
|
|
562
|
+
right: right,
|
|
563
|
+
};
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
break;
|
|
567
|
+
}
|
|
568
|
+
case "LogicalExpression": {
|
|
569
|
+
// AND/OR operators
|
|
570
|
+
if (["&&", "||"].includes(node.operator)) {
|
|
571
|
+
const left = visitBooleanCondition(node.left, context);
|
|
572
|
+
const right = visitBooleanCondition(node.right, context);
|
|
573
|
+
if (left && right) {
|
|
574
|
+
return {
|
|
575
|
+
type: "logical",
|
|
576
|
+
operator: node.operator === "&&" ? "and" : "or",
|
|
577
|
+
left: left,
|
|
578
|
+
right: right,
|
|
579
|
+
};
|
|
580
|
+
}
|
|
581
|
+
}
|
|
582
|
+
break;
|
|
583
|
+
}
|
|
584
|
+
case "UnaryExpression": {
|
|
585
|
+
// NOT operator
|
|
586
|
+
if (node.operator === "!") {
|
|
587
|
+
const inner = visitBooleanCondition(node.argument, context);
|
|
588
|
+
if (inner) {
|
|
589
|
+
return {
|
|
590
|
+
type: "not",
|
|
591
|
+
expression: inner,
|
|
592
|
+
};
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
break;
|
|
596
|
+
}
|
|
597
|
+
case "Identifier": {
|
|
598
|
+
// Direct boolean column or parameter
|
|
599
|
+
const expr = visitProjection(node, context);
|
|
600
|
+
if (expr && expr.type === "column") {
|
|
601
|
+
// Convert column to IS NOT NULL check
|
|
602
|
+
return {
|
|
603
|
+
type: "isNull",
|
|
604
|
+
expression: expr,
|
|
605
|
+
negated: true,
|
|
606
|
+
};
|
|
607
|
+
}
|
|
608
|
+
return expr;
|
|
609
|
+
}
|
|
610
|
+
case "MemberExpression": {
|
|
611
|
+
// Boolean property access
|
|
612
|
+
const expr = visitProjection(node, context);
|
|
613
|
+
if (expr && expr.type === "column") {
|
|
614
|
+
// Convert column to IS NOT NULL check
|
|
615
|
+
return {
|
|
616
|
+
type: "isNull",
|
|
617
|
+
expression: expr,
|
|
618
|
+
negated: true,
|
|
619
|
+
};
|
|
620
|
+
}
|
|
621
|
+
return expr;
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
return null;
|
|
625
|
+
}
|
|
626
|
+
/**
|
|
627
|
+
* Check if expression is likely a string
|
|
628
|
+
*/
|
|
629
|
+
function isStringExpression(expr) {
|
|
630
|
+
if (expr.type === "constant") {
|
|
631
|
+
return typeof expr.value === "string";
|
|
632
|
+
}
|
|
633
|
+
if (expr.type === "concat") {
|
|
634
|
+
return true;
|
|
635
|
+
}
|
|
636
|
+
if (expr.type === "column") {
|
|
637
|
+
const name = expr.name.toLowerCase();
|
|
638
|
+
return name.includes("name") || name.includes("title") || name.includes("description");
|
|
639
|
+
}
|
|
640
|
+
return false;
|
|
641
|
+
}
|
|
642
|
+
//# sourceMappingURL=projection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projection.js","sourceRoot":"","sources":["../../../src/visitors/select/projection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { QueryOperation, SelectManyOperation } from "../../query-tree/operations.js";
|
|
2
|
+
import type { CallExpression as ASTCallExpression } from "../../parser/ast-types.js";
|
|
3
|
+
import type { VisitorContext } from "../types.js";
|
|
4
|
+
export declare function visitSelectManyOperation(ast: ASTCallExpression, source: QueryOperation, _methodName: string, _visitorContext: VisitorContext): {
|
|
5
|
+
operation: SelectManyOperation;
|
|
6
|
+
autoParams: Record<string, unknown>;
|
|
7
|
+
} | null;
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|