kysely 0.11.4 → 0.13.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 +35 -11
- package/dist/cjs/dialect/dialect-adapter-base.d.ts +36 -0
- package/dist/cjs/dialect/mysql/mysql-adapter.d.ts +38 -2
- package/dist/cjs/dialect/mysql/mysql-adapter.js +2 -1
- package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +16 -0
- package/dist/cjs/dialect/mysql/mysql-driver.d.ts +29 -0
- package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +3 -0
- package/dist/cjs/dialect/postgres/postgres-adapter.d.ts +38 -2
- package/dist/cjs/dialect/postgres/postgres-adapter.js +2 -1
- package/dist/cjs/dialect/postgres/postgres-dialect.d.ts +16 -0
- package/dist/cjs/dialect/postgres/postgres-driver.d.ts +29 -0
- package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +3 -0
- package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +38 -2
- package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +16 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.d.ts +29 -0
- package/dist/cjs/dialect/sqlite/sqlite-introspector.d.ts +3 -0
- package/dist/cjs/driver/default-connection-provider.d.ts +4 -0
- package/dist/cjs/driver/runtime-driver.d.ts +29 -0
- package/dist/cjs/driver/single-connection-provider.d.ts +4 -0
- package/dist/cjs/dynamic/dynamic-reference-builder.d.ts +1 -0
- package/dist/cjs/dynamic/dynamic-reference-builder.js +9 -1
- package/dist/cjs/dynamic/dynamic.d.ts +6 -7
- package/dist/cjs/dynamic/dynamic.js +6 -7
- package/dist/cjs/index.d.ts +15 -4
- package/dist/cjs/index.js +12 -1
- package/dist/cjs/kysely.d.ts +170 -11
- package/dist/cjs/kysely.js +69 -9
- package/dist/cjs/migration/migration.d.ts +156 -13
- package/dist/cjs/migration/migration.js +256 -135
- package/dist/cjs/operation-node/column-definition-node.d.ts +6 -5
- package/dist/cjs/operation-node/column-definition-node.js +0 -4
- package/dist/cjs/operation-node/common-table-expression-name-node.d.ts +15 -0
- package/dist/cjs/operation-node/common-table-expression-name-node.js +23 -0
- package/dist/cjs/operation-node/common-table-expression-node.d.ts +3 -3
- package/dist/cjs/operation-node/create-table-node.d.ts +6 -2
- package/dist/cjs/operation-node/create-table-node.js +6 -6
- package/dist/cjs/operation-node/create-view-node.d.ts +1 -0
- package/dist/cjs/operation-node/insert-query-node.d.ts +4 -4
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +4 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +22 -2
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +4 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +2 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/query-node.d.ts +0 -2
- package/dist/cjs/operation-node/query-node.js +0 -10
- package/dist/cjs/operation-node/values-node.d.ts +15 -0
- package/dist/cjs/operation-node/values-node.js +18 -0
- package/dist/cjs/operation-node/with-node.d.ts +3 -1
- package/dist/cjs/operation-node/with-node.js +2 -1
- package/dist/cjs/package.json +1 -3
- package/dist/cjs/parser/complex-expression-parser.d.ts +9 -0
- package/dist/cjs/parser/complex-expression-parser.js +25 -0
- package/dist/cjs/parser/filter-parser.d.ts +13 -4
- package/dist/cjs/parser/filter-parser.js +21 -24
- package/dist/cjs/parser/insert-values-parser.d.ts +5 -9
- package/dist/cjs/parser/insert-values-parser.js +27 -41
- package/dist/cjs/parser/order-by-parser.d.ts +1 -1
- package/dist/cjs/parser/parse-context.d.ts +22 -8
- package/dist/cjs/parser/parse-context.js +10 -10
- package/dist/cjs/parser/reference-parser.d.ts +8 -7
- package/dist/cjs/parser/reference-parser.js +8 -17
- package/dist/cjs/parser/returning-parser.d.ts +1 -5
- package/dist/cjs/parser/select-parser.d.ts +12 -14
- package/dist/cjs/parser/select-parser.js +5 -9
- package/dist/cjs/parser/table-parser.d.ts +9 -11
- package/dist/cjs/parser/table-parser.js +2 -8
- package/dist/cjs/parser/union-parser.d.ts +2 -2
- package/dist/cjs/parser/union-parser.js +1 -6
- package/dist/cjs/parser/update-set-parser.d.ts +2 -8
- package/dist/cjs/parser/update-set-parser.js +6 -26
- package/dist/cjs/parser/value-parser.d.ts +9 -6
- package/dist/cjs/parser/value-parser.js +7 -30
- package/dist/cjs/parser/with-parser.d.ts +36 -6
- package/dist/cjs/parser/with-parser.js +13 -2
- package/dist/cjs/plugin/camel-case/camel-case-plugin.d.ts +36 -2
- package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.d.ts +34 -0
- package/dist/cjs/plugin/immediate-value.ts/immediate-value-plugin.js +2 -2
- package/dist/cjs/plugin/with-schema/with-schema-plugin.d.ts +34 -0
- package/dist/cjs/plugin/with-schema/with-schema-transformer.js +8 -0
- package/dist/cjs/query-builder/delete-query-builder.d.ts +647 -0
- package/dist/cjs/query-builder/delete-query-builder.js +185 -0
- package/dist/cjs/query-builder/expression-builder.d.ts +8 -6
- package/dist/cjs/query-builder/expression-builder.js +3 -3
- package/dist/cjs/query-builder/function-builder.d.ts +2 -1
- package/dist/cjs/query-builder/function-builder.js +2 -1
- package/dist/cjs/query-builder/having-interface.d.ts +49 -0
- package/dist/cjs/query-builder/having-interface.js +2 -0
- package/dist/cjs/query-builder/insert-query-builder.d.ts +504 -0
- package/dist/cjs/query-builder/insert-query-builder.js +256 -0
- package/dist/cjs/query-builder/insert-result.d.ts +3 -2
- package/dist/cjs/query-builder/insert-result.js +3 -2
- package/dist/cjs/query-builder/join-builder.d.ts +19 -20
- package/dist/cjs/query-builder/join-builder.js +12 -12
- package/dist/cjs/query-builder/join-interface.d.ts +130 -0
- package/dist/cjs/query-builder/join-interface.js +2 -0
- package/dist/cjs/query-builder/no-result-error.d.ts +9 -0
- package/dist/cjs/query-builder/no-result-error.js +14 -0
- package/dist/cjs/query-builder/returning-interface.d.ts +73 -0
- package/dist/cjs/query-builder/returning-interface.js +2 -0
- package/dist/cjs/query-builder/{query-builder.d.ts → select-query-builder.d.ts} +145 -651
- package/dist/cjs/query-builder/select-query-builder.js +571 -0
- package/dist/cjs/query-builder/update-query-builder.d.ts +735 -0
- package/dist/cjs/query-builder/update-query-builder.js +279 -0
- package/dist/cjs/query-builder/where-interface.d.ts +378 -0
- package/dist/cjs/query-builder/where-interface.js +2 -0
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +4 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +37 -6
- package/dist/cjs/query-creator.d.ts +69 -43
- package/dist/cjs/query-creator.js +66 -29
- package/dist/cjs/query-executor/default-query-executor.d.ts +19 -0
- package/dist/cjs/query-executor/noop-query-executor.d.ts +19 -0
- package/dist/cjs/query-executor/query-executor.d.ts +1 -1
- package/dist/cjs/query-executor/query-executor.js +1 -1
- package/dist/cjs/raw-builder/raw-builder.d.ts +2 -0
- package/dist/cjs/raw-builder/raw-builder.js +7 -1
- package/dist/cjs/schema/alter-table-builder.d.ts +230 -2
- package/dist/cjs/schema/alter-table-builder.js +12 -0
- package/dist/cjs/schema/column-definition-builder.d.ts +147 -20
- package/dist/cjs/schema/column-definition-builder.js +4 -1
- package/dist/cjs/schema/create-index-builder.d.ts +2 -1
- package/dist/cjs/schema/create-index-builder.js +2 -1
- package/dist/cjs/schema/create-table-builder.d.ts +26 -9
- package/dist/cjs/schema/create-table-builder.js +42 -9
- package/dist/cjs/schema/create-view-builder.d.ts +17 -3
- package/dist/cjs/schema/create-view-builder.js +25 -16
- package/dist/cjs/schema/schema.d.ts +18 -11
- package/dist/cjs/schema/schema.js +18 -11
- package/dist/cjs/util/log.d.ts +3 -2
- package/dist/cjs/util/log.js +8 -15
- package/dist/cjs/util/type-utils.d.ts +7 -7
- package/dist/esm/dialect/dialect-adapter-base.d.ts +36 -0
- package/dist/esm/dialect/mysql/mysql-adapter.d.ts +38 -2
- package/dist/esm/dialect/mysql/mysql-adapter.js +2 -1
- package/dist/esm/dialect/mysql/mysql-dialect.d.ts +16 -0
- package/dist/esm/dialect/mysql/mysql-driver.d.ts +29 -0
- package/dist/esm/dialect/mysql/mysql-introspector.d.ts +3 -0
- package/dist/esm/dialect/postgres/postgres-adapter.d.ts +38 -2
- package/dist/esm/dialect/postgres/postgres-adapter.js +2 -1
- package/dist/esm/dialect/postgres/postgres-dialect.d.ts +16 -0
- package/dist/esm/dialect/postgres/postgres-driver.d.ts +29 -0
- package/dist/esm/dialect/postgres/postgres-introspector.d.ts +3 -0
- package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +38 -2
- package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +16 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.d.ts +29 -0
- package/dist/esm/dialect/sqlite/sqlite-introspector.d.ts +3 -0
- package/dist/esm/driver/default-connection-provider.d.ts +4 -0
- package/dist/esm/driver/runtime-driver.d.ts +29 -0
- package/dist/esm/driver/single-connection-provider.d.ts +4 -0
- package/dist/esm/dynamic/dynamic-reference-builder.d.ts +1 -0
- package/dist/esm/dynamic/dynamic-reference-builder.js +7 -0
- package/dist/esm/dynamic/dynamic.d.ts +6 -7
- package/dist/esm/dynamic/dynamic.js +6 -7
- package/dist/esm/index.d.ts +15 -4
- package/dist/esm/index.js +12 -1
- package/dist/esm/kysely.d.ts +170 -11
- package/dist/esm/kysely.js +69 -9
- package/dist/esm/migration/migration.d.ts +156 -13
- package/dist/esm/migration/migration.js +255 -134
- package/dist/esm/operation-node/column-definition-node.d.ts +6 -5
- package/dist/esm/operation-node/column-definition-node.js +0 -4
- package/dist/esm/operation-node/common-table-expression-name-node.d.ts +15 -0
- package/dist/esm/operation-node/common-table-expression-name-node.js +20 -0
- package/dist/esm/operation-node/common-table-expression-node.d.ts +3 -3
- package/dist/esm/operation-node/create-table-node.d.ts +6 -2
- package/dist/esm/operation-node/create-table-node.js +6 -6
- package/dist/esm/operation-node/create-view-node.d.ts +1 -0
- package/dist/esm/operation-node/insert-query-node.d.ts +4 -4
- package/dist/esm/operation-node/operation-node-transformer.d.ts +4 -0
- package/dist/esm/operation-node/operation-node-transformer.js +22 -2
- package/dist/esm/operation-node/operation-node-visitor.d.ts +4 -0
- package/dist/esm/operation-node/operation-node-visitor.js +2 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/query-node.d.ts +0 -2
- package/dist/esm/operation-node/query-node.js +0 -10
- package/dist/esm/operation-node/values-node.d.ts +15 -0
- package/dist/esm/operation-node/values-node.js +15 -0
- package/dist/esm/operation-node/with-node.d.ts +3 -1
- package/dist/esm/operation-node/with-node.js +2 -1
- package/dist/esm/package.json +1 -3
- package/dist/esm/parser/complex-expression-parser.d.ts +9 -0
- package/dist/esm/parser/complex-expression-parser.js +20 -0
- package/dist/esm/parser/filter-parser.d.ts +13 -4
- package/dist/esm/parser/filter-parser.js +21 -24
- package/dist/esm/parser/insert-values-parser.d.ts +5 -9
- package/dist/esm/parser/insert-values-parser.js +27 -40
- package/dist/esm/parser/order-by-parser.d.ts +1 -1
- package/dist/esm/parser/parse-context.d.ts +22 -8
- package/dist/esm/parser/parse-context.js +10 -10
- package/dist/esm/parser/reference-parser.d.ts +8 -7
- package/dist/esm/parser/reference-parser.js +9 -18
- package/dist/esm/parser/returning-parser.d.ts +1 -5
- package/dist/esm/parser/select-parser.d.ts +12 -14
- package/dist/esm/parser/select-parser.js +6 -10
- package/dist/esm/parser/table-parser.d.ts +9 -11
- package/dist/esm/parser/table-parser.js +3 -9
- package/dist/esm/parser/union-parser.d.ts +2 -2
- package/dist/esm/parser/union-parser.js +1 -6
- package/dist/esm/parser/update-set-parser.d.ts +2 -8
- package/dist/esm/parser/update-set-parser.js +5 -24
- package/dist/esm/parser/value-parser.d.ts +9 -6
- package/dist/esm/parser/value-parser.js +8 -31
- package/dist/esm/parser/with-parser.d.ts +36 -6
- package/dist/esm/parser/with-parser.js +13 -2
- package/dist/esm/plugin/camel-case/camel-case-plugin.d.ts +36 -2
- package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.d.ts +34 -0
- package/dist/esm/plugin/immediate-value.ts/immediate-value-plugin.js +2 -2
- package/dist/esm/plugin/with-schema/with-schema-plugin.d.ts +34 -0
- package/dist/esm/plugin/with-schema/with-schema-transformer.js +8 -0
- package/dist/esm/query-builder/delete-query-builder.d.ts +647 -0
- package/dist/esm/query-builder/delete-query-builder.js +181 -0
- package/dist/esm/query-builder/expression-builder.d.ts +8 -6
- package/dist/esm/query-builder/expression-builder.js +3 -3
- package/dist/esm/query-builder/function-builder.d.ts +2 -1
- package/dist/esm/query-builder/function-builder.js +2 -1
- package/dist/esm/query-builder/having-interface.d.ts +49 -0
- package/dist/esm/query-builder/having-interface.js +1 -0
- package/dist/esm/query-builder/insert-query-builder.d.ts +504 -0
- package/dist/esm/query-builder/insert-query-builder.js +252 -0
- package/dist/esm/query-builder/insert-result.d.ts +3 -2
- package/dist/esm/query-builder/insert-result.js +3 -2
- package/dist/esm/query-builder/join-builder.d.ts +19 -20
- package/dist/esm/query-builder/join-builder.js +12 -12
- package/dist/esm/query-builder/join-interface.d.ts +130 -0
- package/dist/esm/query-builder/join-interface.js +1 -0
- package/dist/esm/query-builder/no-result-error.d.ts +9 -0
- package/dist/esm/query-builder/no-result-error.js +10 -0
- package/dist/esm/query-builder/returning-interface.d.ts +73 -0
- package/dist/esm/query-builder/returning-interface.js +1 -0
- package/dist/esm/query-builder/{query-builder.d.ts → select-query-builder.d.ts} +145 -651
- package/dist/esm/query-builder/select-query-builder.js +566 -0
- package/dist/esm/query-builder/update-query-builder.d.ts +735 -0
- package/dist/esm/query-builder/update-query-builder.js +275 -0
- package/dist/esm/query-builder/where-interface.d.ts +378 -0
- package/dist/esm/query-builder/where-interface.js +1 -0
- package/dist/esm/query-compiler/default-query-compiler.d.ts +4 -0
- package/dist/esm/query-compiler/default-query-compiler.js +37 -6
- package/dist/esm/query-creator.d.ts +69 -43
- package/dist/esm/query-creator.js +66 -29
- package/dist/esm/query-executor/default-query-executor.d.ts +19 -0
- package/dist/esm/query-executor/noop-query-executor.d.ts +19 -0
- package/dist/esm/query-executor/query-executor.d.ts +1 -1
- package/dist/esm/query-executor/query-executor.js +1 -1
- package/dist/esm/raw-builder/raw-builder.d.ts +2 -0
- package/dist/esm/raw-builder/raw-builder.js +7 -1
- package/dist/esm/schema/alter-table-builder.d.ts +230 -2
- package/dist/esm/schema/alter-table-builder.js +12 -0
- package/dist/esm/schema/column-definition-builder.d.ts +147 -20
- package/dist/esm/schema/column-definition-builder.js +4 -1
- package/dist/esm/schema/create-index-builder.d.ts +2 -1
- package/dist/esm/schema/create-index-builder.js +2 -1
- package/dist/esm/schema/create-table-builder.d.ts +26 -9
- package/dist/esm/schema/create-table-builder.js +43 -10
- package/dist/esm/schema/create-view-builder.d.ts +17 -3
- package/dist/esm/schema/create-view-builder.js +25 -16
- package/dist/esm/schema/schema.d.ts +18 -11
- package/dist/esm/schema/schema.js +18 -11
- package/dist/esm/util/log.d.ts +3 -2
- package/dist/esm/util/log.js +7 -14
- package/dist/esm/util/type-utils.d.ts +7 -7
- package/package.json +10 -8
- package/dist/cjs/query-builder/query-builder.js +0 -1067
- package/dist/esm/query-builder/query-builder.js +0 -1061
|
@@ -2,48 +2,33 @@ import { AliasNode } from '../operation-node/alias-node.js';
|
|
|
2
2
|
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
3
3
|
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
4
4
|
import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
|
|
5
|
-
import { TableExpression,
|
|
5
|
+
import { TableExpression, TableExpressionDatabase, TableExpressionTables, LeftJoinTableExpressionDatabase, RightJoinTableExpressionDatabase, FullJoinTableExpressionDatabase } from '../parser/table-parser.js';
|
|
6
6
|
import { SelectExpression, QueryBuilderWithSelection, SelectAllQueryBuilder } from '../parser/select-parser.js';
|
|
7
|
-
import { ExistsExpression, FilterOperator } from '../parser/filter-parser.js';
|
|
8
|
-
import { InsertObject } from '../parser/insert-values-parser.js';
|
|
9
|
-
import { QueryBuilderWithReturning } from '../parser/returning-parser.js';
|
|
7
|
+
import { ExistsExpression, FilterOperator, FilterValueExpressionOrList, WhereGrouper, HavingGrouper } from '../parser/filter-parser.js';
|
|
10
8
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import { AnyColumn, AnyRawBuilder, SingleResultType } from '../util/type-utils.js';
|
|
9
|
+
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
10
|
+
import { AnyRawBuilder, SingleResultType } from '../util/type-utils.js';
|
|
14
11
|
import { OrderByDirectionExpression, OrderByExpression } from '../parser/order-by-parser.js';
|
|
15
|
-
import { MutationObject } from '../parser/update-set-parser.js';
|
|
16
12
|
import { Compilable } from '../util/compilable.js';
|
|
17
13
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
18
14
|
import { QueryId } from '../util/query-id.js';
|
|
19
|
-
import { OnConflictConstraintTarget } from '../parser/on-conflict-parser.js';
|
|
20
15
|
import { ParseContext } from '../parser/parse-context.js';
|
|
21
16
|
import { UnionExpression } from '../parser/union-parser.js';
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
* that have not actually been joined to the query. the `TB` parameter defines the
|
|
29
|
-
* table names/aliases that have been joined to the query.
|
|
30
|
-
*
|
|
31
|
-
* @typeParam TB - The names/aliases of the tables that have been joined to the query
|
|
32
|
-
* using `from`, `with` any join method and so on. This type is a union of `DB`
|
|
33
|
-
* type's keys. For example `'person' | 'pet'`.
|
|
34
|
-
*
|
|
35
|
-
* @typePAram O - The query output row type.
|
|
36
|
-
*/
|
|
37
|
-
export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements OperationNodeSource, Compilable {
|
|
17
|
+
import { KyselyPlugin } from '../plugin/kysely-plugin.js';
|
|
18
|
+
import { WhereInterface } from './where-interface.js';
|
|
19
|
+
import { JoinInterface } from './join-interface.js';
|
|
20
|
+
import { NoResultErrorConstructor } from './no-result-error.js';
|
|
21
|
+
import { HavingInterface } from './having-interface.js';
|
|
22
|
+
export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, HavingInterface<DB, TB>, JoinInterface<DB, TB>, OperationNodeSource, Compilable {
|
|
38
23
|
#private;
|
|
39
|
-
constructor(props:
|
|
24
|
+
constructor(props: SelectQueryBuilderProps);
|
|
40
25
|
/**
|
|
41
26
|
* Adds a `where` clause to the query.
|
|
42
27
|
*
|
|
43
|
-
* Also see {@link
|
|
44
|
-
*
|
|
28
|
+
* Also see {@link orWhere}, {@link whereExists} and {@link whereRef}.
|
|
29
|
+
*
|
|
30
|
+
* ### Examples
|
|
45
31
|
*
|
|
46
|
-
* @example
|
|
47
32
|
* Find a row by column value:
|
|
48
33
|
*
|
|
49
34
|
* ```ts
|
|
@@ -60,7 +45,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
60
45
|
* select * from "person" where "id" = $1
|
|
61
46
|
* ```
|
|
62
47
|
*
|
|
63
|
-
* @example
|
|
64
48
|
* Operator can be any supported operator or if the typings don't support it
|
|
65
49
|
* you can always use `db.raw('your operator')`.
|
|
66
50
|
*
|
|
@@ -78,7 +62,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
78
62
|
* select * from "person" where "id" > $1
|
|
79
63
|
* ```
|
|
80
64
|
*
|
|
81
|
-
* @example
|
|
82
65
|
* The `where` methods don't change the type of the query. You can add
|
|
83
66
|
* conditional `where`s easily by doing something like this:
|
|
84
67
|
*
|
|
@@ -98,10 +81,9 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
98
81
|
* `returning` methods, which DO change the return type of the
|
|
99
82
|
* query.
|
|
100
83
|
*
|
|
101
|
-
* @example
|
|
102
84
|
* Both the first and third argument can also be subqueries.
|
|
103
85
|
* A subquery is defined by passing a function and calling
|
|
104
|
-
* the `
|
|
86
|
+
* the `selectFrom` method of the object passed into the
|
|
105
87
|
* function:
|
|
106
88
|
*
|
|
107
89
|
* ```ts
|
|
@@ -109,7 +91,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
109
91
|
* .selectFrom('person')
|
|
110
92
|
* .selectAll()
|
|
111
93
|
* .where(
|
|
112
|
-
* (qb) => qb.
|
|
94
|
+
* (qb) => qb.selectFrom('pet')
|
|
113
95
|
* .select('pet.name')
|
|
114
96
|
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
115
97
|
* .limit(1),
|
|
@@ -132,7 +114,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
132
114
|
* ) = $2
|
|
133
115
|
* ```
|
|
134
116
|
*
|
|
135
|
-
* @example
|
|
136
117
|
* A `where in` query can be built by using the `in` operator and an array
|
|
137
118
|
* of values. The values in the array can also be subqueries or raw
|
|
138
119
|
* instances.
|
|
@@ -151,8 +132,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
151
132
|
* select * from "person" where "id" in ($1, $2, $3)
|
|
152
133
|
* ```
|
|
153
134
|
*
|
|
154
|
-
* @
|
|
155
|
-
* If everything else fails, you can always pass {@link Kysely.raw | raw}
|
|
135
|
+
* If everything else fails, you can always pass {@link Kysely.raw | raw}
|
|
156
136
|
* as any of the arguments, including the operator:
|
|
157
137
|
*
|
|
158
138
|
* ```ts
|
|
@@ -174,9 +154,8 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
174
154
|
* where coalesce(first_name, last_name) like $1
|
|
175
155
|
* ```
|
|
176
156
|
*
|
|
177
|
-
* @example
|
|
178
157
|
* If you only pass one function argument to this method, it can be
|
|
179
|
-
* used to create parentheses around other where
|
|
158
|
+
* used to create parentheses around other where statements:
|
|
180
159
|
*
|
|
181
160
|
* ```ts
|
|
182
161
|
* const persons = await db
|
|
@@ -195,7 +174,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
195
174
|
* select * from "person" (where "id" = 1 or "id" = 2)
|
|
196
175
|
* ```
|
|
197
176
|
*
|
|
198
|
-
* @example
|
|
199
177
|
* In all examples above the columns were known at compile time
|
|
200
178
|
* (except for the `raw` expressions). By default kysely only allows
|
|
201
179
|
* you to refer to columns that exist in the database **and** can be
|
|
@@ -208,7 +186,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
208
186
|
* uses both:
|
|
209
187
|
*
|
|
210
188
|
* ```ts
|
|
211
|
-
* const {
|
|
189
|
+
* const { ref } = db.dynamic
|
|
212
190
|
*
|
|
213
191
|
* const persons = await db
|
|
214
192
|
* .selectFrom('person')
|
|
@@ -218,9 +196,9 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
218
196
|
* .execute()
|
|
219
197
|
* ```
|
|
220
198
|
*/
|
|
221
|
-
where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs:
|
|
222
|
-
where(grouper:
|
|
223
|
-
where(raw: AnyRawBuilder):
|
|
199
|
+
where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
|
|
200
|
+
where(grouper: WhereGrouper<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
201
|
+
where(raw: AnyRawBuilder): SelectQueryBuilder<DB, TB, O>;
|
|
224
202
|
/**
|
|
225
203
|
* Adds a `where` clause where both sides of the operator are references
|
|
226
204
|
* to columns.
|
|
@@ -229,7 +207,8 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
229
207
|
* value by default. `whereRef` treats it as a column reference. This method is
|
|
230
208
|
* expecially useful with joins and correclated subqueries.
|
|
231
209
|
*
|
|
232
|
-
*
|
|
210
|
+
* ### Examples
|
|
211
|
+
*
|
|
233
212
|
* Usage with a join:
|
|
234
213
|
*
|
|
235
214
|
* ```ts
|
|
@@ -244,7 +223,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
244
223
|
* select * from "person", "pet" where "person"."first_name" = "pet"."name"
|
|
245
224
|
* ```
|
|
246
225
|
*
|
|
247
|
-
* @example
|
|
248
226
|
* Usage in a subquery:
|
|
249
227
|
*
|
|
250
228
|
* ```ts
|
|
@@ -252,7 +230,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
252
230
|
* .selectFrom('person')
|
|
253
231
|
* .selectAll('person')
|
|
254
232
|
* .select((qb) => qb
|
|
255
|
-
* .
|
|
233
|
+
* .selectFrom('pet')
|
|
256
234
|
* .select('name')
|
|
257
235
|
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
258
236
|
* .limit(1)
|
|
@@ -272,16 +250,16 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
272
250
|
* ) as "pet_name"
|
|
273
251
|
* from "person"
|
|
274
252
|
*/
|
|
275
|
-
whereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>):
|
|
253
|
+
whereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
276
254
|
/**
|
|
277
|
-
* Adds an `or where` clause to the query. Otherwise works just like
|
|
278
|
-
* {@link QueryBuilder.where | where}.
|
|
255
|
+
* Adds an `or where` clause to the query. Otherwise works just like {@link where}.
|
|
279
256
|
*
|
|
280
257
|
* It's often necessary to wrap `or where` clauses in parentheses to control
|
|
281
258
|
* precendence. You can use the one argument version of the `where` method
|
|
282
259
|
* for that. See the examples.
|
|
283
260
|
*
|
|
284
|
-
*
|
|
261
|
+
* ### Examples
|
|
262
|
+
*
|
|
285
263
|
* ```ts
|
|
286
264
|
* const persons = await db
|
|
287
265
|
* .selectFrom('person')
|
|
@@ -297,7 +275,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
297
275
|
* select * from "person" where "id" = 1 or "id" = 2
|
|
298
276
|
* ```
|
|
299
277
|
*
|
|
300
|
-
* @example
|
|
301
278
|
* Grouping with parentheses:
|
|
302
279
|
*
|
|
303
280
|
* ```ts
|
|
@@ -317,7 +294,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
317
294
|
* select * from "person" (where "id" = 1 or "id" = 2)
|
|
318
295
|
* ```
|
|
319
296
|
*
|
|
320
|
-
* @example
|
|
321
297
|
* Even the first `where` can be an `orWhere`. This is useful
|
|
322
298
|
* if you are looping through a set of conditions:
|
|
323
299
|
*
|
|
@@ -338,22 +314,22 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
338
314
|
* select * from "person" (where "id" = 1 or "id" = 2)
|
|
339
315
|
* ```
|
|
340
316
|
*/
|
|
341
|
-
orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs:
|
|
342
|
-
orWhere(grouper:
|
|
343
|
-
orWhere(raw: AnyRawBuilder):
|
|
317
|
+
orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
|
|
318
|
+
orWhere(grouper: WhereGrouper<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
319
|
+
orWhere(raw: AnyRawBuilder): SelectQueryBuilder<DB, TB, O>;
|
|
344
320
|
/**
|
|
345
|
-
* Adds an `or where` clause to the query. Otherwise works just like
|
|
346
|
-
* {@link QueryBuilder.whereRef | whereRef}.
|
|
321
|
+
* Adds an `or where` clause to the query. Otherwise works just like {@link whereRef}.
|
|
347
322
|
*
|
|
348
|
-
* Also see {@link
|
|
323
|
+
* Also see {@link orWhere} and {@link where}.
|
|
349
324
|
*/
|
|
350
|
-
orWhereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>):
|
|
325
|
+
orWhereRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
351
326
|
/**
|
|
352
327
|
* Adds a `where exists` clause to the query.
|
|
353
328
|
*
|
|
354
329
|
* You can either use a subquery or a raw instance.
|
|
355
330
|
*
|
|
356
|
-
*
|
|
331
|
+
* ### Examples
|
|
332
|
+
*
|
|
357
333
|
* The query below selets all persons that own a pet named Catto:
|
|
358
334
|
*
|
|
359
335
|
* ```ts
|
|
@@ -361,7 +337,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
361
337
|
* .selectFrom('person')
|
|
362
338
|
* .selectAll()
|
|
363
339
|
* .whereExists((qb) => qb
|
|
364
|
-
* .
|
|
340
|
+
* .selectFrom('pet')
|
|
365
341
|
* .select('pet.id')
|
|
366
342
|
* .whereRef('person.id', '=', 'pet.owner_id')
|
|
367
343
|
* .where('pet.name', '=', 'Catto')
|
|
@@ -381,7 +357,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
381
357
|
* )
|
|
382
358
|
* ```
|
|
383
359
|
*
|
|
384
|
-
* @example
|
|
385
360
|
* The same query as in the previous example but with using raw:
|
|
386
361
|
*
|
|
387
362
|
* ```ts
|
|
@@ -407,63 +382,63 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
407
382
|
* )
|
|
408
383
|
* ```
|
|
409
384
|
*/
|
|
410
|
-
whereExists(arg: ExistsExpression<DB, TB>):
|
|
385
|
+
whereExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
411
386
|
/**
|
|
412
|
-
* Just like {@link
|
|
387
|
+
* Just like {@link whereExists} but creates a `not exists` clause.
|
|
413
388
|
*/
|
|
414
|
-
whereNotExists(arg: ExistsExpression<DB, TB>):
|
|
389
|
+
whereNotExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
415
390
|
/**
|
|
416
|
-
* Just like {@link
|
|
391
|
+
* Just like {@link whereExists} but creates a `or exists` clause.
|
|
417
392
|
*/
|
|
418
|
-
orWhereExists(arg: ExistsExpression<DB, TB>):
|
|
393
|
+
orWhereExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
419
394
|
/**
|
|
420
|
-
* Just like {@link
|
|
395
|
+
* Just like {@link whereExists} but creates a `or not exists` clause.
|
|
421
396
|
*/
|
|
422
|
-
orWhereNotExists(arg: ExistsExpression<DB, TB>):
|
|
397
|
+
orWhereNotExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
423
398
|
/**
|
|
424
|
-
* Just like {@link
|
|
399
|
+
* Just like {@link WhereInterface.where | where} but adds a `having` statement
|
|
425
400
|
* instead of a `where` statement.
|
|
426
401
|
*/
|
|
427
|
-
having<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs:
|
|
428
|
-
having(grouper:
|
|
429
|
-
having(raw: AnyRawBuilder):
|
|
402
|
+
having<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
|
|
403
|
+
having(grouper: HavingGrouper<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
404
|
+
having(raw: AnyRawBuilder): SelectQueryBuilder<DB, TB, O>;
|
|
430
405
|
/**
|
|
431
|
-
* Just like {@link
|
|
406
|
+
* Just like {@link WhereInterface.whereRef | whereRef} but adds a `having` statement
|
|
432
407
|
* instead of a `where` statement.
|
|
433
408
|
*/
|
|
434
|
-
havingRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>):
|
|
409
|
+
havingRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
435
410
|
/**
|
|
436
|
-
* Just like {@link
|
|
411
|
+
* Just like {@link WhereInterface.orWhere | orWhere} but adds a `having` statement
|
|
437
412
|
* instead of a `where` statement.
|
|
438
413
|
*/
|
|
439
|
-
orHaving<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs:
|
|
440
|
-
orHaving(grouper:
|
|
441
|
-
orHaving(raw: AnyRawBuilder):
|
|
414
|
+
orHaving<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: FilterOperator, rhs: FilterValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
|
|
415
|
+
orHaving(grouper: HavingGrouper<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
416
|
+
orHaving(raw: AnyRawBuilder): SelectQueryBuilder<DB, TB, O>;
|
|
442
417
|
/**
|
|
443
|
-
* Just like {@link
|
|
418
|
+
* Just like {@link WhereInterface.orWhereRef | orWhereRef} but adds a `having` statement
|
|
444
419
|
* instead of a `where` statement.
|
|
445
420
|
*/
|
|
446
|
-
orHavingRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>):
|
|
421
|
+
orHavingRef(lhs: ReferenceExpression<DB, TB>, op: FilterOperator, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
447
422
|
/**
|
|
448
|
-
* Just like {@link
|
|
423
|
+
* Just like {@link WhereInterface.whereExists | whereExists} but adds a `having` statement
|
|
449
424
|
* instead of a `where` statement.
|
|
450
425
|
*/
|
|
451
|
-
havingExists(arg: ExistsExpression<DB, TB>):
|
|
426
|
+
havingExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
452
427
|
/**
|
|
453
|
-
* Just like {@link
|
|
428
|
+
* Just like {@link WhereInterface.whereNotExists | whereNotExists} but adds a `having` statement
|
|
454
429
|
* instead of a `where` statement.
|
|
455
430
|
*/
|
|
456
|
-
havingNotExist(arg: ExistsExpression<DB, TB>):
|
|
431
|
+
havingNotExist(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
457
432
|
/**
|
|
458
|
-
* Just like {@link
|
|
433
|
+
* Just like {@link WhereInterface.orWhereExists | orWhereExists} but adds a `having` statement
|
|
459
434
|
* instead of a `where` statement.
|
|
460
435
|
*/
|
|
461
|
-
orHavingExists(arg: ExistsExpression<DB, TB>):
|
|
436
|
+
orHavingExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
462
437
|
/**
|
|
463
|
-
* Just like {@link
|
|
438
|
+
* Just like {@link WhereInterface.orWhereNotExists | orWhereNotExists} but adds a `having` statement
|
|
464
439
|
* instead of a `where` statement.
|
|
465
440
|
*/
|
|
466
|
-
orHavingNotExists(arg: ExistsExpression<DB, TB>):
|
|
441
|
+
orHavingNotExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
467
442
|
/**
|
|
468
443
|
* Adds a select clause to the query.
|
|
469
444
|
*
|
|
@@ -481,9 +456,10 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
481
456
|
* same as calling `select(['id', 'first_name']).
|
|
482
457
|
*
|
|
483
458
|
* To select all columns of the query or specific tables see the
|
|
484
|
-
* {@link
|
|
459
|
+
* {@link SelectQueryBuilder.selectAll | selectAll} method.
|
|
460
|
+
*
|
|
461
|
+
* ### Examples
|
|
485
462
|
*
|
|
486
|
-
* @example
|
|
487
463
|
* Select a single column:
|
|
488
464
|
*
|
|
489
465
|
* ```ts
|
|
@@ -501,7 +477,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
501
477
|
* select "id" from "person" where "first_name" = $1
|
|
502
478
|
* ```
|
|
503
479
|
*
|
|
504
|
-
* @example
|
|
505
480
|
* Select a single column and specify a table:
|
|
506
481
|
*
|
|
507
482
|
* ```ts
|
|
@@ -518,7 +493,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
518
493
|
* select "person"."id" from "person", "pet"
|
|
519
494
|
* ```
|
|
520
495
|
*
|
|
521
|
-
* @example
|
|
522
496
|
* Select multiple columns:
|
|
523
497
|
*
|
|
524
498
|
* ```ts
|
|
@@ -536,7 +510,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
536
510
|
* select "person"."id", "first_name" from "person"
|
|
537
511
|
* ```
|
|
538
512
|
*
|
|
539
|
-
* @example
|
|
540
513
|
* Aliased selections:
|
|
541
514
|
*
|
|
542
515
|
* ```ts
|
|
@@ -560,7 +533,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
560
533
|
* from "person"
|
|
561
534
|
* ```
|
|
562
535
|
*
|
|
563
|
-
* @example
|
|
564
536
|
* You can also select subqueries and raw expressions. Note that you
|
|
565
537
|
* always need to give a name for the selections using the `as`
|
|
566
538
|
* method:
|
|
@@ -569,7 +541,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
569
541
|
* const persons = await db.selectFrom('person')
|
|
570
542
|
* .select([
|
|
571
543
|
* (qb) => qb
|
|
572
|
-
* .
|
|
544
|
+
* .selectFrom('pet')
|
|
573
545
|
* .whereRef('person.id', '=', 'pet.owner_id')
|
|
574
546
|
* .select('pet.name')
|
|
575
547
|
* .limit(1)
|
|
@@ -599,7 +571,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
599
571
|
* In case you use `raw` you need to specify the type of the expression
|
|
600
572
|
* (in this example `string`).
|
|
601
573
|
*
|
|
602
|
-
* @example
|
|
603
574
|
* All the examples above assume you know the column names at compile time.
|
|
604
575
|
* While it's better to build your code like that (that way you also know
|
|
605
576
|
* the types) sometimes it's not possible or you just prefer to write more
|
|
@@ -616,7 +587,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
616
587
|
*
|
|
617
588
|
* // A type that lists all possible values `columnFromUserInput` can have.
|
|
618
589
|
* // You can use `keyof Person` if any column of an interface is allowed.
|
|
619
|
-
* type PossibleColumns = 'last_name' |
|
|
590
|
+
* type PossibleColumns = 'last_name' | 'first_name' | 'birth_date'
|
|
620
591
|
*
|
|
621
592
|
* const spersons = await db.selectFrom('person')
|
|
622
593
|
* .select([
|
|
@@ -628,24 +599,25 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
628
599
|
* // The resulting type contains all `PossibleColumns` as optional fields
|
|
629
600
|
* // because we cannot know which field was actually selected before
|
|
630
601
|
* // running the code.
|
|
631
|
-
* const lastName: string |
|
|
632
|
-
* const firstName: string |
|
|
633
|
-
* const birthDate: string |
|
|
602
|
+
* const lastName: string | undefined = persons[0].last_name
|
|
603
|
+
* const firstName: string | undefined = persons[0].first_name
|
|
604
|
+
* const birthDate: string | undefined = persons[0].birth_date
|
|
634
605
|
*
|
|
635
606
|
* // The result type also contains the compile time selection `id`.
|
|
636
607
|
* persons[0].id
|
|
637
608
|
* ```
|
|
638
609
|
*/
|
|
639
|
-
select<
|
|
640
|
-
select<
|
|
610
|
+
select<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): QueryBuilderWithSelection<DB, TB, O, SE>;
|
|
611
|
+
select<SE extends SelectExpression<DB, TB>>(selection: SE): QueryBuilderWithSelection<DB, TB, O, SE>;
|
|
641
612
|
/**
|
|
642
613
|
* Adds `distinct on` selections to the select clause.
|
|
643
614
|
*
|
|
644
|
-
* Takes the same inputs as the {@link
|
|
645
|
-
* See the {@link
|
|
615
|
+
* Takes the same inputs as the {@link SelectQueryBuilder.select | select} method.
|
|
616
|
+
* See the {@link SelectQueryBuilder.select | select} method's documentation for
|
|
646
617
|
* more examples.
|
|
647
618
|
*
|
|
648
|
-
*
|
|
619
|
+
* ### Examples
|
|
620
|
+
*
|
|
649
621
|
* ```ts
|
|
650
622
|
* await db.selectFrom('person')
|
|
651
623
|
* .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|
@@ -664,12 +636,13 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
664
636
|
* where "pet"."name" = $1
|
|
665
637
|
* ```
|
|
666
638
|
*/
|
|
667
|
-
distinctOn<
|
|
668
|
-
distinctOn<
|
|
639
|
+
distinctOn<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): SelectQueryBuilder<DB, TB, O>;
|
|
640
|
+
distinctOn<SE extends SelectExpression<DB, TB>>(selection: SE): SelectQueryBuilder<DB, TB, O>;
|
|
669
641
|
/**
|
|
670
642
|
* Makes the selection distinct.
|
|
671
643
|
*
|
|
672
|
-
*
|
|
644
|
+
* ### Examples
|
|
645
|
+
*
|
|
673
646
|
* ```ts
|
|
674
647
|
* await db.selectFrom('person')
|
|
675
648
|
* .select('first_name')
|
|
@@ -683,35 +656,36 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
683
656
|
* select distinct "first_name" from "person"
|
|
684
657
|
* ```
|
|
685
658
|
*/
|
|
686
|
-
distinct():
|
|
659
|
+
distinct(): SelectQueryBuilder<DB, TB, O>;
|
|
687
660
|
/**
|
|
688
661
|
* Adds the `for update` option to a select query on supported databases.
|
|
689
662
|
*/
|
|
690
|
-
forUpdate():
|
|
663
|
+
forUpdate(): SelectQueryBuilder<DB, TB, O>;
|
|
691
664
|
/**
|
|
692
665
|
* Adds the `for share` option to a select query on supported databases.
|
|
693
666
|
*/
|
|
694
|
-
forShare():
|
|
667
|
+
forShare(): SelectQueryBuilder<DB, TB, O>;
|
|
695
668
|
/**
|
|
696
669
|
* Adds the `for key share` option to a select query on supported databases.
|
|
697
670
|
*/
|
|
698
|
-
forKeyShare():
|
|
671
|
+
forKeyShare(): SelectQueryBuilder<DB, TB, O>;
|
|
699
672
|
/**
|
|
700
673
|
* Adds the `for no key update` option to a select query on supported databases.
|
|
701
674
|
*/
|
|
702
|
-
forNoKeyUpdate():
|
|
675
|
+
forNoKeyUpdate(): SelectQueryBuilder<DB, TB, O>;
|
|
703
676
|
/**
|
|
704
677
|
* Adds the `skip locked` option to a select query on supported databases.
|
|
705
678
|
*/
|
|
706
|
-
skipLocked():
|
|
679
|
+
skipLocked(): SelectQueryBuilder<DB, TB, O>;
|
|
707
680
|
/**
|
|
708
681
|
* Adds the `nowait` option to a select query on supported databases.
|
|
709
682
|
*/
|
|
710
|
-
noWait():
|
|
683
|
+
noWait(): SelectQueryBuilder<DB, TB, O>;
|
|
711
684
|
/**
|
|
712
685
|
* Adds a `select *` or `select table.*` clause to the query.
|
|
713
686
|
*
|
|
714
|
-
*
|
|
687
|
+
* ### Examples
|
|
688
|
+
*
|
|
715
689
|
* ```ts
|
|
716
690
|
* const persons = await db
|
|
717
691
|
* .selectFrom('person')
|
|
@@ -725,7 +699,8 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
725
699
|
* select * from "person"
|
|
726
700
|
* ```
|
|
727
701
|
*
|
|
728
|
-
*
|
|
702
|
+
* Select all columns of a table:
|
|
703
|
+
*
|
|
729
704
|
* ```ts
|
|
730
705
|
* const persons = await db
|
|
731
706
|
* .selectFrom('person')
|
|
@@ -739,7 +714,8 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
739
714
|
* select "person".* from "person"
|
|
740
715
|
* ```
|
|
741
716
|
*
|
|
742
|
-
*
|
|
717
|
+
* Select all columns of multiple tables:
|
|
718
|
+
*
|
|
743
719
|
* ```ts
|
|
744
720
|
* const personsPets = await db
|
|
745
721
|
* .selectFrom(['person', 'pet'])
|
|
@@ -759,7 +735,8 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
759
735
|
/**
|
|
760
736
|
* Joins another table to the query using an inner join.
|
|
761
737
|
*
|
|
762
|
-
*
|
|
738
|
+
* ### Examples
|
|
739
|
+
*
|
|
763
740
|
* Simple usage by providing a table name and two columns to join:
|
|
764
741
|
*
|
|
765
742
|
* ```ts
|
|
@@ -784,7 +761,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
784
761
|
* on "pet"."owner_id" = "person"."id"
|
|
785
762
|
* ```
|
|
786
763
|
*
|
|
787
|
-
* @example
|
|
788
764
|
* You can give an alias for the joined table like this:
|
|
789
765
|
*
|
|
790
766
|
* ```ts
|
|
@@ -805,7 +781,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
805
781
|
* where "p".name" = $1
|
|
806
782
|
* ```
|
|
807
783
|
*
|
|
808
|
-
* @example
|
|
809
784
|
* You can provide a function as the second argument to get a join
|
|
810
785
|
* builder for creating more complex joins. The join builder has a
|
|
811
786
|
* bunch of `on*` methods for building the `on` clause of the join.
|
|
@@ -836,14 +811,13 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
836
811
|
* and "pet"."name" = $1
|
|
837
812
|
* ```
|
|
838
813
|
*
|
|
839
|
-
* @example
|
|
840
814
|
* You can join a subquery by providing a function as the first
|
|
841
815
|
* argument:
|
|
842
816
|
*
|
|
843
817
|
* ```ts
|
|
844
818
|
* await db.selectFrom('person')
|
|
845
819
|
* .innerJoin(
|
|
846
|
-
* (qb) => qb.
|
|
820
|
+
* (qb) => qb.selectFrom('pet')
|
|
847
821
|
* .select(['owner_id', 'name'])
|
|
848
822
|
* .where('name', '=', 'Doggo')
|
|
849
823
|
* .as('doggos'),
|
|
@@ -867,497 +841,23 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
867
841
|
* on "doggos"."owner_id" = "person"."id"
|
|
868
842
|
* ```
|
|
869
843
|
*/
|
|
870
|
-
innerJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2):
|
|
871
|
-
innerJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN):
|
|
844
|
+
innerJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilder<TableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>, O>;
|
|
845
|
+
innerJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilder<TableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>, O>;
|
|
872
846
|
/**
|
|
873
|
-
* Just like {@link
|
|
874
|
-
* instead of an inner join.
|
|
847
|
+
* Just like {@link innerJoin} but adds a left join nstead of an inner join.
|
|
875
848
|
*/
|
|
876
|
-
leftJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2):
|
|
877
|
-
leftJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN):
|
|
849
|
+
leftJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilder<LeftJoinTableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>, O>;
|
|
850
|
+
leftJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilder<LeftJoinTableExpressionDatabase<DB, TE>, TableExpressionTables<DB, TB, TE>, O>;
|
|
878
851
|
/**
|
|
879
|
-
* Just like {@link
|
|
880
|
-
* instead of an inner join.
|
|
852
|
+
* Just like {@link innerJoin} but adds a right join instead of an inner join.
|
|
881
853
|
*/
|
|
882
|
-
rightJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2):
|
|
883
|
-
rightJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN):
|
|
854
|
+
rightJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilder<RightJoinTableExpressionDatabase<DB, TB, TE>, TableExpressionTables<DB, TB, TE>, O>;
|
|
855
|
+
rightJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilder<RightJoinTableExpressionDatabase<DB, TB, TE>, TableExpressionTables<DB, TB, TE>, O>;
|
|
884
856
|
/**
|
|
885
|
-
* Just like {@link
|
|
886
|
-
* instead of an inner join.
|
|
857
|
+
* Just like {@link innerJoin} but adds a full join instead of an inner join.
|
|
887
858
|
*/
|
|
888
|
-
fullJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2):
|
|
889
|
-
fullJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN):
|
|
890
|
-
/**
|
|
891
|
-
* Sets the values to insert for an {@link Kysely.insertInto | insert} query.
|
|
892
|
-
*
|
|
893
|
-
* This method takes an object whose keys are column names and values are
|
|
894
|
-
* values to insert. In addition to the column's type, the values can be
|
|
895
|
-
* {@link Kysely.raw | raw} instances, select queries or the
|
|
896
|
-
* {@link Kysely.generated | generated} placeholder.
|
|
897
|
-
*
|
|
898
|
-
* You must provide all values defined by the interface of the table you
|
|
899
|
-
* are inserting into. Values that are generated by the database like auto incrementing
|
|
900
|
-
* identifiers can be marked with the {@link Kysely.generated} placeholder unless you
|
|
901
|
-
* want to insert a specific value instead of the generated default.
|
|
902
|
-
*
|
|
903
|
-
* The return value of an `insert` query is an instance of {@link InsertResult}. The
|
|
904
|
-
* {@link InsertResult.insertId | insertId} field holds the auto incremented primary
|
|
905
|
-
* key if the database returned one.
|
|
906
|
-
*
|
|
907
|
-
* On PostgreSQL and some other dialects, you need to call `returning` to get
|
|
908
|
-
* something out of the query.
|
|
909
|
-
*
|
|
910
|
-
* @example
|
|
911
|
-
* Insert a row into `person`:
|
|
912
|
-
* ```ts
|
|
913
|
-
* const id = await db
|
|
914
|
-
* .insertInto('person')
|
|
915
|
-
* .values({
|
|
916
|
-
* id: db.generated,
|
|
917
|
-
* first_name: 'Jennifer',
|
|
918
|
-
* last_name: 'Aniston'
|
|
919
|
-
* })
|
|
920
|
-
* .executeTakeFirstOrThrow()
|
|
921
|
-
* ```
|
|
922
|
-
*
|
|
923
|
-
* The generated SQL (PostgreSQL):
|
|
924
|
-
*
|
|
925
|
-
* ```sql
|
|
926
|
-
* insert into "person" ("first_name", "last_name") values ($1, $2)
|
|
927
|
-
* ```
|
|
928
|
-
*
|
|
929
|
-
* @example
|
|
930
|
-
* On dialects that support it (for example PostgreSQL) you can insert multiple
|
|
931
|
-
* rows by providing an array. Note that the return value is once again very
|
|
932
|
-
* dialect-specific. Some databases may only return the id of the *last* inserted
|
|
933
|
-
* row and some return nothing at all unless you call `returning`.
|
|
934
|
-
*
|
|
935
|
-
* ```ts
|
|
936
|
-
* await db
|
|
937
|
-
* .insertInto('person')
|
|
938
|
-
* .values([{
|
|
939
|
-
* id: db.generated,
|
|
940
|
-
* first_name: 'Jennifer',
|
|
941
|
-
* last_name: 'Aniston'
|
|
942
|
-
* }, {
|
|
943
|
-
* id: db.generated,
|
|
944
|
-
* first_name: 'Arnold',
|
|
945
|
-
* last_name: 'Schwarzenegger',
|
|
946
|
-
* }])
|
|
947
|
-
* .execute()
|
|
948
|
-
* ```
|
|
949
|
-
*
|
|
950
|
-
* The generated SQL (PostgreSQL):
|
|
951
|
-
*
|
|
952
|
-
* ```sql
|
|
953
|
-
* insert into "person" ("first_name", "last_name") values (($1, $2), ($3, $4))
|
|
954
|
-
* ```
|
|
955
|
-
*
|
|
956
|
-
* @example
|
|
957
|
-
* On postgresql you need to chain `returning` to the query to get
|
|
958
|
-
* the inserted row's columns (or any other expression) as the
|
|
959
|
-
* return value:
|
|
960
|
-
*
|
|
961
|
-
* ```ts
|
|
962
|
-
* const row = await db
|
|
963
|
-
* .insertInto('person')
|
|
964
|
-
* .values({
|
|
965
|
-
* id: db.generated,
|
|
966
|
-
* first_name: 'Jennifer',
|
|
967
|
-
* last_name: 'Aniston'
|
|
968
|
-
* })
|
|
969
|
-
* .returning('id')
|
|
970
|
-
* .executeTakeFirstOrThrow()
|
|
971
|
-
*
|
|
972
|
-
* row.id
|
|
973
|
-
* ```
|
|
974
|
-
*
|
|
975
|
-
* The generated SQL (PostgreSQL):
|
|
976
|
-
*
|
|
977
|
-
* ```sql
|
|
978
|
-
* insert into "person" ("first_name", "last_name") values ($1, $2) returning "id"
|
|
979
|
-
* ```
|
|
980
|
-
*
|
|
981
|
-
* @example
|
|
982
|
-
* In addition to primitives, the values can also be `raw` expressions or
|
|
983
|
-
* select queries:
|
|
984
|
-
*
|
|
985
|
-
* ```ts
|
|
986
|
-
* const result = await db
|
|
987
|
-
* .insertInto('person')
|
|
988
|
-
* .values({
|
|
989
|
-
* id: db.generated,
|
|
990
|
-
* first_name: 'Jennifer',
|
|
991
|
-
* last_name: db.raw('? || ?', ['Ani', 'ston']),
|
|
992
|
-
* age: db.selectFrom('person').select(raw('avg(age)')),
|
|
993
|
-
* })
|
|
994
|
-
* .executeTakeFirst()
|
|
995
|
-
*
|
|
996
|
-
* console.log(result.insertId)
|
|
997
|
-
* ```
|
|
998
|
-
*
|
|
999
|
-
* The generated SQL (PostgreSQL):
|
|
1000
|
-
*
|
|
1001
|
-
* ```sql
|
|
1002
|
-
* insert into "person" ("first_name", "last_name", "age")
|
|
1003
|
-
* values ($1, $2 || $3, (select avg(age) from "person"))
|
|
1004
|
-
* ```
|
|
1005
|
-
*
|
|
1006
|
-
* @example
|
|
1007
|
-
* You can also use the callback version of subqueries or raw expressions:
|
|
1008
|
-
*
|
|
1009
|
-
* ```ts
|
|
1010
|
-
* db.with('jennifer', (db) => db
|
|
1011
|
-
* .selectFrom('person')
|
|
1012
|
-
* .where('first_name', '=', 'Jennifer')
|
|
1013
|
-
* .select(['id', 'first_name', 'gender'])
|
|
1014
|
-
* .limit(1)
|
|
1015
|
-
* ).insertInto('pet').values({
|
|
1016
|
-
* id: db.generated,
|
|
1017
|
-
* owner_id: (eb) => eb.subQuery('jennifer').select('id'),
|
|
1018
|
-
* name: (eb) => eb.subQuery('jennifer').select('first_name'),
|
|
1019
|
-
* species: 'cat',
|
|
1020
|
-
* })
|
|
1021
|
-
* ```
|
|
1022
|
-
*/
|
|
1023
|
-
values(row: InsertObject<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
1024
|
-
values(row: ReadonlyArray<InsertObject<DB, TB>>): QueryBuilder<DB, TB, O>;
|
|
1025
|
-
/**
|
|
1026
|
-
* Ignores the insert if the column or constraint given as the first
|
|
1027
|
-
* argument conflicts with the current rows in the database. The
|
|
1028
|
-
* default behavior without this method call is to throw an error.
|
|
1029
|
-
*
|
|
1030
|
-
* For example if a table has a field `name` that has a unique constraint
|
|
1031
|
-
* and you try to insert a row with a `name` that already exists in the
|
|
1032
|
-
* database, calling `onConflictDoNothing('name')` will ignore the conflict
|
|
1033
|
-
* and do nothing. By default the query would throw.
|
|
1034
|
-
*
|
|
1035
|
-
* Only some dialects like PostgreSQL and SQLite implement the `on conflict`
|
|
1036
|
-
* statement. On MySQL you should use the {@link ignore} method to achieve
|
|
1037
|
-
* similar results.
|
|
1038
|
-
*
|
|
1039
|
-
* Also see the {@link QueryBuilder.onConflictUpdate | onConflictUpdate}
|
|
1040
|
-
* method if you want to perform an update in case of a conflict (upsert).
|
|
1041
|
-
*
|
|
1042
|
-
* @example
|
|
1043
|
-
* ```ts
|
|
1044
|
-
* await db
|
|
1045
|
-
* .insertInto('pet')
|
|
1046
|
-
* .values({
|
|
1047
|
-
* id: db.generated,
|
|
1048
|
-
* name: 'Catto',
|
|
1049
|
-
* species: 'cat',
|
|
1050
|
-
* })
|
|
1051
|
-
* .onConflictDoNothing('name')
|
|
1052
|
-
* .execute()
|
|
1053
|
-
* ```
|
|
1054
|
-
*
|
|
1055
|
-
* The generated SQL (PostgreSQL):
|
|
1056
|
-
*
|
|
1057
|
-
* ```sql
|
|
1058
|
-
* insert into "pet" ("name", "species")
|
|
1059
|
-
* values ($1, $2)
|
|
1060
|
-
* on conflict ("name") do nothing
|
|
1061
|
-
* ```
|
|
1062
|
-
*
|
|
1063
|
-
* @example
|
|
1064
|
-
* You can provied the name of the constraint instead of a column name
|
|
1065
|
-
*
|
|
1066
|
-
* ```ts
|
|
1067
|
-
* await db
|
|
1068
|
-
* .insertInto('pet')
|
|
1069
|
-
* .values({
|
|
1070
|
-
* id: db.generated,
|
|
1071
|
-
* name: 'Catto',
|
|
1072
|
-
* species: 'cat',
|
|
1073
|
-
* })
|
|
1074
|
-
* .onConflictDoNothing({
|
|
1075
|
-
* constraint: 'pet_name_key'
|
|
1076
|
-
* })
|
|
1077
|
-
* .execute()
|
|
1078
|
-
* ```
|
|
1079
|
-
*
|
|
1080
|
-
* The generated SQL (PostgreSQL):
|
|
1081
|
-
*
|
|
1082
|
-
* ```sql
|
|
1083
|
-
* insert into "pet" ("name", "species")
|
|
1084
|
-
* values ($1, $2)
|
|
1085
|
-
* on conflict on constraint "pet_name_key"
|
|
1086
|
-
* do nothing
|
|
1087
|
-
* ```
|
|
1088
|
-
*/
|
|
1089
|
-
onConflictDoNothing(column: AnyColumn<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
1090
|
-
onConflictDoNothing(columns: ReadonlyArray<AnyColumn<DB, TB>>): QueryBuilder<DB, TB, O>;
|
|
1091
|
-
onConflictDoNothing(constraint: OnConflictConstraintTarget): QueryBuilder<DB, TB, O>;
|
|
1092
|
-
/**
|
|
1093
|
-
* Changes an `insert into` query to an `insert ignore into` query.
|
|
1094
|
-
*
|
|
1095
|
-
* If you use the ignore modifier, ignorable errors that occur while executing the
|
|
1096
|
-
* insert statement are ignored. For example, without ignore, a row that duplicates
|
|
1097
|
-
* an existing unique index or primary key value in the table causes a duplicate-key
|
|
1098
|
-
* error and the statement is aborted. With ignore, the row is discarded and no error
|
|
1099
|
-
* occurs.
|
|
1100
|
-
*
|
|
1101
|
-
* This is only supported on some dialects like MySQL. On most dialects you should
|
|
1102
|
-
* use the {@link onConflictDoNothing} method.
|
|
1103
|
-
*
|
|
1104
|
-
* @example
|
|
1105
|
-
* ```ts
|
|
1106
|
-
* await db.insertInto('person')
|
|
1107
|
-
* .ignore()
|
|
1108
|
-
* .values(values)
|
|
1109
|
-
* .execute()
|
|
1110
|
-
* ```
|
|
1111
|
-
*/
|
|
1112
|
-
ignore(): QueryBuilder<DB, TB, O>;
|
|
1113
|
-
/**
|
|
1114
|
-
* Ignores an insert if the column or constraint given as the first
|
|
1115
|
-
* argument conflicts with the current rows in the database and
|
|
1116
|
-
* performs an update on the conflicting row instead. This method
|
|
1117
|
-
* can be used to implement an upsert operation.
|
|
1118
|
-
*
|
|
1119
|
-
* For example if a table has a field `name` that has a unique constraint
|
|
1120
|
-
* and you try to insert a row with a `name` that already exists in the
|
|
1121
|
-
* database, calling `onConfictUpdate('name', { species: 'hamster' })`
|
|
1122
|
-
* will set the conflicting row's `species` field to value `'hamster'`.
|
|
1123
|
-
* By default the query would throw.
|
|
1124
|
-
*
|
|
1125
|
-
* The second argument (updates) can be anything the {@link QueryBuilder.set | set}
|
|
1126
|
-
* method accepts.
|
|
1127
|
-
*
|
|
1128
|
-
* The `on conflict do update` statement is only implemented by some dialects
|
|
1129
|
-
* like PostgreSQL and SQLite. On MySQL you should use the {@link onDuplicateKeyUpdate}
|
|
1130
|
-
* method instead.
|
|
1131
|
-
*
|
|
1132
|
-
* Also see the {@link QueryBuilder.onConflictDoNothing | onConflictDoNothing}
|
|
1133
|
-
* method.
|
|
1134
|
-
*
|
|
1135
|
-
* @example
|
|
1136
|
-
* ```ts
|
|
1137
|
-
* await db
|
|
1138
|
-
* .insertInto('pet')
|
|
1139
|
-
* .values({
|
|
1140
|
-
* id: db.generated,
|
|
1141
|
-
* name: 'Catto',
|
|
1142
|
-
* species: 'cat',
|
|
1143
|
-
* })
|
|
1144
|
-
* .onConflictUpdate('name', { species: 'hamster' })
|
|
1145
|
-
* .execute()
|
|
1146
|
-
* ```
|
|
1147
|
-
*
|
|
1148
|
-
* The generated SQL (PostgreSQL):
|
|
1149
|
-
*
|
|
1150
|
-
* ```sql
|
|
1151
|
-
* insert into "pet" ("name", "species")
|
|
1152
|
-
* values ($1, $2)
|
|
1153
|
-
* on conflict ("name") do update set "species" = $3
|
|
1154
|
-
* ```
|
|
1155
|
-
*
|
|
1156
|
-
* @example
|
|
1157
|
-
* You can provied the name of the constraint instead of a column name
|
|
1158
|
-
*
|
|
1159
|
-
* ```ts
|
|
1160
|
-
* await db
|
|
1161
|
-
* .insertInto('pet')
|
|
1162
|
-
* .values({
|
|
1163
|
-
* id: db.generated,
|
|
1164
|
-
* name: 'Catto',
|
|
1165
|
-
* species: 'cat',
|
|
1166
|
-
* })
|
|
1167
|
-
* .onConflictUpdate(
|
|
1168
|
-
* { constraint: 'pet_name_key' },
|
|
1169
|
-
* { species: 'hamster' }
|
|
1170
|
-
* )
|
|
1171
|
-
* .execute()
|
|
1172
|
-
* ```
|
|
1173
|
-
*
|
|
1174
|
-
* The generated SQL (PostgreSQL):
|
|
1175
|
-
*
|
|
1176
|
-
* ```sql
|
|
1177
|
-
* insert into "pet" ("name", "species")
|
|
1178
|
-
* values ($1, $2)
|
|
1179
|
-
* on conflict on constraint "pet_name_key"
|
|
1180
|
-
* do update set "species" = $3
|
|
1181
|
-
* ```
|
|
1182
|
-
*/
|
|
1183
|
-
onConflictUpdate(column: AnyColumn<DB, TB>, updates: MutationObject<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
1184
|
-
onConflictUpdate(columns: ReadonlyArray<AnyColumn<DB, TB>>, updates: MutationObject<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
1185
|
-
onConflictUpdate(constraint: OnConflictConstraintTarget, updates: MutationObject<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
1186
|
-
/**
|
|
1187
|
-
* Adds `on duplicate key update` to an insert query.
|
|
1188
|
-
*
|
|
1189
|
-
* If you specify `on duplicate key update`, and a row is inserted that would cause
|
|
1190
|
-
* a duplicate value in a unique index or primary key, an update of the old row occurs.
|
|
1191
|
-
*
|
|
1192
|
-
* This is only implemented by some dialects like MySQL. On most dialects you should
|
|
1193
|
-
* use {@link onConflictUpdate} instead.
|
|
1194
|
-
*
|
|
1195
|
-
* @example
|
|
1196
|
-
* ```ts
|
|
1197
|
-
* await db
|
|
1198
|
-
* .insertInto('person')
|
|
1199
|
-
* .values(values)
|
|
1200
|
-
* .onDuplicateKeyUpdate({ species: 'hamster' })
|
|
1201
|
-
* ```
|
|
1202
|
-
*/
|
|
1203
|
-
onDuplicateKeyUpdate(updates: MutationObject<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
1204
|
-
/**
|
|
1205
|
-
* Sets the values to update for an {@link Kysely.updateTable | update} query.
|
|
1206
|
-
*
|
|
1207
|
-
* This method takes an object whose keys are column names and values are
|
|
1208
|
-
* values to update. In addition to the column's type, the values can be `raw`
|
|
1209
|
-
* instances or select queries.
|
|
1210
|
-
*
|
|
1211
|
-
* The return value of an update query is an instance of {@link UpdateResult}.
|
|
1212
|
-
* You can use the {@link QueryBuilder.returning | returning} method on
|
|
1213
|
-
* supported databases to get out the updated rows.
|
|
1214
|
-
*
|
|
1215
|
-
* @example
|
|
1216
|
-
* Update a row in `person` table:
|
|
1217
|
-
*
|
|
1218
|
-
* ```ts
|
|
1219
|
-
* const result = await db
|
|
1220
|
-
* .updateTable('person')
|
|
1221
|
-
* .set({
|
|
1222
|
-
* first_name: 'Jennifer',
|
|
1223
|
-
* last_name: 'Aniston'
|
|
1224
|
-
* })
|
|
1225
|
-
* .where('id', '=', 1)
|
|
1226
|
-
* .executeTakeFirst()
|
|
1227
|
-
*
|
|
1228
|
-
* console.log(result.numUpdatedRows)
|
|
1229
|
-
* ```
|
|
1230
|
-
*
|
|
1231
|
-
* The generated SQL (PostgreSQL):
|
|
1232
|
-
*
|
|
1233
|
-
* ```sql
|
|
1234
|
-
* update "person" set "first_name" = $1, "last_name" = $2 where "id" = $3
|
|
1235
|
-
* ```
|
|
1236
|
-
*
|
|
1237
|
-
* @example
|
|
1238
|
-
* On postgresql you ca chain `returning` to the query to get
|
|
1239
|
-
* the updated rows' columns (or any other expression) as the
|
|
1240
|
-
* return value:
|
|
1241
|
-
*
|
|
1242
|
-
* ```ts
|
|
1243
|
-
* const row = await db
|
|
1244
|
-
* .updateTable('person')
|
|
1245
|
-
* .set({
|
|
1246
|
-
* first_name: 'Jennifer',
|
|
1247
|
-
* last_name: 'Aniston'
|
|
1248
|
-
* })
|
|
1249
|
-
* .where('id', '=', 1)
|
|
1250
|
-
* .returning('id')
|
|
1251
|
-
* .executeTakeFirstOrThrow()
|
|
1252
|
-
*
|
|
1253
|
-
* row.id
|
|
1254
|
-
* ```
|
|
1255
|
-
*
|
|
1256
|
-
* The generated SQL (PostgreSQL):
|
|
1257
|
-
*
|
|
1258
|
-
* ```sql
|
|
1259
|
-
* update "person" set "first_name" = $1, "last_name" = $2 where "id" = $3 returning "id"
|
|
1260
|
-
* ```
|
|
1261
|
-
*
|
|
1262
|
-
* @example
|
|
1263
|
-
* In addition to primitives, the values can also be `raw` expressions or
|
|
1264
|
-
* select queries:
|
|
1265
|
-
*
|
|
1266
|
-
* ```ts
|
|
1267
|
-
* const result = await db
|
|
1268
|
-
* .updateTable('person')
|
|
1269
|
-
* .set({
|
|
1270
|
-
* first_name: 'Jennifer',
|
|
1271
|
-
* last_name: db.raw('? || ?', ['Ani', 'ston']),
|
|
1272
|
-
* age: db.selectFrom('person').select(raw('avg(age)')),
|
|
1273
|
-
* })
|
|
1274
|
-
* .where('id', '=', 1)
|
|
1275
|
-
* .executeTakeFirst()
|
|
1276
|
-
*
|
|
1277
|
-
* console.log(result.numUpdatedRows)
|
|
1278
|
-
* ```
|
|
1279
|
-
*
|
|
1280
|
-
* The generated SQL (PostgreSQL):
|
|
1281
|
-
*
|
|
1282
|
-
* ```sql
|
|
1283
|
-
* update "person" set
|
|
1284
|
-
* "first_name" = $1,
|
|
1285
|
-
* "last_name" = $2 || $3,
|
|
1286
|
-
* "age" = (select avg(age) from "person")
|
|
1287
|
-
* where "id" = $4
|
|
1288
|
-
* ```
|
|
1289
|
-
*/
|
|
1290
|
-
set(row: MutationObject<DB, TB>): QueryBuilder<DB, TB, O>;
|
|
1291
|
-
/**
|
|
1292
|
-
* Allows you to return data from modified rows.
|
|
1293
|
-
*
|
|
1294
|
-
* On supported databases like PostgreSQL, this method can be chained to
|
|
1295
|
-
* `insert`, `update` and `delete` queries to return data.
|
|
1296
|
-
*
|
|
1297
|
-
* Note that on SQLite you need to give aliases for the expressions to avoid
|
|
1298
|
-
* [this bug](https://sqlite.org/forum/forumpost/033daf0b32) in SQLite.
|
|
1299
|
-
* For example `.returning('id as id')`.
|
|
1300
|
-
*
|
|
1301
|
-
* Also see the {@link QueryBuilder.returningAll | returningAll} method.
|
|
1302
|
-
*
|
|
1303
|
-
* @example
|
|
1304
|
-
* Return one column:
|
|
1305
|
-
*
|
|
1306
|
-
* ```ts
|
|
1307
|
-
* const { id } = await db
|
|
1308
|
-
* .insertInto('person')
|
|
1309
|
-
* .values({
|
|
1310
|
-
* id: db.generated,
|
|
1311
|
-
* first_name: 'Jennifer',
|
|
1312
|
-
* last_name: 'Aniston'
|
|
1313
|
-
* })
|
|
1314
|
-
* .returning('id')
|
|
1315
|
-
* .executeTakeFirst()
|
|
1316
|
-
* ```
|
|
1317
|
-
*
|
|
1318
|
-
* @example
|
|
1319
|
-
* Return multiple columns:
|
|
1320
|
-
*
|
|
1321
|
-
* ```ts
|
|
1322
|
-
* const { id, first_name } = await db
|
|
1323
|
-
* .insertInto('person')
|
|
1324
|
-
* .values({
|
|
1325
|
-
* id: db.generated,
|
|
1326
|
-
* first_name: 'Jennifer',
|
|
1327
|
-
* last_name: 'Aniston'
|
|
1328
|
-
* })
|
|
1329
|
-
* .returning(['id', 'last_name'])
|
|
1330
|
-
* .executeTakeFirst()
|
|
1331
|
-
* ```
|
|
1332
|
-
*
|
|
1333
|
-
* @example
|
|
1334
|
-
* Return arbitrary expressions:
|
|
1335
|
-
*
|
|
1336
|
-
* ```ts
|
|
1337
|
-
* const { raw } = db
|
|
1338
|
-
*
|
|
1339
|
-
* const { id, full_name, first_pet_id } = await db
|
|
1340
|
-
* .insertInto('person')
|
|
1341
|
-
* .values({
|
|
1342
|
-
* id: db.generated,
|
|
1343
|
-
* first_name: 'Jennifer',
|
|
1344
|
-
* last_name: 'Aniston'
|
|
1345
|
-
* })
|
|
1346
|
-
* .returning([
|
|
1347
|
-
* 'id as id',
|
|
1348
|
-
* raw<string>(`concat(first_name, ' ', last_name)`).as('full_name'),
|
|
1349
|
-
* (qb) => qb.subQuery('pets').select('pet.id').limit(1).as('first_pet_id')
|
|
1350
|
-
* ])
|
|
1351
|
-
* .executeTakeFirst()
|
|
1352
|
-
* ```
|
|
1353
|
-
*/
|
|
1354
|
-
returning<S extends SelectExpression<DB, TB>>(selections: ReadonlyArray<S>): QueryBuilderWithReturning<DB, TB, O, S>;
|
|
1355
|
-
returning<S extends SelectExpression<DB, TB>>(selection: S): QueryBuilderWithReturning<DB, TB, O, S>;
|
|
1356
|
-
/**
|
|
1357
|
-
* Adds a `returning *` to an insert/update/delete query on databases
|
|
1358
|
-
* that support `returning` such as PostgreSQL.
|
|
1359
|
-
*/
|
|
1360
|
-
returningAll(): QueryBuilder<DB, TB, DB[TB]>;
|
|
859
|
+
fullJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilder<FullJoinTableExpressionDatabase<DB, TB, TE>, TableExpressionTables<DB, TB, TE>, O>;
|
|
860
|
+
fullJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilder<FullJoinTableExpressionDatabase<DB, TB, TE>, TableExpressionTables<DB, TB, TE>, O>;
|
|
1361
861
|
/**
|
|
1362
862
|
* Adds an `order by` clause to the query.
|
|
1363
863
|
*
|
|
@@ -1367,7 +867,8 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1367
867
|
* The first argument is the expression to order by and the second is the
|
|
1368
868
|
* order (`asc` or `desc`).
|
|
1369
869
|
*
|
|
1370
|
-
*
|
|
870
|
+
* ### Examples
|
|
871
|
+
*
|
|
1371
872
|
* ```ts
|
|
1372
873
|
* await db
|
|
1373
874
|
* .selectFrom('person')
|
|
@@ -1385,7 +886,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1385
886
|
* order by "id" asc, "fn" desc
|
|
1386
887
|
* ```
|
|
1387
888
|
*
|
|
1388
|
-
* @example
|
|
1389
889
|
* The order by expression can also be a `raw` expression or a subquery
|
|
1390
890
|
* in addition to column references:
|
|
1391
891
|
*
|
|
@@ -1393,7 +893,7 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1393
893
|
* await db
|
|
1394
894
|
* .selectFrom('person')
|
|
1395
895
|
* .selectAll()
|
|
1396
|
-
* .orderBy((qb) => qb.
|
|
896
|
+
* .orderBy((qb) => qb.selectFrom('pet')
|
|
1397
897
|
* .select('pet.name')
|
|
1398
898
|
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
1399
899
|
* .limit(1)
|
|
@@ -1418,7 +918,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1418
918
|
* concat(first_name, last_name) asc
|
|
1419
919
|
* ```
|
|
1420
920
|
*
|
|
1421
|
-
* @example
|
|
1422
921
|
* `dynamic.ref` can be used to refer to columns not known at
|
|
1423
922
|
* compile time:
|
|
1424
923
|
*
|
|
@@ -1444,11 +943,12 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1444
943
|
* order by "fn" asc
|
|
1445
944
|
* ```
|
|
1446
945
|
*/
|
|
1447
|
-
orderBy(orderBy: OrderByExpression<DB, TB, O>, direction?: OrderByDirectionExpression):
|
|
946
|
+
orderBy(orderBy: OrderByExpression<DB, TB, O>, direction?: OrderByDirectionExpression): SelectQueryBuilder<DB, TB, O>;
|
|
1448
947
|
/**
|
|
1449
948
|
* Adds a `group by` clause to the query.
|
|
1450
949
|
*
|
|
1451
|
-
*
|
|
950
|
+
* ### Examples
|
|
951
|
+
*
|
|
1452
952
|
* ```ts
|
|
1453
953
|
* await db
|
|
1454
954
|
* .selectFrom('person')
|
|
@@ -1468,11 +968,10 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1468
968
|
* group by "first_name"
|
|
1469
969
|
* ```
|
|
1470
970
|
*
|
|
1471
|
-
* @example
|
|
1472
971
|
* `groupBy` also accepts an array:
|
|
1473
972
|
*
|
|
1474
973
|
* ```ts
|
|
1475
|
-
* const {
|
|
974
|
+
* const { raw } = db
|
|
1476
975
|
*
|
|
1477
976
|
* await db
|
|
1478
977
|
* .selectFrom('person')
|
|
@@ -1496,12 +995,11 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1496
995
|
* group by "first_name", "last_name"
|
|
1497
996
|
* ```
|
|
1498
997
|
*
|
|
1499
|
-
* @example
|
|
1500
998
|
* The group by expressions can also be subqueries or
|
|
1501
999
|
* raw expressions:
|
|
1502
1000
|
*
|
|
1503
1001
|
* ```ts
|
|
1504
|
-
* const {
|
|
1002
|
+
* const { raw } = db
|
|
1505
1003
|
*
|
|
1506
1004
|
* await db
|
|
1507
1005
|
* .selectFrom('person')
|
|
@@ -1512,12 +1010,11 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1512
1010
|
* ])
|
|
1513
1011
|
* .groupBy([
|
|
1514
1012
|
* raw('concat(first_name, last_name)'),
|
|
1515
|
-
* (qb) => qb.
|
|
1013
|
+
* (qb) => qb.selectFrom('pet').select('id').limit(1)
|
|
1516
1014
|
* ])
|
|
1517
1015
|
* .execute()
|
|
1518
1016
|
* ```
|
|
1519
1017
|
*
|
|
1520
|
-
* @example
|
|
1521
1018
|
* `dynamic.ref` can be used to refer to columns not known at
|
|
1522
1019
|
* compile time:
|
|
1523
1020
|
*
|
|
@@ -1543,12 +1040,13 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1543
1040
|
* group by "first_name"
|
|
1544
1041
|
* ```
|
|
1545
1042
|
*/
|
|
1546
|
-
groupBy(
|
|
1547
|
-
groupBy(
|
|
1043
|
+
groupBy(groupBy: ReadonlyArray<ReferenceExpression<DB, TB>>): SelectQueryBuilder<DB, TB, O>;
|
|
1044
|
+
groupBy(groupBy: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
1548
1045
|
/**
|
|
1549
1046
|
* Adds a limit clause to the query.
|
|
1550
1047
|
*
|
|
1551
|
-
*
|
|
1048
|
+
* ### Examples
|
|
1049
|
+
*
|
|
1552
1050
|
* Select the first 10 rows of the result:
|
|
1553
1051
|
*
|
|
1554
1052
|
* ```ts
|
|
@@ -1558,7 +1056,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1558
1056
|
* .limit(10)
|
|
1559
1057
|
* ```
|
|
1560
1058
|
*
|
|
1561
|
-
* @example
|
|
1562
1059
|
* Select rows from index 10 to index 19 of the result:
|
|
1563
1060
|
*
|
|
1564
1061
|
* ```ts
|
|
@@ -1569,11 +1066,12 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1569
1066
|
* .limit(10)
|
|
1570
1067
|
* ```
|
|
1571
1068
|
*/
|
|
1572
|
-
limit(limit: number):
|
|
1069
|
+
limit(limit: number): SelectQueryBuilder<DB, TB, O>;
|
|
1573
1070
|
/**
|
|
1574
1071
|
* Adds an offset clause to the query.
|
|
1575
1072
|
*
|
|
1576
|
-
*
|
|
1073
|
+
* ### Examples
|
|
1074
|
+
*
|
|
1577
1075
|
* Select rows from index 10 to index 19 of the result:
|
|
1578
1076
|
*
|
|
1579
1077
|
* ```ts
|
|
@@ -1584,13 +1082,14 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1584
1082
|
* .limit(10)
|
|
1585
1083
|
* ```
|
|
1586
1084
|
*/
|
|
1587
|
-
offset(offset: number):
|
|
1085
|
+
offset(offset: number): SelectQueryBuilder<DB, TB, O>;
|
|
1588
1086
|
/**
|
|
1589
1087
|
* Combines another select query or raw expression to this query using `union`.
|
|
1590
1088
|
*
|
|
1591
1089
|
* The output row type of the combined query must match `this` query.
|
|
1592
1090
|
*
|
|
1593
|
-
*
|
|
1091
|
+
* ### Examples
|
|
1092
|
+
*
|
|
1594
1093
|
* ```ts
|
|
1595
1094
|
* db.selectFrom('person')
|
|
1596
1095
|
* .select(['id', 'first_name as name'])
|
|
@@ -1598,13 +1097,14 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1598
1097
|
* .orderBy('name')
|
|
1599
1098
|
* ```
|
|
1600
1099
|
*/
|
|
1601
|
-
union(expression: UnionExpression<DB, O>):
|
|
1100
|
+
union(expression: UnionExpression<DB, O>): SelectQueryBuilder<DB, TB, O>;
|
|
1602
1101
|
/**
|
|
1603
1102
|
* Combines another select query or raw expression to this query using `union all`.
|
|
1604
1103
|
*
|
|
1605
1104
|
* The output row type of the combined query must match `this` query.
|
|
1606
1105
|
*
|
|
1607
|
-
*
|
|
1106
|
+
* ### Examples
|
|
1107
|
+
*
|
|
1608
1108
|
* ```ts
|
|
1609
1109
|
* db.selectFrom('person')
|
|
1610
1110
|
* .select(['id', 'first_name as name'])
|
|
@@ -1612,13 +1112,14 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1612
1112
|
* .orderBy('name')
|
|
1613
1113
|
* ```
|
|
1614
1114
|
*/
|
|
1615
|
-
unionAll(expression: UnionExpression<DB, O>):
|
|
1115
|
+
unionAll(expression: UnionExpression<DB, O>): SelectQueryBuilder<DB, TB, O>;
|
|
1616
1116
|
/**
|
|
1617
1117
|
* Simply calls the given function passing `this` as the only argument.
|
|
1618
1118
|
*
|
|
1619
1119
|
* This method can be useful when adding optional method calls:
|
|
1620
1120
|
*
|
|
1621
|
-
*
|
|
1121
|
+
* ### Examples
|
|
1122
|
+
*
|
|
1622
1123
|
* ```ts
|
|
1623
1124
|
* db.selectFrom('person')
|
|
1624
1125
|
* .selectAll()
|
|
@@ -1634,7 +1135,6 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1634
1135
|
*
|
|
1635
1136
|
* The next example uses a helper funtion `log` to log a query:
|
|
1636
1137
|
*
|
|
1637
|
-
* @example
|
|
1638
1138
|
* ```ts
|
|
1639
1139
|
* function log<T extends AnyQueryBuilder>(qb: T): T {
|
|
1640
1140
|
* console.log(qb.compile())
|
|
@@ -1651,12 +1151,13 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1651
1151
|
/**
|
|
1652
1152
|
* Gives an alias for the query. This method is only useful for sub queries.
|
|
1653
1153
|
*
|
|
1654
|
-
*
|
|
1154
|
+
* ### Examples
|
|
1155
|
+
*
|
|
1655
1156
|
* ```ts
|
|
1656
1157
|
* await db.selectFrom('pet')
|
|
1657
1158
|
* .selectAll('pet')
|
|
1658
1159
|
* .select(
|
|
1659
|
-
* (qb) => qb.
|
|
1160
|
+
* (qb) => qb.selectFrom('person')
|
|
1660
1161
|
* .select('first_name')
|
|
1661
1162
|
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
1662
1163
|
* .as('owner_first_name')
|
|
@@ -1671,8 +1172,9 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1671
1172
|
* You should only use this method as the last resort if the types
|
|
1672
1173
|
* don't support your use case.
|
|
1673
1174
|
*/
|
|
1674
|
-
castTo<T>():
|
|
1675
|
-
|
|
1175
|
+
castTo<T>(): SelectQueryBuilder<DB, TB, T>;
|
|
1176
|
+
withPlugin(plugin: KyselyPlugin): SelectQueryBuilder<DB, TB, O>;
|
|
1177
|
+
toOperationNode(): SelectQueryNode;
|
|
1676
1178
|
compile(): CompiledQuery;
|
|
1677
1179
|
/**
|
|
1678
1180
|
* Executes the query and returns an array of rows.
|
|
@@ -1695,18 +1197,18 @@ export declare class QueryBuilder<DB, TB extends keyof DB, O = {}> implements Op
|
|
|
1695
1197
|
*/
|
|
1696
1198
|
executeTakeFirstOrThrow(errorConstructor?: NoResultErrorConstructor): Promise<O>;
|
|
1697
1199
|
}
|
|
1698
|
-
export interface
|
|
1200
|
+
export interface SelectQueryBuilderProps {
|
|
1699
1201
|
readonly queryId: QueryId;
|
|
1700
|
-
readonly queryNode:
|
|
1202
|
+
readonly queryNode: SelectQueryNode;
|
|
1701
1203
|
readonly executor: QueryExecutor;
|
|
1702
1204
|
readonly parseContext: ParseContext;
|
|
1703
1205
|
}
|
|
1704
1206
|
/**
|
|
1705
|
-
* {@link
|
|
1207
|
+
* {@link SelectQueryBuilder} with an alias. The result of calling {@link SelectQueryBuilder.as}.
|
|
1706
1208
|
*/
|
|
1707
1209
|
export declare class AliasedQueryBuilder<DB, TB extends keyof DB, O = undefined, A extends string = never> {
|
|
1708
1210
|
#private;
|
|
1709
|
-
constructor(queryBuilder:
|
|
1211
|
+
constructor(queryBuilder: SelectQueryBuilder<DB, TB, O>, alias: A);
|
|
1710
1212
|
/**
|
|
1711
1213
|
* @private
|
|
1712
1214
|
*
|
|
@@ -1718,11 +1220,3 @@ export declare class AliasedQueryBuilder<DB, TB extends keyof DB, O = undefined,
|
|
|
1718
1220
|
protected get alias(): A;
|
|
1719
1221
|
toOperationNode(): AliasNode;
|
|
1720
1222
|
}
|
|
1721
|
-
export declare type NoResultErrorConstructor = new (node: QueryNode) => Error;
|
|
1722
|
-
export declare class NoResultError extends Error {
|
|
1723
|
-
/**
|
|
1724
|
-
* The operation node tree of the query that was executed.
|
|
1725
|
-
*/
|
|
1726
|
-
readonly node: QueryNode;
|
|
1727
|
-
constructor(node: QueryNode);
|
|
1728
|
-
}
|