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
|
@@ -2,15 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DeleteResult = void 0;
|
|
4
4
|
class DeleteResult {
|
|
5
|
-
|
|
5
|
+
numDeletedRows;
|
|
6
6
|
constructor(numDeletedRows) {
|
|
7
|
-
this
|
|
8
|
-
}
|
|
9
|
-
get numDeletedRows() {
|
|
10
|
-
return this.#numDeletedRows;
|
|
7
|
+
this.numDeletedRows = numDeletedRows;
|
|
11
8
|
}
|
|
12
9
|
}
|
|
13
10
|
exports.DeleteResult = DeleteResult;
|
|
14
|
-
Object.defineProperty(DeleteResult.prototype, 'numDeletedRows', {
|
|
15
|
-
enumerable: true,
|
|
16
|
-
});
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
|
|
2
2
|
import { ExpressionWrapper } from '../expression/expression-wrapper.js';
|
|
3
3
|
import { CoalesceReferenceExpressionList } from '../parser/coalesce-parser.js';
|
|
4
|
-
import { ExtractTypeFromReferenceExpression,
|
|
4
|
+
import { ExtractTypeFromReferenceExpression, ReferenceExpression, StringReference } from '../parser/reference-parser.js';
|
|
5
5
|
import { Equals, IsAny } from '../util/type-utils.js';
|
|
6
6
|
import { AggregateFunctionBuilder } from './aggregate-function-builder.js';
|
|
7
7
|
/**
|
|
@@ -12,24 +12,36 @@ import { AggregateFunctionBuilder } from './aggregate-function-builder.js';
|
|
|
12
12
|
*
|
|
13
13
|
* ### Examples
|
|
14
14
|
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
15
|
+
* <!-- siteExample("select", "Function calls", 60) -->
|
|
16
|
+
*
|
|
17
|
+
* This example uses the `fn` module to select some aggregates:
|
|
17
18
|
*
|
|
18
|
-
*
|
|
19
|
+
* ```ts
|
|
20
|
+
* const result = await db.selectFrom('person')
|
|
19
21
|
* .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|
20
|
-
* .select([
|
|
22
|
+
* .select(({ fn }) => [
|
|
21
23
|
* 'person.id',
|
|
22
|
-
*
|
|
24
|
+
*
|
|
25
|
+
* // The `fn` module contains the most common
|
|
26
|
+
* // functions.
|
|
27
|
+
* fn.count<number>('pet.id').as('pet_count'),
|
|
28
|
+
*
|
|
29
|
+
* // You can call any function using the
|
|
30
|
+
* // `agg` method
|
|
31
|
+
* fn.agg<string[]>('array_agg', ['pet.name']).as('pet_names')
|
|
23
32
|
* ])
|
|
24
33
|
* .groupBy('person.id')
|
|
25
|
-
* .having(count('pet.id'), '>', 10)
|
|
34
|
+
* .having((eb) => eb.fn.count('pet.id'), '>', 10)
|
|
26
35
|
* .execute()
|
|
27
36
|
* ```
|
|
28
37
|
*
|
|
29
38
|
* The generated SQL (PostgreSQL):
|
|
30
39
|
*
|
|
31
40
|
* ```sql
|
|
32
|
-
* select
|
|
41
|
+
* select
|
|
42
|
+
* "person"."id",
|
|
43
|
+
* count("pet"."id") as "pet_count",
|
|
44
|
+
* array_agg("pet"."name") as "pet_names"
|
|
33
45
|
* from "person"
|
|
34
46
|
* inner join "pet" on "pet"."owner_id" = "person"."id"
|
|
35
47
|
* group by "person"."id"
|
|
@@ -66,7 +78,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
66
78
|
* .where(sql`upper(first_name)`, '=', 'JENNIFER')
|
|
67
79
|
* ```
|
|
68
80
|
*/
|
|
69
|
-
<T>(name: string, args: ReadonlyArray<ReferenceExpression<DB, TB>>): ExpressionWrapper<T>;
|
|
81
|
+
<T>(name: string, args: ReadonlyArray<ReferenceExpression<DB, TB>>): ExpressionWrapper<DB, TB, T>;
|
|
70
82
|
/**
|
|
71
83
|
* Creates an aggregate function call.
|
|
72
84
|
*
|
|
@@ -108,10 +120,8 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
108
120
|
* ### Examples
|
|
109
121
|
*
|
|
110
122
|
* ```ts
|
|
111
|
-
* const { avg } = db.fn
|
|
112
|
-
*
|
|
113
123
|
* db.selectFrom('toy')
|
|
114
|
-
* .select(avg('price').as('avg_price'))
|
|
124
|
+
* .select((eb) => eb.fn.avg('price').as('avg_price'))
|
|
115
125
|
* .execute()
|
|
116
126
|
* ```
|
|
117
127
|
*
|
|
@@ -140,10 +150,8 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
140
150
|
* the first type argument:
|
|
141
151
|
*
|
|
142
152
|
* ```ts
|
|
143
|
-
* const { avg } = db.fn
|
|
144
|
-
*
|
|
145
153
|
* db.selectFrom('toy')
|
|
146
|
-
* .select(avg<number>('price').as('avg_price'))
|
|
154
|
+
* .select((eb) => eb.fn.avg<number>('price').as('avg_price'))
|
|
147
155
|
* .execute()
|
|
148
156
|
* ```
|
|
149
157
|
*
|
|
@@ -153,14 +161,12 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
153
161
|
* function.
|
|
154
162
|
*
|
|
155
163
|
* ```ts
|
|
156
|
-
* const { avg } = db.fn
|
|
157
|
-
*
|
|
158
164
|
* db.selectFrom('toy')
|
|
159
|
-
* .select(avg<number | null>('price').as('avg_price'))
|
|
165
|
+
* .select((eb) => eb.fn.avg<number | null>('price').as('avg_price'))
|
|
160
166
|
* .execute()
|
|
161
167
|
* ```
|
|
162
168
|
*/
|
|
163
|
-
avg<O extends number | string | null = number | string, C extends
|
|
169
|
+
avg<O extends number | string | null = number | string, C extends ReferenceExpression<DB, TB> = ReferenceExpression<DB, TB>>(column: C): AggregateFunctionBuilder<DB, TB, O>;
|
|
164
170
|
/**
|
|
165
171
|
* Calls the `coalesce` function for given arguments.
|
|
166
172
|
*
|
|
@@ -182,10 +188,8 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
182
188
|
* ### Examples
|
|
183
189
|
*
|
|
184
190
|
* ```ts
|
|
185
|
-
* const { coalesce } = db.fn
|
|
186
|
-
*
|
|
187
191
|
* db.selectFrom('participant')
|
|
188
|
-
* .select(coalesce('nickname', sql<string>`'<anonymous>'`).as('nickname'))
|
|
192
|
+
* .select((eb) => eb.fn.coalesce('nickname', sql<string>`'<anonymous>'`).as('nickname'))
|
|
189
193
|
* .where('room_id', '=', roomId)
|
|
190
194
|
* .execute()
|
|
191
195
|
* ```
|
|
@@ -211,10 +215,8 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
211
215
|
* You can combine this function with other helpers in this module:
|
|
212
216
|
*
|
|
213
217
|
* ```ts
|
|
214
|
-
* const { avg, coalesce } = db.fn
|
|
215
|
-
*
|
|
216
218
|
* db.selectFrom('person')
|
|
217
|
-
* .select(coalesce(avg<number | null>('age'), sql<number>`0`).as('avg_age'))
|
|
219
|
+
* .select((eb) => eb.fn.coalesce(eb.fn.avg<number | null>('age'), sql<number>`0`).as('avg_age'))
|
|
218
220
|
* .where('first_name', '=', 'Jennifer')
|
|
219
221
|
* .execute()
|
|
220
222
|
* ```
|
|
@@ -225,7 +227,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
225
227
|
* select coalesce(avg("age"), 0) as "avg_age" from "person" where "first_name" = $1
|
|
226
228
|
* ```
|
|
227
229
|
*/
|
|
228
|
-
coalesce<V extends ReferenceExpression<DB, TB>, OV extends ReferenceExpression<DB, TB>[]>(value: V, ...otherValues: OV): ExpressionWrapper<CoalesceReferenceExpressionList<DB, TB, [V, ...OV]>>;
|
|
230
|
+
coalesce<V extends ReferenceExpression<DB, TB>, OV extends ReferenceExpression<DB, TB>[]>(value: V, ...otherValues: OV): ExpressionWrapper<DB, TB, CoalesceReferenceExpressionList<DB, TB, [V, ...OV]>>;
|
|
229
231
|
/**
|
|
230
232
|
* Calls the `count` function for the column given as the argument.
|
|
231
233
|
*
|
|
@@ -241,10 +243,8 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
241
243
|
* ### Examples
|
|
242
244
|
*
|
|
243
245
|
* ```ts
|
|
244
|
-
* const { count } = db.fn
|
|
245
|
-
*
|
|
246
246
|
* db.selectFrom('toy')
|
|
247
|
-
* .select(count('id').as('num_toys'))
|
|
247
|
+
* .select((eb) => eb.fn.count('id').as('num_toys'))
|
|
248
248
|
* .execute()
|
|
249
249
|
* ```
|
|
250
250
|
*
|
|
@@ -265,10 +265,8 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
265
265
|
* the type as the first type argument:
|
|
266
266
|
*
|
|
267
267
|
* ```ts
|
|
268
|
-
* const { count } = db.fn
|
|
269
|
-
*
|
|
270
268
|
* db.selectFrom('toy')
|
|
271
|
-
* .select(count<number>('id').as('num_toys'))
|
|
269
|
+
* .select((eb) => eb.fn.count<number>('id').as('num_toys'))
|
|
272
270
|
* .execute()
|
|
273
271
|
* ```
|
|
274
272
|
*
|
|
@@ -280,7 +278,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
280
278
|
* .execute()
|
|
281
279
|
* ```
|
|
282
280
|
*/
|
|
283
|
-
count<O extends number | string | bigint, C extends
|
|
281
|
+
count<O extends number | string | bigint, C extends ReferenceExpression<DB, TB> = ReferenceExpression<DB, TB>>(column: C): AggregateFunctionBuilder<DB, TB, O>;
|
|
284
282
|
/**
|
|
285
283
|
* Calls the `count` function with `*` or `table.*` as argument.
|
|
286
284
|
*
|
|
@@ -297,10 +295,8 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
297
295
|
* ### Examples
|
|
298
296
|
*
|
|
299
297
|
* ```ts
|
|
300
|
-
* const { countAll } = db.fn
|
|
301
|
-
*
|
|
302
298
|
* db.selectFrom('toy')
|
|
303
|
-
* .select(countAll().as('num_toys'))
|
|
299
|
+
* .select((eb) => eb.fn.countAll().as('num_toys'))
|
|
304
300
|
* .execute()
|
|
305
301
|
* ```
|
|
306
302
|
*
|
|
@@ -321,10 +317,8 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
321
317
|
* the type as the first type argument:
|
|
322
318
|
*
|
|
323
319
|
* ```ts
|
|
324
|
-
* const { countAll } = db.fn
|
|
325
|
-
*
|
|
326
320
|
* db.selectFrom('toy')
|
|
327
|
-
* .select(countAll<number>().as('num_toys'))
|
|
321
|
+
* .select((eb) => eb.fn.countAll<number>().as('num_toys'))
|
|
328
322
|
* .execute()
|
|
329
323
|
* ```
|
|
330
324
|
*
|
|
@@ -332,11 +326,9 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
332
326
|
* table:
|
|
333
327
|
*
|
|
334
328
|
* ```ts
|
|
335
|
-
* const { countAll } = db.fn
|
|
336
|
-
*
|
|
337
329
|
* db.selectFrom('toy')
|
|
338
330
|
* .innerJoin('pet', 'pet.id', 'toy.pet_id')
|
|
339
|
-
* .select(countAll('toy').as('num_toys'))
|
|
331
|
+
* .select((eb) => eb.fn.countAll('toy').as('num_toys'))
|
|
340
332
|
* .execute()
|
|
341
333
|
* ```
|
|
342
334
|
*
|
|
@@ -374,10 +366,8 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
374
366
|
* ### Examples
|
|
375
367
|
*
|
|
376
368
|
* ```ts
|
|
377
|
-
* const { max } = db.fn
|
|
378
|
-
*
|
|
379
369
|
* db.selectFrom('toy')
|
|
380
|
-
* .select(max('price').as('max_price'))
|
|
370
|
+
* .select((eb) => eb.fn.max('price').as('max_price'))
|
|
381
371
|
* .execute()
|
|
382
372
|
* ```
|
|
383
373
|
*
|
|
@@ -401,10 +391,8 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
401
391
|
* function.
|
|
402
392
|
*
|
|
403
393
|
* ```ts
|
|
404
|
-
* const { max } = db.fn
|
|
405
|
-
*
|
|
406
394
|
* db.selectFrom('toy')
|
|
407
|
-
* .select(max<number | null, 'price'>('price').as('max_price'))
|
|
395
|
+
* .select((eb) => eb.fn.max<number | null, 'price'>('price').as('max_price'))
|
|
408
396
|
* .execute()
|
|
409
397
|
* ```
|
|
410
398
|
*/
|
|
@@ -426,10 +414,8 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
426
414
|
* ### Examples
|
|
427
415
|
*
|
|
428
416
|
* ```ts
|
|
429
|
-
* const { min } = db.fn
|
|
430
|
-
*
|
|
431
417
|
* db.selectFrom('toy')
|
|
432
|
-
* .select(min('price').as('min_price'))
|
|
418
|
+
* .select((eb) => eb.fn.min('price').as('min_price'))
|
|
433
419
|
* .execute()
|
|
434
420
|
* ```
|
|
435
421
|
*
|
|
@@ -453,10 +439,8 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
453
439
|
* function.
|
|
454
440
|
*
|
|
455
441
|
* ```ts
|
|
456
|
-
* const { min } = db.fn
|
|
457
|
-
*
|
|
458
442
|
* db.selectFrom('toy')
|
|
459
|
-
* .select(min<number | null, 'price'>('price').as('min_price'))
|
|
443
|
+
* .select((eb) => eb.fn.min<number | null, 'price'>('price').as('min_price'))
|
|
460
444
|
* .execute()
|
|
461
445
|
* ```
|
|
462
446
|
*/
|
|
@@ -474,10 +458,8 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
474
458
|
* ### Examples
|
|
475
459
|
*
|
|
476
460
|
* ```ts
|
|
477
|
-
* const { sum } = db.fn
|
|
478
|
-
*
|
|
479
461
|
* db.selectFrom('toy')
|
|
480
|
-
* .select(sum('price').as('total_price'))
|
|
462
|
+
* .select((eb) => eb.fn.sum('price').as('total_price'))
|
|
481
463
|
* .execute()
|
|
482
464
|
* ```
|
|
483
465
|
*
|
|
@@ -506,10 +488,8 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
506
488
|
* the first type argument:
|
|
507
489
|
*
|
|
508
490
|
* ```ts
|
|
509
|
-
* const { sum } = db.fn
|
|
510
|
-
*
|
|
511
491
|
* db.selectFrom('toy')
|
|
512
|
-
* .select(sum<number>('price').as('total_price'))
|
|
492
|
+
* .select((eb) => eb.fn.sum<number>('price').as('total_price'))
|
|
513
493
|
* .execute()
|
|
514
494
|
* ```
|
|
515
495
|
*
|
|
@@ -519,16 +499,14 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
519
499
|
* function.
|
|
520
500
|
*
|
|
521
501
|
* ```ts
|
|
522
|
-
* const { sum } = db.fn
|
|
523
|
-
*
|
|
524
502
|
* db.selectFrom('toy')
|
|
525
|
-
* .select(sum<number | null>('price').as('total_price'))
|
|
503
|
+
* .select((eb) => eb.fn.sum<number | null>('price').as('total_price'))
|
|
526
504
|
* .execute()
|
|
527
505
|
* ```
|
|
528
506
|
*/
|
|
529
|
-
sum<O extends number | string | bigint | null = number | string | bigint, C extends
|
|
507
|
+
sum<O extends number | string | bigint | null = number | string | bigint, C extends ReferenceExpression<DB, TB> = ReferenceExpression<DB, TB>>(column: C): AggregateFunctionBuilder<DB, TB, O>;
|
|
530
508
|
}
|
|
531
509
|
export declare function createFunctionModule<DB, TB extends keyof DB>(): FunctionModule<DB, TB>;
|
|
532
|
-
|
|
533
|
-
|
|
510
|
+
type OutputBoundStringReference<DB, TB extends keyof DB, C extends StringReference<DB, TB>, O> = IsAny<O> extends true ? C : Equals<ExtractTypeFromReferenceExpression<DB, TB, C> | null, O | null> extends true ? C : never;
|
|
511
|
+
type StringReferenceBoundAggregateFunctionBuilder<DB, TB extends keyof DB, C extends StringReference<DB, TB>, O> = AggregateFunctionBuilder<DB, TB, ExtractTypeFromReferenceExpression<DB, TB, C> | (IsAny<O> extends true ? never : null extends O ? null : never)>;
|
|
534
512
|
export {};
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
+
import { ExpressionBuilder } from '../expression/expression-builder.js';
|
|
1
2
|
import { Expression } from '../expression/expression.js';
|
|
2
3
|
import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
|
|
3
4
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
4
|
-
import { ExistsExpression } from '../parser/unary-operation-parser.js';
|
|
5
5
|
import { SqlBool } from '../util/type-utils.js';
|
|
6
|
-
import { HavingExpressionBuilder } from './deprecated-having-expression-builder.js';
|
|
7
6
|
export interface HavingInterface<DB, TB extends keyof DB> {
|
|
8
7
|
/**
|
|
9
8
|
* Just like {@link WhereInterface.where | where} but adds a `having` statement
|
|
@@ -17,37 +16,5 @@ export interface HavingInterface<DB, TB extends keyof DB> {
|
|
|
17
16
|
* instead of a `where` statement.
|
|
18
17
|
*/
|
|
19
18
|
havingRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): HavingInterface<DB, TB>;
|
|
20
|
-
/**
|
|
21
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
22
|
-
*/
|
|
23
|
-
orHaving<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): HavingInterface<DB, TB>;
|
|
24
|
-
/**
|
|
25
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
26
|
-
*/
|
|
27
|
-
orHaving(factory: HavingExpressionFactory<DB, TB>): HavingInterface<DB, TB>;
|
|
28
|
-
/**
|
|
29
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
30
|
-
*/
|
|
31
|
-
orHaving(expression: Expression<any>): HavingInterface<DB, TB>;
|
|
32
|
-
/**
|
|
33
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
34
|
-
*/
|
|
35
|
-
orHavingRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): HavingInterface<DB, TB>;
|
|
36
|
-
/**
|
|
37
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
38
|
-
*/
|
|
39
|
-
havingExists(arg: ExistsExpression<DB, TB>): HavingInterface<DB, TB>;
|
|
40
|
-
/**
|
|
41
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
42
|
-
*/
|
|
43
|
-
havingNotExists(arg: ExistsExpression<DB, TB>): HavingInterface<DB, TB>;
|
|
44
|
-
/**
|
|
45
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
46
|
-
*/
|
|
47
|
-
orHavingExists(arg: ExistsExpression<DB, TB>): HavingInterface<DB, TB>;
|
|
48
|
-
/**
|
|
49
|
-
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
50
|
-
*/
|
|
51
|
-
orHavingNotExists(arg: ExistsExpression<DB, TB>): HavingInterface<DB, TB>;
|
|
52
19
|
}
|
|
53
|
-
export
|
|
20
|
+
export type HavingExpressionFactory<DB, TB extends keyof DB> = (eb: ExpressionBuilder<DB, TB>) => Expression<SqlBool>;
|
|
@@ -15,7 +15,7 @@ import { ReturningRow } from '../parser/returning-parser.js';
|
|
|
15
15
|
import { NoResultErrorConstructor } from './no-result-error.js';
|
|
16
16
|
import { ExpressionOrFactory } from '../parser/expression-parser.js';
|
|
17
17
|
import { ReturningInterface } from './returning-interface.js';
|
|
18
|
-
import { OnConflictBuilder, OnConflictDoNothingBuilder, OnConflictUpdateBuilder } from './on-conflict-builder.js';
|
|
18
|
+
import { OnConflictBuilder, OnConflictDatabase, OnConflictDoNothingBuilder, OnConflictTables, OnConflictUpdateBuilder } from './on-conflict-builder.js';
|
|
19
19
|
import { Selectable } from '../util/column-type.js';
|
|
20
20
|
import { Explainable, ExplainFormat } from '../util/explainable.js';
|
|
21
21
|
import { Expression } from '../expression/expression.js';
|
|
@@ -46,23 +46,31 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
46
46
|
*
|
|
47
47
|
* ### Examples
|
|
48
48
|
*
|
|
49
|
-
*
|
|
49
|
+
* <!-- siteExample("insert", "Single row", 10) -->
|
|
50
|
+
*
|
|
51
|
+
* Insert a single row:
|
|
52
|
+
*
|
|
50
53
|
* ```ts
|
|
51
54
|
* const result = await db
|
|
52
55
|
* .insertInto('person')
|
|
53
56
|
* .values({
|
|
54
57
|
* first_name: 'Jennifer',
|
|
55
|
-
* last_name: 'Aniston'
|
|
58
|
+
* last_name: 'Aniston',
|
|
59
|
+
* age: 40
|
|
56
60
|
* })
|
|
57
|
-
* .
|
|
61
|
+
* .executeTakeFirst()
|
|
62
|
+
*
|
|
63
|
+
* console.log(result.insertId)
|
|
58
64
|
* ```
|
|
59
65
|
*
|
|
60
66
|
* The generated SQL (PostgreSQL):
|
|
61
67
|
*
|
|
62
68
|
* ```sql
|
|
63
|
-
* insert into "person" ("first_name", "last_name") values ($1, $2)
|
|
69
|
+
* insert into "person" ("first_name", "last_name", "age") values ($1, $2, $3)
|
|
64
70
|
* ```
|
|
65
71
|
*
|
|
72
|
+
* <!-- siteExample("insert", "Multiple rows", 20) -->
|
|
73
|
+
*
|
|
66
74
|
* On dialects that support it (for example PostgreSQL) you can insert multiple
|
|
67
75
|
* rows by providing an array. Note that the return value is once again very
|
|
68
76
|
* dialect-specific. Some databases may only return the id of the *last* inserted
|
|
@@ -73,10 +81,12 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
73
81
|
* .insertInto('person')
|
|
74
82
|
* .values([{
|
|
75
83
|
* first_name: 'Jennifer',
|
|
76
|
-
* last_name: 'Aniston'
|
|
84
|
+
* last_name: 'Aniston',
|
|
85
|
+
* age: 40,
|
|
77
86
|
* }, {
|
|
78
87
|
* first_name: 'Arnold',
|
|
79
88
|
* last_name: 'Schwarzenegger',
|
|
89
|
+
* age: 70,
|
|
80
90
|
* }])
|
|
81
91
|
* .execute()
|
|
82
92
|
* ```
|
|
@@ -84,56 +94,61 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
84
94
|
* The generated SQL (PostgreSQL):
|
|
85
95
|
*
|
|
86
96
|
* ```sql
|
|
87
|
-
* insert into "person" ("first_name", "last_name") values (($1, $2), ($
|
|
97
|
+
* insert into "person" ("first_name", "last_name", "age") values (($1, $2, $3), ($4, $5, $6))
|
|
88
98
|
* ```
|
|
89
99
|
*
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
100
|
+
* <!-- siteExample("insert", "Returning data", 30) -->
|
|
101
|
+
*
|
|
102
|
+
* On supported dialects like PostgreSQL you need to chain `returning` to the query to get
|
|
103
|
+
* the inserted row's columns (or any other expression) as the return value. `returning`
|
|
104
|
+
* works just like `select`. Refer to `select` method's examples and documentation for
|
|
105
|
+
* more info.
|
|
93
106
|
*
|
|
94
107
|
* ```ts
|
|
95
|
-
* const
|
|
108
|
+
* const result = await db
|
|
96
109
|
* .insertInto('person')
|
|
97
110
|
* .values({
|
|
98
111
|
* first_name: 'Jennifer',
|
|
99
|
-
* last_name: 'Aniston'
|
|
112
|
+
* last_name: 'Aniston',
|
|
113
|
+
* age: 40,
|
|
100
114
|
* })
|
|
101
|
-
* .returning('id')
|
|
115
|
+
* .returning(['id', 'first_name as name'])
|
|
102
116
|
* .executeTakeFirstOrThrow()
|
|
103
|
-
*
|
|
104
|
-
* row.id
|
|
105
117
|
* ```
|
|
106
118
|
*
|
|
107
119
|
* The generated SQL (PostgreSQL):
|
|
108
120
|
*
|
|
109
121
|
* ```sql
|
|
110
|
-
* insert into "person" ("first_name", "last_name") values ($1, $2) returning "id"
|
|
122
|
+
* insert into "person" ("first_name", "last_name", "age") values ($1, $2, $3) returning "id", "first_name" as "name"
|
|
111
123
|
* ```
|
|
112
124
|
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
125
|
+
* <!-- siteExample("insert", "Complex values", 40) -->
|
|
126
|
+
*
|
|
127
|
+
* In addition to primitives, the values can also be arbitrary expressions.
|
|
128
|
+
* You can build the expressions by using a callback and calling the methods
|
|
129
|
+
* on the expression builder passed to it:
|
|
115
130
|
*
|
|
116
131
|
* ```ts
|
|
117
132
|
* import { sql } from 'kysely'
|
|
118
133
|
*
|
|
119
134
|
* const result = await db
|
|
120
135
|
* .insertInto('person')
|
|
121
|
-
* .values((
|
|
136
|
+
* .values(({ ref, selectFrom, fn }) => ({
|
|
122
137
|
* first_name: 'Jennifer',
|
|
123
138
|
* last_name: sql`${'Ani'} || ${'ston'}`,
|
|
124
|
-
* middle_name:
|
|
125
|
-
* age:
|
|
139
|
+
* middle_name: ref('first_name'),
|
|
140
|
+
* age: selectFrom('person')
|
|
141
|
+
* .select(fn.avg<number>('age')
|
|
142
|
+
* .as('avg_age')),
|
|
126
143
|
* }))
|
|
127
144
|
* .executeTakeFirst()
|
|
128
|
-
*
|
|
129
|
-
* console.log(result.insertId)
|
|
130
145
|
* ```
|
|
131
146
|
*
|
|
132
147
|
* The generated SQL (PostgreSQL):
|
|
133
148
|
*
|
|
134
149
|
* ```sql
|
|
135
150
|
* insert into "person" ("first_name", "last_name", "age")
|
|
136
|
-
* values ($1, $2 || $3, (select avg(age) from "person"))
|
|
151
|
+
* values ($1, $2 || $3, (select avg("age") as "avg_age" from "person"))
|
|
137
152
|
* ```
|
|
138
153
|
*
|
|
139
154
|
* You can also use the callback version of subqueries or raw expressions:
|
|
@@ -181,17 +196,29 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
181
196
|
*
|
|
182
197
|
* ### Examples
|
|
183
198
|
*
|
|
199
|
+
* <!-- siteExample("insert", "Insert subquery", 50) -->
|
|
200
|
+
*
|
|
201
|
+
* You can create an `INSERT INTO SELECT FROM` query using the `expression` method:
|
|
202
|
+
*
|
|
184
203
|
* ```ts
|
|
185
|
-
* db.insertInto('person')
|
|
186
|
-
* .columns(['first_name'])
|
|
187
|
-
* .expression((eb) => eb
|
|
204
|
+
* const result = await db.insertInto('person')
|
|
205
|
+
* .columns(['first_name', 'last_name', 'age'])
|
|
206
|
+
* .expression((eb) => eb
|
|
207
|
+
* .selectFrom('pet')
|
|
208
|
+
* .select((eb) => [
|
|
209
|
+
* 'pet.name',
|
|
210
|
+
* eb.val('Petson').as('last_name'),
|
|
211
|
+
* eb.val(7).as('age'),
|
|
212
|
+
* ])
|
|
213
|
+
* )
|
|
214
|
+
* .execute()
|
|
188
215
|
* ```
|
|
189
216
|
*
|
|
190
217
|
* The generated SQL (PostgreSQL):
|
|
191
218
|
*
|
|
192
219
|
* ```sql
|
|
193
|
-
* insert into "person" ("first_name")
|
|
194
|
-
* select "pet"."name" from "pet"
|
|
220
|
+
* insert into "person" ("first_name", "last_name", "age")
|
|
221
|
+
* select "pet"."name", $1 as "first_name", $2 as "last_name" from "pet"
|
|
195
222
|
* ```
|
|
196
223
|
*/
|
|
197
224
|
expression(expression: ExpressionOrFactory<DB, TB, any>): InsertQueryBuilder<DB, TB, O>;
|
|
@@ -368,7 +395,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
368
395
|
* )
|
|
369
396
|
* ```
|
|
370
397
|
*/
|
|
371
|
-
onConflict(callback: (builder: OnConflictBuilder<DB, TB>) =>
|
|
398
|
+
onConflict(callback: (builder: OnConflictBuilder<DB, TB>) => OnConflictUpdateBuilder<OnConflictDatabase<DB, TB>, OnConflictTables<TB>> | OnConflictDoNothingBuilder<DB, TB>): InsertQueryBuilder<DB, TB, O>;
|
|
372
399
|
/**
|
|
373
400
|
* Adds `on duplicate key update` to the query.
|
|
374
401
|
*
|
|
@@ -439,7 +466,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
439
466
|
* first_name: 'Jennifer',
|
|
440
467
|
* last_name: 'Aniston'
|
|
441
468
|
* })
|
|
442
|
-
* .returning(eb => [
|
|
469
|
+
* .returning((eb) => [
|
|
443
470
|
* 'id as id',
|
|
444
471
|
* sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
|
|
445
472
|
* eb.selectFrom('pets').select('pet.id').limit(1).as('first_pet_id')
|
|
@@ -477,10 +504,6 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
477
504
|
* ```
|
|
478
505
|
*/
|
|
479
506
|
$call<T>(func: (qb: this) => T): T;
|
|
480
|
-
/**
|
|
481
|
-
* @deprecated Use `$call` instead
|
|
482
|
-
*/
|
|
483
|
-
call<T>(func: (qb: this) => T): T;
|
|
484
507
|
/**
|
|
485
508
|
* Call `func(this)` if `condition` is true.
|
|
486
509
|
*
|
|
@@ -517,10 +540,6 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
517
540
|
* ```
|
|
518
541
|
*/
|
|
519
542
|
$if<O2>(condition: boolean, func: (qb: this) => InsertQueryBuilder<DB, TB, O2>): O2 extends InsertResult ? InsertQueryBuilder<DB, TB, InsertResult> : O2 extends O & infer E ? InsertQueryBuilder<DB, TB, O & Partial<E>> : InsertQueryBuilder<DB, TB, Partial<O2>>;
|
|
520
|
-
/**
|
|
521
|
-
* @deprecated Use `$if` instead
|
|
522
|
-
*/
|
|
523
|
-
if<O2>(condition: boolean, func: (qb: this) => InsertQueryBuilder<DB, TB, O2>): O2 extends InsertResult ? InsertQueryBuilder<DB, TB, InsertResult> : O2 extends O & infer E ? InsertQueryBuilder<DB, TB, O & Partial<E>> : InsertQueryBuilder<DB, TB, Partial<O2>>;
|
|
524
543
|
/**
|
|
525
544
|
* Change the output type of the query.
|
|
526
545
|
*
|
|
@@ -528,10 +547,6 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
528
547
|
* don't support your use case.
|
|
529
548
|
*/
|
|
530
549
|
$castTo<T>(): InsertQueryBuilder<DB, TB, T>;
|
|
531
|
-
/**
|
|
532
|
-
* @deprecated Use `$castTo` instead.
|
|
533
|
-
*/
|
|
534
|
-
castTo<T>(): InsertQueryBuilder<DB, TB, T>;
|
|
535
550
|
/**
|
|
536
551
|
* Narrows (parts of) the output type of the query.
|
|
537
552
|
*
|
|
@@ -615,10 +630,6 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
615
630
|
* ```
|
|
616
631
|
*/
|
|
617
632
|
$assertType<T extends O>(): O extends T ? InsertQueryBuilder<DB, TB, T> : KyselyTypeError<`$assertType() call failed: The type passed in is not equal to the output type of the query.`>;
|
|
618
|
-
/**
|
|
619
|
-
* @deprecated Use `$assertType` instead.
|
|
620
|
-
*/
|
|
621
|
-
assertType<T extends O>(): O extends T ? InsertQueryBuilder<DB, TB, T> : KyselyTypeError<`assertType() call failed: The type passed in is not equal to the output type of the query.`>;
|
|
622
633
|
/**
|
|
623
634
|
* Returns a copy of this InsertQueryBuilder instance with the given plugin installed.
|
|
624
635
|
*/
|