kysely 0.23.5 → 0.24.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -24
- package/dist/cjs/dialect/mysql/mysql-adapter.js +2 -2
- package/dist/cjs/dialect/mysql/mysql-driver.d.ts +1 -1
- package/dist/cjs/dialect/mysql/mysql-driver.js +1 -1
- package/dist/cjs/dialect/postgres/postgres-adapter.js +1 -1
- package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +1 -0
- package/dist/cjs/dialect/sqlite/sqlite-dialect.js +1 -0
- package/dist/cjs/driver/runtime-driver.js +4 -2
- package/dist/cjs/expression/expression-builder.d.ts +386 -0
- package/dist/cjs/expression/expression-builder.js +92 -0
- package/dist/cjs/expression/expression-wrapper.d.ts +92 -0
- package/dist/cjs/expression/expression-wrapper.js +54 -0
- package/dist/cjs/expression/expression.d.ts +1 -1
- package/dist/cjs/helpers/mysql.d.ts +140 -0
- package/dist/cjs/helpers/mysql.js +170 -0
- package/dist/cjs/helpers/postgres.d.ts +133 -0
- package/dist/cjs/helpers/postgres.js +141 -0
- package/dist/cjs/index.d.ts +4 -3
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/kysely.d.ts +10 -0
- package/dist/cjs/kysely.js +12 -1
- package/dist/cjs/migration/file-migration-provider.d.ts +5 -2
- package/dist/cjs/migration/migrator.d.ts +5 -2
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +3 -3
- package/dist/cjs/operation-node/create-index-node.d.ts +2 -0
- package/dist/cjs/operation-node/delete-query-node.d.ts +0 -1
- package/dist/cjs/operation-node/delete-query-node.js +0 -6
- package/dist/cjs/operation-node/function-node.d.ts +13 -0
- package/dist/cjs/operation-node/function-node.js +19 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +9 -0
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/operator-node.d.ts +13 -2
- package/dist/cjs/operation-node/operator-node.js +38 -3
- package/dist/cjs/operation-node/query-node.d.ts +25 -8
- package/dist/cjs/operation-node/query-node.js +9 -2
- package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
- package/dist/cjs/operation-node/select-query-node.js +0 -6
- package/dist/cjs/operation-node/update-query-node.d.ts +0 -1
- package/dist/cjs/operation-node/update-query-node.js +0 -6
- package/dist/cjs/parser/binary-operation-parser.d.ts +9 -10
- package/dist/cjs/parser/binary-operation-parser.js +89 -39
- package/dist/cjs/parser/coalesce-parser.d.ts +0 -2
- package/dist/cjs/parser/coalesce-parser.js +0 -9
- package/dist/cjs/parser/expression-parser.d.ts +7 -3
- package/dist/cjs/parser/expression-parser.js +3 -3
- package/dist/cjs/parser/group-by-parser.d.ts +3 -2
- package/dist/cjs/parser/group-by-parser.js +3 -0
- package/dist/cjs/parser/insert-values-parser.d.ts +4 -1
- package/dist/cjs/parser/insert-values-parser.js +19 -13
- package/dist/cjs/parser/join-parser.js +1 -1
- package/dist/cjs/parser/parse-utils.d.ts +0 -2
- package/dist/cjs/parser/parse-utils.js +1 -8
- package/dist/cjs/parser/returning-parser.d.ts +2 -1
- package/dist/cjs/parser/select-parser.d.ts +5 -13
- package/dist/cjs/parser/select-parser.js +8 -4
- package/dist/cjs/parser/table-parser.d.ts +5 -3
- package/dist/cjs/parser/unary-operation-parser.d.ts +5 -2
- package/dist/cjs/parser/unary-operation-parser.js +9 -8
- package/dist/cjs/parser/update-set-parser.d.ts +4 -1
- package/dist/cjs/parser/update-set-parser.js +9 -4
- package/dist/cjs/parser/value-parser.d.ts +5 -0
- package/dist/cjs/parser/value-parser.js +1 -3
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +40 -113
- package/dist/cjs/query-builder/aggregate-function-builder.js +23 -63
- package/dist/cjs/query-builder/delete-query-builder.d.ts +220 -201
- package/dist/cjs/query-builder/delete-query-builder.js +21 -27
- package/dist/cjs/query-builder/delete-result.js +3 -0
- package/dist/cjs/query-builder/deprecated-having-expression-builder.d.ts +62 -0
- package/dist/cjs/query-builder/deprecated-having-expression-builder.js +2 -0
- package/dist/cjs/query-builder/deprecated-on-expression-builder.d.ts +62 -0
- package/dist/cjs/query-builder/deprecated-on-expression-builder.js +2 -0
- package/dist/cjs/query-builder/deprecated-where-expression-builder.d.ts +62 -0
- package/dist/cjs/query-builder/deprecated-where-expression-builder.js +2 -0
- package/dist/cjs/query-builder/function-module.d.ts +40 -12
- package/dist/cjs/query-builder/function-module.js +43 -329
- package/dist/cjs/query-builder/having-interface.d.ts +19 -16
- package/dist/cjs/query-builder/insert-query-builder.d.ts +75 -26
- package/dist/cjs/query-builder/insert-query-builder.js +21 -29
- package/dist/cjs/query-builder/insert-result.js +3 -0
- package/dist/cjs/query-builder/join-builder.d.ts +23 -26
- package/dist/cjs/query-builder/join-builder.js +17 -22
- package/dist/cjs/query-builder/no-result-error.d.ts +1 -0
- package/dist/cjs/query-builder/no-result-error.js +5 -1
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +158 -276
- package/dist/cjs/query-builder/on-conflict-builder.js +52 -36
- package/dist/cjs/query-builder/over-builder.d.ts +5 -0
- package/dist/cjs/query-builder/over-builder.js +7 -0
- package/dist/cjs/query-builder/returning-interface.d.ts +2 -2
- package/dist/cjs/query-builder/select-query-builder.d.ts +148 -237
- package/dist/cjs/query-builder/select-query-builder.js +333 -78
- package/dist/cjs/query-builder/update-query-builder.d.ts +145 -213
- package/dist/cjs/query-builder/update-query-builder.js +21 -115
- package/dist/cjs/query-builder/update-result.js +3 -0
- package/dist/cjs/query-builder/where-interface.d.ts +71 -184
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +3 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +17 -1
- package/dist/cjs/query-creator.d.ts +9 -2
- package/dist/cjs/query-creator.js +1 -24
- package/dist/cjs/query-executor/query-executor.d.ts +3 -3
- package/dist/cjs/raw-builder/raw-builder.d.ts +5 -3
- package/dist/cjs/raw-builder/raw-builder.js +13 -7
- package/dist/cjs/raw-builder/sql.d.ts +17 -9
- package/dist/cjs/raw-builder/sql.js +8 -2
- package/dist/cjs/schema/alter-column-builder.d.ts +5 -0
- package/dist/cjs/schema/alter-column-builder.js +7 -0
- package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
- package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
- package/dist/cjs/schema/alter-table-drop-constraint-builder.d.ts +5 -0
- package/dist/cjs/schema/alter-table-drop-constraint-builder.js +7 -0
- package/dist/cjs/schema/column-definition-builder.d.ts +6 -1
- package/dist/cjs/schema/column-definition-builder.js +8 -1
- package/dist/cjs/schema/create-index-builder.d.ts +51 -9
- package/dist/cjs/schema/create-index-builder.js +17 -0
- package/dist/cjs/schema/create-schema-builder.d.ts +5 -0
- package/dist/cjs/schema/create-schema-builder.js +7 -0
- package/dist/cjs/schema/create-table-builder.d.ts +3 -1
- package/dist/cjs/schema/create-table-builder.js +3 -1
- package/dist/cjs/schema/create-type-builder.d.ts +5 -0
- package/dist/cjs/schema/create-type-builder.js +7 -0
- package/dist/cjs/schema/create-view-builder.d.ts +5 -0
- package/dist/cjs/schema/create-view-builder.js +7 -0
- package/dist/cjs/schema/drop-index-builder.d.ts +5 -0
- package/dist/cjs/schema/drop-index-builder.js +7 -0
- package/dist/cjs/schema/drop-schema-builder.d.ts +5 -0
- package/dist/cjs/schema/drop-schema-builder.js +7 -0
- package/dist/cjs/schema/drop-table-builder.d.ts +5 -0
- package/dist/cjs/schema/drop-table-builder.js +7 -0
- package/dist/cjs/schema/drop-type-builder.d.ts +5 -0
- package/dist/cjs/schema/drop-type-builder.js +7 -0
- package/dist/cjs/schema/drop-view-builder.d.ts +5 -0
- package/dist/cjs/schema/drop-view-builder.js +7 -0
- package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +5 -0
- package/dist/cjs/schema/foreign-key-constraint-builder.js +7 -0
- package/dist/cjs/util/compilable.d.ts +1 -0
- package/dist/cjs/util/compilable.js +6 -0
- package/dist/cjs/util/explainable.d.ts +35 -0
- package/dist/cjs/util/log.d.ts +2 -0
- package/dist/cjs/util/object-utils.js +1 -1
- package/dist/cjs/util/streamable.d.ts +29 -0
- package/dist/cjs/util/streamable.js +2 -0
- package/dist/cjs/util/type-utils.d.ts +1 -0
- package/dist/esm/dialect/mysql/mysql-adapter.js +2 -2
- package/dist/esm/dialect/mysql/mysql-driver.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-driver.js +1 -1
- package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
- package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -0
- package/dist/esm/dialect/sqlite/sqlite-dialect.js +1 -0
- package/dist/esm/driver/runtime-driver.js +4 -2
- package/dist/esm/expression/expression-builder.d.ts +386 -0
- package/dist/esm/expression/expression-builder.js +88 -0
- package/dist/esm/expression/expression-wrapper.d.ts +92 -0
- package/dist/esm/expression/expression-wrapper.js +50 -0
- package/dist/esm/expression/expression.d.ts +1 -1
- package/dist/esm/helpers/mysql.d.ts +140 -0
- package/dist/esm/helpers/mysql.js +165 -0
- package/dist/esm/helpers/postgres.d.ts +133 -0
- package/dist/esm/helpers/postgres.js +136 -0
- package/dist/esm/index.d.ts +4 -3
- package/dist/esm/index.js +2 -1
- package/dist/esm/kysely.d.ts +10 -0
- package/dist/esm/kysely.js +13 -2
- package/dist/esm/migration/file-migration-provider.d.ts +5 -2
- package/dist/esm/migration/migrator.d.ts +5 -2
- package/dist/esm/operation-node/aggregate-function-node.d.ts +3 -3
- package/dist/esm/operation-node/create-index-node.d.ts +2 -0
- package/dist/esm/operation-node/delete-query-node.d.ts +0 -1
- package/dist/esm/operation-node/delete-query-node.js +0 -6
- package/dist/esm/operation-node/function-node.d.ts +13 -0
- package/dist/esm/operation-node/function-node.js +17 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.js +9 -0
- package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-visitor.js +1 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/operator-node.d.ts +13 -2
- package/dist/esm/operation-node/operator-node.js +34 -3
- package/dist/esm/operation-node/query-node.d.ts +25 -8
- package/dist/esm/operation-node/query-node.js +9 -2
- package/dist/esm/operation-node/select-query-node.d.ts +0 -1
- package/dist/esm/operation-node/select-query-node.js +0 -6
- package/dist/esm/operation-node/update-query-node.d.ts +0 -1
- package/dist/esm/operation-node/update-query-node.js +0 -6
- package/dist/esm/parser/binary-operation-parser.d.ts +9 -10
- package/dist/esm/parser/binary-operation-parser.js +85 -37
- package/dist/esm/parser/coalesce-parser.d.ts +0 -2
- package/dist/esm/parser/coalesce-parser.js +1 -7
- package/dist/esm/parser/expression-parser.d.ts +7 -3
- package/dist/esm/parser/expression-parser.js +3 -3
- package/dist/esm/parser/group-by-parser.d.ts +3 -2
- package/dist/esm/parser/group-by-parser.js +3 -0
- package/dist/esm/parser/insert-values-parser.d.ts +4 -1
- package/dist/esm/parser/insert-values-parser.js +18 -12
- package/dist/esm/parser/join-parser.js +2 -2
- package/dist/esm/parser/parse-utils.d.ts +0 -2
- package/dist/esm/parser/parse-utils.js +0 -6
- package/dist/esm/parser/returning-parser.d.ts +2 -1
- package/dist/esm/parser/select-parser.d.ts +5 -13
- package/dist/esm/parser/select-parser.js +7 -3
- package/dist/esm/parser/table-parser.d.ts +5 -3
- package/dist/esm/parser/unary-operation-parser.d.ts +5 -2
- package/dist/esm/parser/unary-operation-parser.js +8 -8
- package/dist/esm/parser/update-set-parser.d.ts +4 -1
- package/dist/esm/parser/update-set-parser.js +7 -2
- package/dist/esm/parser/value-parser.d.ts +5 -0
- package/dist/esm/parser/value-parser.js +1 -3
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +40 -113
- package/dist/esm/query-builder/aggregate-function-builder.js +24 -64
- package/dist/esm/query-builder/delete-query-builder.d.ts +220 -201
- package/dist/esm/query-builder/delete-query-builder.js +24 -30
- package/dist/esm/query-builder/delete-result.js +3 -0
- package/dist/esm/query-builder/deprecated-having-expression-builder.d.ts +62 -0
- package/dist/esm/query-builder/deprecated-having-expression-builder.js +2 -0
- package/dist/esm/query-builder/deprecated-on-expression-builder.d.ts +62 -0
- package/dist/esm/query-builder/deprecated-on-expression-builder.js +2 -0
- package/dist/esm/query-builder/deprecated-where-expression-builder.d.ts +62 -0
- package/dist/esm/query-builder/deprecated-where-expression-builder.js +2 -0
- package/dist/esm/query-builder/function-module.d.ts +40 -12
- package/dist/esm/query-builder/function-module.js +42 -328
- package/dist/esm/query-builder/having-interface.d.ts +19 -16
- package/dist/esm/query-builder/insert-query-builder.d.ts +75 -26
- package/dist/esm/query-builder/insert-query-builder.js +25 -33
- package/dist/esm/query-builder/insert-result.js +3 -0
- package/dist/esm/query-builder/join-builder.d.ts +23 -26
- package/dist/esm/query-builder/join-builder.js +18 -23
- package/dist/esm/query-builder/no-result-error.d.ts +1 -0
- package/dist/esm/query-builder/no-result-error.js +3 -0
- package/dist/esm/query-builder/on-conflict-builder.d.ts +158 -276
- package/dist/esm/query-builder/on-conflict-builder.js +54 -38
- package/dist/esm/query-builder/over-builder.d.ts +5 -0
- package/dist/esm/query-builder/over-builder.js +7 -0
- package/dist/esm/query-builder/returning-interface.d.ts +2 -2
- package/dist/esm/query-builder/select-query-builder.d.ts +148 -237
- package/dist/esm/query-builder/select-query-builder.js +337 -82
- package/dist/esm/query-builder/update-query-builder.d.ts +145 -213
- package/dist/esm/query-builder/update-query-builder.js +25 -119
- package/dist/esm/query-builder/update-result.js +3 -0
- package/dist/esm/query-builder/where-interface.d.ts +71 -184
- package/dist/esm/query-compiler/default-query-compiler.d.ts +3 -0
- package/dist/esm/query-compiler/default-query-compiler.js +17 -1
- package/dist/esm/query-creator.d.ts +9 -2
- package/dist/esm/query-creator.js +1 -24
- package/dist/esm/query-executor/query-executor.d.ts +3 -3
- package/dist/esm/raw-builder/raw-builder.d.ts +5 -3
- package/dist/esm/raw-builder/raw-builder.js +13 -7
- package/dist/esm/raw-builder/sql.d.ts +17 -9
- package/dist/esm/raw-builder/sql.js +8 -2
- package/dist/esm/schema/alter-column-builder.d.ts +5 -0
- package/dist/esm/schema/alter-column-builder.js +7 -0
- package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
- package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
- package/dist/esm/schema/alter-table-drop-constraint-builder.d.ts +5 -0
- package/dist/esm/schema/alter-table-drop-constraint-builder.js +7 -0
- package/dist/esm/schema/column-definition-builder.d.ts +6 -1
- package/dist/esm/schema/column-definition-builder.js +8 -1
- package/dist/esm/schema/create-index-builder.d.ts +51 -9
- package/dist/esm/schema/create-index-builder.js +17 -0
- package/dist/esm/schema/create-schema-builder.d.ts +5 -0
- package/dist/esm/schema/create-schema-builder.js +7 -0
- package/dist/esm/schema/create-table-builder.d.ts +3 -1
- package/dist/esm/schema/create-table-builder.js +3 -1
- package/dist/esm/schema/create-type-builder.d.ts +5 -0
- package/dist/esm/schema/create-type-builder.js +7 -0
- package/dist/esm/schema/create-view-builder.d.ts +5 -0
- package/dist/esm/schema/create-view-builder.js +7 -0
- package/dist/esm/schema/drop-index-builder.d.ts +5 -0
- package/dist/esm/schema/drop-index-builder.js +7 -0
- package/dist/esm/schema/drop-schema-builder.d.ts +5 -0
- package/dist/esm/schema/drop-schema-builder.js +7 -0
- package/dist/esm/schema/drop-table-builder.d.ts +5 -0
- package/dist/esm/schema/drop-table-builder.js +7 -0
- package/dist/esm/schema/drop-type-builder.d.ts +5 -0
- package/dist/esm/schema/drop-type-builder.js +7 -0
- package/dist/esm/schema/drop-view-builder.d.ts +5 -0
- package/dist/esm/schema/drop-view-builder.js +7 -0
- package/dist/esm/schema/foreign-key-constraint-builder.d.ts +5 -0
- package/dist/esm/schema/foreign-key-constraint-builder.js +7 -0
- package/dist/esm/util/compilable.d.ts +1 -0
- package/dist/esm/util/compilable.js +4 -1
- package/dist/esm/util/explainable.d.ts +35 -0
- package/dist/esm/util/log.d.ts +2 -0
- package/dist/esm/util/object-utils.js +1 -1
- package/dist/esm/util/streamable.d.ts +29 -0
- package/dist/esm/util/streamable.js +2 -0
- package/dist/esm/util/type-utils.d.ts +1 -0
- package/helpers/mysql.d.ts +1 -0
- package/helpers/mysql.js +1 -0
- package/helpers/postgres.d.ts +1 -0
- package/helpers/postgres.js +1 -0
- package/package.json +26 -9
- package/dist/cjs/query-builder/expression-builder.d.ts +0 -126
- package/dist/cjs/query-builder/expression-builder.js +0 -107
- package/dist/esm/query-builder/expression-builder.d.ts +0 -126
- package/dist/esm/query-builder/expression-builder.js +0 -104
|
@@ -1,336 +1,50 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.createFunctionModule = void 0;
|
|
4
|
+
const expression_wrapper_js_1 = require("../expression/expression-wrapper.js");
|
|
4
5
|
const aggregate_function_node_js_1 = require("../operation-node/aggregate-function-node.js");
|
|
5
|
-
const
|
|
6
|
+
const function_node_js_1 = require("../operation-node/function-node.js");
|
|
6
7
|
const reference_parser_js_1 = require("../parser/reference-parser.js");
|
|
7
8
|
const select_parser_js_1 = require("../parser/select-parser.js");
|
|
8
|
-
const raw_builder_js_1 = require("../raw-builder/raw-builder.js");
|
|
9
|
-
const query_id_js_1 = require("../util/query-id.js");
|
|
10
9
|
const aggregate_function_builder_js_1 = require("./aggregate-function-builder.js");
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
this.min = this.min.bind(this);
|
|
51
|
-
this.sum = this.sum.bind(this);
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Calls the `avg` function for the column given as the argument.
|
|
55
|
-
*
|
|
56
|
-
* This sql function calculates the average value for a given column.
|
|
57
|
-
*
|
|
58
|
-
* For additional functionality such as distinct, filtering and window functions,
|
|
59
|
-
* refer to {@link AggregateFunctionBuilder}. An instance of this builder is
|
|
60
|
-
* returned when calling this function.
|
|
61
|
-
*
|
|
62
|
-
* ### Examples
|
|
63
|
-
*
|
|
64
|
-
* ```ts
|
|
65
|
-
* const { avg } = db.fn
|
|
66
|
-
*
|
|
67
|
-
* db.selectFrom('toy')
|
|
68
|
-
* .select(avg('price').as('avg_price'))
|
|
69
|
-
* .execute()
|
|
70
|
-
* ```
|
|
71
|
-
*
|
|
72
|
-
* The generated SQL (PostgreSQL):
|
|
73
|
-
*
|
|
74
|
-
* ```sql
|
|
75
|
-
* select avg("price") as "avg_price" from "toy"
|
|
76
|
-
* ```
|
|
77
|
-
*
|
|
78
|
-
* You can limit column range to only columns participating in current query:
|
|
79
|
-
*
|
|
80
|
-
* ```ts
|
|
81
|
-
* db.selectFrom('toy')
|
|
82
|
-
* .select(qb => qb.fn.avg('price').as('avg_price'))
|
|
83
|
-
* .execute()
|
|
84
|
-
* ```
|
|
85
|
-
*
|
|
86
|
-
* If this function is used in a `select` statement, the type of the selected
|
|
87
|
-
* expression will be `number | string` by default. This is because Kysely can't know the
|
|
88
|
-
* type the db driver outputs. Sometimes the output can be larger than the largest
|
|
89
|
-
* javascript number and a string is returned instead. Most drivers allow you
|
|
90
|
-
* to configure the output type of large numbers and Kysely can't know if you've
|
|
91
|
-
* done so.
|
|
92
|
-
*
|
|
93
|
-
* You can specify the output type of the expression by providing the type as
|
|
94
|
-
* the first type argument:
|
|
95
|
-
*
|
|
96
|
-
* ```ts
|
|
97
|
-
* const { avg } = db.fn
|
|
98
|
-
*
|
|
99
|
-
* db.selectFrom('toy')
|
|
100
|
-
* .select(avg<number>('price').as('avg_price'))
|
|
101
|
-
* .execute()
|
|
102
|
-
* ```
|
|
103
|
-
*
|
|
104
|
-
* Sometimes a null is returned, e.g. when row count is 0, and no `group by`
|
|
105
|
-
* was used. It is highly recommended to include null in the output type union
|
|
106
|
-
* and handle null values in post-execute code, or wrap the function with a {@link coalesce}
|
|
107
|
-
* function.
|
|
108
|
-
*
|
|
109
|
-
* ```ts
|
|
110
|
-
* const { avg } = db.fn
|
|
111
|
-
*
|
|
112
|
-
* db.selectFrom('toy')
|
|
113
|
-
* .select(avg<number | null>('price').as('avg_price'))
|
|
114
|
-
* .execute()
|
|
115
|
-
* ```
|
|
116
|
-
*/
|
|
117
|
-
avg(column) {
|
|
118
|
-
return new aggregate_function_builder_js_1.AggregateFunctionBuilder({
|
|
119
|
-
aggregateFunctionNode: aggregate_function_node_js_1.AggregateFunctionNode.create('avg', (0, reference_parser_js_1.parseSimpleReferenceExpression)(column)),
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Calls the `coalesce` function for given arguments.
|
|
124
|
-
*
|
|
125
|
-
* This sql function returns the first non-null value from left to right, commonly
|
|
126
|
-
* used to provide a default scalar for nullable columns or functions.
|
|
127
|
-
*
|
|
128
|
-
* If this function is used in a `select` statement, the type of the selected
|
|
129
|
-
* expression is inferred in the same manner that the sql function computes.
|
|
130
|
-
* A union of arguments' types - if a non-nullable argument exists, it stops
|
|
131
|
-
* there (ignoring any further arguments' types) and exludes null from the final
|
|
132
|
-
* union type.
|
|
133
|
-
*
|
|
134
|
-
* `(string | null, number | null)` is inferred as `string | number | null`.
|
|
135
|
-
*
|
|
136
|
-
* `(string | null, number, Date | null)` is inferred as `string | number`.
|
|
137
|
-
*
|
|
138
|
-
* `(number, string | null)` is inferred as `number`.
|
|
139
|
-
*
|
|
140
|
-
* ### Examples
|
|
141
|
-
*
|
|
142
|
-
* ```ts
|
|
143
|
-
* const { coalesce } = db.fn
|
|
144
|
-
*
|
|
145
|
-
* db.selectFrom('participant')
|
|
146
|
-
* .select(coalesce('nickname', sql<string>`'<anonymous>'`).as('nickname'))
|
|
147
|
-
* .where('room_id', '=', roomId)
|
|
148
|
-
* .execute()
|
|
149
|
-
* ```
|
|
150
|
-
*
|
|
151
|
-
* The generated SQL (PostgreSQL):
|
|
152
|
-
*
|
|
153
|
-
* ```sql
|
|
154
|
-
* select coalesce("nickname", '<anonymous>') as "nickname"
|
|
155
|
-
* from "participant" where "room_id" = $1
|
|
156
|
-
* ```
|
|
157
|
-
*
|
|
158
|
-
* You can limit column range to only columns participating in current query:
|
|
159
|
-
*
|
|
160
|
-
* ```ts
|
|
161
|
-
* db.selectFrom('participant')
|
|
162
|
-
* .select(qb =>
|
|
163
|
-
* qb.fn.coalesce('nickname', sql<string>`'<anonymous>'`).as('nickname')
|
|
164
|
-
* )
|
|
165
|
-
* .where('room_id', '=', roomId)
|
|
166
|
-
* .execute()
|
|
167
|
-
* ```
|
|
168
|
-
*
|
|
169
|
-
* You can combine this function with other helpers in this module:
|
|
170
|
-
*
|
|
171
|
-
* ```ts
|
|
172
|
-
* const { avg, coalesce } = db.fn
|
|
173
|
-
*
|
|
174
|
-
* db.selectFrom('person')
|
|
175
|
-
* .select(coalesce(avg<number | null>('age'), sql<number>`0`).as('avg_age'))
|
|
176
|
-
* .where('first_name', '=', 'Jennifer')
|
|
177
|
-
* .execute()
|
|
178
|
-
* ```
|
|
179
|
-
*
|
|
180
|
-
* The generated SQL (PostgreSQL):
|
|
181
|
-
*
|
|
182
|
-
* ```sql
|
|
183
|
-
* select coalesce(avg("age"), 0) as "avg_age" from "person" where "first_name" = $1
|
|
184
|
-
* ```
|
|
185
|
-
*/
|
|
186
|
-
coalesce(value, ...otherValues) {
|
|
187
|
-
return new raw_builder_js_1.RawBuilder({
|
|
188
|
-
queryId: (0, query_id_js_1.createQueryId)(),
|
|
189
|
-
rawNode: (0, coalesce_parser_js_1.parseCoalesce)([value, ...otherValues]),
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
/**
|
|
193
|
-
* Calls the `count` function for the column given as the argument.
|
|
194
|
-
*
|
|
195
|
-
* When called with a column as argument, this sql function counts the number of rows where there
|
|
196
|
-
* is a non-null value in that column.
|
|
197
|
-
*
|
|
198
|
-
* For counting all rows nulls included (`count(*)`), see {@link countAll}.
|
|
199
|
-
*
|
|
200
|
-
* For additional functionality such as distinct, filtering and window functions,
|
|
201
|
-
* refer to {@link AggregateFunctionBuilder}. An instance of this builder is
|
|
202
|
-
* returned when calling this function.
|
|
203
|
-
*
|
|
204
|
-
* ### Examples
|
|
205
|
-
*
|
|
206
|
-
* ```ts
|
|
207
|
-
* const { count } = db.fn
|
|
208
|
-
*
|
|
209
|
-
* db.selectFrom('toy')
|
|
210
|
-
* .select(count('id').as('num_toys'))
|
|
211
|
-
* .execute()
|
|
212
|
-
* ```
|
|
213
|
-
*
|
|
214
|
-
* The generated SQL (PostgreSQL):
|
|
215
|
-
*
|
|
216
|
-
* ```sql
|
|
217
|
-
* select count("id") as "num_toys" from "toy"
|
|
218
|
-
* ```
|
|
219
|
-
*
|
|
220
|
-
* If this function is used in a `select` statement, the type of the selected
|
|
221
|
-
* expression will be `number | string | bigint` by default. This is because
|
|
222
|
-
* Kysely can't know the type the db driver outputs. Sometimes the output can
|
|
223
|
-
* be larger than the largest javascript number and a string is returned instead.
|
|
224
|
-
* Most drivers allow you to configure the output type of large numbers and Kysely
|
|
225
|
-
* can't know if you've done so.
|
|
226
|
-
*
|
|
227
|
-
* You can specify the output type of the expression by providing
|
|
228
|
-
* the type as the first type argument:
|
|
229
|
-
*
|
|
230
|
-
* ```ts
|
|
231
|
-
* const { count } = db.fn
|
|
232
|
-
*
|
|
233
|
-
* db.selectFrom('toy')
|
|
234
|
-
* .select(count<number>('id').as('num_toys'))
|
|
235
|
-
* .execute()
|
|
236
|
-
* ```
|
|
237
|
-
*
|
|
238
|
-
* You can limit column range to only columns participating in current query:
|
|
239
|
-
*
|
|
240
|
-
* ```ts
|
|
241
|
-
* db.selectFrom('toy')
|
|
242
|
-
* .select(qb => qb.fn.count('id').as('num_toys'))
|
|
243
|
-
* .execute()
|
|
244
|
-
* ```
|
|
245
|
-
*/
|
|
246
|
-
count(column) {
|
|
247
|
-
return new aggregate_function_builder_js_1.AggregateFunctionBuilder({
|
|
248
|
-
aggregateFunctionNode: aggregate_function_node_js_1.AggregateFunctionNode.create('count', (0, reference_parser_js_1.parseSimpleReferenceExpression)(column)),
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
countAll(table) {
|
|
252
|
-
return new aggregate_function_builder_js_1.AggregateFunctionBuilder({
|
|
253
|
-
aggregateFunctionNode: aggregate_function_node_js_1.AggregateFunctionNode.create('count', (0, select_parser_js_1.parseSelectAll)(table)[0].selection),
|
|
254
|
-
});
|
|
255
|
-
}
|
|
256
|
-
max(column) {
|
|
257
|
-
return new aggregate_function_builder_js_1.AggregateFunctionBuilder({
|
|
258
|
-
aggregateFunctionNode: aggregate_function_node_js_1.AggregateFunctionNode.create('max', (0, reference_parser_js_1.parseSimpleReferenceExpression)(column)),
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
min(column) {
|
|
262
|
-
return new aggregate_function_builder_js_1.AggregateFunctionBuilder({
|
|
263
|
-
aggregateFunctionNode: aggregate_function_node_js_1.AggregateFunctionNode.create('min', (0, reference_parser_js_1.parseSimpleReferenceExpression)(column)),
|
|
264
|
-
});
|
|
265
|
-
}
|
|
266
|
-
/**
|
|
267
|
-
* Calls the `sum` function for the column given as the argument.
|
|
268
|
-
*
|
|
269
|
-
* This sql function sums the values of a given column.
|
|
270
|
-
*
|
|
271
|
-
* For additional functionality such as distinct, filtering and window functions,
|
|
272
|
-
* refer to {@link AggregateFunctionBuilder}. An instance of this builder is
|
|
273
|
-
* returned when calling this function.
|
|
274
|
-
*
|
|
275
|
-
* ### Examples
|
|
276
|
-
*
|
|
277
|
-
* ```ts
|
|
278
|
-
* const { sum } = db.fn
|
|
279
|
-
*
|
|
280
|
-
* db.selectFrom('toy')
|
|
281
|
-
* .select(sum('price').as('total_price'))
|
|
282
|
-
* .execute()
|
|
283
|
-
* ```
|
|
284
|
-
*
|
|
285
|
-
* The generated SQL (PostgreSQL):
|
|
286
|
-
*
|
|
287
|
-
* ```sql
|
|
288
|
-
* select sum("price") as "total_price" from "toy"
|
|
289
|
-
* ```
|
|
290
|
-
*
|
|
291
|
-
* You can limit column range to only columns participating in current query:
|
|
292
|
-
*
|
|
293
|
-
* ```ts
|
|
294
|
-
* db.selectFrom('toy')
|
|
295
|
-
* .select(qb => qb.fn.sum('price').as('total_price'))
|
|
296
|
-
* .execute()
|
|
297
|
-
* ```
|
|
298
|
-
*
|
|
299
|
-
* If this function is used in a `select` statement, the type of the selected
|
|
300
|
-
* expression will be `number | string` by default. This is because Kysely can't know the
|
|
301
|
-
* type the db driver outputs. Sometimes the output can be larger than the largest
|
|
302
|
-
* javascript number and a string is returned instead. Most drivers allow you
|
|
303
|
-
* to configure the output type of large numbers and Kysely can't know if you've
|
|
304
|
-
* done so.
|
|
305
|
-
*
|
|
306
|
-
* You can specify the output type of the expression by providing the type as
|
|
307
|
-
* the first type argument:
|
|
308
|
-
*
|
|
309
|
-
* ```ts
|
|
310
|
-
* const { sum } = db.fn
|
|
311
|
-
*
|
|
312
|
-
* db.selectFrom('toy')
|
|
313
|
-
* .select(sum<number>('price').as('total_price'))
|
|
314
|
-
* .execute()
|
|
315
|
-
* ```
|
|
316
|
-
*
|
|
317
|
-
* Sometimes a null is returned, e.g. when row count is 0, and no `group by`
|
|
318
|
-
* was used. It is highly recommended to include null in the output type union
|
|
319
|
-
* and handle null values in post-execute code, or wrap the function with a {@link coalesce}
|
|
320
|
-
* function.
|
|
321
|
-
*
|
|
322
|
-
* ```ts
|
|
323
|
-
* const { sum } = db.fn
|
|
324
|
-
*
|
|
325
|
-
* db.selectFrom('toy')
|
|
326
|
-
* .select(sum<number | null>('price').as('total_price'))
|
|
327
|
-
* .execute()
|
|
328
|
-
* ```
|
|
329
|
-
*/
|
|
330
|
-
sum(column) {
|
|
331
|
-
return new aggregate_function_builder_js_1.AggregateFunctionBuilder({
|
|
332
|
-
aggregateFunctionNode: aggregate_function_node_js_1.AggregateFunctionNode.create('sum', (0, reference_parser_js_1.parseSimpleReferenceExpression)(column)),
|
|
333
|
-
});
|
|
334
|
-
}
|
|
10
|
+
function createFunctionModule() {
|
|
11
|
+
const fn = (name, args) => {
|
|
12
|
+
return new expression_wrapper_js_1.ExpressionWrapper(function_node_js_1.FunctionNode.create(name, (0, reference_parser_js_1.parseReferenceExpressionOrList)(args)));
|
|
13
|
+
};
|
|
14
|
+
return Object.assign(fn, {
|
|
15
|
+
avg(column) {
|
|
16
|
+
return new aggregate_function_builder_js_1.AggregateFunctionBuilder({
|
|
17
|
+
aggregateFunctionNode: aggregate_function_node_js_1.AggregateFunctionNode.create('avg', (0, reference_parser_js_1.parseSimpleReferenceExpression)(column)),
|
|
18
|
+
});
|
|
19
|
+
},
|
|
20
|
+
coalesce(value, ...otherValues) {
|
|
21
|
+
return fn('coalesce', [value, ...otherValues]);
|
|
22
|
+
},
|
|
23
|
+
count(column) {
|
|
24
|
+
return new aggregate_function_builder_js_1.AggregateFunctionBuilder({
|
|
25
|
+
aggregateFunctionNode: aggregate_function_node_js_1.AggregateFunctionNode.create('count', (0, reference_parser_js_1.parseSimpleReferenceExpression)(column)),
|
|
26
|
+
});
|
|
27
|
+
},
|
|
28
|
+
countAll(table) {
|
|
29
|
+
return new aggregate_function_builder_js_1.AggregateFunctionBuilder({
|
|
30
|
+
aggregateFunctionNode: aggregate_function_node_js_1.AggregateFunctionNode.create('count', (0, select_parser_js_1.parseSelectAll)(table)[0]),
|
|
31
|
+
});
|
|
32
|
+
},
|
|
33
|
+
max(column) {
|
|
34
|
+
return new aggregate_function_builder_js_1.AggregateFunctionBuilder({
|
|
35
|
+
aggregateFunctionNode: aggregate_function_node_js_1.AggregateFunctionNode.create('max', (0, reference_parser_js_1.parseSimpleReferenceExpression)(column)),
|
|
36
|
+
});
|
|
37
|
+
},
|
|
38
|
+
min(column) {
|
|
39
|
+
return new aggregate_function_builder_js_1.AggregateFunctionBuilder({
|
|
40
|
+
aggregateFunctionNode: aggregate_function_node_js_1.AggregateFunctionNode.create('min', (0, reference_parser_js_1.parseSimpleReferenceExpression)(column)),
|
|
41
|
+
});
|
|
42
|
+
},
|
|
43
|
+
sum(column) {
|
|
44
|
+
return new aggregate_function_builder_js_1.AggregateFunctionBuilder({
|
|
45
|
+
aggregateFunctionNode: aggregate_function_node_js_1.AggregateFunctionNode.create('sum', (0, reference_parser_js_1.parseSimpleReferenceExpression)(column)),
|
|
46
|
+
});
|
|
47
|
+
},
|
|
48
|
+
});
|
|
335
49
|
}
|
|
336
|
-
exports.
|
|
50
|
+
exports.createFunctionModule = createFunctionModule;
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import { Expression } from '../expression/expression.js';
|
|
2
|
-
import { ComparisonOperatorExpression,
|
|
2
|
+
import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
|
|
3
3
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
4
4
|
import { ExistsExpression } from '../parser/unary-operation-parser.js';
|
|
5
|
+
import { SqlBool } from '../util/type-utils.js';
|
|
6
|
+
import { HavingExpressionBuilder } from './deprecated-having-expression-builder.js';
|
|
5
7
|
export interface HavingInterface<DB, TB extends keyof DB> {
|
|
6
8
|
/**
|
|
7
9
|
* Just like {@link WhereInterface.where | where} but adds a `having` statement
|
|
8
10
|
* instead of a `where` statement.
|
|
9
11
|
*/
|
|
10
12
|
having<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): HavingInterface<DB, TB>;
|
|
11
|
-
having(
|
|
13
|
+
having(factory: HavingExpressionFactory<DB, TB>): HavingInterface<DB, TB>;
|
|
12
14
|
having(expression: Expression<any>): HavingInterface<DB, TB>;
|
|
13
15
|
/**
|
|
14
16
|
* Just like {@link WhereInterface.whereRef | whereRef} but adds a `having` statement
|
|
@@ -16,35 +18,36 @@ export interface HavingInterface<DB, TB extends keyof DB> {
|
|
|
16
18
|
*/
|
|
17
19
|
havingRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): HavingInterface<DB, TB>;
|
|
18
20
|
/**
|
|
19
|
-
*
|
|
20
|
-
* instead of a `where` statement.
|
|
21
|
+
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
21
22
|
*/
|
|
22
23
|
orHaving<RE extends ReferenceExpression<DB, TB>>(lhs: RE, op: ComparisonOperatorExpression, rhs: OperandValueExpressionOrList<DB, TB, RE>): HavingInterface<DB, TB>;
|
|
23
|
-
|
|
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
|
+
*/
|
|
24
31
|
orHaving(expression: Expression<any>): HavingInterface<DB, TB>;
|
|
25
32
|
/**
|
|
26
|
-
*
|
|
27
|
-
* instead of a `where` statement.
|
|
33
|
+
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
28
34
|
*/
|
|
29
35
|
orHavingRef(lhs: ReferenceExpression<DB, TB>, op: ComparisonOperatorExpression, rhs: ReferenceExpression<DB, TB>): HavingInterface<DB, TB>;
|
|
30
36
|
/**
|
|
31
|
-
*
|
|
32
|
-
* instead of a `where` statement.
|
|
37
|
+
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
33
38
|
*/
|
|
34
39
|
havingExists(arg: ExistsExpression<DB, TB>): HavingInterface<DB, TB>;
|
|
35
40
|
/**
|
|
36
|
-
*
|
|
37
|
-
* instead of a `where` statement.
|
|
41
|
+
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
38
42
|
*/
|
|
39
|
-
|
|
43
|
+
havingNotExists(arg: ExistsExpression<DB, TB>): HavingInterface<DB, TB>;
|
|
40
44
|
/**
|
|
41
|
-
*
|
|
42
|
-
* instead of a `where` statement.
|
|
45
|
+
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
43
46
|
*/
|
|
44
47
|
orHavingExists(arg: ExistsExpression<DB, TB>): HavingInterface<DB, TB>;
|
|
45
48
|
/**
|
|
46
|
-
*
|
|
47
|
-
* instead of a `where` statement.
|
|
49
|
+
* @deprecated Follow [these](https://github.com/koskimas/kysely/releases/tag/0.24.0) instructions to migrate
|
|
48
50
|
*/
|
|
49
51
|
orHavingNotExists(arg: ExistsExpression<DB, TB>): HavingInterface<DB, TB>;
|
|
50
52
|
}
|
|
53
|
+
export declare type HavingExpressionFactory<DB, TB extends keyof DB> = (eb: HavingExpressionBuilder<DB, TB>) => Expression<SqlBool> | HavingExpressionBuilder<DB, TB>;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
2
2
|
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
3
|
-
import { SelectExpression } from '../parser/select-parser.js';
|
|
4
|
-
import {
|
|
3
|
+
import { SelectExpression, SelectArg } from '../parser/select-parser.js';
|
|
4
|
+
import { InsertObjectOrList, InsertObjectOrListFactory } from '../parser/insert-values-parser.js';
|
|
5
5
|
import { InsertQueryNode } from '../operation-node/insert-query-node.js';
|
|
6
|
+
import { QueryNode } from '../operation-node/query-node.js';
|
|
6
7
|
import { MergePartial, SimplifyResult, SimplifySingleResult } from '../util/type-utils.js';
|
|
7
|
-
import {
|
|
8
|
+
import { UpdateExpression } from '../parser/update-set-parser.js';
|
|
8
9
|
import { Compilable } from '../util/compilable.js';
|
|
9
10
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
10
11
|
import { QueryId } from '../util/query-id.js';
|
|
@@ -19,7 +20,8 @@ import { Selectable } from '../util/column-type.js';
|
|
|
19
20
|
import { Explainable, ExplainFormat } from '../util/explainable.js';
|
|
20
21
|
import { Expression } from '../expression/expression.js';
|
|
21
22
|
import { KyselyTypeError } from '../util/type-error.js';
|
|
22
|
-
|
|
23
|
+
import { Streamable } from '../util/streamable.js';
|
|
24
|
+
export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable<O>, Explainable, Streamable<O> {
|
|
23
25
|
#private;
|
|
24
26
|
constructor(props: InsertQueryBuilderProps);
|
|
25
27
|
/**
|
|
@@ -116,11 +118,12 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
116
118
|
*
|
|
117
119
|
* const result = await db
|
|
118
120
|
* .insertInto('person')
|
|
119
|
-
* .values({
|
|
121
|
+
* .values((eb) => ({
|
|
120
122
|
* first_name: 'Jennifer',
|
|
121
123
|
* last_name: sql`${'Ani'} || ${'ston'}`,
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
+
* middle_name: eb.ref('first_name'),
|
|
125
|
+
* age: eb.selectFrom('person').select(sql`avg(age)`),
|
|
126
|
+
* }))
|
|
124
127
|
* .executeTakeFirst()
|
|
125
128
|
*
|
|
126
129
|
* console.log(result.insertId)
|
|
@@ -141,15 +144,15 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
141
144
|
* .where('first_name', '=', 'Jennifer')
|
|
142
145
|
* .select(['id', 'first_name', 'gender'])
|
|
143
146
|
* .limit(1)
|
|
144
|
-
* ).insertInto('pet').values({
|
|
145
|
-
* owner_id:
|
|
146
|
-
* name:
|
|
147
|
+
* ).insertInto('pet').values((eb) => ({
|
|
148
|
+
* owner_id: eb.selectFrom('jennifer').select('id'),
|
|
149
|
+
* name: eb.selectFrom('jennifer').select('first_name'),
|
|
147
150
|
* species: 'cat',
|
|
148
|
-
* })
|
|
151
|
+
* }))
|
|
149
152
|
* ```
|
|
150
153
|
*/
|
|
151
|
-
values(
|
|
152
|
-
values(
|
|
154
|
+
values(insert: InsertObjectOrList<DB, TB>): InsertQueryBuilder<DB, TB, O>;
|
|
155
|
+
values(insert: InsertObjectOrListFactory<DB, TB>): InsertQueryBuilder<DB, TB, O>;
|
|
153
156
|
/**
|
|
154
157
|
* Sets the columns to insert.
|
|
155
158
|
*
|
|
@@ -384,7 +387,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
384
387
|
* .onDuplicateKeyUpdate({ species: 'hamster' })
|
|
385
388
|
* ```
|
|
386
389
|
*/
|
|
387
|
-
onDuplicateKeyUpdate(
|
|
390
|
+
onDuplicateKeyUpdate(update: UpdateExpression<DB, TB, TB>): InsertQueryBuilder<DB, TB, O>;
|
|
388
391
|
/**
|
|
389
392
|
* Allows you to return data from modified rows.
|
|
390
393
|
*
|
|
@@ -436,23 +439,23 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
436
439
|
* first_name: 'Jennifer',
|
|
437
440
|
* last_name: 'Aniston'
|
|
438
441
|
* })
|
|
439
|
-
* .returning([
|
|
442
|
+
* .returning(eb => [
|
|
440
443
|
* 'id as id',
|
|
441
444
|
* sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
|
|
442
|
-
*
|
|
445
|
+
* eb.selectFrom('pets').select('pet.id').limit(1).as('first_pet_id')
|
|
443
446
|
* ])
|
|
444
447
|
* .executeTakeFirst()
|
|
445
448
|
* ```
|
|
446
449
|
*/
|
|
447
|
-
returning<SE extends SelectExpression<DB, TB>>(
|
|
448
|
-
returning<SE extends SelectExpression<DB, TB>>(selection: SE): InsertQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SE>>;
|
|
450
|
+
returning<SE extends SelectExpression<DB, TB>>(selection: SelectArg<DB, TB, SE>): InsertQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SE>>;
|
|
449
451
|
/**
|
|
450
452
|
* Adds a `returning *` to an insert/update/delete query on databases
|
|
451
453
|
* that support `returning` such as PostgreSQL.
|
|
452
454
|
*/
|
|
453
455
|
returningAll(): InsertQueryBuilder<DB, TB, Selectable<DB[TB]>>;
|
|
454
456
|
/**
|
|
455
|
-
* Simply calls the
|
|
457
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
458
|
+
* what the provided function returns.
|
|
456
459
|
*
|
|
457
460
|
* If you want to conditionally call a method on `this`, see
|
|
458
461
|
* the {@link $if} method.
|
|
@@ -561,7 +564,7 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
561
564
|
* )
|
|
562
565
|
* .with('new_pet', (qb) => qb
|
|
563
566
|
* .insertInto('pet')
|
|
564
|
-
* .values(
|
|
567
|
+
* .values((eb) => ({ owner_id: eb.selectFrom('new_person').select('id'), ...pet }))
|
|
565
568
|
* .returning(['name as pet_name', 'species'])
|
|
566
569
|
* .$assertType<{ pet_name: string, species: Species }>()
|
|
567
570
|
* )
|
|
@@ -597,24 +600,70 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
597
600
|
* the query returned no result.
|
|
598
601
|
*
|
|
599
602
|
* By default an instance of {@link NoResultError} is thrown, but you can
|
|
600
|
-
* provide a custom error class as the only argument to throw a different
|
|
603
|
+
* provide a custom error class, or callback as the only argument to throw a different
|
|
601
604
|
* error.
|
|
602
605
|
*/
|
|
603
|
-
executeTakeFirstOrThrow(errorConstructor?: NoResultErrorConstructor): Promise<SimplifyResult<O>>;
|
|
606
|
+
executeTakeFirstOrThrow(errorConstructor?: NoResultErrorConstructor | ((node: QueryNode) => Error)): Promise<SimplifyResult<O>>;
|
|
607
|
+
/**
|
|
608
|
+
* Executes the query and streams the rows.
|
|
609
|
+
*
|
|
610
|
+
* The optional argument `chunkSize` defines how many rows to fetch from the database
|
|
611
|
+
* at a time. It only affects some dialects like PostgreSQL that support it.
|
|
612
|
+
*
|
|
613
|
+
* ### Examples
|
|
614
|
+
*
|
|
615
|
+
* ```ts
|
|
616
|
+
* const stream = db.
|
|
617
|
+
* .selectFrom('person')
|
|
618
|
+
* .select(['first_name', 'last_name'])
|
|
619
|
+
* .where('gender', '=', 'other')
|
|
620
|
+
* .stream()
|
|
621
|
+
*
|
|
622
|
+
* for await (const person of stream) {
|
|
623
|
+
* console.log(person.first_name)
|
|
624
|
+
*
|
|
625
|
+
* if (person.last_name === 'Something') {
|
|
626
|
+
* // Breaking or returning before the stream has ended will release
|
|
627
|
+
* // the database connection and invalidate the stream.
|
|
628
|
+
* break
|
|
629
|
+
* }
|
|
630
|
+
* }
|
|
631
|
+
* ```
|
|
632
|
+
*/
|
|
633
|
+
stream(chunkSize?: number): AsyncIterableIterator<O>;
|
|
604
634
|
/**
|
|
605
|
-
* Executes query with `explain` statement before
|
|
635
|
+
* Executes query with `explain` statement before the main query.
|
|
606
636
|
*
|
|
607
637
|
* ```ts
|
|
608
638
|
* const explained = await db
|
|
609
|
-
* .
|
|
610
|
-
* .
|
|
639
|
+
* .selectFrom('person')
|
|
640
|
+
* .where('gender', '=', 'female')
|
|
641
|
+
* .selectAll()
|
|
611
642
|
* .explain('json')
|
|
612
643
|
* ```
|
|
613
644
|
*
|
|
614
645
|
* The generated SQL (MySQL):
|
|
615
646
|
*
|
|
616
647
|
* ```sql
|
|
617
|
-
* explain format=json
|
|
648
|
+
* explain format=json select * from `person` where `gender` = ?
|
|
649
|
+
* ```
|
|
650
|
+
*
|
|
651
|
+
* You can also execute `explain analyze` statements.
|
|
652
|
+
*
|
|
653
|
+
* ```ts
|
|
654
|
+
* import { sql } from 'kysely'
|
|
655
|
+
*
|
|
656
|
+
* const explained = await db
|
|
657
|
+
* .selectFrom('person')
|
|
658
|
+
* .where('gender', '=', 'female')
|
|
659
|
+
* .selectAll()
|
|
660
|
+
* .explain('json', sql`analyze`)
|
|
661
|
+
* ```
|
|
662
|
+
*
|
|
663
|
+
* The generated SQL (PostgreSQL):
|
|
664
|
+
*
|
|
665
|
+
* ```sql
|
|
666
|
+
* explain (analyze, format json) select * from "person" where "gender" = $1
|
|
618
667
|
* ```
|
|
619
668
|
*/
|
|
620
669
|
explain<ER extends Record<string, any> = Record<string, any>>(format?: ExplainFormat, options?: Expression<any>): Promise<ER[]>;
|