kysely 0.23.4 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +49 -25
- package/dist/cjs/dialect/database-introspector.d.ts +4 -2
- 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/mysql/mysql-introspector.d.ts +1 -1
- package/dist/cjs/dialect/mysql/mysql-introspector.js +19 -13
- package/dist/cjs/dialect/postgres/postgres-adapter.js +1 -1
- package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +1 -1
- package/dist/cjs/dialect/postgres/postgres-introspector.js +3 -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/dialect/sqlite/sqlite-introspector.d.ts +1 -1
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +6 -5
- package/dist/cjs/driver/runtime-driver.js +4 -2
- package/dist/cjs/expression/expression-builder.d.ts +386 -0
- package/dist/cjs/expression/expression-builder.js +92 -0
- package/dist/cjs/expression/expression-wrapper.d.ts +92 -0
- package/dist/cjs/expression/expression-wrapper.js +54 -0
- package/dist/cjs/expression/expression.d.ts +1 -1
- package/dist/cjs/helpers/postgres.d.ts +133 -0
- package/dist/cjs/helpers/postgres.js +141 -0
- package/dist/cjs/index.d.ts +4 -3
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/kysely.d.ts +10 -0
- package/dist/cjs/kysely.js +12 -1
- package/dist/cjs/migration/file-migration-provider.d.ts +5 -2
- package/dist/cjs/migration/migrator.d.ts +5 -2
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +3 -2
- package/dist/cjs/operation-node/aggregate-function-node.js +2 -2
- package/dist/cjs/operation-node/create-index-node.d.ts +2 -0
- package/dist/cjs/operation-node/delete-query-node.d.ts +1 -2
- package/dist/cjs/operation-node/delete-query-node.js +2 -8
- 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 +11 -2
- 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 +4 -4
- 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 +6 -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/camel-case/camel-case-plugin.d.ts +7 -0
- package/dist/cjs/plugin/camel-case/camel-case-plugin.js +10 -4
- 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 +224 -205
- 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 +304 -42
- package/dist/cjs/query-builder/function-module.js +44 -208
- package/dist/cjs/query-builder/having-interface.d.ts +19 -16
- package/dist/cjs/query-builder/insert-query-builder.d.ts +78 -30
- package/dist/cjs/query-builder/insert-query-builder.js +21 -30
- 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 +155 -243
- package/dist/cjs/query-builder/select-query-builder.js +333 -78
- package/dist/cjs/query-builder/update-query-builder.d.ts +149 -217
- 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 +18 -2
- package/dist/cjs/query-creator.d.ts +38 -2
- package/dist/cjs/query-creator.js +3 -45
- 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 +6 -4
- package/dist/esm/dialect/database-introspector.d.ts +4 -2
- 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/mysql/mysql-introspector.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-introspector.js +19 -13
- package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
- package/dist/esm/dialect/postgres/postgres-introspector.d.ts +1 -1
- package/dist/esm/dialect/postgres/postgres-introspector.js +3 -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/dialect/sqlite/sqlite-introspector.d.ts +1 -1
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +6 -5
- package/dist/esm/driver/runtime-driver.js +4 -2
- package/dist/esm/expression/expression-builder.d.ts +386 -0
- package/dist/esm/expression/expression-builder.js +88 -0
- package/dist/esm/expression/expression-wrapper.d.ts +92 -0
- package/dist/esm/expression/expression-wrapper.js +50 -0
- package/dist/esm/expression/expression.d.ts +1 -1
- package/dist/esm/helpers/postgres.d.ts +133 -0
- package/dist/esm/helpers/postgres.js +136 -0
- package/dist/esm/index.d.ts +4 -3
- package/dist/esm/index.js +2 -1
- package/dist/esm/kysely.d.ts +10 -0
- package/dist/esm/kysely.js +13 -2
- package/dist/esm/migration/file-migration-provider.d.ts +5 -2
- package/dist/esm/migration/migrator.d.ts +5 -2
- package/dist/esm/operation-node/aggregate-function-node.d.ts +3 -2
- package/dist/esm/operation-node/aggregate-function-node.js +2 -2
- package/dist/esm/operation-node/create-index-node.d.ts +2 -0
- package/dist/esm/operation-node/delete-query-node.d.ts +1 -2
- package/dist/esm/operation-node/delete-query-node.js +2 -8
- 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 +11 -2
- 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 +5 -5
- 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 +6 -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/camel-case/camel-case-plugin.d.ts +7 -0
- package/dist/esm/plugin/camel-case/camel-case-plugin.js +10 -4
- 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 +224 -205
- 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 +304 -42
- package/dist/esm/query-builder/function-module.js +43 -207
- package/dist/esm/query-builder/having-interface.d.ts +19 -16
- package/dist/esm/query-builder/insert-query-builder.d.ts +78 -30
- package/dist/esm/query-builder/insert-query-builder.js +25 -34
- 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 +155 -243
- package/dist/esm/query-builder/select-query-builder.js +337 -82
- package/dist/esm/query-builder/update-query-builder.d.ts +149 -217
- 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 +18 -2
- package/dist/esm/query-creator.d.ts +38 -2
- package/dist/esm/query-creator.js +3 -45
- 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 +6 -4
- package/helpers/postgres.d.ts +1 -0
- package/helpers/postgres.js +1 -0
- package/package.json +20 -9
- package/dist/cjs/query-builder/expression-builder.d.ts +0 -126
- package/dist/cjs/query-builder/expression-builder.js +0 -107
- package/dist/esm/query-builder/expression-builder.d.ts +0 -126
- package/dist/esm/query-builder/expression-builder.js +0 -104
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ExpressionBuilder = void 0;
|
|
4
|
-
const select_query_builder_js_1 = require("./select-query-builder.js");
|
|
5
|
-
const select_query_node_js_1 = require("../operation-node/select-query-node.js");
|
|
6
|
-
const table_parser_js_1 = require("../parser/table-parser.js");
|
|
7
|
-
const with_schema_plugin_js_1 = require("../plugin/with-schema/with-schema-plugin.js");
|
|
8
|
-
const query_id_js_1 = require("../util/query-id.js");
|
|
9
|
-
const function_module_js_1 = require("./function-module.js");
|
|
10
|
-
const reference_parser_js_1 = require("../parser/reference-parser.js");
|
|
11
|
-
const raw_builder_js_1 = require("../raw-builder/raw-builder.js");
|
|
12
|
-
const object_utils_js_1 = require("../util/object-utils.js");
|
|
13
|
-
const raw_node_js_1 = require("../operation-node/raw-node.js");
|
|
14
|
-
class ExpressionBuilder {
|
|
15
|
-
#props;
|
|
16
|
-
constructor(props) {
|
|
17
|
-
this.#props = (0, object_utils_js_1.freeze)(props);
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Returns a {@link FunctionModule} that can be used to write type safe function
|
|
21
|
-
* calls.
|
|
22
|
-
*
|
|
23
|
-
* The difference between this and {@link Kysely.fn} is that this one is more
|
|
24
|
-
* type safe. You can only refer to columns visible to the part of the query
|
|
25
|
-
* you are building. {@link Kysely.fn} allows you to refer to columns in any
|
|
26
|
-
* table of the database even if it doesn't produce valid SQL.
|
|
27
|
-
*
|
|
28
|
-
* ```ts
|
|
29
|
-
* await db.selectFrom('person')
|
|
30
|
-
* .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|
31
|
-
* .select([
|
|
32
|
-
* 'person.id',
|
|
33
|
-
* (qb) => qb.fn.count('pet.id').as('pet_count')
|
|
34
|
-
* ])
|
|
35
|
-
* .groupBy('person.id')
|
|
36
|
-
* .having(count('pet.id'), '>', 10)
|
|
37
|
-
* .execute()
|
|
38
|
-
* ```
|
|
39
|
-
*
|
|
40
|
-
* The generated SQL (PostgreSQL):
|
|
41
|
-
*
|
|
42
|
-
* ```sql
|
|
43
|
-
* select "person"."id", count("pet"."id") as "pet_count"
|
|
44
|
-
* from "person"
|
|
45
|
-
* inner join "pet" on "pet"."owner_id" = "person"."id"
|
|
46
|
-
* group by "person"."id"
|
|
47
|
-
* having count("pet"."id") > $1
|
|
48
|
-
* ```
|
|
49
|
-
*/
|
|
50
|
-
get fn() {
|
|
51
|
-
return new function_module_js_1.FunctionModule();
|
|
52
|
-
}
|
|
53
|
-
selectFrom(table) {
|
|
54
|
-
return new select_query_builder_js_1.SelectQueryBuilder({
|
|
55
|
-
queryId: (0, query_id_js_1.createQueryId)(),
|
|
56
|
-
executor: this.#props.executor,
|
|
57
|
-
queryNode: select_query_node_js_1.SelectQueryNode.create((0, table_parser_js_1.parseTableExpressionOrList)(table)),
|
|
58
|
-
});
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* See {@link QueryCreator.withSchema}
|
|
62
|
-
*/
|
|
63
|
-
withSchema(schema) {
|
|
64
|
-
return new ExpressionBuilder({
|
|
65
|
-
...this.#props,
|
|
66
|
-
executor: this.#props.executor.withPluginAtFront(new with_schema_plugin_js_1.WithSchemaPlugin(schema)),
|
|
67
|
-
});
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* This can be used to reference columns.
|
|
71
|
-
*
|
|
72
|
-
* ### Examples
|
|
73
|
-
*
|
|
74
|
-
* In the next example we use the `ref` method to reference
|
|
75
|
-
* columns of the virtual table `excluded` in a type-safe way
|
|
76
|
-
* to create an upsert operation:
|
|
77
|
-
*
|
|
78
|
-
* ```ts
|
|
79
|
-
* db.insertInto('person')
|
|
80
|
-
* .values(person)
|
|
81
|
-
* .onConflict(oc => oc
|
|
82
|
-
* .column('id')
|
|
83
|
-
* .doUpdateSet({
|
|
84
|
-
* first_name: (eb) => eb.ref('excluded.first_name'),
|
|
85
|
-
* last_name: (eb) => eb.ref('excluded.last_name')
|
|
86
|
-
* })
|
|
87
|
-
* )
|
|
88
|
-
* ```
|
|
89
|
-
*
|
|
90
|
-
* In the next example we use `ref` in a raw sql expression. Unless you
|
|
91
|
-
* want to be as type-safe as possible, this is probably overkill:
|
|
92
|
-
*
|
|
93
|
-
* ```ts
|
|
94
|
-
* db.update('pet').set({
|
|
95
|
-
* name: (eb) => sql`concat(${eb.ref('pet.name')}, ${suffix})`
|
|
96
|
-
* })
|
|
97
|
-
* ```
|
|
98
|
-
*/
|
|
99
|
-
ref(reference) {
|
|
100
|
-
return new raw_builder_js_1.RawBuilder({
|
|
101
|
-
queryId: (0, query_id_js_1.createQueryId)(),
|
|
102
|
-
plugins: this.#props.executor.plugins,
|
|
103
|
-
rawNode: raw_node_js_1.RawNode.createWithChild((0, reference_parser_js_1.parseStringReference)(reference)),
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
exports.ExpressionBuilder = ExpressionBuilder;
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { SelectQueryBuilder } from './select-query-builder.js';
|
|
2
|
-
import { TableExpression, From, FromTables } from '../parser/table-parser.js';
|
|
3
|
-
import { FunctionModule } from './function-module.js';
|
|
4
|
-
import { ExtractTypeFromReferenceExpression, StringReference } from '../parser/reference-parser.js';
|
|
5
|
-
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
6
|
-
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
7
|
-
export declare class ExpressionBuilder<DB, TB extends keyof DB> {
|
|
8
|
-
#private;
|
|
9
|
-
constructor(props: ExpressionBuilderProps);
|
|
10
|
-
/**
|
|
11
|
-
* Returns a {@link FunctionModule} that can be used to write type safe function
|
|
12
|
-
* calls.
|
|
13
|
-
*
|
|
14
|
-
* The difference between this and {@link Kysely.fn} is that this one is more
|
|
15
|
-
* type safe. You can only refer to columns visible to the part of the query
|
|
16
|
-
* you are building. {@link Kysely.fn} allows you to refer to columns in any
|
|
17
|
-
* table of the database even if it doesn't produce valid SQL.
|
|
18
|
-
*
|
|
19
|
-
* ```ts
|
|
20
|
-
* await db.selectFrom('person')
|
|
21
|
-
* .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|
22
|
-
* .select([
|
|
23
|
-
* 'person.id',
|
|
24
|
-
* (qb) => qb.fn.count('pet.id').as('pet_count')
|
|
25
|
-
* ])
|
|
26
|
-
* .groupBy('person.id')
|
|
27
|
-
* .having(count('pet.id'), '>', 10)
|
|
28
|
-
* .execute()
|
|
29
|
-
* ```
|
|
30
|
-
*
|
|
31
|
-
* The generated SQL (PostgreSQL):
|
|
32
|
-
*
|
|
33
|
-
* ```sql
|
|
34
|
-
* select "person"."id", count("pet"."id") as "pet_count"
|
|
35
|
-
* from "person"
|
|
36
|
-
* inner join "pet" on "pet"."owner_id" = "person"."id"
|
|
37
|
-
* group by "person"."id"
|
|
38
|
-
* having count("pet"."id") > $1
|
|
39
|
-
* ```
|
|
40
|
-
*/
|
|
41
|
-
get fn(): FunctionModule<DB, TB>;
|
|
42
|
-
/**
|
|
43
|
-
* Creates a subquery.
|
|
44
|
-
*
|
|
45
|
-
* The query builder returned by this method is typed in a way that you can refer to
|
|
46
|
-
* all tables of the parent query in addition to the subquery's tables.
|
|
47
|
-
*
|
|
48
|
-
* This method accepts all the same inputs as {@link QueryCreator.selectFrom}.
|
|
49
|
-
*
|
|
50
|
-
* ### Examples
|
|
51
|
-
*
|
|
52
|
-
* This example shows that you can refer to both `pet.owner_id` and `person.id`
|
|
53
|
-
* columns from the subquery. This is needed to be able to create correlated
|
|
54
|
-
* subqueries:
|
|
55
|
-
*
|
|
56
|
-
* ```ts
|
|
57
|
-
* const result = await db.selectFrom('pet')
|
|
58
|
-
* .select([
|
|
59
|
-
* 'pet.name',
|
|
60
|
-
* (qb) => qb.selectFrom('person')
|
|
61
|
-
* .whereRef('person.id', '=', 'pet.owner_id')
|
|
62
|
-
* .select('person.first_name')
|
|
63
|
-
* .as('owner_name')
|
|
64
|
-
* ])
|
|
65
|
-
* .execute()
|
|
66
|
-
*
|
|
67
|
-
* console.log(result[0].owner_name)
|
|
68
|
-
* ```
|
|
69
|
-
*
|
|
70
|
-
* The generated SQL (PostgreSQL):
|
|
71
|
-
*
|
|
72
|
-
* ```sql
|
|
73
|
-
* select
|
|
74
|
-
* "pet"."name",
|
|
75
|
-
* ( select "person"."first_name"
|
|
76
|
-
* from "person"
|
|
77
|
-
* where "person"."id" = "pet"."owner_id"
|
|
78
|
-
* ) as "owner_name"
|
|
79
|
-
* from "pet"
|
|
80
|
-
* ```
|
|
81
|
-
*
|
|
82
|
-
* You can use a normal query in place of `(qb) => qb.selectFrom(...)` but in
|
|
83
|
-
* that case Kysely typings wouldn't allow you to reference `pet.owner_id`
|
|
84
|
-
* because `pet` is not joined to that query.
|
|
85
|
-
*/
|
|
86
|
-
selectFrom<TE extends TableExpression<DB, TB>>(from: TE[]): SelectQueryBuilder<From<DB, TE>, FromTables<DB, TB, TE>, {}>;
|
|
87
|
-
selectFrom<TE extends TableExpression<DB, TB>>(from: TE): SelectQueryBuilder<From<DB, TE>, FromTables<DB, TB, TE>, {}>;
|
|
88
|
-
/**
|
|
89
|
-
* See {@link QueryCreator.withSchema}
|
|
90
|
-
*/
|
|
91
|
-
withSchema(schema: string): ExpressionBuilder<DB, TB>;
|
|
92
|
-
/**
|
|
93
|
-
* This can be used to reference columns.
|
|
94
|
-
*
|
|
95
|
-
* ### Examples
|
|
96
|
-
*
|
|
97
|
-
* In the next example we use the `ref` method to reference
|
|
98
|
-
* columns of the virtual table `excluded` in a type-safe way
|
|
99
|
-
* to create an upsert operation:
|
|
100
|
-
*
|
|
101
|
-
* ```ts
|
|
102
|
-
* db.insertInto('person')
|
|
103
|
-
* .values(person)
|
|
104
|
-
* .onConflict(oc => oc
|
|
105
|
-
* .column('id')
|
|
106
|
-
* .doUpdateSet({
|
|
107
|
-
* first_name: (eb) => eb.ref('excluded.first_name'),
|
|
108
|
-
* last_name: (eb) => eb.ref('excluded.last_name')
|
|
109
|
-
* })
|
|
110
|
-
* )
|
|
111
|
-
* ```
|
|
112
|
-
*
|
|
113
|
-
* In the next example we use `ref` in a raw sql expression. Unless you
|
|
114
|
-
* want to be as type-safe as possible, this is probably overkill:
|
|
115
|
-
*
|
|
116
|
-
* ```ts
|
|
117
|
-
* db.update('pet').set({
|
|
118
|
-
* name: (eb) => sql`concat(${eb.ref('pet.name')}, ${suffix})`
|
|
119
|
-
* })
|
|
120
|
-
* ```
|
|
121
|
-
*/
|
|
122
|
-
ref<RE extends StringReference<DB, TB>>(reference: RE): RawBuilder<ExtractTypeFromReferenceExpression<DB, TB, RE>>;
|
|
123
|
-
}
|
|
124
|
-
export interface ExpressionBuilderProps {
|
|
125
|
-
readonly executor: QueryExecutor;
|
|
126
|
-
}
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
/// <reference types="./expression-builder.d.ts" />
|
|
2
|
-
import { SelectQueryBuilder } from './select-query-builder.js';
|
|
3
|
-
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
4
|
-
import { parseTableExpressionOrList, } from '../parser/table-parser.js';
|
|
5
|
-
import { WithSchemaPlugin } from '../plugin/with-schema/with-schema-plugin.js';
|
|
6
|
-
import { createQueryId } from '../util/query-id.js';
|
|
7
|
-
import { FunctionModule } from './function-module.js';
|
|
8
|
-
import { parseStringReference, } from '../parser/reference-parser.js';
|
|
9
|
-
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
10
|
-
import { freeze } from '../util/object-utils.js';
|
|
11
|
-
import { RawNode } from '../operation-node/raw-node.js';
|
|
12
|
-
export class ExpressionBuilder {
|
|
13
|
-
#props;
|
|
14
|
-
constructor(props) {
|
|
15
|
-
this.#props = freeze(props);
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Returns a {@link FunctionModule} that can be used to write type safe function
|
|
19
|
-
* calls.
|
|
20
|
-
*
|
|
21
|
-
* The difference between this and {@link Kysely.fn} is that this one is more
|
|
22
|
-
* type safe. You can only refer to columns visible to the part of the query
|
|
23
|
-
* you are building. {@link Kysely.fn} allows you to refer to columns in any
|
|
24
|
-
* table of the database even if it doesn't produce valid SQL.
|
|
25
|
-
*
|
|
26
|
-
* ```ts
|
|
27
|
-
* await db.selectFrom('person')
|
|
28
|
-
* .innerJoin('pet', 'pet.owner_id', 'person.id')
|
|
29
|
-
* .select([
|
|
30
|
-
* 'person.id',
|
|
31
|
-
* (qb) => qb.fn.count('pet.id').as('pet_count')
|
|
32
|
-
* ])
|
|
33
|
-
* .groupBy('person.id')
|
|
34
|
-
* .having(count('pet.id'), '>', 10)
|
|
35
|
-
* .execute()
|
|
36
|
-
* ```
|
|
37
|
-
*
|
|
38
|
-
* The generated SQL (PostgreSQL):
|
|
39
|
-
*
|
|
40
|
-
* ```sql
|
|
41
|
-
* select "person"."id", count("pet"."id") as "pet_count"
|
|
42
|
-
* from "person"
|
|
43
|
-
* inner join "pet" on "pet"."owner_id" = "person"."id"
|
|
44
|
-
* group by "person"."id"
|
|
45
|
-
* having count("pet"."id") > $1
|
|
46
|
-
* ```
|
|
47
|
-
*/
|
|
48
|
-
get fn() {
|
|
49
|
-
return new FunctionModule();
|
|
50
|
-
}
|
|
51
|
-
selectFrom(table) {
|
|
52
|
-
return new SelectQueryBuilder({
|
|
53
|
-
queryId: createQueryId(),
|
|
54
|
-
executor: this.#props.executor,
|
|
55
|
-
queryNode: SelectQueryNode.create(parseTableExpressionOrList(table)),
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* See {@link QueryCreator.withSchema}
|
|
60
|
-
*/
|
|
61
|
-
withSchema(schema) {
|
|
62
|
-
return new ExpressionBuilder({
|
|
63
|
-
...this.#props,
|
|
64
|
-
executor: this.#props.executor.withPluginAtFront(new WithSchemaPlugin(schema)),
|
|
65
|
-
});
|
|
66
|
-
}
|
|
67
|
-
/**
|
|
68
|
-
* This can be used to reference columns.
|
|
69
|
-
*
|
|
70
|
-
* ### Examples
|
|
71
|
-
*
|
|
72
|
-
* In the next example we use the `ref` method to reference
|
|
73
|
-
* columns of the virtual table `excluded` in a type-safe way
|
|
74
|
-
* to create an upsert operation:
|
|
75
|
-
*
|
|
76
|
-
* ```ts
|
|
77
|
-
* db.insertInto('person')
|
|
78
|
-
* .values(person)
|
|
79
|
-
* .onConflict(oc => oc
|
|
80
|
-
* .column('id')
|
|
81
|
-
* .doUpdateSet({
|
|
82
|
-
* first_name: (eb) => eb.ref('excluded.first_name'),
|
|
83
|
-
* last_name: (eb) => eb.ref('excluded.last_name')
|
|
84
|
-
* })
|
|
85
|
-
* )
|
|
86
|
-
* ```
|
|
87
|
-
*
|
|
88
|
-
* In the next example we use `ref` in a raw sql expression. Unless you
|
|
89
|
-
* want to be as type-safe as possible, this is probably overkill:
|
|
90
|
-
*
|
|
91
|
-
* ```ts
|
|
92
|
-
* db.update('pet').set({
|
|
93
|
-
* name: (eb) => sql`concat(${eb.ref('pet.name')}, ${suffix})`
|
|
94
|
-
* })
|
|
95
|
-
* ```
|
|
96
|
-
*/
|
|
97
|
-
ref(reference) {
|
|
98
|
-
return new RawBuilder({
|
|
99
|
-
queryId: createQueryId(),
|
|
100
|
-
plugins: this.#props.executor.plugins,
|
|
101
|
-
rawNode: RawNode.createWithChild(parseStringReference(reference)),
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
}
|