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,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.AliasedSelectQueryBuilder = exports.SelectQueryBuilder = void 0;
|
|
4
4
|
const alias_node_js_1 = require("../operation-node/alias-node.js");
|
|
5
5
|
const select_modifier_node_js_1 = require("../operation-node/select-modifier-node.js");
|
|
6
6
|
const join_parser_js_1 = require("../parser/join-parser.js");
|
|
7
7
|
const select_parser_js_1 = require("../parser/select-parser.js");
|
|
8
|
-
const
|
|
8
|
+
const reference_parser_js_1 = require("../parser/reference-parser.js");
|
|
9
9
|
const select_query_node_js_1 = require("../operation-node/select-query-node.js");
|
|
10
10
|
const query_node_js_1 = require("../operation-node/query-node.js");
|
|
11
11
|
const order_by_parser_js_1 = require("../parser/order-by-parser.js");
|
|
@@ -14,109 +14,115 @@ const limit_node_js_1 = require("../operation-node/limit-node.js");
|
|
|
14
14
|
const offset_node_js_1 = require("../operation-node/offset-node.js");
|
|
15
15
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
16
16
|
const group_by_parser_js_1 = require("../parser/group-by-parser.js");
|
|
17
|
-
const union_parser_js_1 = require("../parser/union-parser.js");
|
|
18
17
|
const no_result_error_js_1 = require("./no-result-error.js");
|
|
19
18
|
const identifier_node_js_1 = require("../operation-node/identifier-node.js");
|
|
20
19
|
const explain_node_js_1 = require("../operation-node/explain-node.js");
|
|
20
|
+
const set_operation_parser_js_1 = require("../parser/set-operation-parser.js");
|
|
21
|
+
const binary_operation_parser_js_1 = require("../parser/binary-operation-parser.js");
|
|
22
|
+
const unary_operation_parser_js_1 = require("../parser/unary-operation-parser.js");
|
|
21
23
|
class SelectQueryBuilder {
|
|
22
24
|
#props;
|
|
23
25
|
constructor(props) {
|
|
24
26
|
this.#props = (0, object_utils_js_1.freeze)(props);
|
|
25
27
|
}
|
|
28
|
+
/** @private */
|
|
29
|
+
get expressionType() {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
26
32
|
where(...args) {
|
|
27
33
|
return new SelectQueryBuilder({
|
|
28
34
|
...this.#props,
|
|
29
|
-
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0,
|
|
35
|
+
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseWhere)(args)),
|
|
30
36
|
});
|
|
31
37
|
}
|
|
32
38
|
whereRef(lhs, op, rhs) {
|
|
33
39
|
return new SelectQueryBuilder({
|
|
34
40
|
...this.#props,
|
|
35
|
-
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0,
|
|
41
|
+
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseReferentialFilter)(lhs, op, rhs)),
|
|
36
42
|
});
|
|
37
43
|
}
|
|
38
44
|
orWhere(...args) {
|
|
39
45
|
return new SelectQueryBuilder({
|
|
40
46
|
...this.#props,
|
|
41
|
-
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0,
|
|
47
|
+
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseWhere)(args)),
|
|
42
48
|
});
|
|
43
49
|
}
|
|
44
50
|
orWhereRef(lhs, op, rhs) {
|
|
45
51
|
return new SelectQueryBuilder({
|
|
46
52
|
...this.#props,
|
|
47
|
-
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0,
|
|
53
|
+
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseReferentialFilter)(lhs, op, rhs)),
|
|
48
54
|
});
|
|
49
55
|
}
|
|
50
56
|
whereExists(arg) {
|
|
51
57
|
return new SelectQueryBuilder({
|
|
52
58
|
...this.#props,
|
|
53
|
-
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0,
|
|
59
|
+
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, unary_operation_parser_js_1.parseExists)(arg)),
|
|
54
60
|
});
|
|
55
61
|
}
|
|
56
62
|
whereNotExists(arg) {
|
|
57
63
|
return new SelectQueryBuilder({
|
|
58
64
|
...this.#props,
|
|
59
|
-
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0,
|
|
65
|
+
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, unary_operation_parser_js_1.parseNotExists)(arg)),
|
|
60
66
|
});
|
|
61
67
|
}
|
|
62
68
|
orWhereExists(arg) {
|
|
63
69
|
return new SelectQueryBuilder({
|
|
64
70
|
...this.#props,
|
|
65
|
-
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0,
|
|
71
|
+
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, unary_operation_parser_js_1.parseExists)(arg)),
|
|
66
72
|
});
|
|
67
73
|
}
|
|
68
74
|
orWhereNotExists(arg) {
|
|
69
75
|
return new SelectQueryBuilder({
|
|
70
76
|
...this.#props,
|
|
71
|
-
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0,
|
|
77
|
+
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, unary_operation_parser_js_1.parseNotExists)(arg)),
|
|
72
78
|
});
|
|
73
79
|
}
|
|
74
80
|
having(...args) {
|
|
75
81
|
return new SelectQueryBuilder({
|
|
76
82
|
...this.#props,
|
|
77
|
-
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, (0,
|
|
83
|
+
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, (0, binary_operation_parser_js_1.parseHaving)(args)),
|
|
78
84
|
});
|
|
79
85
|
}
|
|
80
86
|
havingRef(lhs, op, rhs) {
|
|
81
87
|
return new SelectQueryBuilder({
|
|
82
88
|
...this.#props,
|
|
83
|
-
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, (0,
|
|
89
|
+
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, (0, binary_operation_parser_js_1.parseReferentialFilter)(lhs, op, rhs)),
|
|
84
90
|
});
|
|
85
91
|
}
|
|
86
92
|
orHaving(...args) {
|
|
87
93
|
return new SelectQueryBuilder({
|
|
88
94
|
...this.#props,
|
|
89
|
-
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, (0,
|
|
95
|
+
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, (0, binary_operation_parser_js_1.parseHaving)(args)),
|
|
90
96
|
});
|
|
91
97
|
}
|
|
92
98
|
orHavingRef(lhs, op, rhs) {
|
|
93
99
|
return new SelectQueryBuilder({
|
|
94
100
|
...this.#props,
|
|
95
|
-
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, (0,
|
|
101
|
+
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, (0, binary_operation_parser_js_1.parseReferentialFilter)(lhs, op, rhs)),
|
|
96
102
|
});
|
|
97
103
|
}
|
|
98
104
|
havingExists(arg) {
|
|
99
105
|
return new SelectQueryBuilder({
|
|
100
106
|
...this.#props,
|
|
101
|
-
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, (0,
|
|
107
|
+
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, (0, unary_operation_parser_js_1.parseExists)(arg)),
|
|
102
108
|
});
|
|
103
109
|
}
|
|
104
110
|
havingNotExist(arg) {
|
|
105
111
|
return new SelectQueryBuilder({
|
|
106
112
|
...this.#props,
|
|
107
|
-
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, (0,
|
|
113
|
+
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithHaving(this.#props.queryNode, (0, unary_operation_parser_js_1.parseNotExists)(arg)),
|
|
108
114
|
});
|
|
109
115
|
}
|
|
110
116
|
orHavingExists(arg) {
|
|
111
117
|
return new SelectQueryBuilder({
|
|
112
118
|
...this.#props,
|
|
113
|
-
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, (0,
|
|
119
|
+
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, (0, unary_operation_parser_js_1.parseExists)(arg)),
|
|
114
120
|
});
|
|
115
121
|
}
|
|
116
122
|
orHavingNotExists(arg) {
|
|
117
123
|
return new SelectQueryBuilder({
|
|
118
124
|
...this.#props,
|
|
119
|
-
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, (0,
|
|
125
|
+
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, (0, unary_operation_parser_js_1.parseNotExists)(arg)),
|
|
120
126
|
});
|
|
121
127
|
}
|
|
122
128
|
select(selection) {
|
|
@@ -128,7 +134,7 @@ class SelectQueryBuilder {
|
|
|
128
134
|
distinctOn(selection) {
|
|
129
135
|
return new SelectQueryBuilder({
|
|
130
136
|
...this.#props,
|
|
131
|
-
queryNode: select_query_node_js_1.SelectQueryNode.
|
|
137
|
+
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithDistinctOn(this.#props.queryNode, (0, reference_parser_js_1.parseReferenceExpressionOrList)(selection)),
|
|
132
138
|
});
|
|
133
139
|
}
|
|
134
140
|
/**
|
|
@@ -153,7 +159,7 @@ class SelectQueryBuilder {
|
|
|
153
159
|
modifyFront(modifier) {
|
|
154
160
|
return new SelectQueryBuilder({
|
|
155
161
|
...this.#props,
|
|
156
|
-
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithFrontModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.
|
|
162
|
+
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithFrontModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.createWithExpression(modifier.toOperationNode())),
|
|
157
163
|
});
|
|
158
164
|
}
|
|
159
165
|
/**
|
|
@@ -182,7 +188,7 @@ class SelectQueryBuilder {
|
|
|
182
188
|
modifyEnd(modifier) {
|
|
183
189
|
return new SelectQueryBuilder({
|
|
184
190
|
...this.#props,
|
|
185
|
-
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.
|
|
191
|
+
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithEndModifier(this.#props.queryNode, select_modifier_node_js_1.SelectModifierNode.createWithExpression(modifier.toOperationNode())),
|
|
186
192
|
});
|
|
187
193
|
}
|
|
188
194
|
/**
|
|
@@ -472,7 +478,7 @@ class SelectQueryBuilder {
|
|
|
472
478
|
union(expression) {
|
|
473
479
|
return new SelectQueryBuilder({
|
|
474
480
|
...this.#props,
|
|
475
|
-
queryNode: select_query_node_js_1.SelectQueryNode.
|
|
481
|
+
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithSetOperation(this.#props.queryNode, (0, set_operation_parser_js_1.parseSetOperation)('union', expression, false)),
|
|
476
482
|
});
|
|
477
483
|
}
|
|
478
484
|
/**
|
|
@@ -492,7 +498,87 @@ class SelectQueryBuilder {
|
|
|
492
498
|
unionAll(expression) {
|
|
493
499
|
return new SelectQueryBuilder({
|
|
494
500
|
...this.#props,
|
|
495
|
-
queryNode: select_query_node_js_1.SelectQueryNode.
|
|
501
|
+
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithSetOperation(this.#props.queryNode, (0, set_operation_parser_js_1.parseSetOperation)('union', expression, true)),
|
|
502
|
+
});
|
|
503
|
+
}
|
|
504
|
+
/**
|
|
505
|
+
* Combines another select query or raw expression to this query using `intersect`.
|
|
506
|
+
*
|
|
507
|
+
* The output row type of the combined query must match `this` query.
|
|
508
|
+
*
|
|
509
|
+
* ### Examples
|
|
510
|
+
*
|
|
511
|
+
* ```ts
|
|
512
|
+
* db.selectFrom('person')
|
|
513
|
+
* .select(['id', 'first_name as name'])
|
|
514
|
+
* .intersect(db.selectFrom('pet').select(['id', 'name']))
|
|
515
|
+
* .orderBy('name')
|
|
516
|
+
* ```
|
|
517
|
+
*/
|
|
518
|
+
intersect(expression) {
|
|
519
|
+
return new SelectQueryBuilder({
|
|
520
|
+
...this.#props,
|
|
521
|
+
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithSetOperation(this.#props.queryNode, (0, set_operation_parser_js_1.parseSetOperation)('intersect', expression, false)),
|
|
522
|
+
});
|
|
523
|
+
}
|
|
524
|
+
/**
|
|
525
|
+
* Combines another select query or raw expression to this query using `intersect all`.
|
|
526
|
+
*
|
|
527
|
+
* The output row type of the combined query must match `this` query.
|
|
528
|
+
*
|
|
529
|
+
* ### Examples
|
|
530
|
+
*
|
|
531
|
+
* ```ts
|
|
532
|
+
* db.selectFrom('person')
|
|
533
|
+
* .select(['id', 'first_name as name'])
|
|
534
|
+
* .intersectAll(db.selectFrom('pet').select(['id', 'name']))
|
|
535
|
+
* .orderBy('name')
|
|
536
|
+
* ```
|
|
537
|
+
*/
|
|
538
|
+
intersectAll(expression) {
|
|
539
|
+
return new SelectQueryBuilder({
|
|
540
|
+
...this.#props,
|
|
541
|
+
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithSetOperation(this.#props.queryNode, (0, set_operation_parser_js_1.parseSetOperation)('intersect', expression, true)),
|
|
542
|
+
});
|
|
543
|
+
}
|
|
544
|
+
/**
|
|
545
|
+
* Combines another select query or raw expression to this query using `except`.
|
|
546
|
+
*
|
|
547
|
+
* The output row type of the combined query must match `this` query.
|
|
548
|
+
*
|
|
549
|
+
* ### Examples
|
|
550
|
+
*
|
|
551
|
+
* ```ts
|
|
552
|
+
* db.selectFrom('person')
|
|
553
|
+
* .select(['id', 'first_name as name'])
|
|
554
|
+
* .except(db.selectFrom('pet').select(['id', 'name']))
|
|
555
|
+
* .orderBy('name')
|
|
556
|
+
* ```
|
|
557
|
+
*/
|
|
558
|
+
except(expression) {
|
|
559
|
+
return new SelectQueryBuilder({
|
|
560
|
+
...this.#props,
|
|
561
|
+
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithSetOperation(this.#props.queryNode, (0, set_operation_parser_js_1.parseSetOperation)('except', expression, false)),
|
|
562
|
+
});
|
|
563
|
+
}
|
|
564
|
+
/**
|
|
565
|
+
* Combines another select query or raw expression to this query using `except all`.
|
|
566
|
+
*
|
|
567
|
+
* The output row type of the combined query must match `this` query.
|
|
568
|
+
*
|
|
569
|
+
* ### Examples
|
|
570
|
+
*
|
|
571
|
+
* ```ts
|
|
572
|
+
* db.selectFrom('person')
|
|
573
|
+
* .select(['id', 'first_name as name'])
|
|
574
|
+
* .exceptAll(db.selectFrom('pet').select(['id', 'name']))
|
|
575
|
+
* .orderBy('name')
|
|
576
|
+
* ```
|
|
577
|
+
*/
|
|
578
|
+
exceptAll(expression) {
|
|
579
|
+
return new SelectQueryBuilder({
|
|
580
|
+
...this.#props,
|
|
581
|
+
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithSetOperation(this.#props.queryNode, (0, set_operation_parser_js_1.parseSetOperation)('except', expression, true)),
|
|
496
582
|
});
|
|
497
583
|
}
|
|
498
584
|
/**
|
|
@@ -598,7 +684,7 @@ class SelectQueryBuilder {
|
|
|
598
684
|
* ```
|
|
599
685
|
*/
|
|
600
686
|
as(alias) {
|
|
601
|
-
return new
|
|
687
|
+
return new AliasedSelectQueryBuilder(this, alias);
|
|
602
688
|
}
|
|
603
689
|
/**
|
|
604
690
|
* Change the output type of the query.
|
|
@@ -684,8 +770,8 @@ class SelectQueryBuilder {
|
|
|
684
770
|
* ```
|
|
685
771
|
*/
|
|
686
772
|
async *stream(chunkSize = 100) {
|
|
687
|
-
const
|
|
688
|
-
const stream = this.#props.executor.stream(
|
|
773
|
+
const compiledQuery = this.compile();
|
|
774
|
+
const stream = this.#props.executor.stream(compiledQuery, chunkSize, this.#props.queryId);
|
|
689
775
|
for await (const item of stream) {
|
|
690
776
|
yield* item.rows;
|
|
691
777
|
}
|
|
@@ -728,7 +814,7 @@ class SelectQueryBuilder {
|
|
|
728
814
|
async explain(format, options) {
|
|
729
815
|
const builder = new SelectQueryBuilder({
|
|
730
816
|
...this.#props,
|
|
731
|
-
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithExplain(this.#props.queryNode, explain_node_js_1.ExplainNode.create(format, options)),
|
|
817
|
+
queryNode: select_query_node_js_1.SelectQueryNode.cloneWithExplain(this.#props.queryNode, explain_node_js_1.ExplainNode.create(format, options?.toOperationNode())),
|
|
732
818
|
});
|
|
733
819
|
return await builder.execute();
|
|
734
820
|
}
|
|
@@ -738,27 +824,23 @@ exports.SelectQueryBuilder = SelectQueryBuilder;
|
|
|
738
824
|
/**
|
|
739
825
|
* {@link SelectQueryBuilder} with an alias. The result of calling {@link SelectQueryBuilder.as}.
|
|
740
826
|
*/
|
|
741
|
-
class
|
|
827
|
+
class AliasedSelectQueryBuilder {
|
|
742
828
|
#queryBuilder;
|
|
743
829
|
#alias;
|
|
744
830
|
constructor(queryBuilder, alias) {
|
|
745
831
|
this.#queryBuilder = queryBuilder;
|
|
746
832
|
this.#alias = alias;
|
|
747
833
|
}
|
|
748
|
-
/**
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
* which causes this type to be equal to AliasedQueryBuilder with any A
|
|
754
|
-
* as long as D, TB and O are the same.
|
|
755
|
-
*/
|
|
834
|
+
/** @private */
|
|
835
|
+
get expression() {
|
|
836
|
+
return this.#queryBuilder;
|
|
837
|
+
}
|
|
838
|
+
/** @private */
|
|
756
839
|
get alias() {
|
|
757
840
|
return this.#alias;
|
|
758
841
|
}
|
|
759
842
|
toOperationNode() {
|
|
760
|
-
|
|
761
|
-
return alias_node_js_1.AliasNode.create(node, identifier_node_js_1.IdentifierNode.create(this.#alias));
|
|
843
|
+
return alias_node_js_1.AliasNode.create(this.#queryBuilder.toOperationNode(), identifier_node_js_1.IdentifierNode.create(this.#alias));
|
|
762
844
|
}
|
|
763
845
|
}
|
|
764
|
-
exports.
|
|
846
|
+
exports.AliasedSelectQueryBuilder = AliasedSelectQueryBuilder;
|
|
@@ -3,10 +3,9 @@ import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
|
3
3
|
import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
|
|
4
4
|
import { TableExpression, From, FromTables } from '../parser/table-parser.js';
|
|
5
5
|
import { SelectExpression } from '../parser/select-parser.js';
|
|
6
|
-
import { ExistsExpression, FilterOperator, FilterValueExpressionOrList, WhereGrouper } from '../parser/filter-parser.js';
|
|
7
6
|
import { ReturningRow } from '../parser/returning-parser.js';
|
|
8
7
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
9
|
-
import {
|
|
8
|
+
import { MergePartial, Nullable, SingleResultType } from '../util/type-utils.js';
|
|
10
9
|
import { UpdateQueryNode } from '../operation-node/update-query-node.js';
|
|
11
10
|
import { MutationObject } from '../parser/update-set-parser.js';
|
|
12
11
|
import { Compilable } from '../util/compilable.js';
|
|
@@ -18,10 +17,11 @@ import { WhereInterface } from './where-interface.js';
|
|
|
18
17
|
import { ReturningInterface } from './returning-interface.js';
|
|
19
18
|
import { NoResultErrorConstructor } from './no-result-error.js';
|
|
20
19
|
import { Selectable } from '../util/column-type.js';
|
|
21
|
-
import { AliasedQueryBuilder } from './select-query-builder.js';
|
|
22
|
-
import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
|
|
23
20
|
import { Explainable, ExplainFormat } from '../util/explainable.js';
|
|
24
|
-
|
|
21
|
+
import { AliasedExpression, Expression } from '../expression/expression.js';
|
|
22
|
+
import { ComparisonOperatorExpression, OperandValueExpressionOrList, WhereGrouper } from '../parser/binary-operation-parser.js';
|
|
23
|
+
import { ExistsExpression } from '../parser/unary-operation-parser.js';
|
|
24
|
+
export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable<O>, Explainable {
|
|
25
25
|
#private;
|
|
26
26
|
constructor(props: UpdateQueryBuilderProps);
|
|
27
27
|
/**
|
|
@@ -208,16 +208,16 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
208
208
|
* .execute()
|
|
209
209
|
* ```
|
|
210
210
|
*/
|
|
211
|
-
where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op:
|
|
211
|
+
where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
212
212
|
where(grouper: WhereGrouper<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
213
|
-
where(
|
|
213
|
+
where(expression: Expression<any>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
214
214
|
/**
|
|
215
215
|
* Adds a `where` clause where both sides of the operator are references
|
|
216
216
|
* to columns.
|
|
217
217
|
*
|
|
218
218
|
* The normal `where` method treats the right hand side argument as a
|
|
219
219
|
* value by default. `whereRef` treats it as a column reference. This method is
|
|
220
|
-
* expecially useful with joins and
|
|
220
|
+
* expecially useful with joins and correlated subqueries.
|
|
221
221
|
*
|
|
222
222
|
* ### Examples
|
|
223
223
|
*
|
|
@@ -262,7 +262,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
262
262
|
* ) as "pet_name"
|
|
263
263
|
* from "person"
|
|
264
264
|
*/
|
|
265
|
-
whereRef(lhs: ReferenceExpression<DB, TB>, op:
|
|
265
|
+
whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
266
266
|
/**
|
|
267
267
|
* Adds an `or where` clause to the query. Otherwise works just like {@link where}.
|
|
268
268
|
*
|
|
@@ -326,15 +326,15 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
326
326
|
* select * from "person" (where "id" = 1 or "id" = 2)
|
|
327
327
|
* ```
|
|
328
328
|
*/
|
|
329
|
-
orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op:
|
|
329
|
+
orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
330
330
|
orWhere(grouper: WhereGrouper<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
331
|
-
orWhere(
|
|
331
|
+
orWhere(expression: Expression<any>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
332
332
|
/**
|
|
333
333
|
* Adds an `or where` clause to the query. Otherwise works just like {@link whereRef}.
|
|
334
334
|
*
|
|
335
335
|
* Also see {@link orWhere} and {@link where}.
|
|
336
336
|
*/
|
|
337
|
-
orWhereRef(lhs: ReferenceExpression<DB, TB>, op:
|
|
337
|
+
orWhereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
338
338
|
/**
|
|
339
339
|
* Adds a `where exists` clause to the query.
|
|
340
340
|
*
|
|
@@ -401,11 +401,11 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
401
401
|
*/
|
|
402
402
|
whereNotExists(arg: ExistsExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
403
403
|
/**
|
|
404
|
-
* Just like {@link whereExists} but creates
|
|
404
|
+
* Just like {@link whereExists} but creates an `or exists` clause.
|
|
405
405
|
*/
|
|
406
406
|
orWhereExists(arg: ExistsExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
407
407
|
/**
|
|
408
|
-
* Just like {@link whereExists} but creates
|
|
408
|
+
* Just like {@link whereExists} but creates an `or not exists` clause.
|
|
409
409
|
*/
|
|
410
410
|
orWhereNotExists(arg: ExistsExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
411
411
|
/**
|
|
@@ -789,7 +789,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
789
789
|
*/
|
|
790
790
|
withPlugin(plugin: KyselyPlugin): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
791
791
|
toOperationNode(): UpdateQueryNode;
|
|
792
|
-
compile(): CompiledQuery
|
|
792
|
+
compile(): CompiledQuery<O>;
|
|
793
793
|
/**
|
|
794
794
|
* Executes the query and returns an array of rows.
|
|
795
795
|
*
|
|
@@ -827,29 +827,29 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
827
827
|
* explain format=json update `person` set `first_name` = ?, `last_name` = ? where `id` = ?
|
|
828
828
|
* ```
|
|
829
829
|
*/
|
|
830
|
-
explain<ER extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?:
|
|
830
|
+
explain<ER extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: Expression<any>): Promise<ER[]>;
|
|
831
831
|
}
|
|
832
832
|
export interface UpdateQueryBuilderProps {
|
|
833
833
|
readonly queryId: QueryId;
|
|
834
834
|
readonly queryNode: UpdateQueryNode;
|
|
835
835
|
readonly executor: QueryExecutor;
|
|
836
836
|
}
|
|
837
|
-
export declare type UpdateQueryBuilderWithInnerJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? InnerJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? UpdateQueryBuilder<DB, UT, TB | TE, O> : TE extends
|
|
837
|
+
export declare type UpdateQueryBuilderWithInnerJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? InnerJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? UpdateQueryBuilder<DB, UT, TB | TE, O> : TE extends AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, UT, TB, O, QA, QO> : never;
|
|
838
838
|
declare type InnerJoinedBuilder<DB, UT extends keyof DB, TB extends keyof DB, O, A extends string, R> = A extends keyof DB ? UpdateQueryBuilder<InnerJoinedDB<DB, A, R>, UT, TB | A, O> : UpdateQueryBuilder<DB & Record<A, R>, UT, TB | A, O>;
|
|
839
839
|
declare type InnerJoinedDB<DB, A extends string, R> = {
|
|
840
840
|
[C in keyof DB | A]: C extends A ? R : C extends keyof DB ? DB[C] : never;
|
|
841
841
|
};
|
|
842
|
-
export declare type UpdateQueryBuilderWithLeftJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? LeftJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? LeftJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends
|
|
842
|
+
export declare type UpdateQueryBuilderWithLeftJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? LeftJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? LeftJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? LeftJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? LeftJoinedBuilder<DB, UT, TB, O, QA, QO> : never;
|
|
843
843
|
declare type LeftJoinedBuilder<DB, UT extends keyof DB, TB extends keyof DB, O, A extends keyof any, R> = A extends keyof DB ? UpdateQueryBuilder<LeftJoinedDB<DB, A, R>, UT, TB | A, O> : UpdateQueryBuilder<DB & Record<A, Nullable<R>>, UT, TB | A, O>;
|
|
844
844
|
declare type LeftJoinedDB<DB, A extends keyof any, R> = {
|
|
845
845
|
[C in keyof DB | A]: C extends A ? Nullable<R> : C extends keyof DB ? DB[C] : never;
|
|
846
846
|
};
|
|
847
|
-
export declare type UpdateQueryBuilderWithRightJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? RightJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? RightJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends
|
|
847
|
+
export declare type UpdateQueryBuilderWithRightJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? RightJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? RightJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? RightJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? RightJoinedBuilder<DB, UT, TB, O, QA, QO> : never;
|
|
848
848
|
declare type RightJoinedBuilder<DB, UT extends keyof DB, TB extends keyof DB, O, A extends keyof any, R> = UpdateQueryBuilder<RightJoinedDB<DB, TB, A, R>, UT, TB | A, O>;
|
|
849
849
|
declare type RightJoinedDB<DB, TB extends keyof DB, A extends keyof any, R> = {
|
|
850
850
|
[C in keyof DB | A]: C extends A ? R : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
|
|
851
851
|
};
|
|
852
|
-
export declare type UpdateQueryBuilderWithFullJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? OuterJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? OuterJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends
|
|
852
|
+
export declare type UpdateQueryBuilderWithFullJoin<DB, UT extends keyof DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? OuterJoinedBuilder<DB, UT, TB, O, A, DB[T]> : never : TE extends keyof DB ? OuterJoinedBuilder<DB, UT, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? OuterJoinedBuilder<DB, UT, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? OuterJoinedBuilder<DB, UT, TB, O, QA, QO> : never;
|
|
853
853
|
declare type OuterJoinedBuilder<DB, UT extends keyof DB, TB extends keyof DB, O, A extends keyof any, R> = UpdateQueryBuilder<OuterJoinedBuilderDB<DB, TB, A, R>, UT, TB | A, O>;
|
|
854
854
|
declare type OuterJoinedBuilderDB<DB, TB extends keyof DB, A extends keyof any, R> = {
|
|
855
855
|
[C in keyof DB | A]: C extends A ? Nullable<R> : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
|
|
@@ -4,7 +4,6 @@ exports.UpdateQueryBuilder = void 0;
|
|
|
4
4
|
const join_parser_js_1 = require("../parser/join-parser.js");
|
|
5
5
|
const table_parser_js_1 = require("../parser/table-parser.js");
|
|
6
6
|
const select_parser_js_1 = require("../parser/select-parser.js");
|
|
7
|
-
const filter_parser_js_1 = require("../parser/filter-parser.js");
|
|
8
7
|
const query_node_js_1 = require("../operation-node/query-node.js");
|
|
9
8
|
const update_query_node_js_1 = require("../operation-node/update-query-node.js");
|
|
10
9
|
const update_set_parser_js_1 = require("../parser/update-set-parser.js");
|
|
@@ -13,6 +12,8 @@ const object_utils_js_1 = require("../util/object-utils.js");
|
|
|
13
12
|
const update_result_js_1 = require("./update-result.js");
|
|
14
13
|
const no_result_error_js_1 = require("./no-result-error.js");
|
|
15
14
|
const explain_node_js_1 = require("../operation-node/explain-node.js");
|
|
15
|
+
const binary_operation_parser_js_1 = require("../parser/binary-operation-parser.js");
|
|
16
|
+
const unary_operation_parser_js_1 = require("../parser/unary-operation-parser.js");
|
|
16
17
|
class UpdateQueryBuilder {
|
|
17
18
|
#props;
|
|
18
19
|
constructor(props) {
|
|
@@ -21,49 +22,49 @@ class UpdateQueryBuilder {
|
|
|
21
22
|
where(...args) {
|
|
22
23
|
return new UpdateQueryBuilder({
|
|
23
24
|
...this.#props,
|
|
24
|
-
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0,
|
|
25
|
+
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseWhere)(args)),
|
|
25
26
|
});
|
|
26
27
|
}
|
|
27
28
|
whereRef(lhs, op, rhs) {
|
|
28
29
|
return new UpdateQueryBuilder({
|
|
29
30
|
...this.#props,
|
|
30
|
-
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0,
|
|
31
|
+
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseReferentialFilter)(lhs, op, rhs)),
|
|
31
32
|
});
|
|
32
33
|
}
|
|
33
34
|
orWhere(...args) {
|
|
34
35
|
return new UpdateQueryBuilder({
|
|
35
36
|
...this.#props,
|
|
36
|
-
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0,
|
|
37
|
+
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseWhere)(args)),
|
|
37
38
|
});
|
|
38
39
|
}
|
|
39
40
|
orWhereRef(lhs, op, rhs) {
|
|
40
41
|
return new UpdateQueryBuilder({
|
|
41
42
|
...this.#props,
|
|
42
|
-
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0,
|
|
43
|
+
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseReferentialFilter)(lhs, op, rhs)),
|
|
43
44
|
});
|
|
44
45
|
}
|
|
45
46
|
whereExists(arg) {
|
|
46
47
|
return new UpdateQueryBuilder({
|
|
47
48
|
...this.#props,
|
|
48
|
-
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0,
|
|
49
|
+
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, unary_operation_parser_js_1.parseExists)(arg)),
|
|
49
50
|
});
|
|
50
51
|
}
|
|
51
52
|
whereNotExists(arg) {
|
|
52
53
|
return new UpdateQueryBuilder({
|
|
53
54
|
...this.#props,
|
|
54
|
-
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0,
|
|
55
|
+
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, unary_operation_parser_js_1.parseNotExists)(arg)),
|
|
55
56
|
});
|
|
56
57
|
}
|
|
57
58
|
orWhereExists(arg) {
|
|
58
59
|
return new UpdateQueryBuilder({
|
|
59
60
|
...this.#props,
|
|
60
|
-
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0,
|
|
61
|
+
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, unary_operation_parser_js_1.parseExists)(arg)),
|
|
61
62
|
});
|
|
62
63
|
}
|
|
63
64
|
orWhereNotExists(arg) {
|
|
64
65
|
return new UpdateQueryBuilder({
|
|
65
66
|
...this.#props,
|
|
66
|
-
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0,
|
|
67
|
+
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, unary_operation_parser_js_1.parseNotExists)(arg)),
|
|
67
68
|
});
|
|
68
69
|
}
|
|
69
70
|
from(from) {
|
|
@@ -300,15 +301,17 @@ class UpdateQueryBuilder {
|
|
|
300
301
|
* Also see the {@link executeTakeFirst} and {@link executeTakeFirstOrThrow} methods.
|
|
301
302
|
*/
|
|
302
303
|
async execute() {
|
|
303
|
-
const
|
|
304
|
-
const query =
|
|
305
|
-
const result = await this.#props.executor.executeQuery(
|
|
304
|
+
const compiledQuery = this.compile();
|
|
305
|
+
const query = compiledQuery.query;
|
|
306
|
+
const result = await this.#props.executor.executeQuery(compiledQuery, this.#props.queryId);
|
|
306
307
|
if (this.#props.executor.adapter.supportsReturning && query.returning) {
|
|
307
308
|
return result.rows;
|
|
308
309
|
}
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
310
|
+
return [
|
|
311
|
+
new update_result_js_1.UpdateResult(
|
|
312
|
+
// TODO: remove numUpdatedOrDeletedRows.
|
|
313
|
+
(result.numAffectedRows ?? result.numUpdatedOrDeletedRows)),
|
|
314
|
+
];
|
|
312
315
|
}
|
|
313
316
|
/**
|
|
314
317
|
* Executes the query and returns the first result or undefined if
|
|
@@ -353,7 +356,7 @@ class UpdateQueryBuilder {
|
|
|
353
356
|
async explain(format, options) {
|
|
354
357
|
const builder = new UpdateQueryBuilder({
|
|
355
358
|
...this.#props,
|
|
356
|
-
queryNode: update_query_node_js_1.UpdateQueryNode.cloneWithExplain(this.#props.queryNode, explain_node_js_1.ExplainNode.create(format, options)),
|
|
359
|
+
queryNode: update_query_node_js_1.UpdateQueryNode.cloneWithExplain(this.#props.queryNode, explain_node_js_1.ExplainNode.create(format, options?.toOperationNode())),
|
|
357
360
|
});
|
|
358
361
|
return await builder.execute();
|
|
359
362
|
}
|