kysely 0.24.2 → 0.26.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/README.md +31 -567
- package/dist/cjs/dialect/database-introspector.d.ts +1 -1
- package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +2 -1
- package/dist/cjs/dialect/mysql/mysql-driver.js +5 -1
- package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +1 -1
- package/dist/cjs/dialect/postgres/postgres-introspector.js +1 -1
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -1
- package/dist/cjs/driver/database-connection.d.ts +6 -0
- package/dist/cjs/driver/driver.d.ts +1 -1
- package/dist/cjs/driver/runtime-driver.js +6 -6
- package/dist/cjs/dynamic/dynamic.d.ts +1 -1
- package/dist/cjs/dynamic/dynamic.js +1 -1
- package/dist/cjs/expression/expression-builder.d.ts +263 -109
- package/dist/cjs/expression/expression-builder.js +38 -7
- package/dist/cjs/expression/expression-wrapper.d.ts +296 -5
- package/dist/cjs/expression/expression-wrapper.js +70 -2
- package/dist/cjs/helpers/mysql.d.ts +3 -3
- package/dist/cjs/helpers/mysql.js +2 -2
- package/dist/cjs/helpers/postgres.d.ts +31 -19
- package/dist/cjs/helpers/postgres.js +30 -18
- package/dist/cjs/index.d.ts +10 -0
- package/dist/cjs/index.js +10 -0
- package/dist/cjs/kysely.d.ts +42 -15
- package/dist/cjs/kysely.js +41 -10
- package/dist/cjs/migration/file-migration-provider.js +2 -2
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +3 -7
- package/dist/cjs/operation-node/aggregate-function-node.js +1 -1
- package/dist/cjs/operation-node/alter-column-node.d.ts +3 -5
- package/dist/cjs/operation-node/alter-column-node.js +2 -7
- package/dist/cjs/operation-node/alter-table-node.d.ts +3 -3
- package/dist/cjs/operation-node/alter-table-node.js +1 -2
- package/dist/cjs/operation-node/case-node.d.ts +19 -0
- package/dist/cjs/operation-node/case-node.js +42 -0
- package/dist/cjs/operation-node/column-definition-node.d.ts +1 -1
- package/dist/cjs/operation-node/constraint-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-index-node.d.ts +4 -3
- package/dist/cjs/operation-node/create-index-node.js +6 -0
- package/dist/cjs/operation-node/create-schema-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-table-node.d.ts +2 -2
- package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-view-node.d.ts +1 -1
- package/dist/cjs/operation-node/data-type-node.d.ts +2 -2
- package/dist/cjs/operation-node/drop-constraint-node.d.ts +1 -1
- package/dist/cjs/operation-node/drop-index-node.d.ts +1 -1
- package/dist/cjs/operation-node/drop-schema-node.d.ts +1 -1
- package/dist/cjs/operation-node/drop-table-node.d.ts +1 -1
- package/dist/cjs/operation-node/drop-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/drop-view-node.d.ts +1 -1
- package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +1 -1
- package/dist/cjs/operation-node/generated-node.d.ts +1 -1
- package/dist/cjs/operation-node/insert-query-node.d.ts +1 -1
- package/dist/cjs/operation-node/join-node.d.ts +1 -2
- package/dist/cjs/operation-node/join-node.js +0 -8
- package/dist/cjs/operation-node/json-operator-chain-node.d.ts +16 -0
- package/dist/cjs/operation-node/json-operator-chain-node.js +25 -0
- package/dist/cjs/operation-node/json-path-leg-node.d.ts +14 -0
- package/dist/cjs/operation-node/json-path-leg-node.js +19 -0
- package/dist/cjs/operation-node/json-path-node.d.ts +16 -0
- package/dist/cjs/operation-node/json-path-node.js +25 -0
- package/dist/cjs/operation-node/json-reference-node.d.ts +17 -0
- package/dist/cjs/operation-node/json-reference-node.js +25 -0
- package/dist/cjs/operation-node/on-conflict-node.d.ts +1 -1
- package/dist/cjs/operation-node/on-duplicate-key-node.d.ts +1 -1
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +12 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +53 -3
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +12 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +6 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/operator-node.d.ts +13 -9
- package/dist/cjs/operation-node/operator-node.js +12 -2
- package/dist/cjs/operation-node/query-node.d.ts +9 -10
- package/dist/cjs/operation-node/query-node.js +0 -8
- package/dist/cjs/operation-node/reference-node.d.ts +2 -2
- package/dist/cjs/operation-node/reference-node.js +1 -1
- package/dist/cjs/operation-node/references-node.d.ts +1 -1
- package/dist/cjs/operation-node/select-modifier-node.d.ts +1 -1
- package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
- package/dist/cjs/operation-node/select-query-node.js +0 -8
- package/dist/cjs/operation-node/selection-node.d.ts +1 -1
- package/dist/cjs/operation-node/set-operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/simple-reference-expression-node.d.ts +1 -1
- package/dist/cjs/operation-node/update-query-node.d.ts +1 -1
- package/dist/cjs/operation-node/values-node.d.ts +1 -1
- package/dist/cjs/operation-node/when-node.d.ts +14 -0
- package/dist/cjs/operation-node/when-node.js +24 -0
- package/dist/cjs/operation-node/with-node.d.ts +1 -1
- package/dist/cjs/parser/binary-operation-parser.d.ts +9 -11
- package/dist/cjs/parser/binary-operation-parser.js +40 -103
- package/dist/cjs/parser/coalesce-parser.d.ts +1 -1
- package/dist/cjs/parser/data-type-parser.d.ts +1 -1
- package/dist/cjs/parser/default-value-parser.d.ts +1 -1
- package/dist/cjs/parser/expression-parser.d.ts +6 -5
- package/dist/cjs/parser/group-by-parser.d.ts +2 -2
- package/dist/cjs/parser/insert-values-parser.d.ts +4 -4
- package/dist/cjs/parser/join-parser.d.ts +4 -4
- package/dist/cjs/parser/order-by-parser.d.ts +4 -3
- package/dist/cjs/parser/order-by-parser.js +5 -1
- package/dist/cjs/parser/partition-by-parser.d.ts +2 -2
- package/dist/cjs/parser/reference-parser.d.ts +16 -8
- package/dist/cjs/parser/reference-parser.js +43 -16
- package/dist/cjs/parser/returning-parser.d.ts +2 -2
- package/dist/cjs/parser/select-parser.d.ts +9 -9
- package/dist/cjs/parser/table-parser.d.ts +14 -13
- package/dist/cjs/parser/unary-operation-parser.d.ts +1 -1
- package/dist/cjs/parser/update-set-parser.d.ts +3 -3
- package/dist/cjs/parser/update-set-parser.js +1 -3
- package/dist/cjs/parser/value-parser.d.ts +4 -4
- package/dist/cjs/parser/with-parser.d.ts +14 -9
- package/dist/cjs/plugin/camel-case/camel-case.d.ts +1 -1
- package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +42 -0
- package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +32 -0
- package/dist/cjs/plugin/with-schema/with-schema-transformer.js +22 -6
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +5 -38
- package/dist/cjs/query-builder/aggregate-function-builder.js +4 -59
- package/dist/cjs/query-builder/case-builder.d.ts +111 -0
- package/dist/cjs/query-builder/case-builder.js +75 -0
- package/dist/cjs/query-builder/delete-query-builder.d.ts +130 -63
- package/dist/cjs/query-builder/delete-query-builder.js +42 -59
- package/dist/cjs/query-builder/delete-result.d.ts +1 -2
- package/dist/cjs/query-builder/delete-result.js +2 -8
- package/dist/cjs/query-builder/function-module.d.ts +78 -69
- package/dist/cjs/query-builder/function-module.js +12 -16
- package/dist/cjs/query-builder/having-interface.d.ts +2 -35
- package/dist/cjs/query-builder/insert-query-builder.d.ts +99 -47
- package/dist/cjs/query-builder/insert-query-builder.js +57 -26
- package/dist/cjs/query-builder/insert-result.d.ts +3 -4
- package/dist/cjs/query-builder/insert-result.js +5 -14
- package/dist/cjs/query-builder/join-builder.d.ts +2 -35
- package/dist/cjs/query-builder/join-builder.js +1 -56
- package/dist/cjs/query-builder/json-path-builder.d.ts +212 -0
- package/dist/cjs/query-builder/json-path-builder.js +191 -0
- package/dist/cjs/query-builder/no-result-error.d.ts +1 -1
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +144 -73
- package/dist/cjs/query-builder/on-conflict-builder.js +2 -111
- package/dist/cjs/query-builder/over-builder.d.ts +2 -2
- package/dist/cjs/query-builder/over-builder.js +1 -1
- package/dist/cjs/query-builder/returning-interface.d.ts +1 -1
- package/dist/cjs/query-builder/select-query-builder.d.ts +184 -138
- package/dist/cjs/query-builder/select-query-builder.js +64 -130
- package/dist/cjs/query-builder/update-query-builder.d.ts +143 -71
- package/dist/cjs/query-builder/update-query-builder.js +47 -60
- package/dist/cjs/query-builder/update-result.d.ts +3 -3
- package/dist/cjs/query-builder/update-result.js +5 -9
- package/dist/cjs/query-builder/where-interface.d.ts +73 -38
- package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
- package/dist/cjs/query-compiler/compiled-query.js +2 -2
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +12 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +67 -5
- package/dist/cjs/query-compiler/query-compiler.d.ts +1 -1
- package/dist/cjs/query-creator.d.ts +4 -2
- package/dist/cjs/schema/alter-column-builder.d.ts +13 -7
- package/dist/cjs/schema/alter-column-builder.js +20 -22
- package/dist/cjs/schema/alter-table-builder.d.ts +0 -4
- package/dist/cjs/schema/alter-table-builder.js +2 -9
- package/dist/cjs/schema/column-definition-builder.d.ts +1 -1
- package/dist/cjs/schema/column-definition-builder.js +1 -2
- package/dist/cjs/schema/create-index-builder.d.ts +49 -7
- package/dist/cjs/schema/create-index-builder.js +52 -14
- package/dist/cjs/schema/create-table-builder.d.ts +2 -6
- package/dist/cjs/schema/create-table-builder.js +0 -6
- package/dist/cjs/schema/schema.d.ts +1 -2
- package/dist/cjs/schema/schema.js +2 -3
- package/dist/cjs/util/column-type.d.ts +21 -16
- package/dist/cjs/util/explainable.d.ts +1 -1
- package/dist/cjs/util/infer-result.d.ts +2 -2
- package/dist/cjs/util/log.d.ts +6 -6
- package/dist/cjs/util/log.js +4 -4
- package/dist/cjs/util/object-utils.d.ts +2 -1
- package/dist/cjs/util/require-all-props.d.ts +1 -1
- package/dist/cjs/util/type-utils.d.ts +54 -40
- package/dist/esm/dialect/database-introspector.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +2 -1
- package/dist/esm/dialect/mysql/mysql-driver.js +5 -1
- package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +1 -1
- package/dist/esm/dialect/postgres/postgres-introspector.js +1 -1
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -1
- package/dist/esm/driver/database-connection.d.ts +6 -0
- package/dist/esm/driver/driver.d.ts +1 -1
- package/dist/esm/driver/runtime-driver.js +6 -6
- package/dist/esm/dynamic/dynamic.d.ts +1 -1
- package/dist/esm/dynamic/dynamic.js +1 -1
- package/dist/esm/expression/expression-builder.d.ts +263 -109
- package/dist/esm/expression/expression-builder.js +40 -9
- package/dist/esm/expression/expression-wrapper.d.ts +296 -5
- package/dist/esm/expression/expression-wrapper.js +67 -1
- package/dist/esm/helpers/mysql.d.ts +3 -3
- package/dist/esm/helpers/mysql.js +2 -2
- package/dist/esm/helpers/postgres.d.ts +31 -19
- package/dist/esm/helpers/postgres.js +30 -18
- package/dist/esm/index.d.ts +10 -0
- package/dist/esm/index.js +10 -0
- package/dist/esm/kysely.d.ts +42 -15
- package/dist/esm/kysely.js +42 -11
- package/dist/esm/operation-node/aggregate-function-node.d.ts +3 -7
- package/dist/esm/operation-node/aggregate-function-node.js +1 -1
- package/dist/esm/operation-node/alter-column-node.d.ts +3 -5
- package/dist/esm/operation-node/alter-column-node.js +2 -7
- package/dist/esm/operation-node/alter-table-node.d.ts +3 -3
- package/dist/esm/operation-node/alter-table-node.js +1 -2
- package/dist/esm/operation-node/case-node.d.ts +19 -0
- package/dist/esm/operation-node/case-node.js +40 -0
- package/dist/esm/operation-node/column-definition-node.d.ts +1 -1
- package/dist/esm/operation-node/constraint-node.d.ts +1 -1
- package/dist/esm/operation-node/create-index-node.d.ts +4 -3
- package/dist/esm/operation-node/create-index-node.js +6 -0
- package/dist/esm/operation-node/create-schema-node.d.ts +1 -1
- package/dist/esm/operation-node/create-table-node.d.ts +2 -2
- package/dist/esm/operation-node/create-type-node.d.ts +1 -1
- package/dist/esm/operation-node/create-view-node.d.ts +1 -1
- package/dist/esm/operation-node/data-type-node.d.ts +2 -2
- package/dist/esm/operation-node/drop-constraint-node.d.ts +1 -1
- package/dist/esm/operation-node/drop-index-node.d.ts +1 -1
- package/dist/esm/operation-node/drop-schema-node.d.ts +1 -1
- package/dist/esm/operation-node/drop-table-node.d.ts +1 -1
- package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
- package/dist/esm/operation-node/drop-view-node.d.ts +1 -1
- package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +1 -1
- package/dist/esm/operation-node/generated-node.d.ts +1 -1
- package/dist/esm/operation-node/insert-query-node.d.ts +1 -1
- package/dist/esm/operation-node/join-node.d.ts +1 -2
- package/dist/esm/operation-node/join-node.js +0 -8
- package/dist/esm/operation-node/json-operator-chain-node.d.ts +16 -0
- package/dist/esm/operation-node/json-operator-chain-node.js +23 -0
- package/dist/esm/operation-node/json-path-leg-node.d.ts +14 -0
- package/dist/esm/operation-node/json-path-leg-node.js +17 -0
- package/dist/esm/operation-node/json-path-node.d.ts +16 -0
- package/dist/esm/operation-node/json-path-node.js +23 -0
- package/dist/esm/operation-node/json-reference-node.d.ts +17 -0
- package/dist/esm/operation-node/json-reference-node.js +23 -0
- package/dist/esm/operation-node/on-conflict-node.d.ts +1 -1
- package/dist/esm/operation-node/on-duplicate-key-node.d.ts +1 -1
- package/dist/esm/operation-node/operation-node-transformer.d.ts +12 -0
- package/dist/esm/operation-node/operation-node-transformer.js +53 -3
- package/dist/esm/operation-node/operation-node-visitor.d.ts +12 -0
- package/dist/esm/operation-node/operation-node-visitor.js +6 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/operator-node.d.ts +13 -9
- package/dist/esm/operation-node/operator-node.js +10 -1
- package/dist/esm/operation-node/query-node.d.ts +9 -10
- package/dist/esm/operation-node/query-node.js +0 -8
- package/dist/esm/operation-node/reference-node.d.ts +2 -2
- package/dist/esm/operation-node/reference-node.js +1 -1
- package/dist/esm/operation-node/references-node.d.ts +1 -1
- package/dist/esm/operation-node/select-modifier-node.d.ts +1 -1
- package/dist/esm/operation-node/select-query-node.d.ts +0 -1
- package/dist/esm/operation-node/select-query-node.js +0 -8
- package/dist/esm/operation-node/selection-node.d.ts +1 -1
- package/dist/esm/operation-node/set-operation-node.d.ts +1 -1
- package/dist/esm/operation-node/simple-reference-expression-node.d.ts +1 -1
- package/dist/esm/operation-node/update-query-node.d.ts +1 -1
- package/dist/esm/operation-node/values-node.d.ts +1 -1
- package/dist/esm/operation-node/when-node.d.ts +14 -0
- package/dist/esm/operation-node/when-node.js +22 -0
- package/dist/esm/operation-node/with-node.d.ts +1 -1
- package/dist/esm/parser/binary-operation-parser.d.ts +9 -11
- package/dist/esm/parser/binary-operation-parser.js +38 -99
- package/dist/esm/parser/coalesce-parser.d.ts +1 -1
- package/dist/esm/parser/data-type-parser.d.ts +1 -1
- package/dist/esm/parser/default-value-parser.d.ts +1 -1
- package/dist/esm/parser/expression-parser.d.ts +6 -5
- package/dist/esm/parser/group-by-parser.d.ts +2 -2
- package/dist/esm/parser/insert-values-parser.d.ts +4 -4
- package/dist/esm/parser/join-parser.d.ts +4 -4
- package/dist/esm/parser/order-by-parser.d.ts +4 -3
- package/dist/esm/parser/order-by-parser.js +3 -0
- package/dist/esm/parser/partition-by-parser.d.ts +2 -2
- package/dist/esm/parser/reference-parser.d.ts +16 -8
- package/dist/esm/parser/reference-parser.js +40 -15
- package/dist/esm/parser/returning-parser.d.ts +2 -2
- package/dist/esm/parser/select-parser.d.ts +9 -9
- package/dist/esm/parser/table-parser.d.ts +14 -13
- package/dist/esm/parser/unary-operation-parser.d.ts +1 -1
- package/dist/esm/parser/update-set-parser.d.ts +3 -3
- package/dist/esm/parser/update-set-parser.js +2 -4
- package/dist/esm/parser/value-parser.d.ts +4 -4
- package/dist/esm/parser/with-parser.d.ts +14 -9
- package/dist/esm/plugin/camel-case/camel-case.d.ts +1 -1
- package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +42 -0
- package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +29 -0
- package/dist/esm/plugin/with-schema/with-schema-transformer.js +22 -6
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +5 -38
- package/dist/esm/query-builder/aggregate-function-builder.js +5 -60
- package/dist/esm/query-builder/case-builder.d.ts +111 -0
- package/dist/esm/query-builder/case-builder.js +69 -0
- package/dist/esm/query-builder/delete-query-builder.d.ts +130 -63
- package/dist/esm/query-builder/delete-query-builder.js +43 -60
- package/dist/esm/query-builder/delete-result.d.ts +1 -2
- package/dist/esm/query-builder/delete-result.js +2 -8
- package/dist/esm/query-builder/function-module.d.ts +78 -69
- package/dist/esm/query-builder/function-module.js +13 -17
- package/dist/esm/query-builder/having-interface.d.ts +2 -35
- package/dist/esm/query-builder/insert-query-builder.d.ts +99 -47
- package/dist/esm/query-builder/insert-query-builder.js +57 -26
- package/dist/esm/query-builder/insert-result.d.ts +3 -4
- package/dist/esm/query-builder/insert-result.js +5 -14
- package/dist/esm/query-builder/join-builder.d.ts +2 -35
- package/dist/esm/query-builder/join-builder.js +2 -57
- package/dist/esm/query-builder/json-path-builder.d.ts +212 -0
- package/dist/esm/query-builder/json-path-builder.js +186 -0
- package/dist/esm/query-builder/no-result-error.d.ts +1 -1
- package/dist/esm/query-builder/on-conflict-builder.d.ts +144 -73
- package/dist/esm/query-builder/on-conflict-builder.js +3 -112
- package/dist/esm/query-builder/over-builder.d.ts +2 -2
- package/dist/esm/query-builder/over-builder.js +1 -1
- package/dist/esm/query-builder/returning-interface.d.ts +1 -1
- package/dist/esm/query-builder/select-query-builder.d.ts +184 -138
- package/dist/esm/query-builder/select-query-builder.js +65 -131
- package/dist/esm/query-builder/update-query-builder.d.ts +143 -71
- package/dist/esm/query-builder/update-query-builder.js +48 -61
- package/dist/esm/query-builder/update-result.d.ts +3 -3
- package/dist/esm/query-builder/update-result.js +5 -9
- package/dist/esm/query-builder/where-interface.d.ts +73 -38
- package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
- package/dist/esm/query-compiler/compiled-query.js +2 -2
- package/dist/esm/query-compiler/default-query-compiler.d.ts +12 -0
- package/dist/esm/query-compiler/default-query-compiler.js +67 -5
- package/dist/esm/query-compiler/query-compiler.d.ts +1 -1
- package/dist/esm/query-creator.d.ts +4 -2
- package/dist/esm/schema/alter-column-builder.d.ts +13 -7
- package/dist/esm/schema/alter-column-builder.js +20 -22
- package/dist/esm/schema/alter-table-builder.d.ts +0 -4
- package/dist/esm/schema/alter-table-builder.js +2 -9
- package/dist/esm/schema/column-definition-builder.d.ts +1 -1
- package/dist/esm/schema/column-definition-builder.js +1 -2
- package/dist/esm/schema/create-index-builder.d.ts +49 -7
- package/dist/esm/schema/create-index-builder.js +54 -16
- package/dist/esm/schema/create-table-builder.d.ts +2 -6
- package/dist/esm/schema/create-table-builder.js +0 -6
- package/dist/esm/schema/schema.d.ts +1 -2
- package/dist/esm/schema/schema.js +2 -3
- package/dist/esm/util/column-type.d.ts +21 -16
- package/dist/esm/util/explainable.d.ts +1 -1
- package/dist/esm/util/infer-result.d.ts +2 -2
- package/dist/esm/util/log.d.ts +6 -6
- package/dist/esm/util/log.js +4 -4
- package/dist/esm/util/object-utils.d.ts +2 -1
- package/dist/esm/util/require-all-props.d.ts +1 -1
- package/dist/esm/util/type-utils.d.ts +54 -40
- package/package.json +25 -23
- package/dist/cjs/query-builder/deprecated-having-expression-builder.d.ts +0 -62
- package/dist/cjs/query-builder/deprecated-having-expression-builder.js +0 -2
- package/dist/cjs/query-builder/deprecated-on-expression-builder.d.ts +0 -62
- package/dist/cjs/query-builder/deprecated-on-expression-builder.js +0 -2
- package/dist/cjs/query-builder/deprecated-where-expression-builder.d.ts +0 -62
- package/dist/cjs/query-builder/deprecated-where-expression-builder.js +0 -2
- package/dist/esm/query-builder/deprecated-having-expression-builder.d.ts +0 -62
- package/dist/esm/query-builder/deprecated-having-expression-builder.js +0 -2
- package/dist/esm/query-builder/deprecated-on-expression-builder.d.ts +0 -62
- package/dist/esm/query-builder/deprecated-on-expression-builder.js +0 -2
- package/dist/esm/query-builder/deprecated-where-expression-builder.d.ts +0 -62
- package/dist/esm/query-builder/deprecated-where-expression-builder.js +0 -2
|
@@ -6,7 +6,7 @@ import { SelectExpression, SelectArg } from '../parser/select-parser.js';
|
|
|
6
6
|
import { ReturningRow } from '../parser/returning-parser.js';
|
|
7
7
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
8
8
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
9
|
-
import {
|
|
9
|
+
import { DrainOuterGeneric, NarrowPartial, Nullable, ShallowRecord, SimplifyResult, SimplifySingleResult } from '../util/type-utils.js';
|
|
10
10
|
import { UpdateQueryNode } from '../operation-node/update-query-node.js';
|
|
11
11
|
import { UpdateObject, UpdateObjectFactory } from '../parser/update-set-parser.js';
|
|
12
12
|
import { Compilable } from '../util/compilable.js';
|
|
@@ -21,7 +21,6 @@ import { Selectable } from '../util/column-type.js';
|
|
|
21
21
|
import { Explainable, ExplainFormat } from '../util/explainable.js';
|
|
22
22
|
import { AliasedExpression, Expression } from '../expression/expression.js';
|
|
23
23
|
import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
|
|
24
|
-
import { ExistsExpression } from '../parser/unary-operation-parser.js';
|
|
25
24
|
import { KyselyTypeError } from '../util/type-error.js';
|
|
26
25
|
import { Streamable } from '../util/streamable.js';
|
|
27
26
|
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, Streamable<O> {
|
|
@@ -36,6 +35,10 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
36
35
|
*
|
|
37
36
|
* ### Examples
|
|
38
37
|
*
|
|
38
|
+
* <!-- siteExample("where", "Simple where clause", 10) -->
|
|
39
|
+
*
|
|
40
|
+
* `where` method calls are combined with `AND`:
|
|
41
|
+
*
|
|
39
42
|
* ```ts
|
|
40
43
|
* const person = await db
|
|
41
44
|
* .selectFrom('person')
|
|
@@ -58,9 +61,65 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
58
61
|
* sql`your operator`
|
|
59
62
|
* ```
|
|
60
63
|
*
|
|
64
|
+
* <!-- siteExample("where", "Where in", 20) -->
|
|
65
|
+
*
|
|
66
|
+
* Find multiple items using a list of identifiers:
|
|
67
|
+
*
|
|
68
|
+
* ```ts
|
|
69
|
+
* const persons = await db
|
|
70
|
+
* .selectFrom('person')
|
|
71
|
+
* .selectAll()
|
|
72
|
+
* .where('id', 'in', ['1', '2', '3'])
|
|
73
|
+
* .execute()
|
|
74
|
+
* ```
|
|
75
|
+
*
|
|
76
|
+
* The generated SQL (PostgreSQL):
|
|
77
|
+
*
|
|
78
|
+
* ```sql
|
|
79
|
+
* select * from "person" where "id" in ($1, $2, $3)
|
|
80
|
+
* ```
|
|
81
|
+
*
|
|
82
|
+
* <!-- siteExample("where", "OR where", 30) -->
|
|
83
|
+
*
|
|
84
|
+
* To combine conditions using `OR`, you can use the expression builder:
|
|
85
|
+
*
|
|
86
|
+
* ```ts
|
|
87
|
+
* const persons = await db
|
|
88
|
+
* .selectFrom('person')
|
|
89
|
+
* .selectAll()
|
|
90
|
+
* .where(({ or, and, cmpr }) => or([
|
|
91
|
+
* and([
|
|
92
|
+
* cmpr('first_name', '=', 'Jennifer'),
|
|
93
|
+
* cmpr('last_name', '=', 'Aniston')
|
|
94
|
+
* ]),
|
|
95
|
+
* and([
|
|
96
|
+
* cmpr('first_name', '=', 'Sylvester'),
|
|
97
|
+
* cmpr('last_name', '=', 'Stallone')
|
|
98
|
+
* ])
|
|
99
|
+
* ]))
|
|
100
|
+
* .execute()
|
|
101
|
+
* ```
|
|
102
|
+
*
|
|
103
|
+
* The generated SQL (PostgreSQL):
|
|
104
|
+
*
|
|
105
|
+
* ```sql
|
|
106
|
+
* select *
|
|
107
|
+
* from "person"
|
|
108
|
+
* where (
|
|
109
|
+
* ("first_name" = $1 AND "last_name" = $2)
|
|
110
|
+
* OR
|
|
111
|
+
* ("first_name" = $3 AND "last_name" = $4)
|
|
112
|
+
* )
|
|
113
|
+
* ```
|
|
114
|
+
*
|
|
115
|
+
* <!-- siteExample("where", "Conditional where calls", 40) -->
|
|
116
|
+
*
|
|
61
117
|
* You can add expressions conditionally like this:
|
|
62
118
|
*
|
|
63
119
|
* ```ts
|
|
120
|
+
* const firstName: string | undefined = 'Jennifer'
|
|
121
|
+
* const lastName: string | undefined = 'Aniston'
|
|
122
|
+
*
|
|
64
123
|
* let query = db
|
|
65
124
|
* .selectFrom('person')
|
|
66
125
|
* .selectAll()
|
|
@@ -127,22 +186,30 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
127
186
|
* select * from "person" where "id" in ($1, $2, $3)
|
|
128
187
|
* ```
|
|
129
188
|
*
|
|
189
|
+
* <!-- siteExample("where", "Complex where clause", 50) -->
|
|
190
|
+
*
|
|
130
191
|
* For complex `where` expressions you can pass in a single callback and
|
|
131
|
-
* use the
|
|
192
|
+
* use the `ExpressionBuilder` to build your expression:
|
|
132
193
|
*
|
|
133
194
|
* ```ts
|
|
195
|
+
* const firstName = 'Jennifer'
|
|
196
|
+
* const maxAge = 60
|
|
197
|
+
*
|
|
134
198
|
* const persons = await db
|
|
135
199
|
* .selectFrom('person')
|
|
136
200
|
* .selectAll('person')
|
|
137
|
-
* .where(({ cmpr, or, and, not, exists, selectFrom
|
|
201
|
+
* .where(({ cmpr, or, and, not, exists, selectFrom }) => and([
|
|
138
202
|
* or([
|
|
139
203
|
* cmpr('first_name', '=', firstName),
|
|
140
204
|
* cmpr('age', '<', maxAge)
|
|
141
205
|
* ]),
|
|
142
206
|
* not(exists(
|
|
143
|
-
* selectFrom('pet')
|
|
207
|
+
* selectFrom('pet')
|
|
208
|
+
* .select('pet.id')
|
|
209
|
+
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
144
210
|
* ))
|
|
145
211
|
* ]))
|
|
212
|
+
* .execute()
|
|
146
213
|
* ```
|
|
147
214
|
*
|
|
148
215
|
* The generated SQL (PostgreSQL):
|
|
@@ -263,32 +330,6 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
263
330
|
* from "person"
|
|
264
331
|
*/
|
|
265
332
|
whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
266
|
-
/**
|
|
267
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
268
|
-
*/
|
|
269
|
-
orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
270
|
-
orWhere(factory: WhereExpressionFactory<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
271
|
-
orWhere(expression: Expression<any>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
272
|
-
/**
|
|
273
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
274
|
-
*/
|
|
275
|
-
orWhereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
276
|
-
/**
|
|
277
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
278
|
-
*/
|
|
279
|
-
whereExists(arg: ExistsExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
280
|
-
/**
|
|
281
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
282
|
-
*/
|
|
283
|
-
whereNotExists(arg: ExistsExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
284
|
-
/**
|
|
285
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
286
|
-
*/
|
|
287
|
-
orWhereExists(arg: ExistsExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
288
|
-
/**
|
|
289
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
290
|
-
*/
|
|
291
|
-
orWhereNotExists(arg: ExistsExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
292
333
|
/**
|
|
293
334
|
* Clears all where expressions from the query.
|
|
294
335
|
*
|
|
@@ -480,6 +521,8 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
480
521
|
*
|
|
481
522
|
* ### Examples
|
|
482
523
|
*
|
|
524
|
+
* <!-- siteExample("update", "Single row", 10) -->
|
|
525
|
+
*
|
|
483
526
|
* Update a row in `person` table:
|
|
484
527
|
*
|
|
485
528
|
* ```ts
|
|
@@ -489,7 +532,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
489
532
|
* first_name: 'Jennifer',
|
|
490
533
|
* last_name: 'Aniston'
|
|
491
534
|
* })
|
|
492
|
-
* .where('id', '=', 1)
|
|
535
|
+
* .where('id', '=', '1')
|
|
493
536
|
* .executeTakeFirst()
|
|
494
537
|
*
|
|
495
538
|
* console.log(result.numUpdatedRows)
|
|
@@ -533,10 +576,10 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
533
576
|
*
|
|
534
577
|
* const result = await db
|
|
535
578
|
* .updateTable('person')
|
|
536
|
-
* .set(({ selectFrom, ref, fn }) => ({
|
|
537
|
-
* first_name: '
|
|
579
|
+
* .set(({ selectFrom, ref, fn, eb }) => ({
|
|
580
|
+
* first_name: selectFrom('person').select('first_name').limit(1),
|
|
538
581
|
* middle_name: ref('first_name'),
|
|
539
|
-
* age:
|
|
582
|
+
* age: eb('age', '+', 1),
|
|
540
583
|
* last_name: sql`${'Ani'} || ${'ston'}`,
|
|
541
584
|
* }))
|
|
542
585
|
* .where('id', '=', 1)
|
|
@@ -549,11 +592,11 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
549
592
|
*
|
|
550
593
|
* ```sql
|
|
551
594
|
* update "person" set
|
|
552
|
-
* "first_name" = $1,
|
|
595
|
+
* "first_name" = (select "first_name" from "person" limit $1),
|
|
553
596
|
* "middle_name" = "first_name",
|
|
554
|
-
* "age" =
|
|
555
|
-
* "last_name" = $
|
|
556
|
-
* where "id" = $
|
|
597
|
+
* "age" = "age" + $2,
|
|
598
|
+
* "last_name" = $3 || $4
|
|
599
|
+
* where "id" = $5
|
|
557
600
|
* ```
|
|
558
601
|
*/
|
|
559
602
|
set(update: UpdateObject<DB, TB, UT>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
@@ -609,7 +652,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
609
652
|
* first_name: 'Jennifer',
|
|
610
653
|
* last_name: 'Aniston'
|
|
611
654
|
* })
|
|
612
|
-
* .returning(eb => [
|
|
655
|
+
* .returning((eb) => [
|
|
613
656
|
* 'id as id',
|
|
614
657
|
* sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
|
|
615
658
|
* eb.selectFrom('pets').select('pet.id').limit(1).as('first_pet_id')
|
|
@@ -647,10 +690,6 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
647
690
|
* ```
|
|
648
691
|
*/
|
|
649
692
|
$call<T>(func: (qb: this) => T): T;
|
|
650
|
-
/**
|
|
651
|
-
* @deprecated Use `$call` instead
|
|
652
|
-
*/
|
|
653
|
-
call<T>(func: (qb: this) => T): T;
|
|
654
693
|
/**
|
|
655
694
|
* Call `func(this)` if `condition` is true.
|
|
656
695
|
*
|
|
@@ -687,11 +726,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
687
726
|
* }
|
|
688
727
|
* ```
|
|
689
728
|
*/
|
|
690
|
-
$if<O2>(condition: boolean, func: (qb: this) => UpdateQueryBuilder<DB, UT, TB, O2>): UpdateQueryBuilder<DB, UT, TB, O2 extends
|
|
691
|
-
/**
|
|
692
|
-
* @deprecated Use `$if` instead
|
|
693
|
-
*/
|
|
694
|
-
if<O2>(condition: boolean, func: (qb: this) => UpdateQueryBuilder<DB, UT, TB, O2>): UpdateQueryBuilder<DB, UT, TB, O2 extends UpdateResult ? UpdateResult : O extends UpdateResult ? Partial<O2> : MergePartial<O, O2>>;
|
|
729
|
+
$if<O2>(condition: boolean, func: (qb: this) => UpdateQueryBuilder<DB, UT, TB, O2>): O2 extends UpdateResult ? UpdateQueryBuilder<DB, UT, TB, UpdateResult> : O2 extends O & infer E ? UpdateQueryBuilder<DB, UT, TB, O & Partial<E>> : UpdateQueryBuilder<DB, UT, TB, Partial<O2>>;
|
|
695
730
|
/**
|
|
696
731
|
* Change the output type of the query.
|
|
697
732
|
*
|
|
@@ -700,9 +735,50 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
700
735
|
*/
|
|
701
736
|
$castTo<T>(): UpdateQueryBuilder<DB, UT, TB, T>;
|
|
702
737
|
/**
|
|
703
|
-
*
|
|
738
|
+
* Narrows (parts of) the output type of the query.
|
|
739
|
+
*
|
|
740
|
+
* Kysely tries to be as type-safe as possible, but in some cases we have to make
|
|
741
|
+
* compromises for better maintainability and compilation performance. At present,
|
|
742
|
+
* Kysely doesn't narrow the output type of the query based on {@link set} input
|
|
743
|
+
* when using {@link where} and/or {@link returning} or {@link returningAll}.
|
|
744
|
+
*
|
|
745
|
+
* This utility method is very useful for these situations, as it removes unncessary
|
|
746
|
+
* runtime assertion/guard code. Its input type is limited to the output type
|
|
747
|
+
* of the query, so you can't add a column that doesn't exist, or change a column's
|
|
748
|
+
* type to something that doesn't exist in its union type.
|
|
749
|
+
*
|
|
750
|
+
* ### Examples
|
|
751
|
+
*
|
|
752
|
+
* Turn this code:
|
|
753
|
+
*
|
|
754
|
+
* ```ts
|
|
755
|
+
* const person = await db.updateTable('person')
|
|
756
|
+
* .set({ deletedAt: now })
|
|
757
|
+
* .where('id', '=', id)
|
|
758
|
+
* .where('nullable_column', 'is not', null)
|
|
759
|
+
* .returningAll()
|
|
760
|
+
* .executeTakeFirstOrThrow()
|
|
761
|
+
*
|
|
762
|
+
* if (person.nullable_column) {
|
|
763
|
+
* functionThatExpectsPersonWithNonNullValue(person)
|
|
764
|
+
* }
|
|
765
|
+
* ```
|
|
766
|
+
*
|
|
767
|
+
* Into this:
|
|
768
|
+
*
|
|
769
|
+
* ```ts
|
|
770
|
+
* const person = await db.updateTable('person')
|
|
771
|
+
* .set({ deletedAt: now })
|
|
772
|
+
* .where('id', '=', id)
|
|
773
|
+
* .where('nullable_column', 'is not', null)
|
|
774
|
+
* .returningAll()
|
|
775
|
+
* .$narrowType<{ deletedAt: Date; nullable_column: string }>()
|
|
776
|
+
* .executeTakeFirstOrThrow()
|
|
777
|
+
*
|
|
778
|
+
* functionThatExpectsPersonWithNonNullValue(person)
|
|
779
|
+
* ```
|
|
704
780
|
*/
|
|
705
|
-
|
|
781
|
+
$narrowType<T>(): UpdateQueryBuilder<DB, UT, TB, NarrowPartial<O, T>>;
|
|
706
782
|
/**
|
|
707
783
|
* Asserts that query's output row type equals the given type `T`.
|
|
708
784
|
*
|
|
@@ -747,10 +823,6 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
747
823
|
* ```
|
|
748
824
|
*/
|
|
749
825
|
$assertType<T extends O>(): O extends T ? UpdateQueryBuilder<DB, UT, TB, T> : KyselyTypeError<`$assertType() call failed: The type passed in is not equal to the output type of the query.`>;
|
|
750
|
-
/**
|
|
751
|
-
* @deprecated Use `$assertType` instead.
|
|
752
|
-
*/
|
|
753
|
-
assertType<T extends O>(): O extends T ? UpdateQueryBuilder<DB, UT, TB, T> : KyselyTypeError<`assertType() call failed: The type passed in is not equal to the output type of the query.`>;
|
|
754
826
|
/**
|
|
755
827
|
* Returns a copy of this UpdateQueryBuilder instance with the given plugin installed.
|
|
756
828
|
*/
|
|
@@ -846,24 +918,24 @@ export interface UpdateQueryBuilderProps {
|
|
|
846
918
|
readonly queryNode: UpdateQueryNode;
|
|
847
919
|
readonly executor: QueryExecutor;
|
|
848
920
|
}
|
|
849
|
-
export
|
|
850
|
-
|
|
851
|
-
|
|
921
|
+
export 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;
|
|
922
|
+
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 & ShallowRecord<A, R>, UT, TB | A, O>;
|
|
923
|
+
type InnerJoinedDB<DB, A extends string, R> = DrainOuterGeneric<{
|
|
852
924
|
[C in keyof DB | A]: C extends A ? R : C extends keyof DB ? DB[C] : never;
|
|
853
|
-
}
|
|
854
|
-
export
|
|
855
|
-
|
|
856
|
-
|
|
925
|
+
}>;
|
|
926
|
+
export 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;
|
|
927
|
+
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 & ShallowRecord<A, Nullable<R>>, UT, TB | A, O>;
|
|
928
|
+
type LeftJoinedDB<DB, A extends keyof any, R> = DrainOuterGeneric<{
|
|
857
929
|
[C in keyof DB | A]: C extends A ? Nullable<R> : C extends keyof DB ? DB[C] : never;
|
|
858
|
-
}
|
|
859
|
-
export
|
|
860
|
-
|
|
861
|
-
|
|
930
|
+
}>;
|
|
931
|
+
export 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;
|
|
932
|
+
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>;
|
|
933
|
+
type RightJoinedDB<DB, TB extends keyof DB, A extends keyof any, R> = DrainOuterGeneric<{
|
|
862
934
|
[C in keyof DB | A]: C extends A ? R : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
|
|
863
|
-
}
|
|
864
|
-
export
|
|
865
|
-
|
|
866
|
-
|
|
935
|
+
}>;
|
|
936
|
+
export 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;
|
|
937
|
+
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>;
|
|
938
|
+
type OuterJoinedBuilderDB<DB, TB extends keyof DB, A extends keyof any, R> = DrainOuterGeneric<{
|
|
867
939
|
[C in keyof DB | A]: C extends A ? Nullable<R> : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
|
|
868
|
-
}
|
|
940
|
+
}>;
|
|
869
941
|
export {};
|
|
@@ -12,7 +12,6 @@ const object_utils_js_1 = require("../util/object-utils.js");
|
|
|
12
12
|
const update_result_js_1 = require("./update-result.js");
|
|
13
13
|
const no_result_error_js_1 = require("./no-result-error.js");
|
|
14
14
|
const binary_operation_parser_js_1 = require("../parser/binary-operation-parser.js");
|
|
15
|
-
const unary_operation_parser_js_1 = require("../parser/unary-operation-parser.js");
|
|
16
15
|
class UpdateQueryBuilder {
|
|
17
16
|
#props;
|
|
18
17
|
constructor(props) {
|
|
@@ -21,7 +20,7 @@ class UpdateQueryBuilder {
|
|
|
21
20
|
where(...args) {
|
|
22
21
|
return new UpdateQueryBuilder({
|
|
23
22
|
...this.#props,
|
|
24
|
-
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.
|
|
23
|
+
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseFilter)(args)),
|
|
25
24
|
});
|
|
26
25
|
}
|
|
27
26
|
whereRef(lhs, op, rhs) {
|
|
@@ -30,42 +29,6 @@ class UpdateQueryBuilder {
|
|
|
30
29
|
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseReferentialComparison)(lhs, op, rhs)),
|
|
31
30
|
});
|
|
32
31
|
}
|
|
33
|
-
orWhere(...args) {
|
|
34
|
-
return new UpdateQueryBuilder({
|
|
35
|
-
...this.#props,
|
|
36
|
-
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseWhere)(args)),
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
orWhereRef(lhs, op, rhs) {
|
|
40
|
-
return new UpdateQueryBuilder({
|
|
41
|
-
...this.#props,
|
|
42
|
-
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, binary_operation_parser_js_1.parseReferentialComparison)(lhs, op, rhs)),
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
whereExists(arg) {
|
|
46
|
-
return new UpdateQueryBuilder({
|
|
47
|
-
...this.#props,
|
|
48
|
-
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, unary_operation_parser_js_1.parseExists)(arg)),
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
whereNotExists(arg) {
|
|
52
|
-
return new UpdateQueryBuilder({
|
|
53
|
-
...this.#props,
|
|
54
|
-
queryNode: query_node_js_1.QueryNode.cloneWithWhere(this.#props.queryNode, (0, unary_operation_parser_js_1.parseNotExists)(arg)),
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
orWhereExists(arg) {
|
|
58
|
-
return new UpdateQueryBuilder({
|
|
59
|
-
...this.#props,
|
|
60
|
-
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, unary_operation_parser_js_1.parseExists)(arg)),
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
orWhereNotExists(arg) {
|
|
64
|
-
return new UpdateQueryBuilder({
|
|
65
|
-
...this.#props,
|
|
66
|
-
queryNode: query_node_js_1.QueryNode.cloneWithOrWhere(this.#props.queryNode, (0, unary_operation_parser_js_1.parseNotExists)(arg)),
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
32
|
clearWhere() {
|
|
70
33
|
return new UpdateQueryBuilder({
|
|
71
34
|
...this.#props,
|
|
@@ -146,12 +109,6 @@ class UpdateQueryBuilder {
|
|
|
146
109
|
$call(func) {
|
|
147
110
|
return func(this);
|
|
148
111
|
}
|
|
149
|
-
/**
|
|
150
|
-
* @deprecated Use `$call` instead
|
|
151
|
-
*/
|
|
152
|
-
call(func) {
|
|
153
|
-
return this.$call(func);
|
|
154
|
-
}
|
|
155
112
|
/**
|
|
156
113
|
* Call `func(this)` if `condition` is true.
|
|
157
114
|
*
|
|
@@ -196,12 +153,6 @@ class UpdateQueryBuilder {
|
|
|
196
153
|
...this.#props,
|
|
197
154
|
});
|
|
198
155
|
}
|
|
199
|
-
/**
|
|
200
|
-
* @deprecated Use `$if` instead
|
|
201
|
-
*/
|
|
202
|
-
if(condition, func) {
|
|
203
|
-
return this.$if(condition, func);
|
|
204
|
-
}
|
|
205
156
|
/**
|
|
206
157
|
* Change the output type of the query.
|
|
207
158
|
*
|
|
@@ -212,10 +163,51 @@ class UpdateQueryBuilder {
|
|
|
212
163
|
return new UpdateQueryBuilder(this.#props);
|
|
213
164
|
}
|
|
214
165
|
/**
|
|
215
|
-
*
|
|
166
|
+
* Narrows (parts of) the output type of the query.
|
|
167
|
+
*
|
|
168
|
+
* Kysely tries to be as type-safe as possible, but in some cases we have to make
|
|
169
|
+
* compromises for better maintainability and compilation performance. At present,
|
|
170
|
+
* Kysely doesn't narrow the output type of the query based on {@link set} input
|
|
171
|
+
* when using {@link where} and/or {@link returning} or {@link returningAll}.
|
|
172
|
+
*
|
|
173
|
+
* This utility method is very useful for these situations, as it removes unncessary
|
|
174
|
+
* runtime assertion/guard code. Its input type is limited to the output type
|
|
175
|
+
* of the query, so you can't add a column that doesn't exist, or change a column's
|
|
176
|
+
* type to something that doesn't exist in its union type.
|
|
177
|
+
*
|
|
178
|
+
* ### Examples
|
|
179
|
+
*
|
|
180
|
+
* Turn this code:
|
|
181
|
+
*
|
|
182
|
+
* ```ts
|
|
183
|
+
* const person = await db.updateTable('person')
|
|
184
|
+
* .set({ deletedAt: now })
|
|
185
|
+
* .where('id', '=', id)
|
|
186
|
+
* .where('nullable_column', 'is not', null)
|
|
187
|
+
* .returningAll()
|
|
188
|
+
* .executeTakeFirstOrThrow()
|
|
189
|
+
*
|
|
190
|
+
* if (person.nullable_column) {
|
|
191
|
+
* functionThatExpectsPersonWithNonNullValue(person)
|
|
192
|
+
* }
|
|
193
|
+
* ```
|
|
194
|
+
*
|
|
195
|
+
* Into this:
|
|
196
|
+
*
|
|
197
|
+
* ```ts
|
|
198
|
+
* const person = await db.updateTable('person')
|
|
199
|
+
* .set({ deletedAt: now })
|
|
200
|
+
* .where('id', '=', id)
|
|
201
|
+
* .where('nullable_column', 'is not', null)
|
|
202
|
+
* .returningAll()
|
|
203
|
+
* .$narrowType<{ deletedAt: Date; nullable_column: string }>()
|
|
204
|
+
* .executeTakeFirstOrThrow()
|
|
205
|
+
*
|
|
206
|
+
* functionThatExpectsPersonWithNonNullValue(person)
|
|
207
|
+
* ```
|
|
216
208
|
*/
|
|
217
|
-
|
|
218
|
-
return this
|
|
209
|
+
$narrowType() {
|
|
210
|
+
return new UpdateQueryBuilder(this.#props);
|
|
219
211
|
}
|
|
220
212
|
/**
|
|
221
213
|
* Asserts that query's output row type equals the given type `T`.
|
|
@@ -263,12 +255,6 @@ class UpdateQueryBuilder {
|
|
|
263
255
|
$assertType() {
|
|
264
256
|
return new UpdateQueryBuilder(this.#props);
|
|
265
257
|
}
|
|
266
|
-
/**
|
|
267
|
-
* @deprecated Use `$assertType` instead.
|
|
268
|
-
*/
|
|
269
|
-
assertType() {
|
|
270
|
-
return new UpdateQueryBuilder(this.#props);
|
|
271
|
-
}
|
|
272
258
|
/**
|
|
273
259
|
* Returns a copy of this UpdateQueryBuilder instance with the given plugin installed.
|
|
274
260
|
*/
|
|
@@ -299,7 +285,8 @@ class UpdateQueryBuilder {
|
|
|
299
285
|
return [
|
|
300
286
|
new update_result_js_1.UpdateResult(
|
|
301
287
|
// TODO: remove numUpdatedOrDeletedRows.
|
|
302
|
-
|
|
288
|
+
// TODO: https://github.com/kysely-org/kysely/pull/431#discussion_r1172330899
|
|
289
|
+
result.numAffectedRows ?? result.numUpdatedOrDeletedRows ?? BigInt(0), result.numChangedRows),
|
|
303
290
|
];
|
|
304
291
|
}
|
|
305
292
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export declare class UpdateResult {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
readonly numUpdatedRows: bigint;
|
|
3
|
+
readonly numChangedRows?: bigint;
|
|
4
|
+
constructor(numUpdatedRows: bigint, numChangedRows: bigint | undefined);
|
|
5
5
|
}
|
|
@@ -2,15 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.UpdateResult = void 0;
|
|
4
4
|
class UpdateResult {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
return this.#numUpdatedRows;
|
|
5
|
+
numUpdatedRows;
|
|
6
|
+
numChangedRows;
|
|
7
|
+
constructor(numUpdatedRows, numChangedRows) {
|
|
8
|
+
this.numUpdatedRows = numUpdatedRows;
|
|
9
|
+
this.numChangedRows = numChangedRows;
|
|
11
10
|
}
|
|
12
11
|
}
|
|
13
12
|
exports.UpdateResult = UpdateResult;
|
|
14
|
-
Object.defineProperty(UpdateResult.prototype, 'numUpdatedRows', {
|
|
15
|
-
enumerable: true,
|
|
16
|
-
});
|