kysely 0.21.6 → 0.23.0
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/CONTRIBUTING.md +70 -0
- package/README.md +27 -4
- package/dist/cjs/dialect/database-introspector.d.ts +4 -0
- package/dist/cjs/dialect/mysql/mysql-driver.js +6 -3
- package/dist/cjs/dialect/postgres/postgres-adapter.js +1 -1
- package/dist/cjs/dialect/postgres/postgres-driver.js +7 -2
- package/dist/cjs/dialect/postgres/postgres-introspector.js +8 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +4 -3
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -0
- package/dist/cjs/driver/database-connection.d.ts +6 -2
- package/dist/cjs/dynamic/dynamic-reference-builder.d.ts +2 -3
- package/dist/cjs/dynamic/dynamic-reference-builder.js +1 -1
- package/dist/cjs/expression/expression.d.ts +100 -0
- package/dist/cjs/expression/expression.js +16 -0
- package/dist/cjs/index.d.ts +17 -8
- package/dist/cjs/index.js +15 -4
- package/dist/cjs/kysely.d.ts +3 -3
- package/dist/cjs/kysely.js +3 -3
- package/dist/cjs/migration/file-migration-provider.js +11 -4
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +25 -0
- package/dist/cjs/operation-node/aggregate-function-node.js +48 -0
- package/dist/cjs/operation-node/alias-node.d.ts +3 -10
- package/dist/cjs/operation-node/alter-column-node.d.ts +1 -2
- package/dist/cjs/operation-node/alter-table-node.d.ts +5 -7
- package/dist/cjs/operation-node/alter-table-node.js +9 -1
- package/dist/cjs/operation-node/and-node.d.ts +3 -4
- package/dist/cjs/operation-node/binary-operation-node.d.ts +14 -0
- package/dist/cjs/operation-node/binary-operation-node.js +20 -0
- package/dist/cjs/operation-node/check-constraint-node.d.ts +2 -3
- package/dist/cjs/operation-node/column-definition-node.d.ts +6 -5
- package/dist/cjs/operation-node/column-definition-node.js +16 -0
- package/dist/cjs/operation-node/column-update-node.d.ts +2 -3
- package/dist/cjs/operation-node/common-table-expression-node.d.ts +2 -4
- package/dist/cjs/operation-node/create-index-node.d.ts +1 -3
- package/dist/cjs/operation-node/create-table-node.d.ts +4 -5
- package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-type-node.js +1 -2
- package/dist/cjs/operation-node/default-value-node.d.ts +2 -4
- package/dist/cjs/operation-node/delete-query-node.d.ts +1 -2
- package/dist/cjs/operation-node/drop-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/drop-type-node.js +1 -2
- package/dist/cjs/operation-node/explain-node.d.ts +2 -4
- package/dist/cjs/operation-node/explain-node.js +1 -1
- package/dist/cjs/operation-node/from-node.d.ts +3 -4
- package/dist/cjs/operation-node/generated-node.d.ts +2 -3
- package/dist/cjs/operation-node/group-by-item-node.d.ts +2 -3
- package/dist/cjs/operation-node/group-by-node.d.ts +1 -1
- package/dist/cjs/operation-node/group-by-node.js +3 -3
- package/dist/cjs/operation-node/having-node.d.ts +3 -4
- package/dist/cjs/operation-node/having-node.js +4 -4
- package/dist/cjs/operation-node/insert-query-node.d.ts +1 -4
- package/dist/cjs/operation-node/join-node.d.ts +5 -9
- package/dist/cjs/operation-node/join-node.js +6 -6
- package/dist/cjs/operation-node/on-conflict-node.d.ts +5 -7
- package/dist/cjs/operation-node/on-conflict-node.js +12 -12
- package/dist/cjs/operation-node/on-node.d.ts +3 -4
- package/dist/cjs/operation-node/on-node.js +4 -4
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +14 -4
- package/dist/cjs/operation-node/operation-node-transformer.js +60 -20
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +14 -4
- package/dist/cjs/operation-node/operation-node-visitor.js +7 -2
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/operator-node.d.ts +5 -3
- package/dist/cjs/operation-node/operator-node.js +3 -5
- package/dist/cjs/operation-node/or-node.d.ts +3 -4
- package/dist/cjs/operation-node/order-by-item-node.d.ts +3 -5
- package/dist/cjs/operation-node/over-node.d.ts +19 -0
- package/dist/cjs/operation-node/over-node.js +35 -0
- package/dist/cjs/operation-node/parens-node.d.ts +2 -3
- package/dist/cjs/operation-node/partition-by-item-node.d.ts +13 -0
- package/dist/cjs/operation-node/{filter-node.js → partition-by-item-node.js} +6 -8
- package/dist/cjs/operation-node/partition-by-node.d.ts +14 -0
- package/dist/cjs/operation-node/partition-by-node.js +24 -0
- package/dist/cjs/operation-node/query-node.d.ts +2 -3
- package/dist/cjs/operation-node/query-node.js +6 -6
- package/dist/cjs/operation-node/select-modifier-node.d.ts +2 -3
- package/dist/cjs/operation-node/select-modifier-node.js +1 -1
- package/dist/cjs/operation-node/select-query-node.d.ts +8 -9
- package/dist/cjs/operation-node/select-query-node.js +14 -14
- package/dist/cjs/operation-node/selection-node.d.ts +2 -3
- package/dist/cjs/operation-node/set-operation-node.d.ts +15 -0
- package/dist/cjs/operation-node/{union-node.js → set-operation-node.js} +7 -6
- package/dist/cjs/operation-node/simple-reference-expression-node.d.ts +3 -0
- package/dist/cjs/operation-node/{operation-node-utils.js → simple-reference-expression-node.js} +0 -0
- package/dist/cjs/operation-node/unary-operation-node.d.ts +13 -0
- package/dist/cjs/operation-node/unary-operation-node.js +19 -0
- package/dist/cjs/operation-node/update-query-node.d.ts +3 -4
- package/dist/cjs/operation-node/value-list-node.d.ts +2 -8
- package/dist/cjs/operation-node/where-node.d.ts +3 -4
- package/dist/cjs/operation-node/where-node.js +4 -4
- package/dist/cjs/parser/binary-operation-parser.d.ts +20 -0
- package/dist/cjs/parser/binary-operation-parser.js +99 -0
- package/dist/cjs/parser/coalesce-parser.d.ts +4 -0
- package/dist/cjs/parser/coalesce-parser.js +11 -0
- package/dist/cjs/parser/data-type-parser.d.ts +5 -5
- package/dist/cjs/parser/default-value-parser.d.ts +4 -5
- package/dist/cjs/parser/default-value-parser.js +2 -2
- package/dist/cjs/parser/expression-parser.d.ts +10 -0
- package/dist/cjs/parser/{complex-expression-parser.js → expression-parser.js} +9 -8
- package/dist/cjs/parser/group-by-parser.d.ts +1 -1
- package/dist/cjs/parser/group-by-parser.js +2 -2
- package/dist/cjs/parser/identifier-parser.d.ts +2 -0
- package/dist/cjs/parser/identifier-parser.js +23 -0
- package/dist/cjs/parser/insert-values-parser.d.ts +1 -1
- package/dist/cjs/parser/insert-values-parser.js +2 -2
- package/dist/cjs/parser/join-parser.js +2 -2
- package/dist/cjs/parser/order-by-parser.d.ts +2 -2
- package/dist/cjs/parser/parse-utils.d.ts +2 -0
- package/dist/cjs/parser/parse-utils.js +9 -1
- package/dist/cjs/parser/partition-by-parser.d.ts +6 -0
- package/dist/cjs/parser/partition-by-parser.js +9 -0
- package/dist/cjs/parser/reference-parser.d.ts +14 -13
- package/dist/cjs/parser/reference-parser.js +12 -9
- package/dist/cjs/parser/select-parser.d.ts +6 -6
- package/dist/cjs/parser/select-parser.js +2 -2
- package/dist/cjs/parser/set-operation-parser.d.ts +3 -0
- package/dist/cjs/parser/set-operation-parser.js +8 -0
- package/dist/cjs/parser/table-parser.d.ts +11 -12
- package/dist/cjs/parser/table-parser.js +2 -2
- package/dist/cjs/parser/unary-operation-parser.d.ts +5 -0
- package/dist/cjs/parser/unary-operation-parser.js +17 -0
- package/dist/cjs/parser/update-set-parser.d.ts +1 -1
- package/dist/cjs/parser/value-parser.d.ts +5 -8
- package/dist/cjs/parser/value-parser.js +4 -4
- package/dist/cjs/parser/with-parser.d.ts +3 -4
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +1 -1
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +348 -0
- package/dist/cjs/query-builder/aggregate-function-builder.js +298 -0
- package/dist/cjs/query-builder/delete-query-builder.d.ts +20 -20
- package/dist/cjs/query-builder/delete-query-builder.js +19 -16
- package/dist/cjs/query-builder/expression-builder.d.ts +3 -3
- package/dist/cjs/query-builder/expression-builder.js +3 -3
- package/dist/cjs/query-builder/function-module.d.ts +241 -0
- package/dist/cjs/query-builder/function-module.js +214 -0
- package/dist/cjs/query-builder/having-interface.d.ts +9 -8
- package/dist/cjs/query-builder/insert-query-builder.d.ts +7 -6
- package/dist/cjs/query-builder/insert-query-builder.js +11 -9
- package/dist/cjs/query-builder/insert-result.d.ts +8 -1
- package/dist/cjs/query-builder/insert-result.js +12 -1
- package/dist/cjs/query-builder/join-builder.d.ts +9 -8
- package/dist/cjs/query-builder/join-builder.js +10 -9
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +25 -24
- package/dist/cjs/query-builder/on-conflict-builder.js +18 -17
- package/dist/cjs/query-builder/over-builder.d.ts +59 -0
- package/dist/cjs/query-builder/over-builder.js +50 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +138 -47
- package/dist/cjs/query-builder/select-query-builder.js +122 -40
- package/dist/cjs/query-builder/update-query-builder.d.ts +20 -20
- package/dist/cjs/query-builder/update-query-builder.js +19 -16
- package/dist/cjs/query-builder/where-interface.d.ts +12 -11
- package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +15 -5
- package/dist/cjs/query-compiler/default-query-compiler.js +78 -47
- package/dist/cjs/query-executor/query-executor-base.js +16 -1
- package/dist/cjs/raw-builder/raw-builder.d.ts +49 -13
- package/dist/cjs/raw-builder/raw-builder.js +24 -14
- package/dist/cjs/raw-builder/sql.d.ts +15 -7
- package/dist/cjs/raw-builder/sql.js +6 -0
- package/dist/cjs/schema/alter-column-builder.d.ts +28 -0
- package/dist/cjs/schema/alter-column-builder.js +55 -0
- package/dist/cjs/schema/alter-table-builder.d.ts +39 -341
- package/dist/cjs/schema/alter-table-builder.js +65 -280
- package/dist/cjs/schema/column-definition-builder.d.ts +43 -155
- package/dist/cjs/schema/column-definition-builder.js +189 -0
- package/dist/cjs/schema/create-index-builder.d.ts +2 -2
- package/dist/cjs/schema/create-table-builder.d.ts +38 -5
- package/dist/cjs/schema/create-table-builder.js +36 -1
- package/dist/cjs/schema/create-view-builder.d.ts +3 -2
- package/dist/cjs/schema/schema.d.ts +2 -2
- package/dist/cjs/schema/schema.js +6 -5
- package/dist/cjs/util/compilable.d.ts +2 -2
- package/dist/cjs/util/explainable.d.ts +2 -2
- package/dist/cjs/util/infer-result.d.ts +46 -0
- package/dist/cjs/util/infer-result.js +2 -0
- package/dist/cjs/util/log-once.d.ts +5 -0
- package/dist/cjs/util/log-once.js +16 -0
- package/dist/cjs/util/object-utils.d.ts +1 -0
- package/dist/cjs/util/object-utils.js +5 -1
- package/dist/cjs/util/type-utils.d.ts +3 -13
- package/dist/esm/dialect/database-introspector.d.ts +4 -0
- package/dist/esm/dialect/mysql/mysql-driver.js +6 -3
- package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
- package/dist/esm/dialect/postgres/postgres-driver.js +7 -2
- package/dist/esm/dialect/postgres/postgres-introspector.js +8 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.js +4 -3
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -0
- package/dist/esm/driver/database-connection.d.ts +6 -2
- package/dist/esm/dynamic/dynamic-reference-builder.d.ts +2 -3
- package/dist/esm/dynamic/dynamic-reference-builder.js +2 -2
- package/dist/esm/expression/expression.d.ts +100 -0
- package/dist/esm/expression/expression.js +12 -0
- package/dist/esm/index.d.ts +17 -8
- package/dist/esm/index.js +13 -4
- package/dist/esm/kysely.d.ts +3 -3
- package/dist/esm/kysely.js +3 -3
- package/dist/esm/migration/file-migration-provider.js +11 -4
- package/dist/esm/operation-node/aggregate-function-node.d.ts +25 -0
- package/dist/esm/operation-node/aggregate-function-node.js +46 -0
- package/dist/esm/operation-node/alias-node.d.ts +3 -10
- package/dist/esm/operation-node/alter-column-node.d.ts +1 -2
- package/dist/esm/operation-node/alter-table-node.d.ts +5 -7
- package/dist/esm/operation-node/alter-table-node.js +9 -1
- package/dist/esm/operation-node/and-node.d.ts +3 -4
- package/dist/esm/operation-node/binary-operation-node.d.ts +14 -0
- package/dist/esm/operation-node/binary-operation-node.js +18 -0
- package/dist/esm/operation-node/check-constraint-node.d.ts +2 -3
- package/dist/esm/operation-node/column-definition-node.d.ts +6 -5
- package/dist/esm/operation-node/column-definition-node.js +16 -0
- package/dist/esm/operation-node/column-update-node.d.ts +2 -3
- package/dist/esm/operation-node/common-table-expression-node.d.ts +2 -4
- package/dist/esm/operation-node/create-index-node.d.ts +1 -3
- package/dist/esm/operation-node/create-table-node.d.ts +4 -5
- package/dist/esm/operation-node/create-type-node.d.ts +1 -1
- package/dist/esm/operation-node/create-type-node.js +1 -2
- package/dist/esm/operation-node/default-value-node.d.ts +2 -4
- package/dist/esm/operation-node/delete-query-node.d.ts +1 -2
- package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
- package/dist/esm/operation-node/drop-type-node.js +1 -2
- package/dist/esm/operation-node/explain-node.d.ts +2 -4
- package/dist/esm/operation-node/explain-node.js +1 -1
- package/dist/esm/operation-node/from-node.d.ts +3 -4
- package/dist/esm/operation-node/generated-node.d.ts +2 -3
- package/dist/esm/operation-node/group-by-item-node.d.ts +2 -3
- package/dist/esm/operation-node/group-by-node.d.ts +1 -1
- package/dist/esm/operation-node/group-by-node.js +3 -3
- package/dist/esm/operation-node/having-node.d.ts +3 -4
- package/dist/esm/operation-node/having-node.js +4 -4
- package/dist/esm/operation-node/insert-query-node.d.ts +1 -4
- package/dist/esm/operation-node/join-node.d.ts +5 -9
- package/dist/esm/operation-node/join-node.js +6 -6
- package/dist/esm/operation-node/on-conflict-node.d.ts +5 -7
- package/dist/esm/operation-node/on-conflict-node.js +12 -12
- package/dist/esm/operation-node/on-node.d.ts +3 -4
- package/dist/esm/operation-node/on-node.js +4 -4
- package/dist/esm/operation-node/operation-node-transformer.d.ts +14 -4
- package/dist/esm/operation-node/operation-node-transformer.js +60 -20
- package/dist/esm/operation-node/operation-node-visitor.d.ts +14 -4
- package/dist/esm/operation-node/operation-node-visitor.js +7 -2
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/operator-node.d.ts +5 -3
- package/dist/esm/operation-node/operator-node.js +2 -4
- package/dist/esm/operation-node/or-node.d.ts +3 -4
- package/dist/esm/operation-node/order-by-item-node.d.ts +3 -5
- package/dist/esm/operation-node/over-node.d.ts +19 -0
- package/dist/esm/operation-node/over-node.js +33 -0
- package/dist/esm/operation-node/parens-node.d.ts +2 -3
- package/dist/esm/operation-node/partition-by-item-node.d.ts +13 -0
- package/dist/esm/operation-node/partition-by-item-node.js +16 -0
- package/dist/esm/operation-node/partition-by-node.d.ts +14 -0
- package/dist/esm/operation-node/partition-by-node.js +22 -0
- package/dist/esm/operation-node/query-node.d.ts +2 -3
- package/dist/esm/operation-node/query-node.js +6 -6
- package/dist/esm/operation-node/select-modifier-node.d.ts +2 -3
- package/dist/esm/operation-node/select-modifier-node.js +1 -1
- package/dist/esm/operation-node/select-query-node.d.ts +8 -9
- package/dist/esm/operation-node/select-query-node.js +14 -14
- package/dist/esm/operation-node/selection-node.d.ts +2 -3
- package/dist/esm/operation-node/set-operation-node.d.ts +15 -0
- package/dist/esm/operation-node/set-operation-node.js +18 -0
- package/dist/esm/operation-node/simple-reference-expression-node.d.ts +3 -0
- package/dist/esm/operation-node/simple-reference-expression-node.js +2 -0
- package/dist/esm/operation-node/unary-operation-node.d.ts +13 -0
- package/dist/esm/operation-node/unary-operation-node.js +17 -0
- package/dist/esm/operation-node/update-query-node.d.ts +3 -4
- package/dist/esm/operation-node/value-list-node.d.ts +2 -8
- package/dist/esm/operation-node/where-node.d.ts +3 -4
- package/dist/esm/operation-node/where-node.js +4 -4
- package/dist/esm/parser/binary-operation-parser.d.ts +20 -0
- package/dist/esm/parser/binary-operation-parser.js +92 -0
- package/dist/esm/parser/coalesce-parser.d.ts +4 -0
- package/dist/esm/parser/coalesce-parser.js +8 -0
- package/dist/esm/parser/data-type-parser.d.ts +5 -5
- package/dist/esm/parser/default-value-parser.d.ts +4 -5
- package/dist/esm/parser/default-value-parser.js +2 -2
- package/dist/esm/parser/expression-parser.d.ts +10 -0
- package/dist/esm/parser/{complex-expression-parser.js → expression-parser.js} +6 -5
- package/dist/esm/parser/group-by-parser.d.ts +1 -1
- package/dist/esm/parser/group-by-parser.js +2 -2
- package/dist/esm/parser/identifier-parser.d.ts +2 -0
- package/dist/esm/parser/identifier-parser.js +20 -0
- package/dist/esm/parser/insert-values-parser.d.ts +1 -1
- package/dist/esm/parser/insert-values-parser.js +2 -2
- package/dist/esm/parser/join-parser.js +2 -2
- package/dist/esm/parser/order-by-parser.d.ts +2 -2
- package/dist/esm/parser/parse-utils.d.ts +2 -0
- package/dist/esm/parser/parse-utils.js +7 -0
- package/dist/esm/parser/partition-by-parser.d.ts +6 -0
- package/dist/esm/parser/partition-by-parser.js +6 -0
- package/dist/esm/parser/reference-parser.d.ts +14 -13
- package/dist/esm/parser/reference-parser.js +10 -8
- package/dist/esm/parser/select-parser.d.ts +6 -6
- package/dist/esm/parser/select-parser.js +2 -2
- package/dist/esm/parser/set-operation-parser.d.ts +3 -0
- package/dist/esm/parser/set-operation-parser.js +5 -0
- package/dist/esm/parser/table-parser.d.ts +11 -12
- package/dist/esm/parser/table-parser.js +2 -2
- package/dist/esm/parser/unary-operation-parser.d.ts +5 -0
- package/dist/esm/parser/unary-operation-parser.js +13 -0
- package/dist/esm/parser/update-set-parser.d.ts +1 -1
- package/dist/esm/parser/value-parser.d.ts +5 -8
- package/dist/esm/parser/value-parser.js +4 -4
- package/dist/esm/parser/with-parser.d.ts +3 -4
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +2 -2
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +348 -0
- package/dist/esm/query-builder/aggregate-function-builder.js +294 -0
- package/dist/esm/query-builder/delete-query-builder.d.ts +20 -20
- package/dist/esm/query-builder/delete-query-builder.js +19 -16
- package/dist/esm/query-builder/expression-builder.d.ts +3 -3
- package/dist/esm/query-builder/expression-builder.js +3 -3
- package/dist/esm/query-builder/function-module.d.ts +241 -0
- package/dist/esm/query-builder/function-module.js +211 -0
- package/dist/esm/query-builder/having-interface.d.ts +9 -8
- package/dist/esm/query-builder/insert-query-builder.d.ts +7 -6
- package/dist/esm/query-builder/insert-query-builder.js +11 -9
- package/dist/esm/query-builder/insert-result.d.ts +8 -1
- package/dist/esm/query-builder/insert-result.js +12 -1
- package/dist/esm/query-builder/join-builder.d.ts +9 -8
- package/dist/esm/query-builder/join-builder.js +10 -9
- package/dist/esm/query-builder/on-conflict-builder.d.ts +25 -24
- package/dist/esm/query-builder/on-conflict-builder.js +18 -17
- package/dist/esm/query-builder/over-builder.d.ts +59 -0
- package/dist/esm/query-builder/over-builder.js +47 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +138 -47
- package/dist/esm/query-builder/select-query-builder.js +120 -38
- package/dist/esm/query-builder/update-query-builder.d.ts +20 -20
- package/dist/esm/query-builder/update-query-builder.js +19 -16
- package/dist/esm/query-builder/where-interface.d.ts +12 -11
- package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
- package/dist/esm/query-compiler/default-query-compiler.d.ts +15 -5
- package/dist/esm/query-compiler/default-query-compiler.js +79 -48
- package/dist/esm/query-executor/query-executor-base.js +16 -1
- package/dist/esm/raw-builder/raw-builder.d.ts +49 -13
- package/dist/esm/raw-builder/raw-builder.js +23 -14
- package/dist/esm/raw-builder/sql.d.ts +15 -7
- package/dist/esm/raw-builder/sql.js +6 -0
- package/dist/esm/schema/alter-column-builder.d.ts +28 -0
- package/dist/esm/schema/alter-column-builder.js +51 -0
- package/dist/esm/schema/alter-table-builder.d.ts +39 -341
- package/dist/esm/schema/alter-table-builder.js +61 -274
- package/dist/esm/schema/column-definition-builder.d.ts +43 -155
- package/dist/esm/schema/column-definition-builder.js +189 -0
- package/dist/esm/schema/create-index-builder.d.ts +2 -2
- package/dist/esm/schema/create-table-builder.d.ts +38 -5
- package/dist/esm/schema/create-table-builder.js +36 -1
- package/dist/esm/schema/create-view-builder.d.ts +3 -2
- package/dist/esm/schema/schema.d.ts +2 -2
- package/dist/esm/schema/schema.js +6 -5
- package/dist/esm/util/compilable.d.ts +2 -2
- package/dist/esm/util/explainable.d.ts +2 -2
- package/dist/esm/util/infer-result.d.ts +46 -0
- package/dist/esm/util/infer-result.js +2 -0
- package/dist/esm/util/log-once.d.ts +5 -0
- package/dist/esm/util/log-once.js +13 -0
- package/dist/esm/util/object-utils.d.ts +1 -0
- package/dist/esm/util/object-utils.js +3 -0
- package/dist/esm/util/type-utils.d.ts +3 -13
- package/package.json +4 -1
- package/dist/cjs/operation-node/filter-node.d.ts +0 -18
- package/dist/cjs/operation-node/operation-node-utils.d.ts +0 -17
- package/dist/cjs/operation-node/union-node.d.ts +0 -16
- package/dist/cjs/parser/complex-expression-parser.d.ts +0 -10
- package/dist/cjs/parser/filter-parser.d.ts +0 -24
- package/dist/cjs/parser/filter-parser.js +0 -109
- package/dist/cjs/parser/union-parser.d.ts +0 -5
- package/dist/cjs/parser/union-parser.js +0 -8
- package/dist/cjs/query-builder/function-builder.d.ts +0 -133
- package/dist/cjs/query-builder/function-builder.js +0 -160
- package/dist/esm/operation-node/filter-node.d.ts +0 -18
- package/dist/esm/operation-node/filter-node.js +0 -18
- package/dist/esm/operation-node/operation-node-utils.d.ts +0 -17
- package/dist/esm/operation-node/operation-node-utils.js +0 -2
- package/dist/esm/operation-node/union-node.d.ts +0 -16
- package/dist/esm/operation-node/union-node.js +0 -17
- package/dist/esm/parser/complex-expression-parser.d.ts +0 -10
- package/dist/esm/parser/filter-parser.d.ts +0 -24
- package/dist/esm/parser/filter-parser.js +0 -100
- package/dist/esm/parser/union-parser.d.ts +0 -5
- package/dist/esm/parser/union-parser.js +0 -5
- package/dist/esm/query-builder/function-builder.d.ts +0 -133
- package/dist/esm/query-builder/function-builder.js +0 -157
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
import { DefaultInsertValueNode } from './default-insert-value-node.js';
|
|
2
1
|
import { OperationNode } from './operation-node.js';
|
|
3
|
-
import { RawNode } from './raw-node.js';
|
|
4
|
-
import { ReferenceNode } from './reference-node.js';
|
|
5
|
-
import { SelectQueryNode } from './select-query-node.js';
|
|
6
|
-
import { ValueNode } from './value-node.js';
|
|
7
|
-
export declare type ListNodeItem = ValueNode | ReferenceNode | DefaultInsertValueNode | SelectQueryNode | RawNode;
|
|
8
2
|
export interface ValueListNode extends OperationNode {
|
|
9
3
|
readonly kind: 'ValueListNode';
|
|
10
|
-
readonly values: ReadonlyArray<
|
|
4
|
+
readonly values: ReadonlyArray<OperationNode>;
|
|
11
5
|
}
|
|
12
6
|
/**
|
|
13
7
|
* @internal
|
|
14
8
|
*/
|
|
15
9
|
export declare const ValueListNode: Readonly<{
|
|
16
10
|
is(node: OperationNode): node is ValueListNode;
|
|
17
|
-
create(values: ReadonlyArray<
|
|
11
|
+
create(values: ReadonlyArray<OperationNode>): ValueListNode;
|
|
18
12
|
}>;
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import { FilterExpressionNode } from './operation-node-utils.js';
|
|
2
1
|
import { OperationNode } from './operation-node.js';
|
|
3
2
|
export interface WhereNode extends OperationNode {
|
|
4
3
|
readonly kind: 'WhereNode';
|
|
5
|
-
readonly where:
|
|
4
|
+
readonly where: OperationNode;
|
|
6
5
|
}
|
|
7
6
|
/**
|
|
8
7
|
* @internal
|
|
9
8
|
*/
|
|
10
9
|
export declare const WhereNode: Readonly<{
|
|
11
10
|
is(node: OperationNode): node is WhereNode;
|
|
12
|
-
create(filter:
|
|
13
|
-
|
|
11
|
+
create(filter: OperationNode): WhereNode;
|
|
12
|
+
cloneWithOperation(whereNode: WhereNode, operator: 'And' | 'Or', operation: OperationNode): WhereNode;
|
|
14
13
|
}>;
|
|
@@ -15,12 +15,12 @@ export const WhereNode = freeze({
|
|
|
15
15
|
where: filter,
|
|
16
16
|
});
|
|
17
17
|
},
|
|
18
|
-
|
|
18
|
+
cloneWithOperation(whereNode, operator, operation) {
|
|
19
19
|
return freeze({
|
|
20
20
|
...whereNode,
|
|
21
|
-
where:
|
|
22
|
-
? AndNode.create(whereNode.where,
|
|
23
|
-
: OrNode.create(whereNode.where,
|
|
21
|
+
where: operator === 'And'
|
|
22
|
+
? AndNode.create(whereNode.where, operation)
|
|
23
|
+
: OrNode.create(whereNode.where, operation),
|
|
24
24
|
});
|
|
25
25
|
},
|
|
26
26
|
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BinaryOperationNode } from '../operation-node/binary-operation-node.js';
|
|
2
|
+
import { ComparisonOperator } from '../operation-node/operator-node.js';
|
|
3
|
+
import { ExtractTypeFromReferenceExpression, ReferenceExpression } from './reference-parser.js';
|
|
4
|
+
import { ValueExpression, ValueExpressionOrList } from './value-parser.js';
|
|
5
|
+
import { WhereInterface } from '../query-builder/where-interface.js';
|
|
6
|
+
import { HavingInterface } from '../query-builder/having-interface.js';
|
|
7
|
+
import { OperationNode } from '../operation-node/operation-node.js';
|
|
8
|
+
import { Expression } from '../expression/expression.js';
|
|
9
|
+
export declare type OperandValueExpression<DB, TB extends keyof DB, RE> = ValueExpression<DB, TB, ExtractTypeFromReferenceExpression<DB, TB, RE>>;
|
|
10
|
+
export declare type OperandValueExpressionOrList<DB, TB extends keyof DB, RE> = ValueExpressionOrList<DB, TB, ExtractTypeFromReferenceExpression<DB, TB, RE>>;
|
|
11
|
+
export declare type WhereGrouper<DB, TB extends keyof DB> = (qb: WhereInterface<DB, TB>) => WhereInterface<DB, TB>;
|
|
12
|
+
export declare type HavingGrouper<DB, TB extends keyof DB> = (qb: HavingInterface<DB, TB>) => HavingInterface<DB, TB>;
|
|
13
|
+
export declare type ComparisonOperatorExpression = ComparisonOperator | Expression<any>;
|
|
14
|
+
declare type FilterExpressionType = 'where' | 'having' | 'on';
|
|
15
|
+
export declare function parseWhere(args: any[]): OperationNode;
|
|
16
|
+
export declare function parseHaving(args: any[]): OperationNode;
|
|
17
|
+
export declare function parseOn(args: any[]): OperationNode;
|
|
18
|
+
export declare function parseReferentialFilter(leftOperand: ReferenceExpression<any, any>, operator: ComparisonOperatorExpression, rightOperand: ReferenceExpression<any, any>): BinaryOperationNode;
|
|
19
|
+
export declare function parseFilterExpression(type: FilterExpressionType, args: any[]): OperationNode;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/// <reference types="./binary-operation-parser.d.ts" />
|
|
2
|
+
import { BinaryOperationNode } from '../operation-node/binary-operation-node.js';
|
|
3
|
+
import { freeze, isBoolean, isFunction, isNull, isString, } from '../util/object-utils.js';
|
|
4
|
+
import { isOperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
5
|
+
import { RawNode } from '../operation-node/raw-node.js';
|
|
6
|
+
import { OperatorNode, COMPARISON_OPERATORS, } from '../operation-node/operator-node.js';
|
|
7
|
+
import { ParensNode } from '../operation-node/parens-node.js';
|
|
8
|
+
import { parseReferenceExpression, } from './reference-parser.js';
|
|
9
|
+
import { parseValueExpressionOrList, } from './value-parser.js';
|
|
10
|
+
import { ValueNode } from '../operation-node/value-node.js';
|
|
11
|
+
import { createJoinBuilder, createSelectQueryBuilder } from './parse-utils.js';
|
|
12
|
+
export function parseWhere(args) {
|
|
13
|
+
return parseFilterExpression('where', args);
|
|
14
|
+
}
|
|
15
|
+
export function parseHaving(args) {
|
|
16
|
+
return parseFilterExpression('having', args);
|
|
17
|
+
}
|
|
18
|
+
export function parseOn(args) {
|
|
19
|
+
return parseFilterExpression('on', args);
|
|
20
|
+
}
|
|
21
|
+
export function parseReferentialFilter(leftOperand, operator, rightOperand) {
|
|
22
|
+
return BinaryOperationNode.create(parseReferenceExpression(leftOperand), parseComparisonOperatorExpression(operator), parseReferenceExpression(rightOperand));
|
|
23
|
+
}
|
|
24
|
+
export function parseFilterExpression(type, args) {
|
|
25
|
+
if (args.length === 3) {
|
|
26
|
+
return parseFilter(args[0], args[1], args[2]);
|
|
27
|
+
}
|
|
28
|
+
if (args.length === 1) {
|
|
29
|
+
return parseOneArgFilterExpression(type, args[0]);
|
|
30
|
+
}
|
|
31
|
+
throw createFilterExpressionError(type, args);
|
|
32
|
+
}
|
|
33
|
+
function parseFilter(leftOperand, operator, rightOperand) {
|
|
34
|
+
if ((operator === 'is' || operator === 'is not') &&
|
|
35
|
+
(isNull(rightOperand) || isBoolean(rightOperand))) {
|
|
36
|
+
return parseIs(leftOperand, operator, rightOperand);
|
|
37
|
+
}
|
|
38
|
+
return BinaryOperationNode.create(parseReferenceExpression(leftOperand), parseComparisonOperatorExpression(operator), parseValueExpressionOrList(rightOperand));
|
|
39
|
+
}
|
|
40
|
+
function parseIs(leftOperand, operator, rightOperand) {
|
|
41
|
+
return BinaryOperationNode.create(parseReferenceExpression(leftOperand), parseComparisonOperatorExpression(operator), ValueNode.createImmediate(rightOperand));
|
|
42
|
+
}
|
|
43
|
+
function parseComparisonOperatorExpression(operator) {
|
|
44
|
+
if (isString(operator) && COMPARISON_OPERATORS.includes(operator)) {
|
|
45
|
+
return OperatorNode.create(operator);
|
|
46
|
+
}
|
|
47
|
+
else if (isOperationNodeSource(operator)) {
|
|
48
|
+
return operator.toOperationNode();
|
|
49
|
+
}
|
|
50
|
+
throw new Error(`invalid comparison operator ${JSON.stringify(operator)} passed to a filter method`);
|
|
51
|
+
}
|
|
52
|
+
function parseOneArgFilterExpression(type, arg) {
|
|
53
|
+
if (isFunction(arg)) {
|
|
54
|
+
return GROUP_PARSERS[type](arg);
|
|
55
|
+
}
|
|
56
|
+
else if (isOperationNodeSource(arg)) {
|
|
57
|
+
const node = arg.toOperationNode();
|
|
58
|
+
if (RawNode.is(node)) {
|
|
59
|
+
return node;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
throw createFilterExpressionError(type, arg);
|
|
63
|
+
}
|
|
64
|
+
function createFilterExpressionError(type, args) {
|
|
65
|
+
return new Error(`invalid arguments passed to a '${type}' method: ${JSON.stringify(args)}`);
|
|
66
|
+
}
|
|
67
|
+
const GROUP_PARSERS = freeze({
|
|
68
|
+
where(callback) {
|
|
69
|
+
const query = callback(createSelectQueryBuilder());
|
|
70
|
+
const queryNode = query.toOperationNode();
|
|
71
|
+
if (!queryNode.where) {
|
|
72
|
+
throw new Error('no `where` methods called inside a group callback');
|
|
73
|
+
}
|
|
74
|
+
return ParensNode.create(queryNode.where.where);
|
|
75
|
+
},
|
|
76
|
+
having(callback) {
|
|
77
|
+
const query = callback(createSelectQueryBuilder());
|
|
78
|
+
const queryNode = query.toOperationNode();
|
|
79
|
+
if (!queryNode.having) {
|
|
80
|
+
throw new Error('no `having` methods called inside a group callback');
|
|
81
|
+
}
|
|
82
|
+
return ParensNode.create(queryNode.having.having);
|
|
83
|
+
},
|
|
84
|
+
on(callback) {
|
|
85
|
+
const joinBuilder = callback(createJoinBuilder('InnerJoin', 'table'));
|
|
86
|
+
const joinNode = joinBuilder.toOperationNode();
|
|
87
|
+
if (!joinNode.on) {
|
|
88
|
+
throw new Error('no `on` methods called inside a group callback');
|
|
89
|
+
}
|
|
90
|
+
return ParensNode.create(joinNode.on.on);
|
|
91
|
+
},
|
|
92
|
+
});
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { RawNode } from '../operation-node/raw-node.js';
|
|
2
|
+
import { ExtractTypeFromReferenceExpression, ReferenceExpression } from './reference-parser.js';
|
|
3
|
+
export declare type CoalesceReferenceExpressionList<DB, TB extends keyof DB, RE extends unknown[], O = never> = RE extends [] ? O : RE extends [infer L, ...infer R] ? L extends ReferenceExpression<any, any> ? null extends ExtractTypeFromReferenceExpression<DB, TB, L> ? CoalesceReferenceExpressionList<DB, TB, R extends ReferenceExpression<any, any>[] ? R : never, O | ExtractTypeFromReferenceExpression<DB, TB, L>> : Exclude<O, null> | ExtractTypeFromReferenceExpression<DB, TB, L> : never : never;
|
|
4
|
+
export declare function parseCoalesce(values: ReferenceExpression<any, any>[]): RawNode;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="./coalesce-parser.d.ts" />
|
|
2
|
+
import { RawNode } from '../operation-node/raw-node.js';
|
|
3
|
+
import { parseReferenceExpressionOrList, } from './reference-parser.js';
|
|
4
|
+
export function parseCoalesce(values) {
|
|
5
|
+
return RawNode.create(values.length > 1
|
|
6
|
+
? ['coalesce(', ...new Array(values.length - 1).fill(', '), ')']
|
|
7
|
+
: ['coalesce(', ')'], parseReferenceExpressionOrList(values));
|
|
8
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
export declare type DataTypeExpression = ColumnDataType |
|
|
5
|
-
export declare function parseDataTypeExpression(dataType: DataTypeExpression):
|
|
1
|
+
import { Expression } from '../expression/expression.js';
|
|
2
|
+
import { ColumnDataType } from '../operation-node/data-type-node.js';
|
|
3
|
+
import { OperationNode } from '../operation-node/operation-node.js';
|
|
4
|
+
export declare type DataTypeExpression = ColumnDataType | Expression<any>;
|
|
5
|
+
export declare function parseDataTypeExpression(dataType: DataTypeExpression): OperationNode;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
export declare
|
|
5
|
-
export declare function parseDefaultValueExpression(value: DefaultValueExpression): ValueNode | RawNode;
|
|
1
|
+
import { Expression } from '../expression/expression.js';
|
|
2
|
+
import { OperationNode } from '../operation-node/operation-node.js';
|
|
3
|
+
export declare type DefaultValueExpression = unknown | Expression<unknown>;
|
|
4
|
+
export declare function parseDefaultValueExpression(value: DefaultValueExpression): OperationNode;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/// <reference types="./default-value-parser.d.ts" />
|
|
2
|
+
import { isOperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
2
3
|
import { ValueNode } from '../operation-node/value-node.js';
|
|
3
|
-
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
4
4
|
export function parseDefaultValueExpression(value) {
|
|
5
|
-
return value
|
|
5
|
+
return isOperationNodeSource(value)
|
|
6
6
|
? value.toOperationNode()
|
|
7
7
|
: ValueNode.createImmediate(value);
|
|
8
8
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AliasedExpression, Expression } from '../expression/expression.js';
|
|
2
|
+
import { AliasNode } from '../operation-node/alias-node.js';
|
|
3
|
+
import { OperationNode } from '../operation-node/operation-node.js';
|
|
4
|
+
import { ExpressionBuilder } from '../query-builder/expression-builder.js';
|
|
5
|
+
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
6
|
+
export declare type ExpressionOrFactory<DB, TB extends keyof DB, V> = SelectQueryBuilder<any, any, Record<string, V>> | ((eb: ExpressionBuilder<DB, TB>) => SelectQueryBuilder<any, any, Record<string, V>>) | Expression<V> | ((eb: ExpressionBuilder<DB, TB>) => Expression<V>);
|
|
7
|
+
export declare type AliasedExpressionOrFactory<DB, TB extends keyof DB> = AliasedExpression<any, any> | ((qb: ExpressionBuilder<DB, TB>) => AliasedExpression<any, any>);
|
|
8
|
+
export declare function parseExpression(exp: ExpressionOrFactory<any, any, any>): OperationNode;
|
|
9
|
+
export declare function parseAliasedExpression(exp: AliasedExpressionOrFactory<any, any>): AliasNode;
|
|
10
|
+
export declare function isExpressionOrFactory(obj: unknown): obj is ExpressionOrFactory<any, any, any>;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
/// <reference types="./
|
|
1
|
+
/// <reference types="./expression-parser.d.ts" />
|
|
2
|
+
import { isExpression, } from '../expression/expression.js';
|
|
2
3
|
import { isOperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
3
4
|
import { isFunction } from '../util/object-utils.js';
|
|
4
5
|
import { createExpressionBuilder } from './parse-utils.js';
|
|
5
|
-
export function
|
|
6
|
+
export function parseExpression(exp) {
|
|
6
7
|
if (isOperationNodeSource(exp)) {
|
|
7
8
|
return exp.toOperationNode();
|
|
8
9
|
}
|
|
@@ -11,7 +12,7 @@ export function parseComplexExpression(exp) {
|
|
|
11
12
|
}
|
|
12
13
|
throw new Error(`invalid expression: ${JSON.stringify(exp)}`);
|
|
13
14
|
}
|
|
14
|
-
export function
|
|
15
|
+
export function parseAliasedExpression(exp) {
|
|
15
16
|
if (isOperationNodeSource(exp)) {
|
|
16
17
|
return exp.toOperationNode();
|
|
17
18
|
}
|
|
@@ -20,6 +21,6 @@ export function parseAliasedComplexExpression(exp) {
|
|
|
20
21
|
}
|
|
21
22
|
throw new Error(`invalid aliased expression: ${JSON.stringify(exp)}`);
|
|
22
23
|
}
|
|
23
|
-
export function
|
|
24
|
-
return
|
|
24
|
+
export function isExpressionOrFactory(obj) {
|
|
25
|
+
return isExpression(obj) || isFunction(obj);
|
|
25
26
|
}
|
|
@@ -2,4 +2,4 @@ import { GroupByItemNode } from '../operation-node/group-by-item-node.js';
|
|
|
2
2
|
import { ReferenceExpression } from './reference-parser.js';
|
|
3
3
|
export declare type GroupByExpression<DB, TB extends keyof DB, O> = ReferenceExpression<DB, TB> | (keyof O & string);
|
|
4
4
|
export declare type GroupByExpressionOrList<DB, TB extends keyof DB, O> = ReadonlyArray<GroupByExpression<DB, TB, O>> | GroupByExpression<DB, TB, O>;
|
|
5
|
-
export declare function parseGroupBy(
|
|
5
|
+
export declare function parseGroupBy(groupBy: GroupByExpressionOrList<any, any, any>): GroupByItemNode[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="./group-by-parser.d.ts" />
|
|
2
2
|
import { GroupByItemNode } from '../operation-node/group-by-item-node.js';
|
|
3
3
|
import { parseReferenceExpressionOrList, } from './reference-parser.js';
|
|
4
|
-
export function parseGroupBy(
|
|
5
|
-
return parseReferenceExpressionOrList(
|
|
4
|
+
export function parseGroupBy(groupBy) {
|
|
5
|
+
return parseReferenceExpressionOrList(groupBy).map(GroupByItemNode.create);
|
|
6
6
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/// <reference types="./identifier-parser.d.ts" />
|
|
2
|
+
import { SchemableIdentifierNode } from '../operation-node/schemable-identifier-node.js';
|
|
3
|
+
export function parseSchemableIdentifier(id) {
|
|
4
|
+
const SCHEMA_SEPARATOR = '.';
|
|
5
|
+
if (id.includes(SCHEMA_SEPARATOR)) {
|
|
6
|
+
const parts = id.split(SCHEMA_SEPARATOR).map(trim);
|
|
7
|
+
if (parts.length === 2) {
|
|
8
|
+
return SchemableIdentifierNode.createWithSchema(parts[0], parts[1]);
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
throw new Error(`invalid schemable identifier ${id}`);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
else {
|
|
15
|
+
return SchemableIdentifierNode.create(id);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function trim(str) {
|
|
19
|
+
return str.trim();
|
|
20
|
+
}
|
|
@@ -5,7 +5,7 @@ import { NonNullableInsertKeys, NullableInsertKeys, InsertType } from '../util/c
|
|
|
5
5
|
export declare type InsertObject<DB, TB extends keyof DB> = {
|
|
6
6
|
[C in NonNullableInsertKeys<DB[TB]>]: ValueExpression<DB, TB, InsertType<DB[TB][C]>>;
|
|
7
7
|
} & {
|
|
8
|
-
[C in NullableInsertKeys<DB[TB]>]?: ValueExpression<DB, TB, InsertType<DB[TB][C]
|
|
8
|
+
[C in NullableInsertKeys<DB[TB]>]?: ValueExpression<DB, TB, InsertType<DB[TB][C]>> | undefined;
|
|
9
9
|
};
|
|
10
10
|
export declare type InsertObjectOrList<DB, TB extends keyof DB> = InsertObject<DB, TB> | ReadonlyArray<InsertObject<DB, TB>>;
|
|
11
11
|
export declare function parseInsertObjectOrList(args: InsertObjectOrList<any, any>): [ReadonlyArray<ColumnNode>, ValuesNode];
|
|
@@ -5,7 +5,7 @@ import { ValueListNode } from '../operation-node/value-list-node.js';
|
|
|
5
5
|
import { freeze, isUndefined } from '../util/object-utils.js';
|
|
6
6
|
import { parseValueExpression } from './value-parser.js';
|
|
7
7
|
import { ValuesNode } from '../operation-node/values-node.js';
|
|
8
|
-
import {
|
|
8
|
+
import { isExpressionOrFactory } from './expression-parser.js';
|
|
9
9
|
import { DefaultInsertValueNode } from '../operation-node/default-insert-value-node.js';
|
|
10
10
|
export function parseInsertObjectOrList(args) {
|
|
11
11
|
return parseInsertColumnsAndValues(Array.isArray(args) ? args : [args]);
|
|
@@ -39,7 +39,7 @@ function parseRowValues(row, columns) {
|
|
|
39
39
|
const columnIdx = columns.get(col);
|
|
40
40
|
if (columnIdx !== undefined) {
|
|
41
41
|
const value = row[col];
|
|
42
|
-
if (
|
|
42
|
+
if (isExpressionOrFactory(value)) {
|
|
43
43
|
complexColumn = true;
|
|
44
44
|
}
|
|
45
45
|
rowValues[columnIdx] = value;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="./join-parser.d.ts" />
|
|
2
2
|
import { JoinNode } from '../operation-node/join-node.js';
|
|
3
3
|
import { parseTableExpression, } from './table-parser.js';
|
|
4
|
-
import {
|
|
4
|
+
import { parseReferentialFilter } from './binary-operation-parser.js';
|
|
5
5
|
import { createJoinBuilder } from './parse-utils.js';
|
|
6
6
|
export function parseJoin(joinType, args) {
|
|
7
7
|
if (args.length === 3) {
|
|
@@ -19,5 +19,5 @@ function parseCallbackJoin(joinType, from, callback) {
|
|
|
19
19
|
return joinBuilder.toOperationNode();
|
|
20
20
|
}
|
|
21
21
|
function parseSingleOnJoin(joinType, from, lhsColumn, rhsColumn) {
|
|
22
|
-
return JoinNode.createWithOn(joinType, parseTableExpression(from),
|
|
22
|
+
return JoinNode.createWithOn(joinType, parseTableExpression(from), parseReferentialFilter(lhsColumn, '=', rhsColumn));
|
|
23
23
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { Expression } from '../expression/expression.js';
|
|
1
2
|
import { OrderByItemNode } from '../operation-node/order-by-item-node.js';
|
|
2
|
-
import { AnyRawBuilder } from '../util/type-utils.js';
|
|
3
3
|
import { ReferenceExpression } from './reference-parser.js';
|
|
4
4
|
export declare type OrderByDirection = 'asc' | 'desc';
|
|
5
5
|
export declare type OrderByExpression<DB, TB extends keyof DB, O> = ReferenceExpression<DB, TB> | (keyof O & string);
|
|
6
|
-
export declare type OrderByDirectionExpression = OrderByDirection |
|
|
6
|
+
export declare type OrderByDirectionExpression = OrderByDirection | Expression<any>;
|
|
7
7
|
export declare function parseOrderBy(orderBy: OrderByExpression<any, any, any>, direction?: OrderByDirectionExpression): OrderByItemNode;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { JoinType } from '../operation-node/join-node.js';
|
|
2
2
|
import { ExpressionBuilder } from '../query-builder/expression-builder.js';
|
|
3
3
|
import { JoinBuilder } from '../query-builder/join-builder.js';
|
|
4
|
+
import { OverBuilder } from '../query-builder/over-builder.js';
|
|
4
5
|
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
5
6
|
import { QueryCreator } from '../query-creator.js';
|
|
6
7
|
import { TableExpression } from './table-parser.js';
|
|
@@ -8,3 +9,4 @@ export declare function createSelectQueryBuilder(): SelectQueryBuilder<any, any,
|
|
|
8
9
|
export declare function createExpressionBuilder(): ExpressionBuilder<any, any>;
|
|
9
10
|
export declare function createQueryCreator(): QueryCreator<any>;
|
|
10
11
|
export declare function createJoinBuilder(joinType: JoinType, table: TableExpression<any, any>): JoinBuilder<any, any>;
|
|
12
|
+
export declare function createOverBuilder(): OverBuilder<any, any>;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
/// <reference types="./parse-utils.d.ts" />
|
|
2
2
|
import { JoinNode } from '../operation-node/join-node.js';
|
|
3
|
+
import { OverNode } from '../operation-node/over-node.js';
|
|
3
4
|
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
4
5
|
import { ExpressionBuilder } from '../query-builder/expression-builder.js';
|
|
5
6
|
import { JoinBuilder } from '../query-builder/join-builder.js';
|
|
7
|
+
import { OverBuilder } from '../query-builder/over-builder.js';
|
|
6
8
|
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
7
9
|
import { QueryCreator } from '../query-creator.js';
|
|
8
10
|
import { NOOP_QUERY_EXECUTOR } from '../query-executor/noop-query-executor.js';
|
|
@@ -30,3 +32,8 @@ export function createJoinBuilder(joinType, table) {
|
|
|
30
32
|
joinNode: JoinNode.create(joinType, parseTableExpression(table)),
|
|
31
33
|
});
|
|
32
34
|
}
|
|
35
|
+
export function createOverBuilder() {
|
|
36
|
+
return new OverBuilder({
|
|
37
|
+
overNode: OverNode.create(),
|
|
38
|
+
});
|
|
39
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
|
|
2
|
+
import { PartitionByItemNode } from '../operation-node/partition-by-item-node.js';
|
|
3
|
+
import { StringReference } from './reference-parser.js';
|
|
4
|
+
export declare type PartitionByExpression<DB, TB extends keyof DB> = StringReference<DB, TB> | DynamicReferenceBuilder<any>;
|
|
5
|
+
export declare type PartitionByExpressionOrList<DB, TB extends keyof DB> = ReadonlyArray<PartitionByExpression<DB, TB>> | PartitionByExpression<DB, TB>;
|
|
6
|
+
export declare function parsePartitionBy(partitionBy: PartitionByExpressionOrList<any, any>): PartitionByItemNode[];
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/// <reference types="./partition-by-parser.d.ts" />
|
|
2
|
+
import { PartitionByItemNode } from '../operation-node/partition-by-item-node.js';
|
|
3
|
+
import { parseReferenceExpressionOrList, } from './reference-parser.js';
|
|
4
|
+
export function parsePartitionBy(partitionBy) {
|
|
5
|
+
return parseReferenceExpressionOrList(partitionBy).map(PartitionByItemNode.create);
|
|
6
|
+
}
|
|
@@ -1,21 +1,22 @@
|
|
|
1
1
|
import { AliasNode } from '../operation-node/alias-node.js';
|
|
2
2
|
import { ColumnNode } from '../operation-node/column-node.js';
|
|
3
|
-
import { ReferenceExpressionNode } from '../operation-node/operation-node-utils.js';
|
|
4
|
-
import { ReferenceNode } from '../operation-node/reference-node.js';
|
|
5
3
|
import { AnyColumn, AnyColumnWithTable, ExtractColumnType, ValueType } from '../util/type-utils.js';
|
|
6
|
-
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
7
4
|
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
8
|
-
import {
|
|
5
|
+
import { ExpressionOrFactory } from './expression-parser.js';
|
|
9
6
|
import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
|
|
10
7
|
import { SelectType } from '../util/column-type.js';
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
import { OperationNode } from '../operation-node/operation-node.js';
|
|
9
|
+
import { Expression } from '../expression/expression.js';
|
|
10
|
+
import { SimpleReferenceExpressionNode } from '../operation-node/simple-reference-expression-node.js';
|
|
13
11
|
export declare type StringReference<DB, TB extends keyof DB> = AnyColumn<DB, TB> | AnyColumnWithTable<DB, TB>;
|
|
14
|
-
export declare type
|
|
15
|
-
declare type
|
|
16
|
-
export declare
|
|
17
|
-
export declare
|
|
18
|
-
export declare
|
|
19
|
-
export declare function
|
|
12
|
+
export declare type SimpleReferenceExpression<DB, TB extends keyof DB> = StringReference<DB, TB> | DynamicReferenceBuilder<any>;
|
|
13
|
+
export declare type ReferenceExpression<DB, TB extends keyof DB> = SimpleReferenceExpression<DB, TB> | ExpressionOrFactory<DB, TB, any>;
|
|
14
|
+
export declare type ReferenceExpressionOrList<DB, TB extends keyof DB> = ReferenceExpression<DB, TB> | ReadonlyArray<ReferenceExpression<DB, TB>>;
|
|
15
|
+
export declare type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE, DV = unknown> = RE extends string ? SelectType<ExtractTypeFromStringReference<DB, TB, RE>> : RE extends SelectQueryBuilder<any, any, infer O> ? ValueType<O> : RE extends (qb: any) => SelectQueryBuilder<any, any, infer O> ? ValueType<O> : RE extends Expression<infer O> ? O : RE extends (qb: any) => Expression<infer O> ? O : DV;
|
|
16
|
+
export declare type ExtractTypeFromStringReference<DB, TB extends keyof DB, RE extends string, DV = unknown> = RE extends `${infer SC}.${infer T}.${infer C}` ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : RE extends `${infer T}.${infer C}` ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : RE extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, RE> : DV;
|
|
17
|
+
export declare function parseSimpleReferenceExpression(exp: SimpleReferenceExpression<any, any>): SimpleReferenceExpressionNode;
|
|
18
|
+
export declare function parseReferenceExpressionOrList(arg: ReferenceExpressionOrList<any, any>): OperationNode[];
|
|
19
|
+
export declare function parseReferenceExpression(exp: ReferenceExpression<any, any>): OperationNode;
|
|
20
|
+
export declare function parseStringReference(ref: string): SimpleReferenceExpressionNode;
|
|
21
|
+
export declare function parseAliasedStringReference(ref: string): SimpleReferenceExpressionNode | AliasNode;
|
|
20
22
|
export declare function parseColumnName(column: AnyColumn<any, any>): ColumnNode;
|
|
21
|
-
export {};
|
|
@@ -4,9 +4,14 @@ import { ColumnNode } from '../operation-node/column-node.js';
|
|
|
4
4
|
import { ReferenceNode } from '../operation-node/reference-node.js';
|
|
5
5
|
import { TableNode } from '../operation-node/table-node.js';
|
|
6
6
|
import { isReadonlyArray, isString } from '../util/object-utils.js';
|
|
7
|
-
import {
|
|
8
|
-
import { isDynamicReferenceBuilder, } from '../dynamic/dynamic-reference-builder.js';
|
|
7
|
+
import { parseExpression, isExpressionOrFactory, } from './expression-parser.js';
|
|
9
8
|
import { IdentifierNode } from '../operation-node/identifier-node.js';
|
|
9
|
+
export function parseSimpleReferenceExpression(exp) {
|
|
10
|
+
if (isString(exp)) {
|
|
11
|
+
return parseStringReference(exp);
|
|
12
|
+
}
|
|
13
|
+
return exp.toOperationNode();
|
|
14
|
+
}
|
|
10
15
|
export function parseReferenceExpressionOrList(arg) {
|
|
11
16
|
if (isReadonlyArray(arg)) {
|
|
12
17
|
return arg.map((it) => parseReferenceExpression(it));
|
|
@@ -16,13 +21,10 @@ export function parseReferenceExpressionOrList(arg) {
|
|
|
16
21
|
}
|
|
17
22
|
}
|
|
18
23
|
export function parseReferenceExpression(exp) {
|
|
19
|
-
if (
|
|
20
|
-
return
|
|
21
|
-
}
|
|
22
|
-
else if (isDynamicReferenceBuilder(exp)) {
|
|
23
|
-
return exp.toOperationNode();
|
|
24
|
+
if (isExpressionOrFactory(exp)) {
|
|
25
|
+
return parseExpression(exp);
|
|
24
26
|
}
|
|
25
|
-
return
|
|
27
|
+
return parseSimpleReferenceExpression(exp);
|
|
26
28
|
}
|
|
27
29
|
export function parseStringReference(ref) {
|
|
28
30
|
const COLUMN_SEPARATOR = '.';
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { AliasedQueryBuilder, SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
1
|
+
import { AliasedSelectQueryBuilder, SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
3
2
|
import { SelectionNode } from '../operation-node/selection-node.js';
|
|
4
3
|
import { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, ExtractColumnType, ValueType } from '../util/type-utils.js';
|
|
5
4
|
import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
|
|
6
|
-
import {
|
|
5
|
+
import { AliasedExpressionOrFactory } from './expression-parser.js';
|
|
7
6
|
import { Selectable, SelectType } from '../util/column-type.js';
|
|
8
|
-
|
|
7
|
+
import { AliasedExpression } from '../expression/expression.js';
|
|
8
|
+
export declare type SelectExpression<DB, TB extends keyof DB> = AnyAliasedColumnWithTable<DB, TB> | AnyAliasedColumn<DB, TB> | AnyColumnWithTable<DB, TB> | AnyColumn<DB, TB> | DynamicReferenceBuilder<any> | AliasedExpressionOrFactory<DB, TB>;
|
|
9
9
|
export declare type SelectExpressionOrList<DB, TB extends keyof DB> = SelectExpression<DB, TB> | ReadonlyArray<SelectExpression<DB, TB>>;
|
|
10
10
|
/**
|
|
11
11
|
* Given a selection expression returns a query builder type that
|
|
@@ -19,9 +19,9 @@ export declare type SelectAllQueryBuilder<DB, TB extends keyof DB, O, S extends
|
|
|
19
19
|
export declare type Selection<DB, TB extends keyof DB, SE> = {
|
|
20
20
|
[A in ExtractAliasFromSelectExpression<SE>]: SelectType<ExtractTypeFromSelectExpression<DB, TB, SE, A>>;
|
|
21
21
|
};
|
|
22
|
-
declare type ExtractAliasFromSelectExpression<SE> = SE extends string ? ExtractAliasFromStringSelectExpression<SE> : SE extends
|
|
22
|
+
declare type ExtractAliasFromSelectExpression<SE> = SE extends string ? ExtractAliasFromStringSelectExpression<SE> : SE extends AliasedExpression<any, infer EA> ? EA : SE extends (qb: any) => AliasedExpression<any, infer EA> ? EA : SE extends DynamicReferenceBuilder<infer RA> ? ExtractAliasFromStringSelectExpression<RA> : never;
|
|
23
23
|
declare type ExtractAliasFromStringSelectExpression<SE extends string> = SE extends `${string}.${string}.${string} as ${infer A}` ? A : SE extends `${string}.${string} as ${infer A}` ? A : SE extends `${string} as ${infer A}` ? A : SE extends `${string}.${string}.${infer C}` ? C : SE extends `${string}.${infer C}` ? C : SE;
|
|
24
|
-
declare type ExtractTypeFromSelectExpression<DB, TB extends keyof DB, SE, A extends keyof any> = SE extends string ? ExtractTypeFromStringSelectExpression<DB, TB, SE, A> : SE extends
|
|
24
|
+
declare type ExtractTypeFromSelectExpression<DB, TB extends keyof DB, SE, A extends keyof any> = SE extends string ? ExtractTypeFromStringSelectExpression<DB, TB, SE, A> : SE extends AliasedSelectQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? ValueType<O> : never : SE extends (qb: any) => AliasedSelectQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? ValueType<O> : never : SE extends AliasedExpression<infer O, infer EA> ? EA extends A ? O : never : SE extends (qb: any) => AliasedExpression<infer O, infer EA> ? EA extends A ? O : never : SE extends DynamicReferenceBuilder<infer RA> ? A extends ExtractAliasFromStringSelectExpression<RA> ? ExtractTypeFromStringSelectExpression<DB, TB, RA, A> | undefined : never : never;
|
|
25
25
|
declare type ExtractTypeFromStringSelectExpression<DB, TB extends keyof DB, SE extends string, A extends keyof any> = SE extends `${infer SC}.${infer T}.${infer C} as ${infer RA}` ? RA extends A ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : never : SE extends `${infer T}.${infer C} as ${infer RA}` ? RA extends A ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : never : SE extends `${infer C} as ${infer RA}` ? RA extends A ? C extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, C> : never : never : SE extends `${infer SC}.${infer T}.${infer C}` ? C extends A ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : never : SE extends `${infer T}.${infer C}` ? C extends A ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : never : SE extends A ? SE extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, SE> : never : never;
|
|
26
26
|
declare type AllSelection<DB, TB extends keyof DB> = Selectable<{
|
|
27
27
|
[C in AnyColumn<DB, TB>]: {
|
|
@@ -3,7 +3,7 @@ import { isReadonlyArray, isString } from '../util/object-utils.js';
|
|
|
3
3
|
import { SelectionNode } from '../operation-node/selection-node.js';
|
|
4
4
|
import { parseAliasedStringReference } from './reference-parser.js';
|
|
5
5
|
import { isDynamicReferenceBuilder, } from '../dynamic/dynamic-reference-builder.js';
|
|
6
|
-
import {
|
|
6
|
+
import { parseAliasedExpression, } from './expression-parser.js';
|
|
7
7
|
import { parseTable } from './table-parser.js';
|
|
8
8
|
export function parseSelectExpressionOrList(selection) {
|
|
9
9
|
if (isReadonlyArray(selection)) {
|
|
@@ -21,7 +21,7 @@ function parseSelectExpression(selection) {
|
|
|
21
21
|
return SelectionNode.create(selection.toOperationNode());
|
|
22
22
|
}
|
|
23
23
|
else {
|
|
24
|
-
return SelectionNode.create(
|
|
24
|
+
return SelectionNode.create(parseAliasedExpression(selection));
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
export function parseSelectAll(table) {
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { Expression } from '../expression/expression.js';
|
|
2
|
+
import { SetOperator, SetOperationNode } from '../operation-node/set-operation-node.js';
|
|
3
|
+
export declare function parseSetOperation(operator: SetOperator, expression: Expression<any>, all: boolean): SetOperationNode;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/// <reference types="./set-operation-parser.d.ts" />
|
|
2
|
+
import { SetOperationNode, } from '../operation-node/set-operation-node.js';
|
|
3
|
+
export function parseSetOperation(operator, expression, all) {
|
|
4
|
+
return SetOperationNode.create(operator, expression.toOperationNode(), all);
|
|
5
|
+
}
|
|
@@ -1,22 +1,21 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AliasNode } from '../operation-node/alias-node.js';
|
|
2
2
|
import { TableNode } from '../operation-node/table-node.js';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
|
|
7
|
-
export declare type TableExpression<DB, TB extends keyof DB> = TableReference<DB> | AliasedComplexExpression<DB, TB>;
|
|
3
|
+
import { AliasedExpressionOrFactory } from './expression-parser.js';
|
|
4
|
+
import { OperationNode } from '../operation-node/operation-node.js';
|
|
5
|
+
import { AliasedExpression } from '../expression/expression.js';
|
|
6
|
+
export declare type TableExpression<DB, TB extends keyof DB> = TableReference<DB> | AliasedExpressionOrFactory<DB, TB>;
|
|
8
7
|
export declare type TableExpressionOrList<DB, TB extends keyof DB> = TableExpression<DB, TB> | ReadonlyArray<TableExpression<DB, TB>>;
|
|
9
|
-
export declare type TableReference<DB> = AnyAliasedTable<DB> | AnyTable<DB> |
|
|
8
|
+
export declare type TableReference<DB> = AnyAliasedTable<DB> | AnyTable<DB> | AliasedExpression<any, any>;
|
|
10
9
|
export declare type From<DB, TE> = {
|
|
11
10
|
[C in keyof DB | ExtractAliasFromTableExpression<DB, TE>]: C extends ExtractAliasFromTableExpression<DB, TE> ? ExtractRowTypeFromTableExpression<DB, TE, C> : C extends keyof DB ? DB[C] : never;
|
|
12
11
|
};
|
|
13
12
|
export declare type FromTables<DB, TB extends keyof DB, TE> = TB | ExtractAliasFromTableExpression<DB, TE>;
|
|
14
|
-
declare type ExtractAliasFromTableExpression<DB, TE> = TE extends `${string} as ${infer TA}` ? TA : TE extends keyof DB ? TE : TE extends
|
|
15
|
-
declare type ExtractRowTypeFromTableExpression<DB, TE, A extends keyof any> = TE extends `${infer T} as ${infer TA}` ? TA extends A ? T extends keyof DB ? DB[T] : never : never : TE extends A ? TE extends keyof DB ? DB[TE] : never : TE extends
|
|
13
|
+
declare type ExtractAliasFromTableExpression<DB, TE> = TE extends `${string} as ${infer TA}` ? TA : TE extends keyof DB ? TE : TE extends AliasedExpression<any, infer QA> ? QA : TE extends (qb: any) => AliasedExpression<any, infer QA> ? QA : never;
|
|
14
|
+
declare type ExtractRowTypeFromTableExpression<DB, TE, A extends keyof any> = TE extends `${infer T} as ${infer TA}` ? TA extends A ? T extends keyof DB ? DB[T] : never : never : TE extends A ? TE extends keyof DB ? DB[TE] : never : TE extends AliasedExpression<infer O, infer QA> ? QA extends A ? O : never : TE extends (qb: any) => AliasedExpression<infer O, infer QA> ? QA extends A ? O : never : never;
|
|
16
15
|
declare type AnyAliasedTable<DB> = `${AnyTable<DB>} as ${string}`;
|
|
17
16
|
declare type AnyTable<DB> = keyof DB & string;
|
|
18
|
-
export declare function parseTableExpressionOrList(table: TableExpressionOrList<any, any>):
|
|
19
|
-
export declare function parseTableExpression(table: TableExpression<any, any>):
|
|
20
|
-
export declare function parseAliasedTable(from: string):
|
|
17
|
+
export declare function parseTableExpressionOrList(table: TableExpressionOrList<any, any>): OperationNode[];
|
|
18
|
+
export declare function parseTableExpression(table: TableExpression<any, any>): OperationNode;
|
|
19
|
+
export declare function parseAliasedTable(from: string): TableNode | AliasNode;
|
|
21
20
|
export declare function parseTable(from: string): TableNode;
|
|
22
21
|
export {};
|