kysely 0.23.5 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +46 -24
- package/dist/cjs/dialect/mysql/mysql-adapter.js +2 -2
- package/dist/cjs/dialect/mysql/mysql-driver.d.ts +1 -1
- package/dist/cjs/dialect/mysql/mysql-driver.js +1 -1
- package/dist/cjs/dialect/postgres/postgres-adapter.js +1 -1
- package/dist/cjs/dialect/sqlite/sqlite-dialect.d.ts +1 -0
- package/dist/cjs/dialect/sqlite/sqlite-dialect.js +1 -0
- package/dist/cjs/driver/runtime-driver.js +4 -2
- package/dist/cjs/expression/expression-builder.d.ts +386 -0
- package/dist/cjs/expression/expression-builder.js +92 -0
- package/dist/cjs/expression/expression-wrapper.d.ts +92 -0
- package/dist/cjs/expression/expression-wrapper.js +54 -0
- package/dist/cjs/expression/expression.d.ts +1 -1
- package/dist/cjs/helpers/postgres.d.ts +133 -0
- package/dist/cjs/helpers/postgres.js +141 -0
- package/dist/cjs/index.d.ts +4 -3
- package/dist/cjs/index.js +4 -2
- package/dist/cjs/kysely.d.ts +10 -0
- package/dist/cjs/kysely.js +12 -1
- package/dist/cjs/migration/file-migration-provider.d.ts +5 -2
- package/dist/cjs/migration/migrator.d.ts +5 -2
- package/dist/cjs/operation-node/aggregate-function-node.d.ts +3 -3
- package/dist/cjs/operation-node/create-index-node.d.ts +2 -0
- package/dist/cjs/operation-node/delete-query-node.d.ts +0 -1
- package/dist/cjs/operation-node/delete-query-node.js +0 -6
- package/dist/cjs/operation-node/function-node.d.ts +13 -0
- package/dist/cjs/operation-node/function-node.js +19 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +9 -0
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/operator-node.d.ts +13 -2
- package/dist/cjs/operation-node/operator-node.js +38 -3
- package/dist/cjs/operation-node/query-node.d.ts +25 -8
- package/dist/cjs/operation-node/query-node.js +9 -2
- package/dist/cjs/operation-node/select-query-node.d.ts +0 -1
- package/dist/cjs/operation-node/select-query-node.js +0 -6
- package/dist/cjs/operation-node/update-query-node.d.ts +0 -1
- package/dist/cjs/operation-node/update-query-node.js +0 -6
- package/dist/cjs/parser/binary-operation-parser.d.ts +9 -10
- package/dist/cjs/parser/binary-operation-parser.js +89 -39
- package/dist/cjs/parser/coalesce-parser.d.ts +0 -2
- package/dist/cjs/parser/coalesce-parser.js +0 -9
- package/dist/cjs/parser/expression-parser.d.ts +7 -3
- package/dist/cjs/parser/expression-parser.js +3 -3
- package/dist/cjs/parser/group-by-parser.d.ts +3 -2
- package/dist/cjs/parser/group-by-parser.js +3 -0
- package/dist/cjs/parser/insert-values-parser.d.ts +4 -1
- package/dist/cjs/parser/insert-values-parser.js +19 -13
- package/dist/cjs/parser/join-parser.js +1 -1
- package/dist/cjs/parser/parse-utils.d.ts +0 -2
- package/dist/cjs/parser/parse-utils.js +1 -8
- package/dist/cjs/parser/returning-parser.d.ts +2 -1
- package/dist/cjs/parser/select-parser.d.ts +5 -13
- package/dist/cjs/parser/select-parser.js +8 -4
- package/dist/cjs/parser/table-parser.d.ts +5 -3
- package/dist/cjs/parser/unary-operation-parser.d.ts +5 -2
- package/dist/cjs/parser/unary-operation-parser.js +9 -8
- package/dist/cjs/parser/update-set-parser.d.ts +4 -1
- package/dist/cjs/parser/update-set-parser.js +9 -4
- package/dist/cjs/parser/value-parser.d.ts +5 -0
- package/dist/cjs/parser/value-parser.js +1 -3
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
- package/dist/cjs/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +40 -113
- package/dist/cjs/query-builder/aggregate-function-builder.js +23 -63
- package/dist/cjs/query-builder/delete-query-builder.d.ts +220 -201
- package/dist/cjs/query-builder/delete-query-builder.js +21 -27
- package/dist/cjs/query-builder/delete-result.js +3 -0
- package/dist/cjs/query-builder/deprecated-having-expression-builder.d.ts +62 -0
- package/dist/cjs/query-builder/deprecated-having-expression-builder.js +2 -0
- package/dist/cjs/query-builder/deprecated-on-expression-builder.d.ts +62 -0
- package/dist/cjs/query-builder/deprecated-on-expression-builder.js +2 -0
- package/dist/cjs/query-builder/deprecated-where-expression-builder.d.ts +62 -0
- package/dist/cjs/query-builder/deprecated-where-expression-builder.js +2 -0
- package/dist/cjs/query-builder/function-module.d.ts +40 -12
- package/dist/cjs/query-builder/function-module.js +43 -329
- package/dist/cjs/query-builder/having-interface.d.ts +19 -16
- package/dist/cjs/query-builder/insert-query-builder.d.ts +75 -26
- package/dist/cjs/query-builder/insert-query-builder.js +21 -29
- package/dist/cjs/query-builder/insert-result.js +3 -0
- package/dist/cjs/query-builder/join-builder.d.ts +23 -26
- package/dist/cjs/query-builder/join-builder.js +17 -22
- package/dist/cjs/query-builder/no-result-error.d.ts +1 -0
- package/dist/cjs/query-builder/no-result-error.js +5 -1
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +158 -276
- package/dist/cjs/query-builder/on-conflict-builder.js +52 -36
- package/dist/cjs/query-builder/over-builder.d.ts +5 -0
- package/dist/cjs/query-builder/over-builder.js +7 -0
- package/dist/cjs/query-builder/returning-interface.d.ts +2 -2
- package/dist/cjs/query-builder/select-query-builder.d.ts +148 -237
- package/dist/cjs/query-builder/select-query-builder.js +333 -78
- package/dist/cjs/query-builder/update-query-builder.d.ts +145 -213
- package/dist/cjs/query-builder/update-query-builder.js +21 -115
- package/dist/cjs/query-builder/update-result.js +3 -0
- package/dist/cjs/query-builder/where-interface.d.ts +71 -184
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +3 -0
- package/dist/cjs/query-compiler/default-query-compiler.js +17 -1
- package/dist/cjs/query-creator.d.ts +9 -2
- package/dist/cjs/query-creator.js +1 -24
- package/dist/cjs/query-executor/query-executor.d.ts +3 -3
- package/dist/cjs/raw-builder/raw-builder.d.ts +5 -3
- package/dist/cjs/raw-builder/raw-builder.js +13 -7
- package/dist/cjs/raw-builder/sql.d.ts +17 -9
- package/dist/cjs/raw-builder/sql.js +8 -2
- package/dist/cjs/schema/alter-column-builder.d.ts +5 -0
- package/dist/cjs/schema/alter-column-builder.js +7 -0
- package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
- package/dist/cjs/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
- package/dist/cjs/schema/alter-table-drop-constraint-builder.d.ts +5 -0
- package/dist/cjs/schema/alter-table-drop-constraint-builder.js +7 -0
- package/dist/cjs/schema/column-definition-builder.d.ts +6 -1
- package/dist/cjs/schema/column-definition-builder.js +8 -1
- package/dist/cjs/schema/create-index-builder.d.ts +51 -9
- package/dist/cjs/schema/create-index-builder.js +17 -0
- package/dist/cjs/schema/create-schema-builder.d.ts +5 -0
- package/dist/cjs/schema/create-schema-builder.js +7 -0
- package/dist/cjs/schema/create-table-builder.d.ts +3 -1
- package/dist/cjs/schema/create-table-builder.js +3 -1
- package/dist/cjs/schema/create-type-builder.d.ts +5 -0
- package/dist/cjs/schema/create-type-builder.js +7 -0
- package/dist/cjs/schema/create-view-builder.d.ts +5 -0
- package/dist/cjs/schema/create-view-builder.js +7 -0
- package/dist/cjs/schema/drop-index-builder.d.ts +5 -0
- package/dist/cjs/schema/drop-index-builder.js +7 -0
- package/dist/cjs/schema/drop-schema-builder.d.ts +5 -0
- package/dist/cjs/schema/drop-schema-builder.js +7 -0
- package/dist/cjs/schema/drop-table-builder.d.ts +5 -0
- package/dist/cjs/schema/drop-table-builder.js +7 -0
- package/dist/cjs/schema/drop-type-builder.d.ts +5 -0
- package/dist/cjs/schema/drop-type-builder.js +7 -0
- package/dist/cjs/schema/drop-view-builder.d.ts +5 -0
- package/dist/cjs/schema/drop-view-builder.js +7 -0
- package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +5 -0
- package/dist/cjs/schema/foreign-key-constraint-builder.js +7 -0
- package/dist/cjs/util/compilable.d.ts +1 -0
- package/dist/cjs/util/compilable.js +6 -0
- package/dist/cjs/util/explainable.d.ts +35 -0
- package/dist/cjs/util/log.d.ts +2 -0
- package/dist/cjs/util/object-utils.js +1 -1
- package/dist/cjs/util/streamable.d.ts +29 -0
- package/dist/cjs/util/streamable.js +2 -0
- package/dist/cjs/util/type-utils.d.ts +1 -0
- package/dist/esm/dialect/mysql/mysql-adapter.js +2 -2
- package/dist/esm/dialect/mysql/mysql-driver.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-driver.js +1 -1
- package/dist/esm/dialect/postgres/postgres-adapter.js +1 -1
- package/dist/esm/dialect/sqlite/sqlite-dialect.d.ts +1 -0
- package/dist/esm/dialect/sqlite/sqlite-dialect.js +1 -0
- package/dist/esm/driver/runtime-driver.js +4 -2
- package/dist/esm/expression/expression-builder.d.ts +386 -0
- package/dist/esm/expression/expression-builder.js +88 -0
- package/dist/esm/expression/expression-wrapper.d.ts +92 -0
- package/dist/esm/expression/expression-wrapper.js +50 -0
- package/dist/esm/expression/expression.d.ts +1 -1
- package/dist/esm/helpers/postgres.d.ts +133 -0
- package/dist/esm/helpers/postgres.js +136 -0
- package/dist/esm/index.d.ts +4 -3
- package/dist/esm/index.js +2 -1
- package/dist/esm/kysely.d.ts +10 -0
- package/dist/esm/kysely.js +13 -2
- package/dist/esm/migration/file-migration-provider.d.ts +5 -2
- package/dist/esm/migration/migrator.d.ts +5 -2
- package/dist/esm/operation-node/aggregate-function-node.d.ts +3 -3
- package/dist/esm/operation-node/create-index-node.d.ts +2 -0
- package/dist/esm/operation-node/delete-query-node.d.ts +0 -1
- package/dist/esm/operation-node/delete-query-node.js +0 -6
- package/dist/esm/operation-node/function-node.d.ts +13 -0
- package/dist/esm/operation-node/function-node.js +17 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.js +9 -0
- package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-visitor.js +1 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/operator-node.d.ts +13 -2
- package/dist/esm/operation-node/operator-node.js +34 -3
- package/dist/esm/operation-node/query-node.d.ts +25 -8
- package/dist/esm/operation-node/query-node.js +9 -2
- package/dist/esm/operation-node/select-query-node.d.ts +0 -1
- package/dist/esm/operation-node/select-query-node.js +0 -6
- package/dist/esm/operation-node/update-query-node.d.ts +0 -1
- package/dist/esm/operation-node/update-query-node.js +0 -6
- package/dist/esm/parser/binary-operation-parser.d.ts +9 -10
- package/dist/esm/parser/binary-operation-parser.js +85 -37
- package/dist/esm/parser/coalesce-parser.d.ts +0 -2
- package/dist/esm/parser/coalesce-parser.js +1 -7
- package/dist/esm/parser/expression-parser.d.ts +7 -3
- package/dist/esm/parser/expression-parser.js +3 -3
- package/dist/esm/parser/group-by-parser.d.ts +3 -2
- package/dist/esm/parser/group-by-parser.js +3 -0
- package/dist/esm/parser/insert-values-parser.d.ts +4 -1
- package/dist/esm/parser/insert-values-parser.js +18 -12
- package/dist/esm/parser/join-parser.js +2 -2
- package/dist/esm/parser/parse-utils.d.ts +0 -2
- package/dist/esm/parser/parse-utils.js +0 -6
- package/dist/esm/parser/returning-parser.d.ts +2 -1
- package/dist/esm/parser/select-parser.d.ts +5 -13
- package/dist/esm/parser/select-parser.js +7 -3
- package/dist/esm/parser/table-parser.d.ts +5 -3
- package/dist/esm/parser/unary-operation-parser.d.ts +5 -2
- package/dist/esm/parser/unary-operation-parser.js +8 -8
- package/dist/esm/parser/update-set-parser.d.ts +4 -1
- package/dist/esm/parser/update-set-parser.js +7 -2
- package/dist/esm/parser/value-parser.d.ts +5 -0
- package/dist/esm/parser/value-parser.js +1 -3
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.d.ts +1 -1
- package/dist/esm/plugin/deduplicate-joins/deduplicate-joins-plugin.js +1 -1
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +40 -113
- package/dist/esm/query-builder/aggregate-function-builder.js +24 -64
- package/dist/esm/query-builder/delete-query-builder.d.ts +220 -201
- package/dist/esm/query-builder/delete-query-builder.js +24 -30
- package/dist/esm/query-builder/delete-result.js +3 -0
- package/dist/esm/query-builder/deprecated-having-expression-builder.d.ts +62 -0
- package/dist/esm/query-builder/deprecated-having-expression-builder.js +2 -0
- package/dist/esm/query-builder/deprecated-on-expression-builder.d.ts +62 -0
- package/dist/esm/query-builder/deprecated-on-expression-builder.js +2 -0
- package/dist/esm/query-builder/deprecated-where-expression-builder.d.ts +62 -0
- package/dist/esm/query-builder/deprecated-where-expression-builder.js +2 -0
- package/dist/esm/query-builder/function-module.d.ts +40 -12
- package/dist/esm/query-builder/function-module.js +42 -328
- package/dist/esm/query-builder/having-interface.d.ts +19 -16
- package/dist/esm/query-builder/insert-query-builder.d.ts +75 -26
- package/dist/esm/query-builder/insert-query-builder.js +25 -33
- package/dist/esm/query-builder/insert-result.js +3 -0
- package/dist/esm/query-builder/join-builder.d.ts +23 -26
- package/dist/esm/query-builder/join-builder.js +18 -23
- package/dist/esm/query-builder/no-result-error.d.ts +1 -0
- package/dist/esm/query-builder/no-result-error.js +3 -0
- package/dist/esm/query-builder/on-conflict-builder.d.ts +158 -276
- package/dist/esm/query-builder/on-conflict-builder.js +54 -38
- package/dist/esm/query-builder/over-builder.d.ts +5 -0
- package/dist/esm/query-builder/over-builder.js +7 -0
- package/dist/esm/query-builder/returning-interface.d.ts +2 -2
- package/dist/esm/query-builder/select-query-builder.d.ts +148 -237
- package/dist/esm/query-builder/select-query-builder.js +337 -82
- package/dist/esm/query-builder/update-query-builder.d.ts +145 -213
- package/dist/esm/query-builder/update-query-builder.js +25 -119
- package/dist/esm/query-builder/update-result.js +3 -0
- package/dist/esm/query-builder/where-interface.d.ts +71 -184
- package/dist/esm/query-compiler/default-query-compiler.d.ts +3 -0
- package/dist/esm/query-compiler/default-query-compiler.js +17 -1
- package/dist/esm/query-creator.d.ts +9 -2
- package/dist/esm/query-creator.js +1 -24
- package/dist/esm/query-executor/query-executor.d.ts +3 -3
- package/dist/esm/raw-builder/raw-builder.d.ts +5 -3
- package/dist/esm/raw-builder/raw-builder.js +13 -7
- package/dist/esm/raw-builder/sql.d.ts +17 -9
- package/dist/esm/raw-builder/sql.js +8 -2
- package/dist/esm/schema/alter-column-builder.d.ts +5 -0
- package/dist/esm/schema/alter-column-builder.js +7 -0
- package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.d.ts +5 -0
- package/dist/esm/schema/alter-table-add-foreign-key-constraint-builder.js +7 -0
- package/dist/esm/schema/alter-table-drop-constraint-builder.d.ts +5 -0
- package/dist/esm/schema/alter-table-drop-constraint-builder.js +7 -0
- package/dist/esm/schema/column-definition-builder.d.ts +6 -1
- package/dist/esm/schema/column-definition-builder.js +8 -1
- package/dist/esm/schema/create-index-builder.d.ts +51 -9
- package/dist/esm/schema/create-index-builder.js +17 -0
- package/dist/esm/schema/create-schema-builder.d.ts +5 -0
- package/dist/esm/schema/create-schema-builder.js +7 -0
- package/dist/esm/schema/create-table-builder.d.ts +3 -1
- package/dist/esm/schema/create-table-builder.js +3 -1
- package/dist/esm/schema/create-type-builder.d.ts +5 -0
- package/dist/esm/schema/create-type-builder.js +7 -0
- package/dist/esm/schema/create-view-builder.d.ts +5 -0
- package/dist/esm/schema/create-view-builder.js +7 -0
- package/dist/esm/schema/drop-index-builder.d.ts +5 -0
- package/dist/esm/schema/drop-index-builder.js +7 -0
- package/dist/esm/schema/drop-schema-builder.d.ts +5 -0
- package/dist/esm/schema/drop-schema-builder.js +7 -0
- package/dist/esm/schema/drop-table-builder.d.ts +5 -0
- package/dist/esm/schema/drop-table-builder.js +7 -0
- package/dist/esm/schema/drop-type-builder.d.ts +5 -0
- package/dist/esm/schema/drop-type-builder.js +7 -0
- package/dist/esm/schema/drop-view-builder.d.ts +5 -0
- package/dist/esm/schema/drop-view-builder.js +7 -0
- package/dist/esm/schema/foreign-key-constraint-builder.d.ts +5 -0
- package/dist/esm/schema/foreign-key-constraint-builder.js +7 -0
- package/dist/esm/util/compilable.d.ts +1 -0
- package/dist/esm/util/compilable.js +4 -1
- package/dist/esm/util/explainable.d.ts +35 -0
- package/dist/esm/util/log.d.ts +2 -0
- package/dist/esm/util/object-utils.js +1 -1
- package/dist/esm/util/streamable.d.ts +29 -0
- package/dist/esm/util/streamable.js +2 -0
- package/dist/esm/util/type-utils.d.ts +1 -0
- package/helpers/postgres.d.ts +1 -0
- package/helpers/postgres.js +1 -0
- package/package.json +20 -9
- package/dist/cjs/query-builder/expression-builder.d.ts +0 -126
- package/dist/cjs/query-builder/expression-builder.js +0 -107
- package/dist/esm/query-builder/expression-builder.d.ts +0 -126
- package/dist/esm/query-builder/expression-builder.js +0 -104
|
@@ -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
|
-
}
|