kysely 0.23.5 → 0.24.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 +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/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/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/postgres.d.ts +1 -0
- package/helpers/postgres.js +1 -0
- package/package.json +20 -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,25 +2,28 @@ import { AliasNode } from '../operation-node/alias-node.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 '../parser/table-parser.js';
|
|
5
|
-
import { SelectExpression,
|
|
5
|
+
import { SelectExpression, Selection, SelectArg, AllSelection } from '../parser/select-parser.js';
|
|
6
6
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
7
7
|
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
8
|
+
import { QueryNode } from '../operation-node/query-node.js';
|
|
8
9
|
import { MergePartial, Nullable, Simplify, SimplifySingleResult } from '../util/type-utils.js';
|
|
9
10
|
import { OrderByDirectionExpression, OrderByExpression } from '../parser/order-by-parser.js';
|
|
10
11
|
import { Compilable } from '../util/compilable.js';
|
|
11
12
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
12
13
|
import { QueryId } from '../util/query-id.js';
|
|
13
|
-
import {
|
|
14
|
+
import { GroupByArg } from '../parser/group-by-parser.js';
|
|
14
15
|
import { KyselyPlugin } from '../plugin/kysely-plugin.js';
|
|
15
|
-
import { WhereInterface } from './where-interface.js';
|
|
16
|
+
import { WhereExpressionFactory, WhereInterface } from './where-interface.js';
|
|
16
17
|
import { NoResultErrorConstructor } from './no-result-error.js';
|
|
17
|
-
import { HavingInterface } from './having-interface.js';
|
|
18
|
+
import { HavingExpressionFactory, HavingInterface } from './having-interface.js';
|
|
18
19
|
import { Explainable, ExplainFormat } from '../util/explainable.js';
|
|
19
20
|
import { AliasedExpression, Expression } from '../expression/expression.js';
|
|
20
|
-
import { ComparisonOperatorExpression,
|
|
21
|
+
import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
|
|
21
22
|
import { ExistsExpression } from '../parser/unary-operation-parser.js';
|
|
22
23
|
import { KyselyTypeError } from '../util/type-error.js';
|
|
23
|
-
|
|
24
|
+
import { Selectable } from '../util/column-type.js';
|
|
25
|
+
import { Streamable } from '../util/streamable.js';
|
|
26
|
+
export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, HavingInterface<DB, TB>, Expression<O>, Compilable<O>, Explainable, Streamable<O> {
|
|
24
27
|
#private;
|
|
25
28
|
constructor(props: SelectQueryBuilderProps);
|
|
26
29
|
/** @private */
|
|
@@ -42,53 +45,37 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
42
45
|
*/
|
|
43
46
|
get expressionType(): O | undefined;
|
|
44
47
|
/**
|
|
45
|
-
* Adds a `where`
|
|
48
|
+
* Adds a `where` expression to the query.
|
|
46
49
|
*
|
|
47
|
-
*
|
|
50
|
+
* Calling this method multiple times will combine the expressions using `and`.
|
|
48
51
|
*
|
|
49
|
-
*
|
|
52
|
+
* Also see {@link whereRef}
|
|
50
53
|
*
|
|
51
|
-
*
|
|
54
|
+
* ### Examples
|
|
52
55
|
*
|
|
53
56
|
* ```ts
|
|
54
57
|
* const person = await db
|
|
55
58
|
* .selectFrom('person')
|
|
56
59
|
* .selectAll()
|
|
57
|
-
* .where('
|
|
60
|
+
* .where('first_name', '=', 'Jennifer')
|
|
61
|
+
* .where('age', '>', 40)
|
|
58
62
|
* .executeTakeFirst()
|
|
59
63
|
* ```
|
|
60
64
|
*
|
|
61
65
|
* The generated SQL (PostgreSQL):
|
|
62
66
|
*
|
|
63
67
|
* ```sql
|
|
64
|
-
* select * from "person" where "
|
|
68
|
+
* select * from "person" where "first_name" = $1 and "age" > $2
|
|
65
69
|
* ```
|
|
66
70
|
*
|
|
67
71
|
* Operator can be any supported operator or if the typings don't support it
|
|
68
|
-
* you can always use
|
|
72
|
+
* you can always use:
|
|
69
73
|
*
|
|
70
74
|
* ```ts
|
|
71
75
|
* sql`your operator`
|
|
72
76
|
* ```
|
|
73
77
|
*
|
|
74
|
-
*
|
|
75
|
-
*
|
|
76
|
-
* ```ts
|
|
77
|
-
* const persons = await db
|
|
78
|
-
* .selectFrom('person')
|
|
79
|
-
* .selectAll()
|
|
80
|
-
* .where('id', '>', 100)
|
|
81
|
-
* .execute()
|
|
82
|
-
* ```
|
|
83
|
-
*
|
|
84
|
-
* The generated SQL (PostgreSQL):
|
|
85
|
-
*
|
|
86
|
-
* ```sql
|
|
87
|
-
* select * from "person" where "id" > $1
|
|
88
|
-
* ```
|
|
89
|
-
*
|
|
90
|
-
* `where` methods don't change the type of the query. You can add
|
|
91
|
-
* conditional statements easily by doing something like this:
|
|
78
|
+
* You can add expressions conditionally like this:
|
|
92
79
|
*
|
|
93
80
|
* ```ts
|
|
94
81
|
* let query = db
|
|
@@ -101,16 +88,16 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
101
88
|
* query = query.where('first_name', '=', firstName)
|
|
102
89
|
* }
|
|
103
90
|
*
|
|
91
|
+
* if (lastName) {
|
|
92
|
+
* query = query.where('last_name', '=', lastName)
|
|
93
|
+
* }
|
|
94
|
+
*
|
|
104
95
|
* const persons = await query.execute()
|
|
105
96
|
* ```
|
|
106
97
|
*
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
* Both the first and third argument can also be subqueries.
|
|
111
|
-
* A subquery is defined by passing a function and calling
|
|
112
|
-
* the `selectFrom` method of the object passed into the
|
|
113
|
-
* function:
|
|
98
|
+
* Both the first and third argument can also be arbitrary expressions like
|
|
99
|
+
* subqueries. An expression can defined by passing a function and calling
|
|
100
|
+
* the methods of the {@link ExpressionBuilder} passed to the callback:
|
|
114
101
|
*
|
|
115
102
|
* ```ts
|
|
116
103
|
* const persons = await db
|
|
@@ -141,8 +128,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
141
128
|
* ```
|
|
142
129
|
*
|
|
143
130
|
* A `where in` query can be built by using the `in` operator and an array
|
|
144
|
-
* of values. The values in the array can also be
|
|
145
|
-
* {@link sql} expressions.
|
|
131
|
+
* of values. The values in the array can also be expressions:
|
|
146
132
|
*
|
|
147
133
|
* ```ts
|
|
148
134
|
* const persons = await db
|
|
@@ -158,40 +144,53 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
158
144
|
* select * from "person" where "id" in ($1, $2, $3)
|
|
159
145
|
* ```
|
|
160
146
|
*
|
|
161
|
-
*
|
|
162
|
-
*
|
|
147
|
+
* For complex `where` expressions you can pass in a single callback and
|
|
148
|
+
* use the {@link ExpressionBuilder} to build your expression:
|
|
163
149
|
*
|
|
164
150
|
* ```ts
|
|
165
|
-
* import { sql } from 'kysely'
|
|
166
|
-
*
|
|
167
151
|
* const persons = await db
|
|
168
152
|
* .selectFrom('person')
|
|
169
|
-
* .selectAll()
|
|
170
|
-
* .where(
|
|
171
|
-
*
|
|
172
|
-
*
|
|
173
|
-
*
|
|
174
|
-
*
|
|
175
|
-
*
|
|
153
|
+
* .selectAll('person')
|
|
154
|
+
* .where(({ cmpr, or, and, not, exists, selectFrom, val }) => and([
|
|
155
|
+
* or([
|
|
156
|
+
* cmpr('first_name', '=', firstName),
|
|
157
|
+
* cmpr('age', '<', maxAge)
|
|
158
|
+
* ]),
|
|
159
|
+
* not(exists(
|
|
160
|
+
* selectFrom('pet').select('pet.id').whereRef('pet.owner_id', '=', 'person.id')
|
|
161
|
+
* ))
|
|
162
|
+
* ]))
|
|
176
163
|
* ```
|
|
177
164
|
*
|
|
178
165
|
* The generated SQL (PostgreSQL):
|
|
179
166
|
*
|
|
180
167
|
* ```sql
|
|
181
|
-
* select
|
|
182
|
-
*
|
|
168
|
+
* select "person".*
|
|
169
|
+
* from "person"
|
|
170
|
+
* where (
|
|
171
|
+
* (
|
|
172
|
+
* "first_name" = $1
|
|
173
|
+
* or "age" < $2
|
|
174
|
+
* )
|
|
175
|
+
* and not exists (
|
|
176
|
+
* select "pet"."id" from "pet" where "pet"."owner_id" = "person"."id"
|
|
177
|
+
* )
|
|
178
|
+
* )
|
|
183
179
|
* ```
|
|
184
180
|
*
|
|
185
|
-
* If
|
|
186
|
-
*
|
|
181
|
+
* If everything else fails, you can always use the {@link sql} tag
|
|
182
|
+
* as any of the arguments, including the operator:
|
|
187
183
|
*
|
|
188
184
|
* ```ts
|
|
185
|
+
* import { sql } from 'kysely'
|
|
186
|
+
*
|
|
189
187
|
* const persons = await db
|
|
190
188
|
* .selectFrom('person')
|
|
191
189
|
* .selectAll()
|
|
192
|
-
* .where(
|
|
193
|
-
*
|
|
194
|
-
*
|
|
190
|
+
* .where(
|
|
191
|
+
* sql`coalesce(first_name, last_name)`,
|
|
192
|
+
* 'like',
|
|
193
|
+
* '%' + name + '%',
|
|
195
194
|
* )
|
|
196
195
|
* .execute()
|
|
197
196
|
* ```
|
|
@@ -199,7 +198,8 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
199
198
|
* The generated SQL (PostgreSQL):
|
|
200
199
|
*
|
|
201
200
|
* ```sql
|
|
202
|
-
* select * from "person"
|
|
201
|
+
* select * from "person"
|
|
202
|
+
* where coalesce(first_name, last_name) like $1
|
|
203
203
|
* ```
|
|
204
204
|
*
|
|
205
205
|
* In all examples above the columns were known at compile time
|
|
@@ -221,12 +221,12 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
221
221
|
* .selectFrom('person')
|
|
222
222
|
* .selectAll()
|
|
223
223
|
* .where(ref(columnFromUserInput), '=', 1)
|
|
224
|
-
* .
|
|
224
|
+
* .where(sql.id(columnFromUserInput), '=', 2)
|
|
225
225
|
* .execute()
|
|
226
226
|
* ```
|
|
227
227
|
*/
|
|
228
228
|
where<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
|
|
229
|
-
where(
|
|
229
|
+
where(factory: WhereExpressionFactory<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
230
230
|
where(expression: Expression<any>): SelectQueryBuilder<DB, TB, O>;
|
|
231
231
|
/**
|
|
232
232
|
* Adds a `where` clause where both sides of the operator are references
|
|
@@ -258,7 +258,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
258
258
|
* const persons = await db
|
|
259
259
|
* .selectFrom('person')
|
|
260
260
|
* .selectAll('person')
|
|
261
|
-
* .select((
|
|
261
|
+
* .select((eb) => eb
|
|
262
262
|
* .selectFrom('pet')
|
|
263
263
|
* .select('name')
|
|
264
264
|
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
@@ -281,148 +281,29 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
281
281
|
*/
|
|
282
282
|
whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
283
283
|
/**
|
|
284
|
-
*
|
|
285
|
-
*
|
|
286
|
-
* It's often necessary to wrap `or where` clauses in parentheses to control
|
|
287
|
-
* precendence. You can use the one argument version of the `where` method
|
|
288
|
-
* for that. See the examples.
|
|
289
|
-
*
|
|
290
|
-
* ### Examples
|
|
291
|
-
*
|
|
292
|
-
* ```ts
|
|
293
|
-
* const persons = await db
|
|
294
|
-
* .selectFrom('person')
|
|
295
|
-
* .selectAll()
|
|
296
|
-
* .where('id', '=', 1)
|
|
297
|
-
* .orWhere('id', '=', 2)
|
|
298
|
-
* .execute()
|
|
299
|
-
* ```
|
|
300
|
-
*
|
|
301
|
-
* The generated SQL (PostgreSQL):
|
|
302
|
-
*
|
|
303
|
-
* ```sql
|
|
304
|
-
* select * from "person" where "id" = 1 or "id" = 2
|
|
305
|
-
* ```
|
|
306
|
-
*
|
|
307
|
-
* Grouping with parentheses:
|
|
308
|
-
*
|
|
309
|
-
* ```ts
|
|
310
|
-
* const persons = await db
|
|
311
|
-
* .selectFrom('person')
|
|
312
|
-
* .selectAll()
|
|
313
|
-
* .where((qb) => qb
|
|
314
|
-
* .where('id', '=', 1)
|
|
315
|
-
* .orWhere('id', '=', 2)
|
|
316
|
-
* )
|
|
317
|
-
* .execute()
|
|
318
|
-
* ```
|
|
319
|
-
*
|
|
320
|
-
* The generated SQL (PostgreSQL):
|
|
321
|
-
*
|
|
322
|
-
* ```sql
|
|
323
|
-
* select * from "person" (where "id" = 1 or "id" = 2)
|
|
324
|
-
* ```
|
|
325
|
-
*
|
|
326
|
-
* Even the first `where` can be an `orWhere`. This is useful
|
|
327
|
-
* if you are looping through a set of conditions:
|
|
328
|
-
*
|
|
329
|
-
* ```ts
|
|
330
|
-
* const persons = await db
|
|
331
|
-
* .selectFrom('person')
|
|
332
|
-
* .selectAll()
|
|
333
|
-
* .where((qb) => qb
|
|
334
|
-
* .orWhere('id', '=', 1)
|
|
335
|
-
* .orWhere('id', '=', 2)
|
|
336
|
-
* )
|
|
337
|
-
* .execute()
|
|
338
|
-
* ```
|
|
339
|
-
*
|
|
340
|
-
* The generated SQL (PostgreSQL):
|
|
341
|
-
*
|
|
342
|
-
* ```sql
|
|
343
|
-
* select * from "person" (where "id" = 1 or "id" = 2)
|
|
344
|
-
* ```
|
|
284
|
+
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
345
285
|
*/
|
|
346
286
|
orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
|
|
347
|
-
orWhere(
|
|
287
|
+
orWhere(factory: WhereExpressionFactory<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
348
288
|
orWhere(expression: Expression<any>): SelectQueryBuilder<DB, TB, O>;
|
|
349
289
|
/**
|
|
350
|
-
*
|
|
351
|
-
*
|
|
352
|
-
* Also see {@link orWhere} and {@link where}.
|
|
290
|
+
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
353
291
|
*/
|
|
354
292
|
orWhereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
355
293
|
/**
|
|
356
|
-
*
|
|
357
|
-
*
|
|
358
|
-
* You can either use a subquery or a raw {@link sql} snippet.
|
|
359
|
-
*
|
|
360
|
-
* ### Examples
|
|
361
|
-
*
|
|
362
|
-
* The query below selets all persons that own a pet named Catto:
|
|
363
|
-
*
|
|
364
|
-
* ```ts
|
|
365
|
-
* const petName = 'Catto'
|
|
366
|
-
* const persons = await db
|
|
367
|
-
* .selectFrom('person')
|
|
368
|
-
* .selectAll()
|
|
369
|
-
* .whereExists((qb) => qb
|
|
370
|
-
* .selectFrom('pet')
|
|
371
|
-
* .select('pet.id')
|
|
372
|
-
* .whereRef('person.id', '=', 'pet.owner_id')
|
|
373
|
-
* .where('pet.name', '=', petName)
|
|
374
|
-
* )
|
|
375
|
-
* .execute()
|
|
376
|
-
* ```
|
|
377
|
-
*
|
|
378
|
-
* The generated SQL (PostgreSQL):
|
|
379
|
-
*
|
|
380
|
-
* ```sql
|
|
381
|
-
* select * from "person"
|
|
382
|
-
* where exists (
|
|
383
|
-
* select "pet"."id"
|
|
384
|
-
* from "pet"
|
|
385
|
-
* where "person"."id" = "pet"."owner_id"
|
|
386
|
-
* and "pet"."name" = $1
|
|
387
|
-
* )
|
|
388
|
-
* ```
|
|
389
|
-
*
|
|
390
|
-
* The same query as in the previous example but with using raw {@link sql}:
|
|
391
|
-
*
|
|
392
|
-
* ```ts
|
|
393
|
-
* import { sql } from 'kysely'
|
|
394
|
-
*
|
|
395
|
-
* const petName = 'Catto'
|
|
396
|
-
* db.selectFrom('person')
|
|
397
|
-
* .selectAll()
|
|
398
|
-
* .whereExists(
|
|
399
|
-
* sql`(select pet.id from pet where person.id = pet.owner_id and pet.name = ${petName})`
|
|
400
|
-
* )
|
|
401
|
-
* ```
|
|
402
|
-
*
|
|
403
|
-
* The generated SQL (PostgreSQL):
|
|
404
|
-
*
|
|
405
|
-
* ```sql
|
|
406
|
-
* select * from "person"
|
|
407
|
-
* where exists (
|
|
408
|
-
* select pet.id
|
|
409
|
-
* from pet
|
|
410
|
-
* where person.id = pet.owner_id
|
|
411
|
-
* and pet.name = $1
|
|
412
|
-
* )
|
|
413
|
-
* ```
|
|
294
|
+
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
414
295
|
*/
|
|
415
296
|
whereExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
416
297
|
/**
|
|
417
|
-
*
|
|
298
|
+
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
418
299
|
*/
|
|
419
300
|
whereNotExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
420
301
|
/**
|
|
421
|
-
*
|
|
302
|
+
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
422
303
|
*/
|
|
423
304
|
orWhereExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
424
305
|
/**
|
|
425
|
-
*
|
|
306
|
+
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
426
307
|
*/
|
|
427
308
|
orWhereNotExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
428
309
|
/**
|
|
@@ -430,7 +311,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
430
311
|
* instead of a `where` statement.
|
|
431
312
|
*/
|
|
432
313
|
having<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
|
|
433
|
-
having(
|
|
314
|
+
having(factory: HavingExpressionFactory<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
434
315
|
having(expression: Expression<any>): SelectQueryBuilder<DB, TB, O>;
|
|
435
316
|
/**
|
|
436
317
|
* Just like {@link WhereInterface.whereRef | whereRef} but adds a `having` statement
|
|
@@ -438,42 +319,40 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
438
319
|
*/
|
|
439
320
|
havingRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
440
321
|
/**
|
|
441
|
-
*
|
|
442
|
-
* instead of a `where` statement.
|
|
322
|
+
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
443
323
|
*/
|
|
444
324
|
orHaving<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
|
|
445
|
-
orHaving(
|
|
325
|
+
orHaving(factory: HavingExpressionFactory<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
446
326
|
orHaving(expression: Expression<any>): SelectQueryBuilder<DB, TB, O>;
|
|
447
327
|
/**
|
|
448
|
-
*
|
|
449
|
-
* instead of a `where` statement.
|
|
328
|
+
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
450
329
|
*/
|
|
451
330
|
orHavingRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
452
331
|
/**
|
|
453
|
-
*
|
|
454
|
-
* instead of a `where` statement.
|
|
332
|
+
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
455
333
|
*/
|
|
456
334
|
havingExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
457
335
|
/**
|
|
458
|
-
*
|
|
459
|
-
* instead of a `where` statement.
|
|
336
|
+
* @deprecated Use {@link havingNotExists} instead.
|
|
460
337
|
*/
|
|
461
338
|
havingNotExist(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
462
339
|
/**
|
|
463
|
-
*
|
|
464
|
-
|
|
340
|
+
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
341
|
+
*/
|
|
342
|
+
havingNotExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
343
|
+
/**
|
|
344
|
+
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
465
345
|
*/
|
|
466
346
|
orHavingExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
467
347
|
/**
|
|
468
|
-
*
|
|
469
|
-
* instead of a `where` statement.
|
|
348
|
+
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
470
349
|
*/
|
|
471
350
|
orHavingNotExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
472
351
|
/**
|
|
473
|
-
* Adds a select
|
|
352
|
+
* Adds a select statement to the query.
|
|
474
353
|
*
|
|
475
354
|
* When a column (or any expression) is selected, Kysely adds its type to the return
|
|
476
|
-
* type of the query. Kysely is smart enough to parse the
|
|
355
|
+
* type of the query. Kysely is smart enough to parse the selection names and types
|
|
477
356
|
* from aliased columns, subqueries, raw expressions etc.
|
|
478
357
|
*
|
|
479
358
|
* Kysely only allows you to select columns and expressions that exist and would
|
|
@@ -496,7 +375,8 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
496
375
|
* Select a single column:
|
|
497
376
|
*
|
|
498
377
|
* ```ts
|
|
499
|
-
* const persons = await db
|
|
378
|
+
* const persons = await db
|
|
379
|
+
* .selectFrom('person')
|
|
500
380
|
* .select('id')
|
|
501
381
|
* .where('first_name', '=', 'Arnold')
|
|
502
382
|
* .execute()
|
|
@@ -513,7 +393,8 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
513
393
|
* Select a single column and specify a table:
|
|
514
394
|
*
|
|
515
395
|
* ```ts
|
|
516
|
-
* const persons = await db
|
|
396
|
+
* const persons = await db
|
|
397
|
+
* .selectFrom(['person', 'pet'])
|
|
517
398
|
* .select('person.id')
|
|
518
399
|
* .execute()
|
|
519
400
|
*
|
|
@@ -529,7 +410,8 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
529
410
|
* Select multiple columns:
|
|
530
411
|
*
|
|
531
412
|
* ```ts
|
|
532
|
-
* const persons = await db
|
|
413
|
+
* const persons = await db
|
|
414
|
+
* .selectFrom('person')
|
|
533
415
|
* .select(['person.id', 'first_name'])
|
|
534
416
|
* .execute()
|
|
535
417
|
*
|
|
@@ -546,7 +428,8 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
546
428
|
* Aliased selections:
|
|
547
429
|
*
|
|
548
430
|
* ```ts
|
|
549
|
-
* const persons = await db
|
|
431
|
+
* const persons = await db
|
|
432
|
+
* .selectFrom('person')
|
|
550
433
|
* .select([
|
|
551
434
|
* 'person.first_name as fn',
|
|
552
435
|
* 'person.last_name as ln'
|
|
@@ -566,26 +449,35 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
566
449
|
* from "person"
|
|
567
450
|
* ```
|
|
568
451
|
*
|
|
569
|
-
* You can also select subqueries and raw sql
|
|
570
|
-
*
|
|
571
|
-
* method:
|
|
452
|
+
* You can also select arbitrary expression including subqueries and raw sql snippets.
|
|
453
|
+
* When you do that, you need to give a name for the selections using the {@link as} method:
|
|
572
454
|
*
|
|
573
455
|
* ```ts
|
|
574
456
|
* import { sql } from 'kysely'
|
|
575
457
|
*
|
|
576
458
|
* const persons = await db.selectFrom('person')
|
|
577
|
-
* .select([
|
|
578
|
-
*
|
|
579
|
-
*
|
|
459
|
+
* .select(({ selectFrom, or, cmpr }) => [
|
|
460
|
+
* // Select a correlated subquery
|
|
461
|
+
* selectFrom('pet')
|
|
580
462
|
* .whereRef('person.id', '=', 'pet.owner_id')
|
|
581
463
|
* .select('pet.name')
|
|
464
|
+
* .orderBy('pet.name')
|
|
582
465
|
* .limit(1)
|
|
583
|
-
* .as('
|
|
466
|
+
* .as('first_pet_name'),
|
|
467
|
+
*
|
|
468
|
+
* // Build and select an expression using the expression builder
|
|
469
|
+
* or([
|
|
470
|
+
* cmpr('first_name', '=', 'Jennifer'),
|
|
471
|
+
* cmpr('first_name', '=', 'Arnold')
|
|
472
|
+
* ]).as('is_jennifer_or_arnold'),
|
|
473
|
+
*
|
|
474
|
+
* // Select a raw sql expression
|
|
584
475
|
* sql<string>`concat(first_name, ' ', last_name)`.as('full_name')
|
|
585
476
|
* ])
|
|
586
477
|
* .execute()
|
|
587
478
|
*
|
|
588
|
-
* persons[0].
|
|
479
|
+
* persons[0].first_pet_name
|
|
480
|
+
* persons[0].is_jennifer_or_arnold
|
|
589
481
|
* persons[0].full_name
|
|
590
482
|
* ```
|
|
591
483
|
*
|
|
@@ -597,9 +489,11 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
597
489
|
* select "pet"."name"
|
|
598
490
|
* from "pet"
|
|
599
491
|
* where "person"."id" = "pet"."owner_id"
|
|
492
|
+
* order by "pet"."name"
|
|
600
493
|
* limit $1
|
|
601
494
|
* ) as "pet_name",
|
|
602
|
-
*
|
|
495
|
+
* ("first_name" = $2 or "first_name" = $3) as "jennifer_or_arnold",
|
|
496
|
+
* concat(first_name, ' ', last_name) as "full_name"
|
|
603
497
|
* from "person"
|
|
604
498
|
* ```
|
|
605
499
|
*
|
|
@@ -624,7 +518,8 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
624
518
|
* // You can use `keyof Person` if any column of an interface is allowed.
|
|
625
519
|
* type PossibleColumns = 'last_name' | 'first_name' | 'birth_date'
|
|
626
520
|
*
|
|
627
|
-
* const spersons = await db
|
|
521
|
+
* const spersons = await db
|
|
522
|
+
* .selectFrom('person')
|
|
628
523
|
* .select([
|
|
629
524
|
* ref<PossibleColumns>(columnFromUserInput)
|
|
630
525
|
* 'id'
|
|
@@ -642,8 +537,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
642
537
|
* persons[0].id
|
|
643
538
|
* ```
|
|
644
539
|
*/
|
|
645
|
-
select<SE extends SelectExpression<DB, TB>>(
|
|
646
|
-
select<SE extends SelectExpression<DB, TB>>(selection: SE): QueryBuilderWithSelection<DB, TB, O, SE>;
|
|
540
|
+
select<SE extends SelectExpression<DB, TB>>(selection: SelectArg<DB, TB, SE>): SelectQueryBuilder<DB, TB, O & Selection<DB, TB, SE>>;
|
|
647
541
|
/**
|
|
648
542
|
* Adds `distinct on` expressions to the select clause.
|
|
649
543
|
*
|
|
@@ -804,9 +698,9 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
804
698
|
* select "person".*, "pet".* from "person", "pet"
|
|
805
699
|
* ```
|
|
806
700
|
*/
|
|
807
|
-
selectAll<T extends TB>(table: ReadonlyArray<T>):
|
|
808
|
-
selectAll<T extends TB>(table: T):
|
|
809
|
-
selectAll():
|
|
701
|
+
selectAll<T extends TB>(table: ReadonlyArray<T>): SelectQueryBuilder<DB, TB, O & AllSelection<DB, T>>;
|
|
702
|
+
selectAll<T extends TB>(table: T): SelectQueryBuilder<DB, TB, Selectable<DB[T]>>;
|
|
703
|
+
selectAll(): SelectQueryBuilder<DB, TB, O & AllSelection<DB, TB>>;
|
|
810
704
|
/**
|
|
811
705
|
* Joins another table to the query using an inner join.
|
|
812
706
|
*
|
|
@@ -1011,7 +905,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
1011
905
|
* await db
|
|
1012
906
|
* .selectFrom('person')
|
|
1013
907
|
* .selectAll()
|
|
1014
|
-
* .orderBy((
|
|
908
|
+
* .orderBy((eb) => eb.selectFrom('pet')
|
|
1015
909
|
* .select('pet.name')
|
|
1016
910
|
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
1017
911
|
* .limit(1)
|
|
@@ -1160,8 +1054,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
1160
1054
|
* group by "first_name"
|
|
1161
1055
|
* ```
|
|
1162
1056
|
*/
|
|
1163
|
-
groupBy(groupBy:
|
|
1164
|
-
groupBy(groupBy: GroupByExpression<DB, TB, O>): SelectQueryBuilder<DB, TB, O>;
|
|
1057
|
+
groupBy(groupBy: GroupByArg<DB, TB, O>): SelectQueryBuilder<DB, TB, O>;
|
|
1165
1058
|
/**
|
|
1166
1059
|
* Adds a limit clause to the query.
|
|
1167
1060
|
*
|
|
@@ -1322,7 +1215,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
1322
1215
|
* db.selectFrom('person')
|
|
1323
1216
|
* .select(['id', 'first_name'])
|
|
1324
1217
|
* .clearSelect()
|
|
1325
|
-
* .select(['id','gender'])
|
|
1218
|
+
* .select(['id', 'gender'])
|
|
1326
1219
|
* ```
|
|
1327
1220
|
*
|
|
1328
1221
|
* The generated SQL(PostgreSQL):
|
|
@@ -1333,7 +1226,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
1333
1226
|
*/
|
|
1334
1227
|
clearSelect(): SelectQueryBuilder<DB, TB, {}>;
|
|
1335
1228
|
/**
|
|
1336
|
-
* Clears all where
|
|
1229
|
+
* Clears all where expressions from the query.
|
|
1337
1230
|
*
|
|
1338
1231
|
* ### Examples
|
|
1339
1232
|
*
|
|
@@ -1410,7 +1303,8 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
1410
1303
|
*/
|
|
1411
1304
|
clearOrderBy(): SelectQueryBuilder<DB, TB, O>;
|
|
1412
1305
|
/**
|
|
1413
|
-
* Simply calls the
|
|
1306
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
1307
|
+
* what the provided function returns.
|
|
1414
1308
|
*
|
|
1415
1309
|
* If you want to conditionally call a method on `this`, see
|
|
1416
1310
|
* the {@link $if} method.
|
|
@@ -1439,12 +1333,29 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
1439
1333
|
/**
|
|
1440
1334
|
* Call `func(this)` if `condition` is true.
|
|
1441
1335
|
*
|
|
1442
|
-
* This method
|
|
1443
|
-
*
|
|
1444
|
-
*
|
|
1445
|
-
*
|
|
1336
|
+
* NOTE: This method has an impact on typescript performance and it should only be used
|
|
1337
|
+
* when necessary. Remember that you can call most methods like `where` conditionally
|
|
1338
|
+
* like this:
|
|
1339
|
+
*
|
|
1340
|
+
* ```ts
|
|
1341
|
+
* let query = db.selectFrom('person').selectAll()
|
|
1342
|
+
*
|
|
1343
|
+
* if (firstName) {
|
|
1344
|
+
* query = query.where('first_name', '=', firstName)
|
|
1345
|
+
* }
|
|
1346
|
+
*
|
|
1347
|
+
* if (lastName) {
|
|
1348
|
+
* query = query.where('last_name', '=', lastName)
|
|
1349
|
+
* }
|
|
1350
|
+
*
|
|
1351
|
+
* const result = await query.execute()
|
|
1352
|
+
* ```
|
|
1353
|
+
*
|
|
1354
|
+
* This method is mainly useful with optional selects. Any `select` or `selectAll`
|
|
1355
|
+
* method called inside the callback add optional fields to the result type. This is
|
|
1356
|
+
* because we can't know if those selections were actually made before running the code.
|
|
1446
1357
|
*
|
|
1447
|
-
* Also see [this recipe](https://github.com/koskimas/kysely/tree/master/recipes/conditional-selects.md)
|
|
1358
|
+
* Also see [this recipe](https://github.com/koskimas/kysely/tree/master/site/docs/recipes/conditional-selects.md)
|
|
1448
1359
|
*
|
|
1449
1360
|
* ### Examples
|
|
1450
1361
|
*
|
|
@@ -1582,10 +1493,10 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
1582
1493
|
* the query returned no result.
|
|
1583
1494
|
*
|
|
1584
1495
|
* By default an instance of {@link NoResultError} is thrown, but you can
|
|
1585
|
-
* provide a custom error class
|
|
1496
|
+
* provide a custom error class, or callback to throw a different
|
|
1586
1497
|
* error.
|
|
1587
1498
|
*/
|
|
1588
|
-
executeTakeFirstOrThrow(errorConstructor?: NoResultErrorConstructor): Promise<Simplify<O>>;
|
|
1499
|
+
executeTakeFirstOrThrow(errorConstructor?: NoResultErrorConstructor | ((node: QueryNode) => Error)): Promise<Simplify<O>>;
|
|
1589
1500
|
/**
|
|
1590
1501
|
* Executes the query and streams the rows.
|
|
1591
1502
|
*
|
|
@@ -1614,7 +1525,7 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
1614
1525
|
*/
|
|
1615
1526
|
stream(chunkSize?: number): AsyncIterableIterator<O>;
|
|
1616
1527
|
/**
|
|
1617
|
-
* Executes query with `explain` statement before
|
|
1528
|
+
* Executes query with `explain` statement before the main query.
|
|
1618
1529
|
*
|
|
1619
1530
|
* ```ts
|
|
1620
1531
|
* const explained = await db
|