kysely 0.23.5 → 0.24.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 +46 -24
- package/dist/cjs/dialect/mysql/mysql-adapter.js +2 -2
- package/dist/cjs/dialect/mysql/mysql-driver.d.ts +1 -1
- package/dist/cjs/dialect/mysql/mysql-driver.js +1 -1
- package/dist/cjs/dialect/postgres/postgres-adapter.js +1 -1
- package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +1 -0
- package/dist/cjs/dialect/sqlite/sqlite-dialect.js +1 -0
- package/dist/cjs/driver/runtime-driver.js +4 -2
- package/dist/cjs/expression/expression-builder.d.ts +386 -0
- package/dist/cjs/expression/expression-builder.js +92 -0
- package/dist/cjs/expression/expression-wrapper.d.ts +92 -0
- package/dist/cjs/expression/expression-wrapper.js +54 -0
- package/dist/cjs/expression/expression.d.ts +1 -1
- package/dist/cjs/helpers/mysql.d.ts +140 -0
- package/dist/cjs/helpers/mysql.js +170 -0
- package/dist/cjs/helpers/postgres.d.ts +133 -0
- package/dist/cjs/helpers/postgres.js +141 -0
- package/dist/cjs/index.d.ts +4 -3
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/kysely.d.ts +10 -0
- package/dist/cjs/kysely.js +12 -1
- package/dist/cjs/migration/file-migration-provider.d.ts +5 -2
- package/dist/cjs/migration/migrator.d.ts +5 -2
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +3 -3
- package/dist/cjs/operation-node/create-index-node.d.ts +2 -0
- package/dist/cjs/operation-node/delete-query-node.d.ts +0 -1
- package/dist/cjs/operation-node/delete-query-node.js +0 -6
- package/dist/cjs/operation-node/function-node.d.ts +13 -0
- package/dist/cjs/operation-node/function-node.js +19 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +9 -0
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/operator-node.d.ts +13 -2
- package/dist/cjs/operation-node/operator-node.js +38 -3
- package/dist/cjs/operation-node/query-node.d.ts +25 -8
- package/dist/cjs/operation-node/query-node.js +9 -2
- package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
- package/dist/cjs/operation-node/select-query-node.js +0 -6
- package/dist/cjs/operation-node/update-query-node.d.ts +0 -1
- package/dist/cjs/operation-node/update-query-node.js +0 -6
- package/dist/cjs/parser/binary-operation-parser.d.ts +9 -10
- package/dist/cjs/parser/binary-operation-parser.js +89 -39
- package/dist/cjs/parser/coalesce-parser.d.ts +0 -2
- package/dist/cjs/parser/coalesce-parser.js +0 -9
- package/dist/cjs/parser/expression-parser.d.ts +7 -3
- package/dist/cjs/parser/expression-parser.js +3 -3
- package/dist/cjs/parser/group-by-parser.d.ts +3 -2
- package/dist/cjs/parser/group-by-parser.js +3 -0
- package/dist/cjs/parser/insert-values-parser.d.ts +4 -1
- package/dist/cjs/parser/insert-values-parser.js +19 -13
- package/dist/cjs/parser/join-parser.js +1 -1
- package/dist/cjs/parser/parse-utils.d.ts +0 -2
- package/dist/cjs/parser/parse-utils.js +1 -8
- package/dist/cjs/parser/returning-parser.d.ts +2 -1
- package/dist/cjs/parser/select-parser.d.ts +5 -13
- package/dist/cjs/parser/select-parser.js +8 -4
- package/dist/cjs/parser/table-parser.d.ts +5 -3
- package/dist/cjs/parser/unary-operation-parser.d.ts +5 -2
- package/dist/cjs/parser/unary-operation-parser.js +9 -8
- package/dist/cjs/parser/update-set-parser.d.ts +4 -1
- package/dist/cjs/parser/update-set-parser.js +9 -4
- package/dist/cjs/parser/value-parser.d.ts +5 -0
- package/dist/cjs/parser/value-parser.js +1 -3
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +40 -113
- package/dist/cjs/query-builder/aggregate-function-builder.js +23 -63
- package/dist/cjs/query-builder/delete-query-builder.d.ts +220 -201
- package/dist/cjs/query-builder/delete-query-builder.js +21 -27
- package/dist/cjs/query-builder/delete-result.js +3 -0
- package/dist/cjs/query-builder/deprecated-having-expression-builder.d.ts +62 -0
- package/dist/cjs/query-builder/deprecated-having-expression-builder.js +2 -0
- package/dist/cjs/query-builder/deprecated-on-expression-builder.d.ts +62 -0
- package/dist/cjs/query-builder/deprecated-on-expression-builder.js +2 -0
- package/dist/cjs/query-builder/deprecated-where-expression-builder.d.ts +62 -0
- package/dist/cjs/query-builder/deprecated-where-expression-builder.js +2 -0
- package/dist/cjs/query-builder/function-module.d.ts +40 -12
- package/dist/cjs/query-builder/function-module.js +43 -329
- package/dist/cjs/query-builder/having-interface.d.ts +19 -16
- package/dist/cjs/query-builder/insert-query-builder.d.ts +75 -26
- package/dist/cjs/query-builder/insert-query-builder.js +21 -29
- package/dist/cjs/query-builder/insert-result.js +3 -0
- package/dist/cjs/query-builder/join-builder.d.ts +23 -26
- package/dist/cjs/query-builder/join-builder.js +17 -22
- package/dist/cjs/query-builder/no-result-error.d.ts +1 -0
- package/dist/cjs/query-builder/no-result-error.js +5 -1
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +158 -276
- package/dist/cjs/query-builder/on-conflict-builder.js +52 -36
- package/dist/cjs/query-builder/over-builder.d.ts +5 -0
- package/dist/cjs/query-builder/over-builder.js +7 -0
- package/dist/cjs/query-builder/returning-interface.d.ts +2 -2
- package/dist/cjs/query-builder/select-query-builder.d.ts +148 -237
- package/dist/cjs/query-builder/select-query-builder.js +333 -78
- package/dist/cjs/query-builder/update-query-builder.d.ts +145 -213
- package/dist/cjs/query-builder/update-query-builder.js +21 -115
- package/dist/cjs/query-builder/update-result.js +3 -0
- package/dist/cjs/query-builder/where-interface.d.ts +71 -184
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +3 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +17 -1
- package/dist/cjs/query-creator.d.ts +9 -2
- package/dist/cjs/query-creator.js +1 -24
- package/dist/cjs/query-executor/query-executor.d.ts +3 -3
- package/dist/cjs/raw-builder/raw-builder.d.ts +5 -3
- package/dist/cjs/raw-builder/raw-builder.js +13 -7
- package/dist/cjs/raw-builder/sql.d.ts +17 -9
- package/dist/cjs/raw-builder/sql.js +8 -2
- package/dist/cjs/schema/alter-column-builder.d.ts +5 -0
- package/dist/cjs/schema/alter-column-builder.js +7 -0
- package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
- package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
- package/dist/cjs/schema/alter-table-drop-constraint-builder.d.ts +5 -0
- package/dist/cjs/schema/alter-table-drop-constraint-builder.js +7 -0
- package/dist/cjs/schema/column-definition-builder.d.ts +6 -1
- package/dist/cjs/schema/column-definition-builder.js +8 -1
- package/dist/cjs/schema/create-index-builder.d.ts +51 -9
- package/dist/cjs/schema/create-index-builder.js +17 -0
- package/dist/cjs/schema/create-schema-builder.d.ts +5 -0
- package/dist/cjs/schema/create-schema-builder.js +7 -0
- package/dist/cjs/schema/create-table-builder.d.ts +3 -1
- package/dist/cjs/schema/create-table-builder.js +3 -1
- package/dist/cjs/schema/create-type-builder.d.ts +5 -0
- package/dist/cjs/schema/create-type-builder.js +7 -0
- package/dist/cjs/schema/create-view-builder.d.ts +5 -0
- package/dist/cjs/schema/create-view-builder.js +7 -0
- package/dist/cjs/schema/drop-index-builder.d.ts +5 -0
- package/dist/cjs/schema/drop-index-builder.js +7 -0
- package/dist/cjs/schema/drop-schema-builder.d.ts +5 -0
- package/dist/cjs/schema/drop-schema-builder.js +7 -0
- package/dist/cjs/schema/drop-table-builder.d.ts +5 -0
- package/dist/cjs/schema/drop-table-builder.js +7 -0
- package/dist/cjs/schema/drop-type-builder.d.ts +5 -0
- package/dist/cjs/schema/drop-type-builder.js +7 -0
- package/dist/cjs/schema/drop-view-builder.d.ts +5 -0
- package/dist/cjs/schema/drop-view-builder.js +7 -0
- package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +5 -0
- package/dist/cjs/schema/foreign-key-constraint-builder.js +7 -0
- package/dist/cjs/util/compilable.d.ts +1 -0
- package/dist/cjs/util/compilable.js +6 -0
- package/dist/cjs/util/explainable.d.ts +35 -0
- package/dist/cjs/util/log.d.ts +2 -0
- package/dist/cjs/util/object-utils.js +1 -1
- package/dist/cjs/util/streamable.d.ts +29 -0
- package/dist/cjs/util/streamable.js +2 -0
- package/dist/cjs/util/type-utils.d.ts +1 -0
- package/dist/esm/dialect/mysql/mysql-adapter.js +2 -2
- package/dist/esm/dialect/mysql/mysql-driver.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-driver.js +1 -1
- package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
- package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -0
- package/dist/esm/dialect/sqlite/sqlite-dialect.js +1 -0
- package/dist/esm/driver/runtime-driver.js +4 -2
- package/dist/esm/expression/expression-builder.d.ts +386 -0
- package/dist/esm/expression/expression-builder.js +88 -0
- package/dist/esm/expression/expression-wrapper.d.ts +92 -0
- package/dist/esm/expression/expression-wrapper.js +50 -0
- package/dist/esm/expression/expression.d.ts +1 -1
- package/dist/esm/helpers/mysql.d.ts +140 -0
- package/dist/esm/helpers/mysql.js +165 -0
- package/dist/esm/helpers/postgres.d.ts +133 -0
- package/dist/esm/helpers/postgres.js +136 -0
- package/dist/esm/index.d.ts +4 -3
- package/dist/esm/index.js +2 -1
- package/dist/esm/kysely.d.ts +10 -0
- package/dist/esm/kysely.js +13 -2
- package/dist/esm/migration/file-migration-provider.d.ts +5 -2
- package/dist/esm/migration/migrator.d.ts +5 -2
- package/dist/esm/operation-node/aggregate-function-node.d.ts +3 -3
- package/dist/esm/operation-node/create-index-node.d.ts +2 -0
- package/dist/esm/operation-node/delete-query-node.d.ts +0 -1
- package/dist/esm/operation-node/delete-query-node.js +0 -6
- package/dist/esm/operation-node/function-node.d.ts +13 -0
- package/dist/esm/operation-node/function-node.js +17 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.js +9 -0
- package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-visitor.js +1 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/operator-node.d.ts +13 -2
- package/dist/esm/operation-node/operator-node.js +34 -3
- package/dist/esm/operation-node/query-node.d.ts +25 -8
- package/dist/esm/operation-node/query-node.js +9 -2
- package/dist/esm/operation-node/select-query-node.d.ts +0 -1
- package/dist/esm/operation-node/select-query-node.js +0 -6
- package/dist/esm/operation-node/update-query-node.d.ts +0 -1
- package/dist/esm/operation-node/update-query-node.js +0 -6
- package/dist/esm/parser/binary-operation-parser.d.ts +9 -10
- package/dist/esm/parser/binary-operation-parser.js +85 -37
- package/dist/esm/parser/coalesce-parser.d.ts +0 -2
- package/dist/esm/parser/coalesce-parser.js +1 -7
- package/dist/esm/parser/expression-parser.d.ts +7 -3
- package/dist/esm/parser/expression-parser.js +3 -3
- package/dist/esm/parser/group-by-parser.d.ts +3 -2
- package/dist/esm/parser/group-by-parser.js +3 -0
- package/dist/esm/parser/insert-values-parser.d.ts +4 -1
- package/dist/esm/parser/insert-values-parser.js +18 -12
- package/dist/esm/parser/join-parser.js +2 -2
- package/dist/esm/parser/parse-utils.d.ts +0 -2
- package/dist/esm/parser/parse-utils.js +0 -6
- package/dist/esm/parser/returning-parser.d.ts +2 -1
- package/dist/esm/parser/select-parser.d.ts +5 -13
- package/dist/esm/parser/select-parser.js +7 -3
- package/dist/esm/parser/table-parser.d.ts +5 -3
- package/dist/esm/parser/unary-operation-parser.d.ts +5 -2
- package/dist/esm/parser/unary-operation-parser.js +8 -8
- package/dist/esm/parser/update-set-parser.d.ts +4 -1
- package/dist/esm/parser/update-set-parser.js +7 -2
- package/dist/esm/parser/value-parser.d.ts +5 -0
- package/dist/esm/parser/value-parser.js +1 -3
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +40 -113
- package/dist/esm/query-builder/aggregate-function-builder.js +24 -64
- package/dist/esm/query-builder/delete-query-builder.d.ts +220 -201
- package/dist/esm/query-builder/delete-query-builder.js +24 -30
- package/dist/esm/query-builder/delete-result.js +3 -0
- package/dist/esm/query-builder/deprecated-having-expression-builder.d.ts +62 -0
- package/dist/esm/query-builder/deprecated-having-expression-builder.js +2 -0
- package/dist/esm/query-builder/deprecated-on-expression-builder.d.ts +62 -0
- package/dist/esm/query-builder/deprecated-on-expression-builder.js +2 -0
- package/dist/esm/query-builder/deprecated-where-expression-builder.d.ts +62 -0
- package/dist/esm/query-builder/deprecated-where-expression-builder.js +2 -0
- package/dist/esm/query-builder/function-module.d.ts +40 -12
- package/dist/esm/query-builder/function-module.js +42 -328
- package/dist/esm/query-builder/having-interface.d.ts +19 -16
- package/dist/esm/query-builder/insert-query-builder.d.ts +75 -26
- package/dist/esm/query-builder/insert-query-builder.js +25 -33
- package/dist/esm/query-builder/insert-result.js +3 -0
- package/dist/esm/query-builder/join-builder.d.ts +23 -26
- package/dist/esm/query-builder/join-builder.js +18 -23
- package/dist/esm/query-builder/no-result-error.d.ts +1 -0
- package/dist/esm/query-builder/no-result-error.js +3 -0
- package/dist/esm/query-builder/on-conflict-builder.d.ts +158 -276
- package/dist/esm/query-builder/on-conflict-builder.js +54 -38
- package/dist/esm/query-builder/over-builder.d.ts +5 -0
- package/dist/esm/query-builder/over-builder.js +7 -0
- package/dist/esm/query-builder/returning-interface.d.ts +2 -2
- package/dist/esm/query-builder/select-query-builder.d.ts +148 -237
- package/dist/esm/query-builder/select-query-builder.js +337 -82
- package/dist/esm/query-builder/update-query-builder.d.ts +145 -213
- package/dist/esm/query-builder/update-query-builder.js +25 -119
- package/dist/esm/query-builder/update-result.js +3 -0
- package/dist/esm/query-builder/where-interface.d.ts +71 -184
- package/dist/esm/query-compiler/default-query-compiler.d.ts +3 -0
- package/dist/esm/query-compiler/default-query-compiler.js +17 -1
- package/dist/esm/query-creator.d.ts +9 -2
- package/dist/esm/query-creator.js +1 -24
- package/dist/esm/query-executor/query-executor.d.ts +3 -3
- package/dist/esm/raw-builder/raw-builder.d.ts +5 -3
- package/dist/esm/raw-builder/raw-builder.js +13 -7
- package/dist/esm/raw-builder/sql.d.ts +17 -9
- package/dist/esm/raw-builder/sql.js +8 -2
- package/dist/esm/schema/alter-column-builder.d.ts +5 -0
- package/dist/esm/schema/alter-column-builder.js +7 -0
- package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
- package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
- package/dist/esm/schema/alter-table-drop-constraint-builder.d.ts +5 -0
- package/dist/esm/schema/alter-table-drop-constraint-builder.js +7 -0
- package/dist/esm/schema/column-definition-builder.d.ts +6 -1
- package/dist/esm/schema/column-definition-builder.js +8 -1
- package/dist/esm/schema/create-index-builder.d.ts +51 -9
- package/dist/esm/schema/create-index-builder.js +17 -0
- package/dist/esm/schema/create-schema-builder.d.ts +5 -0
- package/dist/esm/schema/create-schema-builder.js +7 -0
- package/dist/esm/schema/create-table-builder.d.ts +3 -1
- package/dist/esm/schema/create-table-builder.js +3 -1
- package/dist/esm/schema/create-type-builder.d.ts +5 -0
- package/dist/esm/schema/create-type-builder.js +7 -0
- package/dist/esm/schema/create-view-builder.d.ts +5 -0
- package/dist/esm/schema/create-view-builder.js +7 -0
- package/dist/esm/schema/drop-index-builder.d.ts +5 -0
- package/dist/esm/schema/drop-index-builder.js +7 -0
- package/dist/esm/schema/drop-schema-builder.d.ts +5 -0
- package/dist/esm/schema/drop-schema-builder.js +7 -0
- package/dist/esm/schema/drop-table-builder.d.ts +5 -0
- package/dist/esm/schema/drop-table-builder.js +7 -0
- package/dist/esm/schema/drop-type-builder.d.ts +5 -0
- package/dist/esm/schema/drop-type-builder.js +7 -0
- package/dist/esm/schema/drop-view-builder.d.ts +5 -0
- package/dist/esm/schema/drop-view-builder.js +7 -0
- package/dist/esm/schema/foreign-key-constraint-builder.d.ts +5 -0
- package/dist/esm/schema/foreign-key-constraint-builder.js +7 -0
- package/dist/esm/util/compilable.d.ts +1 -0
- package/dist/esm/util/compilable.js +4 -1
- package/dist/esm/util/explainable.d.ts +35 -0
- package/dist/esm/util/log.d.ts +2 -0
- package/dist/esm/util/object-utils.js +1 -1
- package/dist/esm/util/streamable.d.ts +29 -0
- package/dist/esm/util/streamable.js +2 -0
- package/dist/esm/util/type-utils.d.ts +1 -0
- package/helpers/mysql.d.ts +1 -0
- package/helpers/mysql.js +1 -0
- package/helpers/postgres.d.ts +1 -0
- package/helpers/postgres.js +1 -0
- package/package.json +26 -9
- package/dist/cjs/query-builder/expression-builder.d.ts +0 -126
- package/dist/cjs/query-builder/expression-builder.js +0 -107
- package/dist/esm/query-builder/expression-builder.d.ts +0 -126
- package/dist/esm/query-builder/expression-builder.js +0 -104
|
@@ -2,77 +2,63 @@ import { OperationNodeSource } from '../operation-node/operation-node-source.js'
|
|
|
2
2
|
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
3
3
|
import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
|
|
4
4
|
import { TableExpression, From, FromTables } from '../parser/table-parser.js';
|
|
5
|
-
import { SelectExpression } from '../parser/select-parser.js';
|
|
5
|
+
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
|
+
import { QueryNode } from '../operation-node/query-node.js';
|
|
8
9
|
import { MergePartial, Nullable, SimplifyResult, SimplifySingleResult } from '../util/type-utils.js';
|
|
9
10
|
import { UpdateQueryNode } from '../operation-node/update-query-node.js';
|
|
10
|
-
import { UpdateObject } from '../parser/update-set-parser.js';
|
|
11
|
+
import { UpdateObject, UpdateObjectFactory } from '../parser/update-set-parser.js';
|
|
11
12
|
import { Compilable } from '../util/compilable.js';
|
|
12
13
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
13
14
|
import { QueryId } from '../util/query-id.js';
|
|
14
15
|
import { UpdateResult } from './update-result.js';
|
|
15
16
|
import { KyselyPlugin } from '../plugin/kysely-plugin.js';
|
|
16
|
-
import { WhereInterface } from './where-interface.js';
|
|
17
|
+
import { WhereExpressionFactory, WhereInterface } from './where-interface.js';
|
|
17
18
|
import { ReturningInterface } from './returning-interface.js';
|
|
18
19
|
import { NoResultErrorConstructor } from './no-result-error.js';
|
|
19
20
|
import { Selectable } from '../util/column-type.js';
|
|
20
21
|
import { Explainable, ExplainFormat } from '../util/explainable.js';
|
|
21
22
|
import { AliasedExpression, Expression } from '../expression/expression.js';
|
|
22
|
-
import { ComparisonOperatorExpression, OperandValueExpressionOrList
|
|
23
|
+
import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
|
|
23
24
|
import { ExistsExpression } from '../parser/unary-operation-parser.js';
|
|
24
25
|
import { KyselyTypeError } from '../util/type-error.js';
|
|
25
|
-
|
|
26
|
+
import { Streamable } from '../util/streamable.js';
|
|
27
|
+
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> {
|
|
26
28
|
#private;
|
|
27
29
|
constructor(props: UpdateQueryBuilderProps);
|
|
28
30
|
/**
|
|
29
|
-
* Adds a `where`
|
|
31
|
+
* Adds a `where` expression to the query.
|
|
30
32
|
*
|
|
31
|
-
*
|
|
33
|
+
* Calling this method multiple times will combine the expressions using `and`.
|
|
32
34
|
*
|
|
33
|
-
*
|
|
35
|
+
* Also see {@link whereRef}
|
|
34
36
|
*
|
|
35
|
-
*
|
|
37
|
+
* ### Examples
|
|
36
38
|
*
|
|
37
39
|
* ```ts
|
|
38
40
|
* const person = await db
|
|
39
41
|
* .selectFrom('person')
|
|
40
42
|
* .selectAll()
|
|
41
|
-
* .where('
|
|
43
|
+
* .where('first_name', '=', 'Jennifer')
|
|
44
|
+
* .where('age', '>', 40)
|
|
42
45
|
* .executeTakeFirst()
|
|
43
46
|
* ```
|
|
44
47
|
*
|
|
45
48
|
* The generated SQL (PostgreSQL):
|
|
46
49
|
*
|
|
47
50
|
* ```sql
|
|
48
|
-
* select * from "person" where "
|
|
51
|
+
* select * from "person" where "first_name" = $1 and "age" > $2
|
|
49
52
|
* ```
|
|
50
53
|
*
|
|
51
54
|
* Operator can be any supported operator or if the typings don't support it
|
|
52
|
-
* you can always use
|
|
55
|
+
* you can always use:
|
|
53
56
|
*
|
|
54
57
|
* ```ts
|
|
55
58
|
* sql`your operator`
|
|
56
59
|
* ```
|
|
57
60
|
*
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
* ```ts
|
|
61
|
-
* const persons = await db
|
|
62
|
-
* .selectFrom('person')
|
|
63
|
-
* .selectAll()
|
|
64
|
-
* .where('id', '>', 100)
|
|
65
|
-
* .execute()
|
|
66
|
-
* ```
|
|
67
|
-
*
|
|
68
|
-
* The generated SQL (PostgreSQL):
|
|
69
|
-
*
|
|
70
|
-
* ```sql
|
|
71
|
-
* select * from "person" where "id" > $1
|
|
72
|
-
* ```
|
|
73
|
-
*
|
|
74
|
-
* `where` methods don't change the type of the query. You can add
|
|
75
|
-
* conditional statements easily by doing something like this:
|
|
61
|
+
* You can add expressions conditionally like this:
|
|
76
62
|
*
|
|
77
63
|
* ```ts
|
|
78
64
|
* let query = db
|
|
@@ -85,16 +71,16 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
85
71
|
* query = query.where('first_name', '=', firstName)
|
|
86
72
|
* }
|
|
87
73
|
*
|
|
74
|
+
* if (lastName) {
|
|
75
|
+
* query = query.where('last_name', '=', lastName)
|
|
76
|
+
* }
|
|
77
|
+
*
|
|
88
78
|
* const persons = await query.execute()
|
|
89
79
|
* ```
|
|
90
80
|
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
* Both the first and third argument can also be subqueries.
|
|
95
|
-
* A subquery is defined by passing a function and calling
|
|
96
|
-
* the `selectFrom` method of the object passed into the
|
|
97
|
-
* function:
|
|
81
|
+
* Both the first and third argument can also be arbitrary expressions like
|
|
82
|
+
* subqueries. An expression can defined by passing a function and calling
|
|
83
|
+
* the methods of the {@link ExpressionBuilder} passed to the callback:
|
|
98
84
|
*
|
|
99
85
|
* ```ts
|
|
100
86
|
* const persons = await db
|
|
@@ -125,8 +111,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
125
111
|
* ```
|
|
126
112
|
*
|
|
127
113
|
* A `where in` query can be built by using the `in` operator and an array
|
|
128
|
-
* of values. The values in the array can also be
|
|
129
|
-
* {@link sql} expressions.
|
|
114
|
+
* of values. The values in the array can also be expressions:
|
|
130
115
|
*
|
|
131
116
|
* ```ts
|
|
132
117
|
* const persons = await db
|
|
@@ -142,40 +127,53 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
142
127
|
* select * from "person" where "id" in ($1, $2, $3)
|
|
143
128
|
* ```
|
|
144
129
|
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
130
|
+
* For complex `where` expressions you can pass in a single callback and
|
|
131
|
+
* use the {@link ExpressionBuilder} to build your expression:
|
|
147
132
|
*
|
|
148
133
|
* ```ts
|
|
149
|
-
* import { sql } from 'kysely'
|
|
150
|
-
*
|
|
151
134
|
* const persons = await db
|
|
152
135
|
* .selectFrom('person')
|
|
153
|
-
* .selectAll()
|
|
154
|
-
* .where(
|
|
155
|
-
*
|
|
156
|
-
*
|
|
157
|
-
*
|
|
158
|
-
*
|
|
159
|
-
*
|
|
136
|
+
* .selectAll('person')
|
|
137
|
+
* .where(({ cmpr, or, and, not, exists, selectFrom, val }) => and([
|
|
138
|
+
* or([
|
|
139
|
+
* cmpr('first_name', '=', firstName),
|
|
140
|
+
* cmpr('age', '<', maxAge)
|
|
141
|
+
* ]),
|
|
142
|
+
* not(exists(
|
|
143
|
+
* selectFrom('pet').select('pet.id').whereRef('pet.owner_id', '=', 'person.id')
|
|
144
|
+
* ))
|
|
145
|
+
* ]))
|
|
160
146
|
* ```
|
|
161
147
|
*
|
|
162
148
|
* The generated SQL (PostgreSQL):
|
|
163
149
|
*
|
|
164
150
|
* ```sql
|
|
165
|
-
* select
|
|
166
|
-
*
|
|
151
|
+
* select "person".*
|
|
152
|
+
* from "person"
|
|
153
|
+
* where (
|
|
154
|
+
* (
|
|
155
|
+
* "first_name" = $1
|
|
156
|
+
* or "age" < $2
|
|
157
|
+
* )
|
|
158
|
+
* and not exists (
|
|
159
|
+
* select "pet"."id" from "pet" where "pet"."owner_id" = "person"."id"
|
|
160
|
+
* )
|
|
161
|
+
* )
|
|
167
162
|
* ```
|
|
168
163
|
*
|
|
169
|
-
* If
|
|
170
|
-
*
|
|
164
|
+
* If everything else fails, you can always use the {@link sql} tag
|
|
165
|
+
* as any of the arguments, including the operator:
|
|
171
166
|
*
|
|
172
167
|
* ```ts
|
|
168
|
+
* import { sql } from 'kysely'
|
|
169
|
+
*
|
|
173
170
|
* const persons = await db
|
|
174
171
|
* .selectFrom('person')
|
|
175
172
|
* .selectAll()
|
|
176
|
-
* .where(
|
|
177
|
-
*
|
|
178
|
-
*
|
|
173
|
+
* .where(
|
|
174
|
+
* sql`coalesce(first_name, last_name)`,
|
|
175
|
+
* 'like',
|
|
176
|
+
* '%' + name + '%',
|
|
179
177
|
* )
|
|
180
178
|
* .execute()
|
|
181
179
|
* ```
|
|
@@ -183,7 +181,8 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
183
181
|
* The generated SQL (PostgreSQL):
|
|
184
182
|
*
|
|
185
183
|
* ```sql
|
|
186
|
-
* select * from "person"
|
|
184
|
+
* select * from "person"
|
|
185
|
+
* where coalesce(first_name, last_name) like $1
|
|
187
186
|
* ```
|
|
188
187
|
*
|
|
189
188
|
* In all examples above the columns were known at compile time
|
|
@@ -205,12 +204,12 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
205
204
|
* .selectFrom('person')
|
|
206
205
|
* .selectAll()
|
|
207
206
|
* .where(ref(columnFromUserInput), '=', 1)
|
|
208
|
-
* .
|
|
207
|
+
* .where(sql.id(columnFromUserInput), '=', 2)
|
|
209
208
|
* .execute()
|
|
210
209
|
* ```
|
|
211
210
|
*/
|
|
212
211
|
where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
213
|
-
where(
|
|
212
|
+
where(factory: WhereExpressionFactory<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
214
213
|
where(expression: Expression<any>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
215
214
|
/**
|
|
216
215
|
* Adds a `where` clause where both sides of the operator are references
|
|
@@ -242,7 +241,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
242
241
|
* const persons = await db
|
|
243
242
|
* .selectFrom('person')
|
|
244
243
|
* .selectAll('person')
|
|
245
|
-
* .select((
|
|
244
|
+
* .select((eb) => eb
|
|
246
245
|
* .selectFrom('pet')
|
|
247
246
|
* .select('name')
|
|
248
247
|
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
@@ -265,152 +264,33 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
265
264
|
*/
|
|
266
265
|
whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
267
266
|
/**
|
|
268
|
-
*
|
|
269
|
-
*
|
|
270
|
-
* It's often necessary to wrap `or where` clauses in parentheses to control
|
|
271
|
-
* precendence. You can use the one argument version of the `where` method
|
|
272
|
-
* for that. See the examples.
|
|
273
|
-
*
|
|
274
|
-
* ### Examples
|
|
275
|
-
*
|
|
276
|
-
* ```ts
|
|
277
|
-
* const persons = await db
|
|
278
|
-
* .selectFrom('person')
|
|
279
|
-
* .selectAll()
|
|
280
|
-
* .where('id', '=', 1)
|
|
281
|
-
* .orWhere('id', '=', 2)
|
|
282
|
-
* .execute()
|
|
283
|
-
* ```
|
|
284
|
-
*
|
|
285
|
-
* The generated SQL (PostgreSQL):
|
|
286
|
-
*
|
|
287
|
-
* ```sql
|
|
288
|
-
* select * from "person" where "id" = 1 or "id" = 2
|
|
289
|
-
* ```
|
|
290
|
-
*
|
|
291
|
-
* Grouping with parentheses:
|
|
292
|
-
*
|
|
293
|
-
* ```ts
|
|
294
|
-
* const persons = await db
|
|
295
|
-
* .selectFrom('person')
|
|
296
|
-
* .selectAll()
|
|
297
|
-
* .where((qb) => qb
|
|
298
|
-
* .where('id', '=', 1)
|
|
299
|
-
* .orWhere('id', '=', 2)
|
|
300
|
-
* )
|
|
301
|
-
* .execute()
|
|
302
|
-
* ```
|
|
303
|
-
*
|
|
304
|
-
* The generated SQL (PostgreSQL):
|
|
305
|
-
*
|
|
306
|
-
* ```sql
|
|
307
|
-
* select * from "person" (where "id" = 1 or "id" = 2)
|
|
308
|
-
* ```
|
|
309
|
-
*
|
|
310
|
-
* Even the first `where` can be an `orWhere`. This is useful
|
|
311
|
-
* if you are looping through a set of conditions:
|
|
312
|
-
*
|
|
313
|
-
* ```ts
|
|
314
|
-
* const persons = await db
|
|
315
|
-
* .selectFrom('person')
|
|
316
|
-
* .selectAll()
|
|
317
|
-
* .where((qb) => qb
|
|
318
|
-
* .orWhere('id', '=', 1)
|
|
319
|
-
* .orWhere('id', '=', 2)
|
|
320
|
-
* )
|
|
321
|
-
* .execute()
|
|
322
|
-
* ```
|
|
323
|
-
*
|
|
324
|
-
* The generated SQL (PostgreSQL):
|
|
325
|
-
*
|
|
326
|
-
* ```sql
|
|
327
|
-
* select * from "person" (where "id" = 1 or "id" = 2)
|
|
328
|
-
* ```
|
|
267
|
+
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
329
268
|
*/
|
|
330
269
|
orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
331
|
-
orWhere(
|
|
270
|
+
orWhere(factory: WhereExpressionFactory<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
332
271
|
orWhere(expression: Expression<any>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
333
272
|
/**
|
|
334
|
-
*
|
|
335
|
-
*
|
|
336
|
-
* Also see {@link orWhere} and {@link where}.
|
|
273
|
+
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
337
274
|
*/
|
|
338
275
|
orWhereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
339
276
|
/**
|
|
340
|
-
*
|
|
341
|
-
*
|
|
342
|
-
* You can either use a subquery or a raw {@link sql} snippet.
|
|
343
|
-
*
|
|
344
|
-
* ### Examples
|
|
345
|
-
*
|
|
346
|
-
* The query below selets all persons that own a pet named Catto:
|
|
347
|
-
*
|
|
348
|
-
* ```ts
|
|
349
|
-
* const petName = 'Catto'
|
|
350
|
-
* const persons = await db
|
|
351
|
-
* .selectFrom('person')
|
|
352
|
-
* .selectAll()
|
|
353
|
-
* .whereExists((qb) => qb
|
|
354
|
-
* .selectFrom('pet')
|
|
355
|
-
* .select('pet.id')
|
|
356
|
-
* .whereRef('person.id', '=', 'pet.owner_id')
|
|
357
|
-
* .where('pet.name', '=', petName)
|
|
358
|
-
* )
|
|
359
|
-
* .execute()
|
|
360
|
-
* ```
|
|
361
|
-
*
|
|
362
|
-
* The generated SQL (PostgreSQL):
|
|
363
|
-
*
|
|
364
|
-
* ```sql
|
|
365
|
-
* select * from "person"
|
|
366
|
-
* where exists (
|
|
367
|
-
* select "pet"."id"
|
|
368
|
-
* from "pet"
|
|
369
|
-
* where "person"."id" = "pet"."owner_id"
|
|
370
|
-
* and "pet"."name" = $1
|
|
371
|
-
* )
|
|
372
|
-
* ```
|
|
373
|
-
*
|
|
374
|
-
* The same query as in the previous example but with using raw {@link sql}:
|
|
375
|
-
*
|
|
376
|
-
* ```ts
|
|
377
|
-
* import { sql } from 'kysely'
|
|
378
|
-
*
|
|
379
|
-
* const petName = 'Catto'
|
|
380
|
-
* db.selectFrom('person')
|
|
381
|
-
* .selectAll()
|
|
382
|
-
* .whereExists(
|
|
383
|
-
* sql`(select pet.id from pet where person.id = pet.owner_id and pet.name = ${petName})`
|
|
384
|
-
* )
|
|
385
|
-
* ```
|
|
386
|
-
*
|
|
387
|
-
* The generated SQL (PostgreSQL):
|
|
388
|
-
*
|
|
389
|
-
* ```sql
|
|
390
|
-
* select * from "person"
|
|
391
|
-
* where exists (
|
|
392
|
-
* select pet.id
|
|
393
|
-
* from pet
|
|
394
|
-
* where person.id = pet.owner_id
|
|
395
|
-
* and pet.name = $1
|
|
396
|
-
* )
|
|
397
|
-
* ```
|
|
277
|
+
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
398
278
|
*/
|
|
399
279
|
whereExists(arg: ExistsExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
400
280
|
/**
|
|
401
|
-
*
|
|
281
|
+
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
402
282
|
*/
|
|
403
283
|
whereNotExists(arg: ExistsExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
404
284
|
/**
|
|
405
|
-
*
|
|
285
|
+
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
406
286
|
*/
|
|
407
287
|
orWhereExists(arg: ExistsExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
408
288
|
/**
|
|
409
|
-
*
|
|
289
|
+
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
410
290
|
*/
|
|
411
291
|
orWhereNotExists(arg: ExistsExpression<DB, TB>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
412
292
|
/**
|
|
413
|
-
* Clears all where
|
|
293
|
+
* Clears all where expressions from the query.
|
|
414
294
|
*
|
|
415
295
|
* ### Examples
|
|
416
296
|
*
|
|
@@ -440,9 +320,9 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
440
320
|
* ```ts
|
|
441
321
|
* db.updateTable('person')
|
|
442
322
|
* .from('pet')
|
|
443
|
-
* .set({
|
|
444
|
-
* first_name:
|
|
445
|
-
* })
|
|
323
|
+
* .set((eb) => ({
|
|
324
|
+
* first_name: eb.ref('pet.name')
|
|
325
|
+
* }))
|
|
446
326
|
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
447
327
|
* ```
|
|
448
328
|
*
|
|
@@ -470,7 +350,7 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
470
350
|
* .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|
471
351
|
* // `select` needs to come after the call to `innerJoin` so
|
|
472
352
|
* // that you can select from the joined table.
|
|
473
|
-
* .select('person.id', 'pet.name')
|
|
353
|
+
* .select(['person.id', 'pet.name'])
|
|
474
354
|
* .execute()
|
|
475
355
|
*
|
|
476
356
|
* result[0].id
|
|
@@ -588,7 +468,11 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
588
468
|
*
|
|
589
469
|
* This method takes an object whose keys are column names and values are
|
|
590
470
|
* values to update. In addition to the column's type, the values can be
|
|
591
|
-
* raw {@link sql} snippets or select queries.
|
|
471
|
+
* any expressions such as raw {@link sql} snippets or select queries.
|
|
472
|
+
*
|
|
473
|
+
* This method also accepts a callback that returns the update object. The
|
|
474
|
+
* callback takes an instance of {@link ExpressionBuilder} as its only argument.
|
|
475
|
+
* The expression builder can be used to create arbitrary update expressions.
|
|
592
476
|
*
|
|
593
477
|
* The return value of an update query is an instance of {@link UpdateResult}.
|
|
594
478
|
* You can use the {@link returning} method on supported databases to get out
|
|
@@ -641,19 +525,20 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
641
525
|
* update "person" set "first_name" = $1, "last_name" = $2 where "id" = $3 returning "id"
|
|
642
526
|
* ```
|
|
643
527
|
*
|
|
644
|
-
* In addition to primitives, the values can
|
|
645
|
-
*
|
|
528
|
+
* In addition to primitives, the values can arbitrary expressions including
|
|
529
|
+
* raw `sql` snippets or subqueries:
|
|
646
530
|
*
|
|
647
531
|
* ```ts
|
|
648
532
|
* import { sql } from 'kysely'
|
|
649
533
|
*
|
|
650
534
|
* const result = await db
|
|
651
535
|
* .updateTable('person')
|
|
652
|
-
* .set({
|
|
536
|
+
* .set(({ selectFrom, ref, fn }) => ({
|
|
653
537
|
* first_name: 'Jennifer',
|
|
538
|
+
* middle_name: ref('first_name'),
|
|
539
|
+
* age: selectFrom('person').select(fn.avg('age')),
|
|
654
540
|
* last_name: sql`${'Ani'} || ${'ston'}`,
|
|
655
|
-
*
|
|
656
|
-
* })
|
|
541
|
+
* }))
|
|
657
542
|
* .where('id', '=', 1)
|
|
658
543
|
* .executeTakeFirst()
|
|
659
544
|
*
|
|
@@ -665,12 +550,14 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
665
550
|
* ```sql
|
|
666
551
|
* update "person" set
|
|
667
552
|
* "first_name" = $1,
|
|
668
|
-
* "
|
|
669
|
-
* "age" = (select avg(age) from "person")
|
|
553
|
+
* "middle_name" = "first_name",
|
|
554
|
+
* "age" = (select avg(age) from "person"),
|
|
555
|
+
* "last_name" = $2 || $3
|
|
670
556
|
* where "id" = $4
|
|
671
557
|
* ```
|
|
672
558
|
*/
|
|
673
|
-
set(
|
|
559
|
+
set(update: UpdateObject<DB, TB, UT>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
560
|
+
set(update: UpdateObjectFactory<DB, TB, UT>): UpdateQueryBuilder<DB, UT, TB, O>;
|
|
674
561
|
/**
|
|
675
562
|
* Allows you to return data from modified rows.
|
|
676
563
|
*
|
|
@@ -722,23 +609,23 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
722
609
|
* first_name: 'Jennifer',
|
|
723
610
|
* last_name: 'Aniston'
|
|
724
611
|
* })
|
|
725
|
-
* .returning([
|
|
612
|
+
* .returning(eb => [
|
|
726
613
|
* 'id as id',
|
|
727
614
|
* sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
|
|
728
|
-
*
|
|
615
|
+
* eb.selectFrom('pets').select('pet.id').limit(1).as('first_pet_id')
|
|
729
616
|
* ])
|
|
730
617
|
* .executeTakeFirst()
|
|
731
618
|
* ```
|
|
732
619
|
*/
|
|
733
|
-
returning<SE extends SelectExpression<DB, TB>>(
|
|
734
|
-
returning<SE extends SelectExpression<DB, TB>>(selection: SE): UpdateQueryBuilder<DB, UT, TB, ReturningRow<DB, TB, O, SE>>;
|
|
620
|
+
returning<SE extends SelectExpression<DB, TB>>(selection: SelectArg<DB, TB, SE>): UpdateQueryBuilder<DB, UT, TB, ReturningRow<DB, TB, O, SE>>;
|
|
735
621
|
/**
|
|
736
622
|
* Adds a `returning *` to an insert/update/delete query on databases
|
|
737
623
|
* that support `returning` such as PostgreSQL.
|
|
738
624
|
*/
|
|
739
625
|
returningAll(): UpdateQueryBuilder<DB, UT, TB, Selectable<DB[TB]>>;
|
|
740
626
|
/**
|
|
741
|
-
* Simply calls the
|
|
627
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
628
|
+
* what the provided function returns.
|
|
742
629
|
*
|
|
743
630
|
* If you want to conditionally call a method on `this`, see
|
|
744
631
|
* the {@link $if} method.
|
|
@@ -886,25 +773,70 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
886
773
|
* the query returned no result.
|
|
887
774
|
*
|
|
888
775
|
* By default an instance of {@link NoResultError} is thrown, but you can
|
|
889
|
-
* provide a custom error class as the only argument to throw a different
|
|
776
|
+
* provide a custom error class, or callback as the only argument to throw a different
|
|
890
777
|
* error.
|
|
891
778
|
*/
|
|
892
|
-
executeTakeFirstOrThrow(errorConstructor?: NoResultErrorConstructor): Promise<SimplifyResult<O>>;
|
|
779
|
+
executeTakeFirstOrThrow(errorConstructor?: NoResultErrorConstructor | ((node: QueryNode) => Error)): Promise<SimplifyResult<O>>;
|
|
893
780
|
/**
|
|
894
|
-
* Executes query
|
|
781
|
+
* Executes the query and streams the rows.
|
|
782
|
+
*
|
|
783
|
+
* The optional argument `chunkSize` defines how many rows to fetch from the database
|
|
784
|
+
* at a time. It only affects some dialects like PostgreSQL that support it.
|
|
785
|
+
*
|
|
786
|
+
* ### Examples
|
|
787
|
+
*
|
|
788
|
+
* ```ts
|
|
789
|
+
* const stream = db.
|
|
790
|
+
* .selectFrom('person')
|
|
791
|
+
* .select(['first_name', 'last_name'])
|
|
792
|
+
* .where('gender', '=', 'other')
|
|
793
|
+
* .stream()
|
|
794
|
+
*
|
|
795
|
+
* for await (const person of stream) {
|
|
796
|
+
* console.log(person.first_name)
|
|
797
|
+
*
|
|
798
|
+
* if (person.last_name === 'Something') {
|
|
799
|
+
* // Breaking or returning before the stream has ended will release
|
|
800
|
+
* // the database connection and invalidate the stream.
|
|
801
|
+
* break
|
|
802
|
+
* }
|
|
803
|
+
* }
|
|
804
|
+
* ```
|
|
805
|
+
*/
|
|
806
|
+
stream(chunkSize?: number): AsyncIterableIterator<O>;
|
|
807
|
+
/**
|
|
808
|
+
* Executes query with `explain` statement before the main query.
|
|
895
809
|
*
|
|
896
810
|
* ```ts
|
|
897
811
|
* const explained = await db
|
|
898
|
-
* .
|
|
899
|
-
* .
|
|
900
|
-
* .
|
|
812
|
+
* .selectFrom('person')
|
|
813
|
+
* .where('gender', '=', 'female')
|
|
814
|
+
* .selectAll()
|
|
901
815
|
* .explain('json')
|
|
902
816
|
* ```
|
|
903
817
|
*
|
|
904
818
|
* The generated SQL (MySQL):
|
|
905
819
|
*
|
|
906
820
|
* ```sql
|
|
907
|
-
* explain format=json
|
|
821
|
+
* explain format=json select * from `person` where `gender` = ?
|
|
822
|
+
* ```
|
|
823
|
+
*
|
|
824
|
+
* You can also execute `explain analyze` statements.
|
|
825
|
+
*
|
|
826
|
+
* ```ts
|
|
827
|
+
* import { sql } from 'kysely'
|
|
828
|
+
*
|
|
829
|
+
* const explained = await db
|
|
830
|
+
* .selectFrom('person')
|
|
831
|
+
* .where('gender', '=', 'female')
|
|
832
|
+
* .selectAll()
|
|
833
|
+
* .explain('json', sql`analyze`)
|
|
834
|
+
* ```
|
|
835
|
+
*
|
|
836
|
+
* The generated SQL (PostgreSQL):
|
|
837
|
+
*
|
|
838
|
+
* ```sql
|
|
839
|
+
* explain (analyze, format json) select * from "person" where "gender" = $1
|
|
908
840
|
* ```
|
|
909
841
|
*/
|
|
910
842
|
explain<ER extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: Expression<any>): Promise<ER[]>;
|