kysely 0.25.0 → 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -563
- package/dist/cjs/dialect/database-introspector.d.ts +1 -1
- package/dist/cjs/dialect/mysql/mysql-dialect-config.d.ts +2 -2
- package/dist/cjs/dialect/mysql/mysql-driver.js +5 -1
- package/dist/cjs/dialect/postgres/postgres-dialect-config.d.ts +1 -1
- package/dist/cjs/dialect/postgres/postgres-introspector.js +1 -4
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +1 -1
- package/dist/cjs/driver/database-connection.d.ts +6 -0
- package/dist/cjs/driver/driver.d.ts +1 -1
- package/dist/cjs/expression/expression-builder.d.ts +207 -108
- package/dist/cjs/expression/expression-builder.js +28 -7
- package/dist/cjs/expression/expression-wrapper.d.ts +296 -5
- package/dist/cjs/expression/expression-wrapper.js +70 -2
- package/dist/cjs/helpers/postgres.d.ts +30 -18
- package/dist/cjs/helpers/postgres.js +30 -18
- package/dist/cjs/index.d.ts +6 -0
- package/dist/cjs/index.js +6 -0
- package/dist/cjs/kysely.d.ts +23 -13
- package/dist/cjs/kysely.js +13 -9
- package/dist/cjs/migration/file-migration-provider.js +2 -2
- package/dist/cjs/operation-node/alter-column-node.d.ts +2 -3
- package/dist/cjs/operation-node/alter-column-node.js +2 -7
- package/dist/cjs/operation-node/alter-table-node.d.ts +2 -2
- package/dist/cjs/operation-node/column-definition-node.d.ts +1 -1
- package/dist/cjs/operation-node/constraint-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-index-node.d.ts +2 -2
- package/dist/cjs/operation-node/create-schema-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-table-node.d.ts +2 -2
- package/dist/cjs/operation-node/create-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-view-node.d.ts +1 -1
- package/dist/cjs/operation-node/data-type-node.d.ts +2 -2
- package/dist/cjs/operation-node/drop-constraint-node.d.ts +1 -1
- package/dist/cjs/operation-node/drop-index-node.d.ts +1 -1
- package/dist/cjs/operation-node/drop-schema-node.d.ts +1 -1
- package/dist/cjs/operation-node/drop-table-node.d.ts +1 -1
- package/dist/cjs/operation-node/drop-type-node.d.ts +1 -1
- package/dist/cjs/operation-node/drop-view-node.d.ts +1 -1
- package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +1 -1
- package/dist/cjs/operation-node/generated-node.d.ts +1 -1
- package/dist/cjs/operation-node/insert-query-node.d.ts +1 -1
- package/dist/cjs/operation-node/join-node.d.ts +1 -2
- package/dist/cjs/operation-node/join-node.js +0 -8
- package/dist/cjs/operation-node/json-operator-chain-node.d.ts +16 -0
- package/dist/cjs/operation-node/json-operator-chain-node.js +25 -0
- package/dist/cjs/operation-node/json-path-leg-node.d.ts +14 -0
- package/dist/cjs/operation-node/json-path-leg-node.js +19 -0
- package/dist/cjs/operation-node/json-path-node.d.ts +16 -0
- package/dist/cjs/operation-node/json-path-node.js +25 -0
- package/dist/cjs/operation-node/json-reference-node.d.ts +17 -0
- package/dist/cjs/operation-node/json-reference-node.js +25 -0
- package/dist/cjs/operation-node/on-conflict-node.d.ts +1 -1
- package/dist/cjs/operation-node/on-duplicate-key-node.d.ts +1 -1
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +8 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +33 -1
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +8 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +4 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/operator-node.d.ts +13 -9
- package/dist/cjs/operation-node/operator-node.js +12 -2
- package/dist/cjs/operation-node/query-node.d.ts +9 -10
- package/dist/cjs/operation-node/query-node.js +0 -8
- package/dist/cjs/operation-node/reference-node.d.ts +2 -2
- package/dist/cjs/operation-node/reference-node.js +1 -1
- package/dist/cjs/operation-node/references-node.d.ts +1 -1
- package/dist/cjs/operation-node/select-modifier-node.d.ts +1 -1
- package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
- package/dist/cjs/operation-node/select-query-node.js +0 -8
- package/dist/cjs/operation-node/selection-node.d.ts +1 -1
- package/dist/cjs/operation-node/set-operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/simple-reference-expression-node.d.ts +1 -1
- package/dist/cjs/operation-node/update-query-node.d.ts +1 -1
- package/dist/cjs/operation-node/values-node.d.ts +1 -1
- package/dist/cjs/operation-node/with-node.d.ts +1 -1
- package/dist/cjs/parser/binary-operation-parser.d.ts +9 -12
- package/dist/cjs/parser/binary-operation-parser.js +40 -119
- package/dist/cjs/parser/coalesce-parser.d.ts +1 -1
- package/dist/cjs/parser/data-type-parser.d.ts +1 -1
- package/dist/cjs/parser/default-value-parser.d.ts +1 -1
- package/dist/cjs/parser/expression-parser.d.ts +5 -5
- package/dist/cjs/parser/group-by-parser.d.ts +2 -2
- package/dist/cjs/parser/insert-values-parser.d.ts +4 -4
- package/dist/cjs/parser/join-parser.d.ts +4 -4
- package/dist/cjs/parser/order-by-parser.d.ts +3 -3
- package/dist/cjs/parser/partition-by-parser.d.ts +2 -2
- package/dist/cjs/parser/reference-parser.d.ts +13 -9
- package/dist/cjs/parser/reference-parser.js +28 -16
- package/dist/cjs/parser/returning-parser.d.ts +2 -2
- package/dist/cjs/parser/select-parser.d.ts +10 -10
- package/dist/cjs/parser/table-parser.d.ts +12 -12
- package/dist/cjs/parser/unary-operation-parser.d.ts +1 -1
- package/dist/cjs/parser/update-set-parser.d.ts +3 -3
- package/dist/cjs/parser/update-set-parser.js +1 -3
- package/dist/cjs/parser/value-parser.d.ts +4 -4
- package/dist/cjs/parser/with-parser.d.ts +12 -8
- package/dist/cjs/plugin/camel-case/camel-case.d.ts +1 -1
- package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.d.ts +42 -0
- package/dist/cjs/plugin/parse-json-results/parse-json-results-plugin.js +32 -0
- package/dist/cjs/plugin/with-schema/with-schema-transformer.js +22 -6
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +5 -38
- package/dist/cjs/query-builder/aggregate-function-builder.js +4 -59
- package/dist/cjs/query-builder/case-builder.d.ts +11 -11
- package/dist/cjs/query-builder/case-builder.js +2 -2
- package/dist/cjs/query-builder/delete-query-builder.d.ts +84 -59
- package/dist/cjs/query-builder/delete-query-builder.js +1 -62
- package/dist/cjs/query-builder/delete-result.d.ts +1 -2
- package/dist/cjs/query-builder/delete-result.js +2 -8
- package/dist/cjs/query-builder/function-module.d.ts +44 -66
- package/dist/cjs/query-builder/having-interface.d.ts +2 -35
- package/dist/cjs/query-builder/insert-query-builder.d.ts +58 -47
- package/dist/cjs/query-builder/insert-query-builder.js +17 -34
- package/dist/cjs/query-builder/insert-result.d.ts +3 -4
- package/dist/cjs/query-builder/insert-result.js +5 -14
- package/dist/cjs/query-builder/join-builder.d.ts +2 -35
- package/dist/cjs/query-builder/join-builder.js +1 -56
- package/dist/cjs/query-builder/json-path-builder.d.ts +212 -0
- package/dist/cjs/query-builder/json-path-builder.js +191 -0
- package/dist/cjs/query-builder/no-result-error.d.ts +1 -1
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +144 -73
- package/dist/cjs/query-builder/on-conflict-builder.js +2 -111
- package/dist/cjs/query-builder/over-builder.d.ts +2 -2
- package/dist/cjs/query-builder/over-builder.js +1 -1
- package/dist/cjs/query-builder/returning-interface.d.ts +1 -1
- package/dist/cjs/query-builder/select-query-builder.d.ts +139 -134
- package/dist/cjs/query-builder/select-query-builder.js +24 -133
- package/dist/cjs/query-builder/update-query-builder.d.ts +89 -62
- package/dist/cjs/query-builder/update-query-builder.js +3 -63
- package/dist/cjs/query-builder/update-result.d.ts +3 -3
- package/dist/cjs/query-builder/update-result.js +5 -9
- package/dist/cjs/query-builder/where-interface.d.ts +73 -38
- package/dist/cjs/query-compiler/compiled-query.d.ts +1 -1
- package/dist/cjs/query-compiler/compiled-query.js +2 -2
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +8 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +37 -2
- package/dist/cjs/query-compiler/query-compiler.d.ts +1 -1
- package/dist/cjs/query-creator.d.ts +4 -2
- package/dist/cjs/schema/alter-column-builder.d.ts +11 -5
- package/dist/cjs/schema/alter-column-builder.js +19 -21
- package/dist/cjs/schema/alter-table-builder.d.ts +0 -4
- package/dist/cjs/schema/alter-table-builder.js +2 -9
- package/dist/cjs/schema/column-definition-builder.d.ts +1 -1
- package/dist/cjs/schema/column-definition-builder.js +1 -2
- package/dist/cjs/schema/create-index-builder.js +1 -1
- package/dist/cjs/schema/create-table-builder.d.ts +2 -6
- package/dist/cjs/schema/create-table-builder.js +0 -6
- package/dist/cjs/schema/schema.d.ts +1 -2
- package/dist/cjs/schema/schema.js +1 -2
- package/dist/cjs/util/column-type.d.ts +22 -18
- package/dist/cjs/util/explainable.d.ts +1 -1
- package/dist/cjs/util/infer-result.d.ts +2 -2
- package/dist/cjs/util/log.d.ts +4 -4
- package/dist/cjs/util/require-all-props.d.ts +1 -1
- package/dist/cjs/util/type-utils.d.ts +19 -19
- package/dist/esm/dialect/database-introspector.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-dialect-config.d.ts +2 -2
- package/dist/esm/dialect/mysql/mysql-driver.js +5 -1
- package/dist/esm/dialect/postgres/postgres-dialect-config.d.ts +1 -1
- package/dist/esm/dialect/postgres/postgres-introspector.js +1 -4
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +1 -1
- package/dist/esm/driver/database-connection.d.ts +6 -0
- package/dist/esm/driver/driver.d.ts +1 -1
- package/dist/esm/expression/expression-builder.d.ts +207 -108
- package/dist/esm/expression/expression-builder.js +30 -9
- package/dist/esm/expression/expression-wrapper.d.ts +296 -5
- package/dist/esm/expression/expression-wrapper.js +67 -1
- package/dist/esm/helpers/postgres.d.ts +30 -18
- package/dist/esm/helpers/postgres.js +30 -18
- package/dist/esm/index.d.ts +6 -0
- package/dist/esm/index.js +6 -0
- package/dist/esm/kysely.d.ts +23 -13
- package/dist/esm/kysely.js +13 -9
- package/dist/esm/operation-node/alter-column-node.d.ts +2 -3
- package/dist/esm/operation-node/alter-column-node.js +2 -7
- package/dist/esm/operation-node/alter-table-node.d.ts +2 -2
- package/dist/esm/operation-node/column-definition-node.d.ts +1 -1
- package/dist/esm/operation-node/constraint-node.d.ts +1 -1
- package/dist/esm/operation-node/create-index-node.d.ts +2 -2
- package/dist/esm/operation-node/create-schema-node.d.ts +1 -1
- package/dist/esm/operation-node/create-table-node.d.ts +2 -2
- package/dist/esm/operation-node/create-type-node.d.ts +1 -1
- package/dist/esm/operation-node/create-view-node.d.ts +1 -1
- package/dist/esm/operation-node/data-type-node.d.ts +2 -2
- package/dist/esm/operation-node/drop-constraint-node.d.ts +1 -1
- package/dist/esm/operation-node/drop-index-node.d.ts +1 -1
- package/dist/esm/operation-node/drop-schema-node.d.ts +1 -1
- package/dist/esm/operation-node/drop-table-node.d.ts +1 -1
- package/dist/esm/operation-node/drop-type-node.d.ts +1 -1
- package/dist/esm/operation-node/drop-view-node.d.ts +1 -1
- package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +1 -1
- package/dist/esm/operation-node/generated-node.d.ts +1 -1
- package/dist/esm/operation-node/insert-query-node.d.ts +1 -1
- package/dist/esm/operation-node/join-node.d.ts +1 -2
- package/dist/esm/operation-node/join-node.js +0 -8
- package/dist/esm/operation-node/json-operator-chain-node.d.ts +16 -0
- package/dist/esm/operation-node/json-operator-chain-node.js +23 -0
- package/dist/esm/operation-node/json-path-leg-node.d.ts +14 -0
- package/dist/esm/operation-node/json-path-leg-node.js +17 -0
- package/dist/esm/operation-node/json-path-node.d.ts +16 -0
- package/dist/esm/operation-node/json-path-node.js +23 -0
- package/dist/esm/operation-node/json-reference-node.d.ts +17 -0
- package/dist/esm/operation-node/json-reference-node.js +23 -0
- package/dist/esm/operation-node/on-conflict-node.d.ts +1 -1
- package/dist/esm/operation-node/on-duplicate-key-node.d.ts +1 -1
- package/dist/esm/operation-node/operation-node-transformer.d.ts +8 -0
- package/dist/esm/operation-node/operation-node-transformer.js +33 -1
- package/dist/esm/operation-node/operation-node-visitor.d.ts +8 -0
- package/dist/esm/operation-node/operation-node-visitor.js +4 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/operator-node.d.ts +13 -9
- package/dist/esm/operation-node/operator-node.js +10 -1
- package/dist/esm/operation-node/query-node.d.ts +9 -10
- package/dist/esm/operation-node/query-node.js +0 -8
- package/dist/esm/operation-node/reference-node.d.ts +2 -2
- package/dist/esm/operation-node/reference-node.js +1 -1
- package/dist/esm/operation-node/references-node.d.ts +1 -1
- package/dist/esm/operation-node/select-modifier-node.d.ts +1 -1
- package/dist/esm/operation-node/select-query-node.d.ts +0 -1
- package/dist/esm/operation-node/select-query-node.js +0 -8
- package/dist/esm/operation-node/selection-node.d.ts +1 -1
- package/dist/esm/operation-node/set-operation-node.d.ts +1 -1
- package/dist/esm/operation-node/simple-reference-expression-node.d.ts +1 -1
- package/dist/esm/operation-node/update-query-node.d.ts +1 -1
- package/dist/esm/operation-node/values-node.d.ts +1 -1
- package/dist/esm/operation-node/with-node.d.ts +1 -1
- package/dist/esm/parser/binary-operation-parser.d.ts +9 -12
- package/dist/esm/parser/binary-operation-parser.js +38 -114
- package/dist/esm/parser/coalesce-parser.d.ts +1 -1
- package/dist/esm/parser/data-type-parser.d.ts +1 -1
- package/dist/esm/parser/default-value-parser.d.ts +1 -1
- package/dist/esm/parser/expression-parser.d.ts +5 -5
- package/dist/esm/parser/group-by-parser.d.ts +2 -2
- package/dist/esm/parser/insert-values-parser.d.ts +4 -4
- package/dist/esm/parser/join-parser.d.ts +4 -4
- package/dist/esm/parser/order-by-parser.d.ts +3 -3
- package/dist/esm/parser/partition-by-parser.d.ts +2 -2
- package/dist/esm/parser/reference-parser.d.ts +13 -9
- package/dist/esm/parser/reference-parser.js +26 -15
- package/dist/esm/parser/returning-parser.d.ts +2 -2
- package/dist/esm/parser/select-parser.d.ts +10 -10
- package/dist/esm/parser/table-parser.d.ts +12 -12
- package/dist/esm/parser/unary-operation-parser.d.ts +1 -1
- package/dist/esm/parser/update-set-parser.d.ts +3 -3
- package/dist/esm/parser/update-set-parser.js +2 -4
- package/dist/esm/parser/value-parser.d.ts +4 -4
- package/dist/esm/parser/with-parser.d.ts +12 -8
- package/dist/esm/plugin/camel-case/camel-case.d.ts +1 -1
- package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.d.ts +42 -0
- package/dist/esm/plugin/parse-json-results/parse-json-results-plugin.js +29 -0
- package/dist/esm/plugin/with-schema/with-schema-transformer.js +22 -6
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +5 -38
- package/dist/esm/query-builder/aggregate-function-builder.js +5 -60
- package/dist/esm/query-builder/case-builder.d.ts +11 -11
- package/dist/esm/query-builder/case-builder.js +3 -3
- package/dist/esm/query-builder/delete-query-builder.d.ts +84 -59
- package/dist/esm/query-builder/delete-query-builder.js +2 -63
- package/dist/esm/query-builder/delete-result.d.ts +1 -2
- package/dist/esm/query-builder/delete-result.js +2 -8
- package/dist/esm/query-builder/function-module.d.ts +44 -66
- package/dist/esm/query-builder/having-interface.d.ts +2 -35
- package/dist/esm/query-builder/insert-query-builder.d.ts +58 -47
- package/dist/esm/query-builder/insert-query-builder.js +17 -34
- package/dist/esm/query-builder/insert-result.d.ts +3 -4
- package/dist/esm/query-builder/insert-result.js +5 -14
- package/dist/esm/query-builder/join-builder.d.ts +2 -35
- package/dist/esm/query-builder/join-builder.js +2 -57
- package/dist/esm/query-builder/json-path-builder.d.ts +212 -0
- package/dist/esm/query-builder/json-path-builder.js +186 -0
- package/dist/esm/query-builder/no-result-error.d.ts +1 -1
- package/dist/esm/query-builder/on-conflict-builder.d.ts +144 -73
- package/dist/esm/query-builder/on-conflict-builder.js +3 -112
- package/dist/esm/query-builder/over-builder.d.ts +2 -2
- package/dist/esm/query-builder/over-builder.js +1 -1
- package/dist/esm/query-builder/returning-interface.d.ts +1 -1
- package/dist/esm/query-builder/select-query-builder.d.ts +139 -134
- package/dist/esm/query-builder/select-query-builder.js +25 -134
- package/dist/esm/query-builder/update-query-builder.d.ts +89 -62
- package/dist/esm/query-builder/update-query-builder.js +4 -64
- package/dist/esm/query-builder/update-result.d.ts +3 -3
- package/dist/esm/query-builder/update-result.js +5 -9
- package/dist/esm/query-builder/where-interface.d.ts +73 -38
- package/dist/esm/query-compiler/compiled-query.d.ts +1 -1
- package/dist/esm/query-compiler/compiled-query.js +2 -2
- package/dist/esm/query-compiler/default-query-compiler.d.ts +8 -0
- package/dist/esm/query-compiler/default-query-compiler.js +37 -2
- package/dist/esm/query-compiler/query-compiler.d.ts +1 -1
- package/dist/esm/query-creator.d.ts +4 -2
- package/dist/esm/schema/alter-column-builder.d.ts +11 -5
- package/dist/esm/schema/alter-column-builder.js +19 -21
- package/dist/esm/schema/alter-table-builder.d.ts +0 -4
- package/dist/esm/schema/alter-table-builder.js +2 -9
- package/dist/esm/schema/column-definition-builder.d.ts +1 -1
- package/dist/esm/schema/column-definition-builder.js +1 -2
- package/dist/esm/schema/create-index-builder.js +2 -2
- package/dist/esm/schema/create-table-builder.d.ts +2 -6
- package/dist/esm/schema/create-table-builder.js +0 -6
- package/dist/esm/schema/schema.d.ts +1 -2
- package/dist/esm/schema/schema.js +1 -2
- package/dist/esm/util/column-type.d.ts +22 -18
- package/dist/esm/util/explainable.d.ts +1 -1
- package/dist/esm/util/infer-result.d.ts +2 -2
- package/dist/esm/util/log.d.ts +4 -4
- package/dist/esm/util/require-all-props.d.ts +1 -1
- package/dist/esm/util/type-utils.d.ts +19 -19
- package/package.json +25 -23
- package/dist/cjs/query-builder/deprecated-having-expression-builder.d.ts +0 -62
- package/dist/cjs/query-builder/deprecated-having-expression-builder.js +0 -2
- package/dist/cjs/query-builder/deprecated-on-expression-builder.d.ts +0 -62
- package/dist/cjs/query-builder/deprecated-on-expression-builder.js +0 -2
- package/dist/cjs/query-builder/deprecated-where-expression-builder.d.ts +0 -62
- package/dist/cjs/query-builder/deprecated-where-expression-builder.js +0 -2
- package/dist/esm/query-builder/deprecated-having-expression-builder.d.ts +0 -62
- package/dist/esm/query-builder/deprecated-having-expression-builder.js +0 -2
- package/dist/esm/query-builder/deprecated-on-expression-builder.d.ts +0 -62
- package/dist/esm/query-builder/deprecated-on-expression-builder.js +0 -2
- package/dist/esm/query-builder/deprecated-where-expression-builder.d.ts +0 -62
- package/dist/esm/query-builder/deprecated-where-expression-builder.js +0 -2
|
@@ -19,7 +19,6 @@ import { HavingExpressionFactory, HavingInterface } from './having-interface.js'
|
|
|
19
19
|
import { Explainable, ExplainFormat } from '../util/explainable.js';
|
|
20
20
|
import { AliasedExpression, Expression } from '../expression/expression.js';
|
|
21
21
|
import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
|
|
22
|
-
import { ExistsExpression } from '../parser/unary-operation-parser.js';
|
|
23
22
|
import { KyselyTypeError } from '../util/type-error.js';
|
|
24
23
|
import { Selectable } from '../util/column-type.js';
|
|
25
24
|
import { Streamable } from '../util/streamable.js';
|
|
@@ -53,6 +52,10 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
53
52
|
*
|
|
54
53
|
* ### Examples
|
|
55
54
|
*
|
|
55
|
+
* <!-- siteExample("where", "Simple where clause", 10) -->
|
|
56
|
+
*
|
|
57
|
+
* `where` method calls are combined with `AND`:
|
|
58
|
+
*
|
|
56
59
|
* ```ts
|
|
57
60
|
* const person = await db
|
|
58
61
|
* .selectFrom('person')
|
|
@@ -75,9 +78,65 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
75
78
|
* sql`your operator`
|
|
76
79
|
* ```
|
|
77
80
|
*
|
|
81
|
+
* <!-- siteExample("where", "Where in", 20) -->
|
|
82
|
+
*
|
|
83
|
+
* Find multiple items using a list of identifiers:
|
|
84
|
+
*
|
|
85
|
+
* ```ts
|
|
86
|
+
* const persons = await db
|
|
87
|
+
* .selectFrom('person')
|
|
88
|
+
* .selectAll()
|
|
89
|
+
* .where('id', 'in', ['1', '2', '3'])
|
|
90
|
+
* .execute()
|
|
91
|
+
* ```
|
|
92
|
+
*
|
|
93
|
+
* The generated SQL (PostgreSQL):
|
|
94
|
+
*
|
|
95
|
+
* ```sql
|
|
96
|
+
* select * from "person" where "id" in ($1, $2, $3)
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
99
|
+
* <!-- siteExample("where", "OR where", 30) -->
|
|
100
|
+
*
|
|
101
|
+
* To combine conditions using `OR`, you can use the expression builder:
|
|
102
|
+
*
|
|
103
|
+
* ```ts
|
|
104
|
+
* const persons = await db
|
|
105
|
+
* .selectFrom('person')
|
|
106
|
+
* .selectAll()
|
|
107
|
+
* .where(({ or, and, cmpr }) => or([
|
|
108
|
+
* and([
|
|
109
|
+
* cmpr('first_name', '=', 'Jennifer'),
|
|
110
|
+
* cmpr('last_name', '=', 'Aniston')
|
|
111
|
+
* ]),
|
|
112
|
+
* and([
|
|
113
|
+
* cmpr('first_name', '=', 'Sylvester'),
|
|
114
|
+
* cmpr('last_name', '=', 'Stallone')
|
|
115
|
+
* ])
|
|
116
|
+
* ]))
|
|
117
|
+
* .execute()
|
|
118
|
+
* ```
|
|
119
|
+
*
|
|
120
|
+
* The generated SQL (PostgreSQL):
|
|
121
|
+
*
|
|
122
|
+
* ```sql
|
|
123
|
+
* select *
|
|
124
|
+
* from "person"
|
|
125
|
+
* where (
|
|
126
|
+
* ("first_name" = $1 AND "last_name" = $2)
|
|
127
|
+
* OR
|
|
128
|
+
* ("first_name" = $3 AND "last_name" = $4)
|
|
129
|
+
* )
|
|
130
|
+
* ```
|
|
131
|
+
*
|
|
132
|
+
* <!-- siteExample("where", "Conditional where calls", 40) -->
|
|
133
|
+
*
|
|
78
134
|
* You can add expressions conditionally like this:
|
|
79
135
|
*
|
|
80
136
|
* ```ts
|
|
137
|
+
* const firstName: string | undefined = 'Jennifer'
|
|
138
|
+
* const lastName: string | undefined = 'Aniston'
|
|
139
|
+
*
|
|
81
140
|
* let query = db
|
|
82
141
|
* .selectFrom('person')
|
|
83
142
|
* .selectAll()
|
|
@@ -144,22 +203,30 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
144
203
|
* select * from "person" where "id" in ($1, $2, $3)
|
|
145
204
|
* ```
|
|
146
205
|
*
|
|
206
|
+
* <!-- siteExample("where", "Complex where clause", 50) -->
|
|
207
|
+
*
|
|
147
208
|
* For complex `where` expressions you can pass in a single callback and
|
|
148
|
-
* use the
|
|
209
|
+
* use the `ExpressionBuilder` to build your expression:
|
|
149
210
|
*
|
|
150
211
|
* ```ts
|
|
212
|
+
* const firstName = 'Jennifer'
|
|
213
|
+
* const maxAge = 60
|
|
214
|
+
*
|
|
151
215
|
* const persons = await db
|
|
152
216
|
* .selectFrom('person')
|
|
153
217
|
* .selectAll('person')
|
|
154
|
-
* .where(({ cmpr, or, and, not, exists, selectFrom
|
|
218
|
+
* .where(({ cmpr, or, and, not, exists, selectFrom }) => and([
|
|
155
219
|
* or([
|
|
156
220
|
* cmpr('first_name', '=', firstName),
|
|
157
221
|
* cmpr('age', '<', maxAge)
|
|
158
222
|
* ]),
|
|
159
223
|
* not(exists(
|
|
160
|
-
* selectFrom('pet')
|
|
224
|
+
* selectFrom('pet')
|
|
225
|
+
* .select('pet.id')
|
|
226
|
+
* .whereRef('pet.owner_id', '=', 'person.id')
|
|
161
227
|
* ))
|
|
162
228
|
* ]))
|
|
229
|
+
* .execute()
|
|
163
230
|
* ```
|
|
164
231
|
*
|
|
165
232
|
* The generated SQL (PostgreSQL):
|
|
@@ -280,32 +347,6 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
280
347
|
* from "person"
|
|
281
348
|
*/
|
|
282
349
|
whereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
283
|
-
/**
|
|
284
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
285
|
-
*/
|
|
286
|
-
orWhere<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
|
|
287
|
-
orWhere(factory: WhereExpressionFactory<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
288
|
-
orWhere(expression: Expression<any>): SelectQueryBuilder<DB, TB, O>;
|
|
289
|
-
/**
|
|
290
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
291
|
-
*/
|
|
292
|
-
orWhereRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
293
|
-
/**
|
|
294
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
295
|
-
*/
|
|
296
|
-
whereExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
297
|
-
/**
|
|
298
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
299
|
-
*/
|
|
300
|
-
whereNotExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
301
|
-
/**
|
|
302
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
303
|
-
*/
|
|
304
|
-
orWhereExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
305
|
-
/**
|
|
306
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
307
|
-
*/
|
|
308
|
-
orWhereNotExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
309
350
|
/**
|
|
310
351
|
* Just like {@link WhereInterface.where | where} but adds a `having` statement
|
|
311
352
|
* instead of a `where` statement.
|
|
@@ -318,36 +359,6 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
318
359
|
* instead of a `where` statement.
|
|
319
360
|
*/
|
|
320
361
|
havingRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
321
|
-
/**
|
|
322
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
323
|
-
*/
|
|
324
|
-
orHaving<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): SelectQueryBuilder<DB, TB, O>;
|
|
325
|
-
orHaving(factory: HavingExpressionFactory<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
326
|
-
orHaving(expression: Expression<any>): SelectQueryBuilder<DB, TB, O>;
|
|
327
|
-
/**
|
|
328
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
329
|
-
*/
|
|
330
|
-
orHavingRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
331
|
-
/**
|
|
332
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
333
|
-
*/
|
|
334
|
-
havingExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
335
|
-
/**
|
|
336
|
-
* @deprecated Use {@link havingNotExists} instead.
|
|
337
|
-
*/
|
|
338
|
-
havingNotExist(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
339
|
-
/**
|
|
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
|
|
345
|
-
*/
|
|
346
|
-
orHavingExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
347
|
-
/**
|
|
348
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
349
|
-
*/
|
|
350
|
-
orHavingNotExists(arg: ExistsExpression<DB, TB>): SelectQueryBuilder<DB, TB, O>;
|
|
351
362
|
/**
|
|
352
363
|
* Adds a select statement to the query.
|
|
353
364
|
*
|
|
@@ -372,6 +383,8 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
372
383
|
*
|
|
373
384
|
* ### Examples
|
|
374
385
|
*
|
|
386
|
+
* <!-- siteExample("select", "A single column", 10) -->
|
|
387
|
+
*
|
|
375
388
|
* Select a single column:
|
|
376
389
|
*
|
|
377
390
|
* ```ts
|
|
@@ -380,8 +393,6 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
380
393
|
* .select('id')
|
|
381
394
|
* .where('first_name', '=', 'Arnold')
|
|
382
395
|
* .execute()
|
|
383
|
-
*
|
|
384
|
-
* persons[0].id
|
|
385
396
|
* ```
|
|
386
397
|
*
|
|
387
398
|
* The generated SQL (PostgreSQL):
|
|
@@ -390,6 +401,8 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
390
401
|
* select "id" from "person" where "first_name" = $1
|
|
391
402
|
* ```
|
|
392
403
|
*
|
|
404
|
+
* <!-- siteExample("select", "Column with a table", 20) -->
|
|
405
|
+
*
|
|
393
406
|
* Select a single column and specify a table:
|
|
394
407
|
*
|
|
395
408
|
* ```ts
|
|
@@ -397,8 +410,6 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
397
410
|
* .selectFrom(['person', 'pet'])
|
|
398
411
|
* .select('person.id')
|
|
399
412
|
* .execute()
|
|
400
|
-
*
|
|
401
|
-
* persons[0].id
|
|
402
413
|
* ```
|
|
403
414
|
*
|
|
404
415
|
* The generated SQL (PostgreSQL):
|
|
@@ -407,6 +418,8 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
407
418
|
* select "person"."id" from "person", "pet"
|
|
408
419
|
* ```
|
|
409
420
|
*
|
|
421
|
+
* <!-- siteExample("select", "Multiple columns", 30) -->
|
|
422
|
+
*
|
|
410
423
|
* Select multiple columns:
|
|
411
424
|
*
|
|
412
425
|
* ```ts
|
|
@@ -414,9 +427,6 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
414
427
|
* .selectFrom('person')
|
|
415
428
|
* .select(['person.id', 'first_name'])
|
|
416
429
|
* .execute()
|
|
417
|
-
*
|
|
418
|
-
* persons[0].id
|
|
419
|
-
* persons[0].first_name
|
|
420
430
|
* ```
|
|
421
431
|
*
|
|
422
432
|
* The generated SQL (PostgreSQL):
|
|
@@ -425,35 +435,36 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
425
435
|
* select "person"."id", "first_name" from "person"
|
|
426
436
|
* ```
|
|
427
437
|
*
|
|
428
|
-
*
|
|
438
|
+
* <!-- siteExample("select", "Aliases", 40) -->
|
|
439
|
+
*
|
|
440
|
+
* You can provide an alias for the selections by appending `as the_alias` to the selection.
|
|
429
441
|
*
|
|
430
442
|
* ```ts
|
|
431
443
|
* const persons = await db
|
|
432
444
|
* .selectFrom('person')
|
|
433
445
|
* .select([
|
|
434
|
-
* '
|
|
446
|
+
* 'first_name as fn',
|
|
435
447
|
* 'person.last_name as ln'
|
|
436
448
|
* ])
|
|
437
449
|
* .execute()
|
|
438
|
-
*
|
|
439
|
-
* persons[0].fn
|
|
440
|
-
* persons[0].ln
|
|
441
450
|
* ```
|
|
442
451
|
*
|
|
443
452
|
* The generated SQL (PostgreSQL):
|
|
444
453
|
*
|
|
445
454
|
* ```sql
|
|
446
455
|
* select
|
|
447
|
-
* "
|
|
456
|
+
* "first_name" as "fn",
|
|
448
457
|
* "person"."last_name" as "ln"
|
|
449
458
|
* from "person"
|
|
450
459
|
* ```
|
|
451
460
|
*
|
|
452
|
-
*
|
|
453
|
-
*
|
|
461
|
+
* <!-- siteExample("select", "Complex selections", 50) -->
|
|
462
|
+
*
|
|
463
|
+
* You can select arbitrary expression including subqueries and raw sql snippets.
|
|
464
|
+
* When you do that, you need to give a name for the selections using the `as` method:
|
|
454
465
|
*
|
|
455
466
|
* ```ts
|
|
456
|
-
* import {
|
|
467
|
+
* import { sql } from 'kysely'
|
|
457
468
|
*
|
|
458
469
|
* const persons = await db.selectFrom('person')
|
|
459
470
|
* .select(({ selectFrom, or, cmpr }) => [
|
|
@@ -465,7 +476,8 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
465
476
|
* .limit(1)
|
|
466
477
|
* .as('first_pet_name'),
|
|
467
478
|
*
|
|
468
|
-
* // Build and select an expression using
|
|
479
|
+
* // Build and select an expression using
|
|
480
|
+
* // the expression builder
|
|
469
481
|
* or([
|
|
470
482
|
* cmpr('first_name', '=', 'Jennifer'),
|
|
471
483
|
* cmpr('first_name', '=', 'Arnold')
|
|
@@ -475,10 +487,6 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
475
487
|
* sql<string>`concat(first_name, ' ', last_name)`.as('full_name')
|
|
476
488
|
* ])
|
|
477
489
|
* .execute()
|
|
478
|
-
*
|
|
479
|
-
* persons[0].first_pet_name
|
|
480
|
-
* persons[0].is_jennifer_or_arnold
|
|
481
|
-
* persons[0].full_name
|
|
482
490
|
* ```
|
|
483
491
|
*
|
|
484
492
|
* The generated SQL (PostgreSQL):
|
|
@@ -543,8 +551,10 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
543
551
|
*
|
|
544
552
|
* ### Examples
|
|
545
553
|
*
|
|
554
|
+
* <!-- siteExample("select", "Distinct on", 80) -->
|
|
555
|
+
*
|
|
546
556
|
* ```ts
|
|
547
|
-
* await db.selectFrom('person')
|
|
557
|
+
* const persons = await db.selectFrom('person')
|
|
548
558
|
* .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|
549
559
|
* .where('pet.name', '=', 'Doggo')
|
|
550
560
|
* .distinctOn('person.id')
|
|
@@ -610,10 +620,12 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
610
620
|
/**
|
|
611
621
|
* Makes the selection distinct.
|
|
612
622
|
*
|
|
623
|
+
* <!-- siteExample("select", "Distinct", 70) -->
|
|
624
|
+
*
|
|
613
625
|
* ### Examples
|
|
614
626
|
*
|
|
615
627
|
* ```ts
|
|
616
|
-
* await db.selectFrom('person')
|
|
628
|
+
* const persons = await db.selectFrom('person')
|
|
617
629
|
* .select('first_name')
|
|
618
630
|
* .distinct()
|
|
619
631
|
* .execute()
|
|
@@ -655,6 +667,10 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
655
667
|
*
|
|
656
668
|
* ### Examples
|
|
657
669
|
*
|
|
670
|
+
* <!-- siteExample("select", "All columns", 90) -->
|
|
671
|
+
*
|
|
672
|
+
* The `selectAll` method generates `SELECT *`:
|
|
673
|
+
*
|
|
658
674
|
* ```ts
|
|
659
675
|
* const persons = await db
|
|
660
676
|
* .selectFrom('person')
|
|
@@ -668,6 +684,8 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
668
684
|
* select * from "person"
|
|
669
685
|
* ```
|
|
670
686
|
*
|
|
687
|
+
* <!-- siteExample("select", "All columns of a table", 100) -->
|
|
688
|
+
*
|
|
671
689
|
* Select all columns of a table:
|
|
672
690
|
*
|
|
673
691
|
* ```ts
|
|
@@ -706,7 +724,9 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
706
724
|
*
|
|
707
725
|
* ### Examples
|
|
708
726
|
*
|
|
709
|
-
*
|
|
727
|
+
* <!-- siteExample("join", "Simple inner join", 10) -->
|
|
728
|
+
*
|
|
729
|
+
* Simple inner joins can be done by providing a table name and two columns to join:
|
|
710
730
|
*
|
|
711
731
|
* ```ts
|
|
712
732
|
* const result = await db
|
|
@@ -714,22 +734,21 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
714
734
|
* .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|
715
735
|
* // `select` needs to come after the call to `innerJoin` so
|
|
716
736
|
* // that you can select from the joined table.
|
|
717
|
-
* .select('person.id', 'pet.name')
|
|
737
|
+
* .select(['person.id', 'pet.name as pet_name'])
|
|
718
738
|
* .execute()
|
|
719
|
-
*
|
|
720
|
-
* result[0].id
|
|
721
|
-
* result[0].name
|
|
722
739
|
* ```
|
|
723
740
|
*
|
|
724
741
|
* The generated SQL (PostgreSQL):
|
|
725
742
|
*
|
|
726
743
|
* ```sql
|
|
727
|
-
* select "person"."id", "pet"."name"
|
|
744
|
+
* select "person"."id", "pet"."name" as "pet_name"
|
|
728
745
|
* from "person"
|
|
729
746
|
* inner join "pet"
|
|
730
747
|
* on "pet"."owner_id" = "person"."id"
|
|
731
748
|
* ```
|
|
732
749
|
*
|
|
750
|
+
* <!-- siteExample("join", "Aliased inner join", 20) -->
|
|
751
|
+
*
|
|
733
752
|
* You can give an alias for the joined table like this:
|
|
734
753
|
*
|
|
735
754
|
* ```ts
|
|
@@ -750,13 +769,15 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
750
769
|
* where "p".name" = $1
|
|
751
770
|
* ```
|
|
752
771
|
*
|
|
772
|
+
* <!-- siteExample("join", "Complex join", 30) -->
|
|
773
|
+
*
|
|
753
774
|
* You can provide a function as the second argument to get a join
|
|
754
775
|
* builder for creating more complex joins. The join builder has a
|
|
755
776
|
* bunch of `on*` methods for building the `on` clause of the join.
|
|
756
777
|
* There's basically an equivalent for every `where` method
|
|
757
|
-
* (`on`, `onRef
|
|
758
|
-
*
|
|
759
|
-
*
|
|
778
|
+
* (`on`, `onRef` etc.). You can do all the same things with the
|
|
779
|
+
* `on` method that you can with the corresponding `where` method.
|
|
780
|
+
* See the `where` method documentation for more examples.
|
|
760
781
|
*
|
|
761
782
|
* ```ts
|
|
762
783
|
* await db.selectFrom('person')
|
|
@@ -780,34 +801,36 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
780
801
|
* and "pet"."name" = $1
|
|
781
802
|
* ```
|
|
782
803
|
*
|
|
783
|
-
*
|
|
784
|
-
*
|
|
804
|
+
* <!-- siteExample("join", "Subquery join", 40) -->
|
|
805
|
+
*
|
|
806
|
+
* You can join a subquery by providing two callbacks:
|
|
785
807
|
*
|
|
786
808
|
* ```ts
|
|
787
|
-
* await db.selectFrom('person')
|
|
809
|
+
* const result = await db.selectFrom('person')
|
|
788
810
|
* .innerJoin(
|
|
789
|
-
*
|
|
790
|
-
* .
|
|
811
|
+
* (eb) => eb
|
|
812
|
+
* .selectFrom('pet')
|
|
813
|
+
* .select(['owner_id as owner', 'name'])
|
|
791
814
|
* .where('name', '=', 'Doggo')
|
|
792
815
|
* .as('doggos'),
|
|
793
|
-
*
|
|
794
|
-
*
|
|
816
|
+
* (join) => join
|
|
817
|
+
* .onRef('doggos.owner', '=', 'person.id'),
|
|
795
818
|
* )
|
|
796
|
-
* .selectAll()
|
|
819
|
+
* .selectAll('doggos')
|
|
797
820
|
* .execute()
|
|
798
821
|
* ```
|
|
799
822
|
*
|
|
800
823
|
* The generated SQL (PostgreSQL):
|
|
801
824
|
*
|
|
802
825
|
* ```sql
|
|
803
|
-
* select
|
|
826
|
+
* select "doggos".*
|
|
804
827
|
* from "person"
|
|
805
828
|
* inner join (
|
|
806
|
-
* select "owner_id", "name"
|
|
829
|
+
* select "owner_id" as "owner", "name"
|
|
807
830
|
* from "pet"
|
|
808
831
|
* where "name" = $1
|
|
809
832
|
* ) as "doggos"
|
|
810
|
-
* on "doggos"."
|
|
833
|
+
* on "doggos"."owner" = "person"."id"
|
|
811
834
|
* ```
|
|
812
835
|
*/
|
|
813
836
|
innerJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilderWithInnerJoin<DB, TB, O, TE>;
|
|
@@ -1326,10 +1349,6 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
1326
1349
|
* ```
|
|
1327
1350
|
*/
|
|
1328
1351
|
$call<T>(func: (qb: this) => T): T;
|
|
1329
|
-
/**
|
|
1330
|
-
* @deprecated Use `$call` instead
|
|
1331
|
-
*/
|
|
1332
|
-
call<T>(func: (qb: this) => T): T;
|
|
1333
1352
|
/**
|
|
1334
1353
|
* Call `func(this)` if `condition` is true.
|
|
1335
1354
|
*
|
|
@@ -1385,23 +1404,17 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
1385
1404
|
* You can also call any other methods inside the callback:
|
|
1386
1405
|
*
|
|
1387
1406
|
* ```ts
|
|
1388
|
-
* const { count } = db.fn
|
|
1389
|
-
*
|
|
1390
1407
|
* db.selectFrom('person')
|
|
1391
1408
|
* .select('person.id')
|
|
1392
1409
|
* .$if(filterByFirstName, (qb) => qb.where('first_name', '=', firstName))
|
|
1393
1410
|
* .$if(filterByPetCount, (qb) => qb
|
|
1394
1411
|
* .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|
1395
|
-
* .having(count('pet.id'), '>', petCountLimit)
|
|
1412
|
+
* .having((eb) => eb.fn.count('pet.id'), '>', petCountLimit)
|
|
1396
1413
|
* .groupBy('person.id')
|
|
1397
1414
|
* )
|
|
1398
1415
|
* ```
|
|
1399
1416
|
*/
|
|
1400
1417
|
$if<O2>(condition: boolean, func: (qb: this) => SelectQueryBuilder<DB, TB, O & O2>): SelectQueryBuilder<DB, TB, O & Partial<O2>>;
|
|
1401
|
-
/**
|
|
1402
|
-
* @deprecated Use `$if` instead
|
|
1403
|
-
*/
|
|
1404
|
-
if<O2>(condition: boolean, func: (qb: this) => SelectQueryBuilder<DB, TB, O & O2>): SelectQueryBuilder<DB, TB, O & Partial<O2>>;
|
|
1405
1418
|
/**
|
|
1406
1419
|
* Change the output type of the query.
|
|
1407
1420
|
*
|
|
@@ -1409,10 +1422,6 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
1409
1422
|
* don't support your use case.
|
|
1410
1423
|
*/
|
|
1411
1424
|
$castTo<T>(): SelectQueryBuilder<DB, TB, T>;
|
|
1412
|
-
/**
|
|
1413
|
-
* @deprecated Use `$castTo` instead.
|
|
1414
|
-
*/
|
|
1415
|
-
castTo<T>(): SelectQueryBuilder<DB, TB, T>;
|
|
1416
1425
|
/**
|
|
1417
1426
|
* Narrows (parts of) the output type of the query.
|
|
1418
1427
|
*
|
|
@@ -1494,10 +1503,6 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
1494
1503
|
* ```
|
|
1495
1504
|
*/
|
|
1496
1505
|
$assertType<T extends O>(): O extends T ? SelectQueryBuilder<DB, TB, T> : KyselyTypeError<`$assertType() call failed: The type passed in is not equal to the output type of the query.`>;
|
|
1497
|
-
/**
|
|
1498
|
-
* @deprecated Use `$assertType` instead.
|
|
1499
|
-
*/
|
|
1500
|
-
assertType<T extends O>(): O extends T ? SelectQueryBuilder<DB, TB, T> : KyselyTypeError<`assertType() call failed: The type passed in is not equal to the output type of the query.`>;
|
|
1501
1506
|
/**
|
|
1502
1507
|
* Returns a copy of this SelectQueryBuilder instance with the given plugin installed.
|
|
1503
1508
|
*/
|
|
@@ -1628,24 +1633,24 @@ export declare class AliasedSelectQueryBuilder<DB, TB extends keyof DB, O = unde
|
|
|
1628
1633
|
*/
|
|
1629
1634
|
toOperationNode(): AliasNode;
|
|
1630
1635
|
}
|
|
1631
|
-
export
|
|
1632
|
-
|
|
1633
|
-
|
|
1636
|
+
export type SelectQueryBuilderWithInnerJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? InnerJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? SelectQueryBuilder<DB, TB | TE, O> : TE extends AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : never;
|
|
1637
|
+
type InnerJoinedBuilder<DB, TB extends keyof DB, O, A extends string, R> = A extends keyof DB ? SelectQueryBuilder<InnerJoinedDB<DB, A, R>, TB | A, O> : SelectQueryBuilder<DB & ShallowRecord<A, R>, TB | A, O>;
|
|
1638
|
+
type InnerJoinedDB<DB, A extends string, R> = DrainOuterGeneric<{
|
|
1634
1639
|
[C in keyof DB | A]: C extends A ? R : C extends keyof DB ? DB[C] : never;
|
|
1635
1640
|
}>;
|
|
1636
|
-
export
|
|
1637
|
-
|
|
1638
|
-
|
|
1641
|
+
export type SelectQueryBuilderWithLeftJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? LeftJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? LeftJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? LeftJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? LeftJoinedBuilder<DB, TB, O, QA, QO> : never;
|
|
1642
|
+
type LeftJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = A extends keyof DB ? SelectQueryBuilder<LeftJoinedDB<DB, A, R>, TB | A, O> : SelectQueryBuilder<DB & ShallowRecord<A, Nullable<R>>, TB | A, O>;
|
|
1643
|
+
type LeftJoinedDB<DB, A extends keyof any, R> = DrainOuterGeneric<{
|
|
1639
1644
|
[C in keyof DB | A]: C extends A ? Nullable<R> : C extends keyof DB ? DB[C] : never;
|
|
1640
1645
|
}>;
|
|
1641
|
-
export
|
|
1642
|
-
|
|
1643
|
-
|
|
1646
|
+
export type SelectQueryBuilderWithRightJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? RightJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? RightJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? RightJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? RightJoinedBuilder<DB, TB, O, QA, QO> : never;
|
|
1647
|
+
type RightJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = SelectQueryBuilder<RightJoinedDB<DB, TB, A, R>, TB | A, O>;
|
|
1648
|
+
type RightJoinedDB<DB, TB extends keyof DB, A extends keyof any, R> = DrainOuterGeneric<{
|
|
1644
1649
|
[C in keyof DB | A]: C extends A ? R : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
|
|
1645
1650
|
}>;
|
|
1646
|
-
export
|
|
1647
|
-
|
|
1648
|
-
|
|
1651
|
+
export type SelectQueryBuilderWithFullJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? OuterJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? OuterJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedExpression<infer QO, infer QA> ? OuterJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? OuterJoinedBuilder<DB, TB, O, QA, QO> : never;
|
|
1652
|
+
type OuterJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = SelectQueryBuilder<OuterJoinedBuilderDB<DB, TB, A, R>, TB | A, O>;
|
|
1653
|
+
type OuterJoinedBuilderDB<DB, TB extends keyof DB, A extends keyof any, R> = DrainOuterGeneric<{
|
|
1649
1654
|
[C in keyof DB | A]: C extends A ? Nullable<R> : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
|
|
1650
1655
|
}>;
|
|
1651
1656
|
export {};
|