kysely 0.25.0 → 0.26.1
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 +10 -563
- package/dist/cjs/dialect/database-introspector.d.ts +1 -1
- package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +2 -2
- 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 -4
- 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/expression/expression-builder.d.ts +207 -108
- package/dist/cjs/expression/expression-builder.js +28 -7
- package/dist/cjs/expression/expression-wrapper.d.ts +296 -5
- package/dist/cjs/expression/expression-wrapper.js +70 -2
- package/dist/cjs/helpers/postgres.d.ts +30 -18
- package/dist/cjs/helpers/postgres.js +30 -18
- package/dist/cjs/index.d.ts +6 -0
- package/dist/cjs/index.js +6 -0
- package/dist/cjs/kysely.d.ts +23 -13
- package/dist/cjs/kysely.js +13 -9
- package/dist/cjs/migration/file-migration-provider.js +2 -2
- package/dist/cjs/operation-node/alter-column-node.d.ts +2 -3
- package/dist/cjs/operation-node/alter-column-node.js +2 -7
- package/dist/cjs/operation-node/alter-table-node.d.ts +2 -2
- 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 +2 -2
- 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 +8 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +33 -1
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +8 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +4 -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/with-node.d.ts +1 -1
- package/dist/cjs/parser/binary-operation-parser.d.ts +9 -12
- package/dist/cjs/parser/binary-operation-parser.js +40 -119
- 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 +5 -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 +3 -3
- package/dist/cjs/parser/partition-by-parser.d.ts +2 -2
- package/dist/cjs/parser/reference-parser.d.ts +13 -9
- package/dist/cjs/parser/reference-parser.js +28 -16
- package/dist/cjs/parser/returning-parser.d.ts +2 -2
- package/dist/cjs/parser/select-parser.d.ts +10 -10
- package/dist/cjs/parser/table-parser.d.ts +12 -12
- 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 +12 -8
- 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 +11 -11
- package/dist/cjs/query-builder/case-builder.js +2 -2
- package/dist/cjs/query-builder/delete-query-builder.d.ts +110 -62
- package/dist/cjs/query-builder/delete-query-builder.js +1 -62
- 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 +44 -66
- package/dist/cjs/query-builder/having-interface.d.ts +2 -35
- package/dist/cjs/query-builder/insert-query-builder.d.ts +59 -48
- package/dist/cjs/query-builder/insert-query-builder.js +17 -34
- 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 +194 -77
- 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 +169 -141
- package/dist/cjs/query-builder/select-query-builder.js +27 -136
- package/dist/cjs/query-builder/update-query-builder.d.ts +147 -66
- package/dist/cjs/query-builder/update-query-builder.js +3 -63
- 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 +98 -40
- 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 +8 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +37 -2
- 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 +11 -5
- package/dist/cjs/schema/alter-column-builder.js +19 -21
- 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.js +1 -1
- 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 +1 -2
- package/dist/cjs/util/column-type.d.ts +22 -18
- 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 +4 -4
- package/dist/cjs/util/require-all-props.d.ts +1 -1
- package/dist/cjs/util/type-utils.d.ts +19 -19
- package/dist/esm/dialect/database-introspector.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +2 -2
- 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 -4
- 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/expression/expression-builder.d.ts +207 -108
- package/dist/esm/expression/expression-builder.js +30 -9
- package/dist/esm/expression/expression-wrapper.d.ts +296 -5
- package/dist/esm/expression/expression-wrapper.js +67 -1
- package/dist/esm/helpers/postgres.d.ts +30 -18
- package/dist/esm/helpers/postgres.js +30 -18
- package/dist/esm/index.d.ts +6 -0
- package/dist/esm/index.js +6 -0
- package/dist/esm/kysely.d.ts +23 -13
- package/dist/esm/kysely.js +13 -9
- package/dist/esm/operation-node/alter-column-node.d.ts +2 -3
- package/dist/esm/operation-node/alter-column-node.js +2 -7
- package/dist/esm/operation-node/alter-table-node.d.ts +2 -2
- 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 +2 -2
- 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 +8 -0
- package/dist/esm/operation-node/operation-node-transformer.js +33 -1
- package/dist/esm/operation-node/operation-node-visitor.d.ts +8 -0
- package/dist/esm/operation-node/operation-node-visitor.js +4 -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/with-node.d.ts +1 -1
- package/dist/esm/parser/binary-operation-parser.d.ts +9 -12
- package/dist/esm/parser/binary-operation-parser.js +38 -114
- 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 +5 -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 +3 -3
- package/dist/esm/parser/partition-by-parser.d.ts +2 -2
- package/dist/esm/parser/reference-parser.d.ts +13 -9
- package/dist/esm/parser/reference-parser.js +26 -15
- package/dist/esm/parser/returning-parser.d.ts +2 -2
- package/dist/esm/parser/select-parser.d.ts +10 -10
- package/dist/esm/parser/table-parser.d.ts +12 -12
- 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 +12 -8
- 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 +11 -11
- package/dist/esm/query-builder/case-builder.js +3 -3
- package/dist/esm/query-builder/delete-query-builder.d.ts +110 -62
- package/dist/esm/query-builder/delete-query-builder.js +2 -63
- 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 +44 -66
- package/dist/esm/query-builder/having-interface.d.ts +2 -35
- package/dist/esm/query-builder/insert-query-builder.d.ts +59 -48
- package/dist/esm/query-builder/insert-query-builder.js +17 -34
- 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 +194 -77
- 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 +169 -141
- package/dist/esm/query-builder/select-query-builder.js +28 -137
- package/dist/esm/query-builder/update-query-builder.d.ts +147 -66
- package/dist/esm/query-builder/update-query-builder.js +4 -64
- 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 +98 -40
- 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 +8 -0
- package/dist/esm/query-compiler/default-query-compiler.js +37 -2
- 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 +11 -5
- package/dist/esm/schema/alter-column-builder.js +19 -21
- 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.js +2 -2
- 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 +1 -2
- package/dist/esm/util/column-type.d.ts +22 -18
- 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 +4 -4
- package/dist/esm/util/require-all-props.d.ts +1 -1
- package/dist/esm/util/type-utils.d.ts +19 -19
- 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
|
@@ -15,8 +15,7 @@ import { parseGroupBy } from '../parser/group-by-parser.js';
|
|
|
15
15
|
import { isNoResultErrorConstructor, NoResultError, } from './no-result-error.js';
|
|
16
16
|
import { IdentifierNode } from '../operation-node/identifier-node.js';
|
|
17
17
|
import { parseSetOperation } from '../parser/set-operation-parser.js';
|
|
18
|
-
import {
|
|
19
|
-
import { parseExists, parseNotExists, } from '../parser/unary-operation-parser.js';
|
|
18
|
+
import { parseFilter, parseReferentialComparison, } from '../parser/binary-operation-parser.js';
|
|
20
19
|
export class SelectQueryBuilder {
|
|
21
20
|
#props;
|
|
22
21
|
constructor(props) {
|
|
@@ -29,7 +28,7 @@ export class SelectQueryBuilder {
|
|
|
29
28
|
where(...args) {
|
|
30
29
|
return new SelectQueryBuilder({
|
|
31
30
|
...this.#props,
|
|
32
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode,
|
|
31
|
+
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseFilter(args)),
|
|
33
32
|
});
|
|
34
33
|
}
|
|
35
34
|
whereRef(lhs, op, rhs) {
|
|
@@ -38,46 +37,10 @@ export class SelectQueryBuilder {
|
|
|
38
37
|
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseReferentialComparison(lhs, op, rhs)),
|
|
39
38
|
});
|
|
40
39
|
}
|
|
41
|
-
orWhere(...args) {
|
|
42
|
-
return new SelectQueryBuilder({
|
|
43
|
-
...this.#props,
|
|
44
|
-
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseWhere(args)),
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
orWhereRef(lhs, op, rhs) {
|
|
48
|
-
return new SelectQueryBuilder({
|
|
49
|
-
...this.#props,
|
|
50
|
-
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseReferentialComparison(lhs, op, rhs)),
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
whereExists(arg) {
|
|
54
|
-
return new SelectQueryBuilder({
|
|
55
|
-
...this.#props,
|
|
56
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseExists(arg)),
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
whereNotExists(arg) {
|
|
60
|
-
return new SelectQueryBuilder({
|
|
61
|
-
...this.#props,
|
|
62
|
-
queryNode: QueryNode.cloneWithWhere(this.#props.queryNode, parseNotExists(arg)),
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
orWhereExists(arg) {
|
|
66
|
-
return new SelectQueryBuilder({
|
|
67
|
-
...this.#props,
|
|
68
|
-
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseExists(arg)),
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
orWhereNotExists(arg) {
|
|
72
|
-
return new SelectQueryBuilder({
|
|
73
|
-
...this.#props,
|
|
74
|
-
queryNode: QueryNode.cloneWithOrWhere(this.#props.queryNode, parseNotExists(arg)),
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
40
|
having(...args) {
|
|
78
41
|
return new SelectQueryBuilder({
|
|
79
42
|
...this.#props,
|
|
80
|
-
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode,
|
|
43
|
+
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseFilter(args)),
|
|
81
44
|
});
|
|
82
45
|
}
|
|
83
46
|
havingRef(lhs, op, rhs) {
|
|
@@ -86,51 +49,6 @@ export class SelectQueryBuilder {
|
|
|
86
49
|
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseReferentialComparison(lhs, op, rhs)),
|
|
87
50
|
});
|
|
88
51
|
}
|
|
89
|
-
orHaving(...args) {
|
|
90
|
-
return new SelectQueryBuilder({
|
|
91
|
-
...this.#props,
|
|
92
|
-
queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, parseHaving(args)),
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
orHavingRef(lhs, op, rhs) {
|
|
96
|
-
return new SelectQueryBuilder({
|
|
97
|
-
...this.#props,
|
|
98
|
-
queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, parseReferentialComparison(lhs, op, rhs)),
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
havingExists(arg) {
|
|
102
|
-
return new SelectQueryBuilder({
|
|
103
|
-
...this.#props,
|
|
104
|
-
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseExists(arg)),
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* @deprecated Use {@link havingNotExists} instead.
|
|
109
|
-
*/
|
|
110
|
-
havingNotExist(arg) {
|
|
111
|
-
return new SelectQueryBuilder({
|
|
112
|
-
...this.#props,
|
|
113
|
-
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseNotExists(arg)),
|
|
114
|
-
});
|
|
115
|
-
}
|
|
116
|
-
havingNotExists(arg) {
|
|
117
|
-
return new SelectQueryBuilder({
|
|
118
|
-
...this.#props,
|
|
119
|
-
queryNode: SelectQueryNode.cloneWithHaving(this.#props.queryNode, parseNotExists(arg)),
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
orHavingExists(arg) {
|
|
123
|
-
return new SelectQueryBuilder({
|
|
124
|
-
...this.#props,
|
|
125
|
-
queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, parseExists(arg)),
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
orHavingNotExists(arg) {
|
|
129
|
-
return new SelectQueryBuilder({
|
|
130
|
-
...this.#props,
|
|
131
|
-
queryNode: SelectQueryNode.cloneWithOrHaving(this.#props.queryNode, parseNotExists(arg)),
|
|
132
|
-
});
|
|
133
|
-
}
|
|
134
52
|
/**
|
|
135
53
|
* Adds a select statement to the query.
|
|
136
54
|
*
|
|
@@ -155,6 +73,8 @@ export class SelectQueryBuilder {
|
|
|
155
73
|
*
|
|
156
74
|
* ### Examples
|
|
157
75
|
*
|
|
76
|
+
* <!-- siteExample("select", "A single column", 10) -->
|
|
77
|
+
*
|
|
158
78
|
* Select a single column:
|
|
159
79
|
*
|
|
160
80
|
* ```ts
|
|
@@ -163,8 +83,6 @@ export class SelectQueryBuilder {
|
|
|
163
83
|
* .select('id')
|
|
164
84
|
* .where('first_name', '=', 'Arnold')
|
|
165
85
|
* .execute()
|
|
166
|
-
*
|
|
167
|
-
* persons[0].id
|
|
168
86
|
* ```
|
|
169
87
|
*
|
|
170
88
|
* The generated SQL (PostgreSQL):
|
|
@@ -173,6 +91,8 @@ export class SelectQueryBuilder {
|
|
|
173
91
|
* select "id" from "person" where "first_name" = $1
|
|
174
92
|
* ```
|
|
175
93
|
*
|
|
94
|
+
* <!-- siteExample("select", "Column with a table", 20) -->
|
|
95
|
+
*
|
|
176
96
|
* Select a single column and specify a table:
|
|
177
97
|
*
|
|
178
98
|
* ```ts
|
|
@@ -180,8 +100,6 @@ export class SelectQueryBuilder {
|
|
|
180
100
|
* .selectFrom(['person', 'pet'])
|
|
181
101
|
* .select('person.id')
|
|
182
102
|
* .execute()
|
|
183
|
-
*
|
|
184
|
-
* persons[0].id
|
|
185
103
|
* ```
|
|
186
104
|
*
|
|
187
105
|
* The generated SQL (PostgreSQL):
|
|
@@ -190,6 +108,8 @@ export class SelectQueryBuilder {
|
|
|
190
108
|
* select "person"."id" from "person", "pet"
|
|
191
109
|
* ```
|
|
192
110
|
*
|
|
111
|
+
* <!-- siteExample("select", "Multiple columns", 30) -->
|
|
112
|
+
*
|
|
193
113
|
* Select multiple columns:
|
|
194
114
|
*
|
|
195
115
|
* ```ts
|
|
@@ -197,9 +117,6 @@ export class SelectQueryBuilder {
|
|
|
197
117
|
* .selectFrom('person')
|
|
198
118
|
* .select(['person.id', 'first_name'])
|
|
199
119
|
* .execute()
|
|
200
|
-
*
|
|
201
|
-
* persons[0].id
|
|
202
|
-
* persons[0].first_name
|
|
203
120
|
* ```
|
|
204
121
|
*
|
|
205
122
|
* The generated SQL (PostgreSQL):
|
|
@@ -208,38 +125,39 @@ export class SelectQueryBuilder {
|
|
|
208
125
|
* select "person"."id", "first_name" from "person"
|
|
209
126
|
* ```
|
|
210
127
|
*
|
|
211
|
-
*
|
|
128
|
+
* <!-- siteExample("select", "Aliases", 40) -->
|
|
129
|
+
*
|
|
130
|
+
* You can provide an alias for the selections by appending `as the_alias` to the selection.
|
|
212
131
|
*
|
|
213
132
|
* ```ts
|
|
214
133
|
* const persons = await db
|
|
215
134
|
* .selectFrom('person')
|
|
216
135
|
* .select([
|
|
217
|
-
* '
|
|
136
|
+
* 'first_name as fn',
|
|
218
137
|
* 'person.last_name as ln'
|
|
219
138
|
* ])
|
|
220
139
|
* .execute()
|
|
221
|
-
*
|
|
222
|
-
* persons[0].fn
|
|
223
|
-
* persons[0].ln
|
|
224
140
|
* ```
|
|
225
141
|
*
|
|
226
142
|
* The generated SQL (PostgreSQL):
|
|
227
143
|
*
|
|
228
144
|
* ```sql
|
|
229
145
|
* select
|
|
230
|
-
* "
|
|
146
|
+
* "first_name" as "fn",
|
|
231
147
|
* "person"."last_name" as "ln"
|
|
232
148
|
* from "person"
|
|
233
149
|
* ```
|
|
234
150
|
*
|
|
235
|
-
*
|
|
236
|
-
*
|
|
151
|
+
* <!-- siteExample("select", "Complex selections", 50) -->
|
|
152
|
+
*
|
|
153
|
+
* You can select arbitrary expression including subqueries and raw sql snippets.
|
|
154
|
+
* When you do that, you need to give a name for the selections using the `as` method:
|
|
237
155
|
*
|
|
238
156
|
* ```ts
|
|
239
|
-
* import {
|
|
157
|
+
* import { sql } from 'kysely'
|
|
240
158
|
*
|
|
241
159
|
* const persons = await db.selectFrom('person')
|
|
242
|
-
* .select(({ selectFrom, or
|
|
160
|
+
* .select(({ eb, selectFrom, or }) => [
|
|
243
161
|
* // Select a correlated subquery
|
|
244
162
|
* selectFrom('pet')
|
|
245
163
|
* .whereRef('person.id', '=', 'pet.owner_id')
|
|
@@ -248,20 +166,17 @@ export class SelectQueryBuilder {
|
|
|
248
166
|
* .limit(1)
|
|
249
167
|
* .as('first_pet_name'),
|
|
250
168
|
*
|
|
251
|
-
* // Build and select an expression using
|
|
169
|
+
* // Build and select an expression using
|
|
170
|
+
* // the expression builder
|
|
252
171
|
* or([
|
|
253
|
-
*
|
|
254
|
-
*
|
|
172
|
+
* eb('first_name', '=', 'Jennifer'),
|
|
173
|
+
* eb('first_name', '=', 'Arnold')
|
|
255
174
|
* ]).as('is_jennifer_or_arnold'),
|
|
256
175
|
*
|
|
257
176
|
* // Select a raw sql expression
|
|
258
177
|
* sql<string>`concat(first_name, ' ', last_name)`.as('full_name')
|
|
259
178
|
* ])
|
|
260
179
|
* .execute()
|
|
261
|
-
*
|
|
262
|
-
* persons[0].first_pet_name
|
|
263
|
-
* persons[0].is_jennifer_or_arnold
|
|
264
|
-
* persons[0].full_name
|
|
265
180
|
* ```
|
|
266
181
|
*
|
|
267
182
|
* The generated SQL (PostgreSQL):
|
|
@@ -389,10 +304,12 @@ export class SelectQueryBuilder {
|
|
|
389
304
|
/**
|
|
390
305
|
* Makes the selection distinct.
|
|
391
306
|
*
|
|
307
|
+
* <!-- siteExample("select", "Distinct", 70) -->
|
|
308
|
+
*
|
|
392
309
|
* ### Examples
|
|
393
310
|
*
|
|
394
311
|
* ```ts
|
|
395
|
-
* await db.selectFrom('person')
|
|
312
|
+
* const persons = await db.selectFrom('person')
|
|
396
313
|
* .select('first_name')
|
|
397
314
|
* .distinct()
|
|
398
315
|
* .execute()
|
|
@@ -1025,12 +942,6 @@ export class SelectQueryBuilder {
|
|
|
1025
942
|
$call(func) {
|
|
1026
943
|
return func(this);
|
|
1027
944
|
}
|
|
1028
|
-
/**
|
|
1029
|
-
* @deprecated Use `$call` instead
|
|
1030
|
-
*/
|
|
1031
|
-
call(func) {
|
|
1032
|
-
return this.$call(func);
|
|
1033
|
-
}
|
|
1034
945
|
/**
|
|
1035
946
|
* Call `func(this)` if `condition` is true.
|
|
1036
947
|
*
|
|
@@ -1086,14 +997,12 @@ export class SelectQueryBuilder {
|
|
|
1086
997
|
* You can also call any other methods inside the callback:
|
|
1087
998
|
*
|
|
1088
999
|
* ```ts
|
|
1089
|
-
* const { count } = db.fn
|
|
1090
|
-
*
|
|
1091
1000
|
* db.selectFrom('person')
|
|
1092
1001
|
* .select('person.id')
|
|
1093
1002
|
* .$if(filterByFirstName, (qb) => qb.where('first_name', '=', firstName))
|
|
1094
1003
|
* .$if(filterByPetCount, (qb) => qb
|
|
1095
1004
|
* .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|
1096
|
-
* .having(count('pet.id'), '>', petCountLimit)
|
|
1005
|
+
* .having((eb) => eb.fn.count('pet.id'), '>', petCountLimit)
|
|
1097
1006
|
* .groupBy('person.id')
|
|
1098
1007
|
* )
|
|
1099
1008
|
* ```
|
|
@@ -1106,12 +1015,6 @@ export class SelectQueryBuilder {
|
|
|
1106
1015
|
...this.#props,
|
|
1107
1016
|
});
|
|
1108
1017
|
}
|
|
1109
|
-
/**
|
|
1110
|
-
* @deprecated Use `$if` instead
|
|
1111
|
-
*/
|
|
1112
|
-
if(condition, func) {
|
|
1113
|
-
return this.$if(condition, func);
|
|
1114
|
-
}
|
|
1115
1018
|
/**
|
|
1116
1019
|
* Change the output type of the query.
|
|
1117
1020
|
*
|
|
@@ -1121,12 +1024,6 @@ export class SelectQueryBuilder {
|
|
|
1121
1024
|
$castTo() {
|
|
1122
1025
|
return new SelectQueryBuilder(this.#props);
|
|
1123
1026
|
}
|
|
1124
|
-
/**
|
|
1125
|
-
* @deprecated Use `$castTo` instead.
|
|
1126
|
-
*/
|
|
1127
|
-
castTo() {
|
|
1128
|
-
return this.$castTo();
|
|
1129
|
-
}
|
|
1130
1027
|
/**
|
|
1131
1028
|
* Narrows (parts of) the output type of the query.
|
|
1132
1029
|
*
|
|
@@ -1212,12 +1109,6 @@ export class SelectQueryBuilder {
|
|
|
1212
1109
|
$assertType() {
|
|
1213
1110
|
return new SelectQueryBuilder(this.#props);
|
|
1214
1111
|
}
|
|
1215
|
-
/**
|
|
1216
|
-
* @deprecated Use `$assertType` instead.
|
|
1217
|
-
*/
|
|
1218
|
-
assertType() {
|
|
1219
|
-
return new SelectQueryBuilder(this.#props);
|
|
1220
|
-
}
|
|
1221
1112
|
/**
|
|
1222
1113
|
* Returns a copy of this SelectQueryBuilder instance with the given plugin installed.
|
|
1223
1114
|
*/
|
|
@@ -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,71 @@ 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
|
+
* There are two ways to create `OR` expressions. Both are shown in this
|
|
86
|
+
* example:
|
|
87
|
+
*
|
|
88
|
+
* ```ts
|
|
89
|
+
* const persons = await db
|
|
90
|
+
* .selectFrom('person')
|
|
91
|
+
* .selectAll()
|
|
92
|
+
* // 1. Using the `or` method on the expression builder:
|
|
93
|
+
* .where((eb) => eb.or([
|
|
94
|
+
* eb('first_name', '=', 'Jennifer'),
|
|
95
|
+
* eb('first_name', '=', 'Sylvester')
|
|
96
|
+
* ]))
|
|
97
|
+
* // 2. Chaining expressions using the `or` method on the
|
|
98
|
+
* // created expressions:
|
|
99
|
+
* .where((eb) =>
|
|
100
|
+
* eb('last_name', '=', 'Aniston').or('last_name', '=', 'Stallone')
|
|
101
|
+
* )
|
|
102
|
+
* .execute()
|
|
103
|
+
* ```
|
|
104
|
+
*
|
|
105
|
+
* The generated SQL (PostgreSQL):
|
|
106
|
+
*
|
|
107
|
+
* ```sql
|
|
108
|
+
* select *
|
|
109
|
+
* from "person"
|
|
110
|
+
* where (
|
|
111
|
+
* ("first_name" = $1 or "first_name" = $2)
|
|
112
|
+
* and
|
|
113
|
+
* ("last_name" = $3 or "last_name" = $4)
|
|
114
|
+
* )
|
|
115
|
+
* ```
|
|
116
|
+
*
|
|
117
|
+
* <!-- siteExample("where", "Conditional where calls", 40) -->
|
|
118
|
+
*
|
|
61
119
|
* You can add expressions conditionally like this:
|
|
62
120
|
*
|
|
63
121
|
* ```ts
|
|
122
|
+
* import { Expression, SqlBool } from 'kysely'
|
|
123
|
+
*
|
|
124
|
+
* const firstName: string | undefined = 'Jennifer'
|
|
125
|
+
* const lastName: string | undefined = 'Aniston'
|
|
126
|
+
* const under18 = true
|
|
127
|
+
* const over60 = true
|
|
128
|
+
*
|
|
64
129
|
* let query = db
|
|
65
130
|
* .selectFrom('person')
|
|
66
131
|
* .selectAll()
|
|
@@ -75,6 +140,23 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
75
140
|
* query = query.where('last_name', '=', lastName)
|
|
76
141
|
* }
|
|
77
142
|
*
|
|
143
|
+
* if (under18 || over60) {
|
|
144
|
+
* // Conditional OR expressions can be added like this.
|
|
145
|
+
* query = query.where((eb) => {
|
|
146
|
+
* const ors: Expression<SqlBool>[] = []
|
|
147
|
+
*
|
|
148
|
+
* if (under18) {
|
|
149
|
+
* ors.push(eb('age', '<', 18))
|
|
150
|
+
* }
|
|
151
|
+
*
|
|
152
|
+
* if (over60) {
|
|
153
|
+
* ors.push(eb('age', '>', 60))
|
|
154
|
+
* }
|
|
155
|
+
*
|
|
156
|
+
* return eb.or(ors)
|
|
157
|
+
* })
|
|
158
|
+
* }
|
|
159
|
+
*
|
|
78
160
|
* const persons = await query.execute()
|
|
79
161
|
* ```
|
|
80
162
|
*
|
|
@@ -127,22 +209,30 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
127
209
|
* select * from "person" where "id" in ($1, $2, $3)
|
|
128
210
|
* ```
|
|
129
211
|
*
|
|
212
|
+
* <!-- siteExample("where", "Complex where clause", 50) -->
|
|
213
|
+
*
|
|
130
214
|
* For complex `where` expressions you can pass in a single callback and
|
|
131
|
-
* use the
|
|
215
|
+
* use the `ExpressionBuilder` to build your expression:
|
|
132
216
|
*
|
|
133
217
|
* ```ts
|
|
218
|
+
* const firstName = 'Jennifer'
|
|
219
|
+
* const maxAge = 60
|
|
220
|
+
*
|
|
134
221
|
* const persons = await db
|
|
135
222
|
* .selectFrom('person')
|
|
136
223
|
* .selectAll('person')
|
|
137
|
-
* .where(({
|
|
224
|
+
* .where(({ eb, or, and, not, exists, selectFrom }) => and([
|
|
138
225
|
* or([
|
|
139
|
-
*
|
|
140
|
-
*
|
|
226
|
+
* eb('first_name', '=', firstName),
|
|
227
|
+
* eb('age', '<', maxAge)
|
|
141
228
|
* ]),
|
|
142
229
|
* not(exists(
|
|
143
|
-
* selectFrom('pet')
|
|
230
|
+
* selectFrom('pet')
|
|
231
|
+
* .select('pet.id')
|
|
232
|
+
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
144
233
|
* ))
|
|
145
234
|
* ]))
|
|
235
|
+
* .execute()
|
|
146
236
|
* ```
|
|
147
237
|
*
|
|
148
238
|
* The generated SQL (PostgreSQL):
|
|
@@ -263,32 +353,6 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
263
353
|
* from "person"
|
|
264
354
|
*/
|
|
265
355
|
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
356
|
/**
|
|
293
357
|
* Clears all where expressions from the query.
|
|
294
358
|
*
|
|
@@ -480,6 +544,8 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
480
544
|
*
|
|
481
545
|
* ### Examples
|
|
482
546
|
*
|
|
547
|
+
* <!-- siteExample("update", "Single row", 10) -->
|
|
548
|
+
*
|
|
483
549
|
* Update a row in `person` table:
|
|
484
550
|
*
|
|
485
551
|
* ```ts
|
|
@@ -489,7 +555,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
489
555
|
* first_name: 'Jennifer',
|
|
490
556
|
* last_name: 'Aniston'
|
|
491
557
|
* })
|
|
492
|
-
* .where('id', '=', 1)
|
|
558
|
+
* .where('id', '=', '1')
|
|
493
559
|
* .executeTakeFirst()
|
|
494
560
|
*
|
|
495
561
|
* console.log(result.numUpdatedRows)
|
|
@@ -501,7 +567,38 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
501
567
|
* update "person" set "first_name" = $1, "last_name" = $2 where "id" = $3
|
|
502
568
|
* ```
|
|
503
569
|
*
|
|
504
|
-
*
|
|
570
|
+
* <!-- siteExample("update", "Complex values", 20) -->
|
|
571
|
+
*
|
|
572
|
+
* As always, you can provide a callback to the `set` method to get access
|
|
573
|
+
* to an expression builder:
|
|
574
|
+
*
|
|
575
|
+
* ```ts
|
|
576
|
+
* const result = await db
|
|
577
|
+
* .updateTable('person')
|
|
578
|
+
* .set((eb) => ({
|
|
579
|
+
* age: eb('age', '+', 1),
|
|
580
|
+
* first_name: eb.selectFrom('pet').select('name').limit(1),
|
|
581
|
+
* last_name: 'updated',
|
|
582
|
+
* }))
|
|
583
|
+
* .where('id', '=', '1')
|
|
584
|
+
* .executeTakeFirst()
|
|
585
|
+
*
|
|
586
|
+
* console.log(result.numUpdatedRows)
|
|
587
|
+
* ```
|
|
588
|
+
*
|
|
589
|
+
* The generated SQL (PostgreSQL):
|
|
590
|
+
*
|
|
591
|
+
* ```sql
|
|
592
|
+
* update "person"
|
|
593
|
+
* set
|
|
594
|
+
* "first_name" = (select "name" from "pet" limit $1),
|
|
595
|
+
* "age" = "age" + $2,
|
|
596
|
+
* "last_name" = $3
|
|
597
|
+
* where
|
|
598
|
+
* "id" = $4
|
|
599
|
+
* ```
|
|
600
|
+
*
|
|
601
|
+
* On PostgreSQL you can chain `returning` to the query to get
|
|
505
602
|
* the updated rows' columns (or any other expression) as the
|
|
506
603
|
* return value:
|
|
507
604
|
*
|
|
@@ -533,10 +630,10 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
533
630
|
*
|
|
534
631
|
* const result = await db
|
|
535
632
|
* .updateTable('person')
|
|
536
|
-
* .set(({ selectFrom, ref, fn,
|
|
633
|
+
* .set(({ selectFrom, ref, fn, eb }) => ({
|
|
537
634
|
* first_name: selectFrom('person').select('first_name').limit(1),
|
|
538
635
|
* middle_name: ref('first_name'),
|
|
539
|
-
* age:
|
|
636
|
+
* age: eb('age', '+', 1),
|
|
540
637
|
* last_name: sql`${'Ani'} || ${'ston'}`,
|
|
541
638
|
* }))
|
|
542
639
|
* .where('id', '=', 1)
|
|
@@ -609,7 +706,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
609
706
|
* first_name: 'Jennifer',
|
|
610
707
|
* last_name: 'Aniston'
|
|
611
708
|
* })
|
|
612
|
-
* .returning(eb => [
|
|
709
|
+
* .returning((eb) => [
|
|
613
710
|
* 'id as id',
|
|
614
711
|
* sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
|
|
615
712
|
* eb.selectFrom('pets').select('pet.id').limit(1).as('first_pet_id')
|
|
@@ -647,10 +744,6 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
647
744
|
* ```
|
|
648
745
|
*/
|
|
649
746
|
$call<T>(func: (qb: this) => T): T;
|
|
650
|
-
/**
|
|
651
|
-
* @deprecated Use `$call` instead
|
|
652
|
-
*/
|
|
653
|
-
call<T>(func: (qb: this) => T): T;
|
|
654
747
|
/**
|
|
655
748
|
* Call `func(this)` if `condition` is true.
|
|
656
749
|
*
|
|
@@ -687,11 +780,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
687
780
|
* }
|
|
688
781
|
* ```
|
|
689
782
|
*/
|
|
690
|
-
$if<O2>(condition: boolean, func: (qb: this) => UpdateQueryBuilder<
|
|
691
|
-
/**
|
|
692
|
-
* @deprecated Use `$if` instead
|
|
693
|
-
*/
|
|
694
|
-
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>>;
|
|
783
|
+
$if<O2>(condition: boolean, func: (qb: this) => UpdateQueryBuilder<any, any, any, 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
784
|
/**
|
|
696
785
|
* Change the output type of the query.
|
|
697
786
|
*
|
|
@@ -699,10 +788,6 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
699
788
|
* don't support your use case.
|
|
700
789
|
*/
|
|
701
790
|
$castTo<T>(): UpdateQueryBuilder<DB, UT, TB, T>;
|
|
702
|
-
/**
|
|
703
|
-
* @deprecated Use `$castTo` instead.
|
|
704
|
-
*/
|
|
705
|
-
castTo<T>(): UpdateQueryBuilder<DB, UT, TB, T>;
|
|
706
791
|
/**
|
|
707
792
|
* Narrows (parts of) the output type of the query.
|
|
708
793
|
*
|
|
@@ -792,10 +877,6 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
792
877
|
* ```
|
|
793
878
|
*/
|
|
794
879
|
$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.`>;
|
|
795
|
-
/**
|
|
796
|
-
* @deprecated Use `$assertType` instead.
|
|
797
|
-
*/
|
|
798
|
-
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.`>;
|
|
799
880
|
/**
|
|
800
881
|
* Returns a copy of this UpdateQueryBuilder instance with the given plugin installed.
|
|
801
882
|
*/
|
|
@@ -891,24 +972,24 @@ export interface UpdateQueryBuilderProps {
|
|
|
891
972
|
readonly queryNode: UpdateQueryNode;
|
|
892
973
|
readonly executor: QueryExecutor;
|
|
893
974
|
}
|
|
894
|
-
export
|
|
895
|
-
|
|
896
|
-
|
|
975
|
+
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;
|
|
976
|
+
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>;
|
|
977
|
+
type InnerJoinedDB<DB, A extends string, R> = DrainOuterGeneric<{
|
|
897
978
|
[C in keyof DB | A]: C extends A ? R : C extends keyof DB ? DB[C] : never;
|
|
898
979
|
}>;
|
|
899
|
-
export
|
|
900
|
-
|
|
901
|
-
|
|
980
|
+
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;
|
|
981
|
+
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>;
|
|
982
|
+
type LeftJoinedDB<DB, A extends keyof any, R> = DrainOuterGeneric<{
|
|
902
983
|
[C in keyof DB | A]: C extends A ? Nullable<R> : C extends keyof DB ? DB[C] : never;
|
|
903
984
|
}>;
|
|
904
|
-
export
|
|
905
|
-
|
|
906
|
-
|
|
985
|
+
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;
|
|
986
|
+
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>;
|
|
987
|
+
type RightJoinedDB<DB, TB extends keyof DB, A extends keyof any, R> = DrainOuterGeneric<{
|
|
907
988
|
[C in keyof DB | A]: C extends A ? R : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
|
|
908
989
|
}>;
|
|
909
|
-
export
|
|
910
|
-
|
|
911
|
-
|
|
990
|
+
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;
|
|
991
|
+
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>;
|
|
992
|
+
type OuterJoinedBuilderDB<DB, TB extends keyof DB, A extends keyof any, R> = DrainOuterGeneric<{
|
|
912
993
|
[C in keyof DB | A]: C extends A ? Nullable<R> : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
|
|
913
994
|
}>;
|
|
914
995
|
export {};
|