kysely 0.19.4 → 0.19.5
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/dist/cjs/operation-node/join-node.d.ts +1 -1
- package/dist/cjs/parser/join-parser.d.ts +4 -4
- package/dist/cjs/parser/table-parser.d.ts +5 -5
- package/dist/cjs/query-builder/expression-builder.d.ts +3 -3
- package/dist/cjs/query-builder/select-query-builder.d.ts +10 -0
- package/dist/cjs/query-builder/select-query-builder.js +12 -0
- package/dist/cjs/query-builder/update-query-builder.d.ts +3 -3
- package/dist/cjs/query-compiler/default-query-compiler.js +2 -0
- package/dist/cjs/query-creator.d.ts +5 -5
- package/dist/esm/operation-node/join-node.d.ts +1 -1
- package/dist/esm/parser/join-parser.d.ts +4 -4
- package/dist/esm/parser/table-parser.d.ts +5 -5
- package/dist/esm/query-builder/expression-builder.d.ts +3 -3
- package/dist/esm/query-builder/select-query-builder.d.ts +10 -0
- package/dist/esm/query-builder/select-query-builder.js +12 -0
- package/dist/esm/query-builder/update-query-builder.d.ts +3 -3
- package/dist/esm/query-compiler/default-query-compiler.js +2 -0
- package/dist/esm/query-creator.d.ts +5 -5
- package/package.json +1 -1
|
@@ -4,7 +4,7 @@ import { FilterExpressionNode } from './operation-node-utils.js';
|
|
|
4
4
|
import { OperationNode } from './operation-node.js';
|
|
5
5
|
import { TableNode } from './table-node.js';
|
|
6
6
|
export declare type JoinTableNode = TableNode | AliasNode;
|
|
7
|
-
export declare type JoinType = 'InnerJoin' | 'LeftJoin' | 'RightJoin' | 'FullJoin';
|
|
7
|
+
export declare type JoinType = 'InnerJoin' | 'LeftJoin' | 'RightJoin' | 'FullJoin' | 'LateralInnerJoin' | 'LateralLeftJoin';
|
|
8
8
|
export interface JoinNode extends OperationNode {
|
|
9
9
|
readonly kind: 'JoinNode';
|
|
10
10
|
readonly joinType: JoinType;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { JoinNode, JoinType } from '../operation-node/join-node.js';
|
|
2
2
|
import { AnyColumn, AnyColumnWithTable } from '../util/type-utils.js';
|
|
3
|
-
import {
|
|
3
|
+
import { From, FromTables } from './table-parser.js';
|
|
4
4
|
import { JoinBuilder } from '../query-builder/join-builder.js';
|
|
5
5
|
export declare type JoinReferenceExpression<DB, TB extends keyof DB, TE> = AnyJoinColumn<DB, TB, TE> | AnyJoinColumnWithTable<DB, TB, TE>;
|
|
6
|
-
export declare type JoinCallbackExpression<DB, TB extends keyof DB, TE> = (join: JoinBuilder<
|
|
7
|
-
declare type AnyJoinColumn<DB, TB extends keyof DB, TE> = AnyColumn<
|
|
8
|
-
declare type AnyJoinColumnWithTable<DB, TB extends keyof DB, TE> = AnyColumnWithTable<
|
|
6
|
+
export declare type JoinCallbackExpression<DB, TB extends keyof DB, TE> = (join: JoinBuilder<From<DB, TE>, FromTables<DB, TB, TE>>) => JoinBuilder<any, any>;
|
|
7
|
+
declare type AnyJoinColumn<DB, TB extends keyof DB, TE> = AnyColumn<From<DB, TE>, FromTables<DB, TB, TE>>;
|
|
8
|
+
declare type AnyJoinColumnWithTable<DB, TB extends keyof DB, TE> = AnyColumnWithTable<From<DB, TE>, FromTables<DB, TB, TE>>;
|
|
9
9
|
export declare function parseJoin(joinType: JoinType, args: any[]): JoinNode;
|
|
10
10
|
export {};
|
|
@@ -7,12 +7,12 @@ import { AliasedComplexExpression } from './complex-expression-parser.js';
|
|
|
7
7
|
export declare type TableExpression<DB, TB extends keyof DB> = TableReference<DB> | AliasedComplexExpression<DB, TB>;
|
|
8
8
|
export declare type TableExpressionOrList<DB, TB extends keyof DB> = TableExpression<DB, TB> | ReadonlyArray<TableExpression<DB, TB>>;
|
|
9
9
|
export declare type TableReference<DB> = AnyAliasedTable<DB> | AnyTable<DB> | AnyAliasedRawBuilder;
|
|
10
|
-
export declare type
|
|
11
|
-
[C in keyof DB |
|
|
10
|
+
export declare type From<DB, TE> = {
|
|
11
|
+
[C in keyof DB | ExtractAliasFromTableExpression<DB, TE>]: C extends ExtractAliasFromTableExpression<DB, TE> ? ExtractRowTypeFromTableExpression<DB, TE, C> : C extends keyof DB ? DB[C] : never;
|
|
12
12
|
};
|
|
13
|
-
export declare type
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
export declare type FromTables<DB, TB extends keyof DB, TE> = TB | ExtractAliasFromTableExpression<DB, TE>;
|
|
14
|
+
declare type ExtractAliasFromTableExpression<DB, TE> = TE extends `${string} as ${infer TA}` ? TA : TE extends keyof DB ? TE : TE extends AliasedQueryBuilder<any, any, any, infer QA> ? QA : TE extends (qb: any) => AliasedQueryBuilder<any, any, any, infer QA> ? QA : TE extends AliasedRawBuilder<any, infer RA> ? RA : TE extends (qb: any) => AliasedRawBuilder<any, infer RA> ? RA : never;
|
|
15
|
+
declare type ExtractRowTypeFromTableExpression<DB, TE, A extends keyof any> = TE extends `${infer T} as ${infer TA}` ? TA extends A ? T extends keyof DB ? DB[T] : never : never : TE extends A ? TE extends keyof DB ? DB[TE] : never : TE extends AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? O : never : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? O : never : TE extends AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : TE extends (qb: any) => AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : never;
|
|
16
16
|
declare type AnyAliasedTable<DB> = `${AnyTable<DB>} as ${string}`;
|
|
17
17
|
declare type AnyTable<DB> = keyof DB & string;
|
|
18
18
|
export declare function parseTableExpressionOrList(table: TableExpressionOrList<any, any>): TableExpressionNode[];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SelectQueryBuilder } from './select-query-builder.js';
|
|
2
|
-
import { TableExpression,
|
|
2
|
+
import { TableExpression, From, FromTables } from '../parser/table-parser.js';
|
|
3
3
|
import { FunctionBuilder } from './function-builder.js';
|
|
4
4
|
import { ExtractTypeFromReferenceExpression, StringReference } from '../parser/reference-parser.js';
|
|
5
5
|
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
@@ -83,8 +83,8 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
|
|
|
83
83
|
* that case Kysely typings wouldn't allow you to reference `pet.owner_id`
|
|
84
84
|
* because `pet` is not joined to that query.
|
|
85
85
|
*/
|
|
86
|
-
selectFrom<TE extends TableExpression<DB, TB>>(from: TE[]): SelectQueryBuilder<
|
|
87
|
-
selectFrom<TE extends TableExpression<DB, TB>>(from: TE): SelectQueryBuilder<
|
|
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
88
|
/**
|
|
89
89
|
* See {@link QueryCreator.withSchema}
|
|
90
90
|
*/
|
|
@@ -873,6 +873,16 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
873
873
|
*/
|
|
874
874
|
fullJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilderWithFullJoin<DB, TB, O, TE>;
|
|
875
875
|
fullJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilderWithFullJoin<DB, TB, O, TE>;
|
|
876
|
+
/**
|
|
877
|
+
* Just like {@link innerJoin} but adds a lateral join instead of an inner join.
|
|
878
|
+
*/
|
|
879
|
+
innerJoinLateral<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilderWithInnerJoin<DB, TB, O, TE>;
|
|
880
|
+
innerJoinLateral<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilderWithInnerJoin<DB, TB, O, TE>;
|
|
881
|
+
/**
|
|
882
|
+
* Just like {@link innerJoin} but adds a lateral left join instead of an inner join.
|
|
883
|
+
*/
|
|
884
|
+
leftJoinLateral<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilderWithLeftJoin<DB, TB, O, TE>;
|
|
885
|
+
leftJoinLateral<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilderWithLeftJoin<DB, TB, O, TE>;
|
|
876
886
|
/**
|
|
877
887
|
* Adds an `order by` clause to the query.
|
|
878
888
|
*
|
|
@@ -237,6 +237,18 @@ class SelectQueryBuilder {
|
|
|
237
237
|
queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)('FullJoin', args)),
|
|
238
238
|
});
|
|
239
239
|
}
|
|
240
|
+
innerJoinLateral(...args) {
|
|
241
|
+
return new SelectQueryBuilder({
|
|
242
|
+
...this.#props,
|
|
243
|
+
queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)('LateralInnerJoin', args)),
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
leftJoinLateral(...args) {
|
|
247
|
+
return new SelectQueryBuilder({
|
|
248
|
+
...this.#props,
|
|
249
|
+
queryNode: query_node_js_1.QueryNode.cloneWithJoin(this.#props.queryNode, (0, join_parser_js_1.parseJoin)('LateralLeftJoin', args)),
|
|
250
|
+
});
|
|
251
|
+
}
|
|
240
252
|
/**
|
|
241
253
|
* Adds an `order by` clause to the query.
|
|
242
254
|
*
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
2
2
|
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
3
3
|
import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
|
|
4
|
-
import { TableExpression,
|
|
4
|
+
import { TableExpression, From, FromTables } from '../parser/table-parser.js';
|
|
5
5
|
import { SelectExpression } from '../parser/select-parser.js';
|
|
6
6
|
import { ExistsExpression, FilterOperator, FilterValueExpressionOrList, WhereGrouper } from '../parser/filter-parser.js';
|
|
7
7
|
import { ReturningRow } from '../parser/returning-parser.js';
|
|
@@ -434,8 +434,8 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
434
434
|
* where "pet"."owner_id" = "person"."id"
|
|
435
435
|
* ```
|
|
436
436
|
*/
|
|
437
|
-
from<TE extends TableExpression<DB, TB>>(table: TE): UpdateQueryBuilder<
|
|
438
|
-
from<TE extends TableExpression<DB, TB>>(table: TE[]): UpdateQueryBuilder<
|
|
437
|
+
from<TE extends TableExpression<DB, TB>>(table: TE): UpdateQueryBuilder<From<DB, TE>, UT, FromTables<DB, TB, TE>, O>;
|
|
438
|
+
from<TE extends TableExpression<DB, TB>>(table: TE[]): UpdateQueryBuilder<From<DB, TE>, UT, FromTables<DB, TB, TE>, O>;
|
|
439
439
|
/**
|
|
440
440
|
* Joins another table to the query using an inner join.
|
|
441
441
|
*
|
|
@@ -2,7 +2,7 @@ import { SelectQueryBuilder } from './query-builder/select-query-builder.js';
|
|
|
2
2
|
import { InsertQueryBuilder } from './query-builder/insert-query-builder.js';
|
|
3
3
|
import { DeleteQueryBuilder } from './query-builder/delete-query-builder.js';
|
|
4
4
|
import { UpdateQueryBuilder } from './query-builder/update-query-builder.js';
|
|
5
|
-
import { TableExpression,
|
|
5
|
+
import { TableExpression, From, FromTables, TableReference } from './parser/table-parser.js';
|
|
6
6
|
import { QueryExecutor } from './query-executor/query-executor.js';
|
|
7
7
|
import { CommonTableExpression, QueryCreatorWithCommonTableExpression, RecursiveCommonTableExpression } from './parser/with-parser.js';
|
|
8
8
|
import { WithNode } from './operation-node/with-node.js';
|
|
@@ -120,8 +120,8 @@ export declare class QueryCreator<DB> {
|
|
|
120
120
|
* (select 1 as one) as "q"
|
|
121
121
|
* ```
|
|
122
122
|
*/
|
|
123
|
-
selectFrom<TE extends TableExpression<DB, keyof DB>>(from: TE[]): SelectQueryBuilder<
|
|
124
|
-
selectFrom<TE extends TableExpression<DB, keyof DB>>(from: TE): SelectQueryBuilder<
|
|
123
|
+
selectFrom<TE extends TableExpression<DB, keyof DB>>(from: TE[]): SelectQueryBuilder<From<DB, TE>, FromTables<DB, never, TE>, {}>;
|
|
124
|
+
selectFrom<TE extends TableExpression<DB, keyof DB>>(from: TE): SelectQueryBuilder<From<DB, TE>, FromTables<DB, never, TE>, {}>;
|
|
125
125
|
/**
|
|
126
126
|
* Creates an insert query.
|
|
127
127
|
*
|
|
@@ -180,7 +180,7 @@ export declare class QueryCreator<DB> {
|
|
|
180
180
|
* console.log(result.numDeletedRows)
|
|
181
181
|
* ```
|
|
182
182
|
*/
|
|
183
|
-
deleteFrom<TR extends TableReference<DB>>(table: TR): DeleteQueryBuilder<
|
|
183
|
+
deleteFrom<TR extends TableReference<DB>>(table: TR): DeleteQueryBuilder<From<DB, TR>, FromTables<DB, never, TR>, DeleteResult>;
|
|
184
184
|
/**
|
|
185
185
|
* Creates an update query.
|
|
186
186
|
*
|
|
@@ -204,7 +204,7 @@ export declare class QueryCreator<DB> {
|
|
|
204
204
|
* console.log(result.numUpdatedRows)
|
|
205
205
|
* ```
|
|
206
206
|
*/
|
|
207
|
-
updateTable<TR extends TableReference<DB>>(table: TR): UpdateQueryBuilder<
|
|
207
|
+
updateTable<TR extends TableReference<DB>>(table: TR): UpdateQueryBuilder<From<DB, TR>, FromTables<DB, never, TR>, FromTables<DB, never, TR>, UpdateResult>;
|
|
208
208
|
/**
|
|
209
209
|
* Creates a `with` query (Common Table Expression).
|
|
210
210
|
*
|
|
@@ -4,7 +4,7 @@ import { FilterExpressionNode } from './operation-node-utils.js';
|
|
|
4
4
|
import { OperationNode } from './operation-node.js';
|
|
5
5
|
import { TableNode } from './table-node.js';
|
|
6
6
|
export declare type JoinTableNode = TableNode | AliasNode;
|
|
7
|
-
export declare type JoinType = 'InnerJoin' | 'LeftJoin' | 'RightJoin' | 'FullJoin';
|
|
7
|
+
export declare type JoinType = 'InnerJoin' | 'LeftJoin' | 'RightJoin' | 'FullJoin' | 'LateralInnerJoin' | 'LateralLeftJoin';
|
|
8
8
|
export interface JoinNode extends OperationNode {
|
|
9
9
|
readonly kind: 'JoinNode';
|
|
10
10
|
readonly joinType: JoinType;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { JoinNode, JoinType } from '../operation-node/join-node.js';
|
|
2
2
|
import { AnyColumn, AnyColumnWithTable } from '../util/type-utils.js';
|
|
3
|
-
import {
|
|
3
|
+
import { From, FromTables } from './table-parser.js';
|
|
4
4
|
import { JoinBuilder } from '../query-builder/join-builder.js';
|
|
5
5
|
export declare type JoinReferenceExpression<DB, TB extends keyof DB, TE> = AnyJoinColumn<DB, TB, TE> | AnyJoinColumnWithTable<DB, TB, TE>;
|
|
6
|
-
export declare type JoinCallbackExpression<DB, TB extends keyof DB, TE> = (join: JoinBuilder<
|
|
7
|
-
declare type AnyJoinColumn<DB, TB extends keyof DB, TE> = AnyColumn<
|
|
8
|
-
declare type AnyJoinColumnWithTable<DB, TB extends keyof DB, TE> = AnyColumnWithTable<
|
|
6
|
+
export declare type JoinCallbackExpression<DB, TB extends keyof DB, TE> = (join: JoinBuilder<From<DB, TE>, FromTables<DB, TB, TE>>) => JoinBuilder<any, any>;
|
|
7
|
+
declare type AnyJoinColumn<DB, TB extends keyof DB, TE> = AnyColumn<From<DB, TE>, FromTables<DB, TB, TE>>;
|
|
8
|
+
declare type AnyJoinColumnWithTable<DB, TB extends keyof DB, TE> = AnyColumnWithTable<From<DB, TE>, FromTables<DB, TB, TE>>;
|
|
9
9
|
export declare function parseJoin(joinType: JoinType, args: any[]): JoinNode;
|
|
10
10
|
export {};
|
|
@@ -7,12 +7,12 @@ import { AliasedComplexExpression } from './complex-expression-parser.js';
|
|
|
7
7
|
export declare type TableExpression<DB, TB extends keyof DB> = TableReference<DB> | AliasedComplexExpression<DB, TB>;
|
|
8
8
|
export declare type TableExpressionOrList<DB, TB extends keyof DB> = TableExpression<DB, TB> | ReadonlyArray<TableExpression<DB, TB>>;
|
|
9
9
|
export declare type TableReference<DB> = AnyAliasedTable<DB> | AnyTable<DB> | AnyAliasedRawBuilder;
|
|
10
|
-
export declare type
|
|
11
|
-
[C in keyof DB |
|
|
10
|
+
export declare type From<DB, TE> = {
|
|
11
|
+
[C in keyof DB | ExtractAliasFromTableExpression<DB, TE>]: C extends ExtractAliasFromTableExpression<DB, TE> ? ExtractRowTypeFromTableExpression<DB, TE, C> : C extends keyof DB ? DB[C] : never;
|
|
12
12
|
};
|
|
13
|
-
export declare type
|
|
14
|
-
|
|
15
|
-
|
|
13
|
+
export declare type FromTables<DB, TB extends keyof DB, TE> = TB | ExtractAliasFromTableExpression<DB, TE>;
|
|
14
|
+
declare type ExtractAliasFromTableExpression<DB, TE> = TE extends `${string} as ${infer TA}` ? TA : TE extends keyof DB ? TE : TE extends AliasedQueryBuilder<any, any, any, infer QA> ? QA : TE extends (qb: any) => AliasedQueryBuilder<any, any, any, infer QA> ? QA : TE extends AliasedRawBuilder<any, infer RA> ? RA : TE extends (qb: any) => AliasedRawBuilder<any, infer RA> ? RA : never;
|
|
15
|
+
declare type ExtractRowTypeFromTableExpression<DB, TE, A extends keyof any> = TE extends `${infer T} as ${infer TA}` ? TA extends A ? T extends keyof DB ? DB[T] : never : never : TE extends A ? TE extends keyof DB ? DB[TE] : never : TE extends AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? O : never : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer O, infer QA> ? QA extends A ? O : never : TE extends AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : TE extends (qb: any) => AliasedRawBuilder<infer O, infer RA> ? RA extends A ? O : never : never;
|
|
16
16
|
declare type AnyAliasedTable<DB> = `${AnyTable<DB>} as ${string}`;
|
|
17
17
|
declare type AnyTable<DB> = keyof DB & string;
|
|
18
18
|
export declare function parseTableExpressionOrList(table: TableExpressionOrList<any, any>): TableExpressionNode[];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SelectQueryBuilder } from './select-query-builder.js';
|
|
2
|
-
import { TableExpression,
|
|
2
|
+
import { TableExpression, From, FromTables } from '../parser/table-parser.js';
|
|
3
3
|
import { FunctionBuilder } from './function-builder.js';
|
|
4
4
|
import { ExtractTypeFromReferenceExpression, StringReference } from '../parser/reference-parser.js';
|
|
5
5
|
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
@@ -83,8 +83,8 @@ export declare class ExpressionBuilder<DB, TB extends keyof DB> {
|
|
|
83
83
|
* that case Kysely typings wouldn't allow you to reference `pet.owner_id`
|
|
84
84
|
* because `pet` is not joined to that query.
|
|
85
85
|
*/
|
|
86
|
-
selectFrom<TE extends TableExpression<DB, TB>>(from: TE[]): SelectQueryBuilder<
|
|
87
|
-
selectFrom<TE extends TableExpression<DB, TB>>(from: TE): SelectQueryBuilder<
|
|
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
88
|
/**
|
|
89
89
|
* See {@link QueryCreator.withSchema}
|
|
90
90
|
*/
|
|
@@ -873,6 +873,16 @@ export declare class SelectQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
873
873
|
*/
|
|
874
874
|
fullJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilderWithFullJoin<DB, TB, O, TE>;
|
|
875
875
|
fullJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilderWithFullJoin<DB, TB, O, TE>;
|
|
876
|
+
/**
|
|
877
|
+
* Just like {@link innerJoin} but adds a lateral join instead of an inner join.
|
|
878
|
+
*/
|
|
879
|
+
innerJoinLateral<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilderWithInnerJoin<DB, TB, O, TE>;
|
|
880
|
+
innerJoinLateral<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilderWithInnerJoin<DB, TB, O, TE>;
|
|
881
|
+
/**
|
|
882
|
+
* Just like {@link innerJoin} but adds a lateral left join instead of an inner join.
|
|
883
|
+
*/
|
|
884
|
+
leftJoinLateral<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): SelectQueryBuilderWithLeftJoin<DB, TB, O, TE>;
|
|
885
|
+
leftJoinLateral<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): SelectQueryBuilderWithLeftJoin<DB, TB, O, TE>;
|
|
876
886
|
/**
|
|
877
887
|
* Adds an `order by` clause to the query.
|
|
878
888
|
*
|
|
@@ -235,6 +235,18 @@ export class SelectQueryBuilder {
|
|
|
235
235
|
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin('FullJoin', args)),
|
|
236
236
|
});
|
|
237
237
|
}
|
|
238
|
+
innerJoinLateral(...args) {
|
|
239
|
+
return new SelectQueryBuilder({
|
|
240
|
+
...this.#props,
|
|
241
|
+
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin('LateralInnerJoin', args)),
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
leftJoinLateral(...args) {
|
|
245
|
+
return new SelectQueryBuilder({
|
|
246
|
+
...this.#props,
|
|
247
|
+
queryNode: QueryNode.cloneWithJoin(this.#props.queryNode, parseJoin('LateralLeftJoin', args)),
|
|
248
|
+
});
|
|
249
|
+
}
|
|
238
250
|
/**
|
|
239
251
|
* Adds an `order by` clause to the query.
|
|
240
252
|
*
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
2
2
|
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
3
3
|
import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
|
|
4
|
-
import { TableExpression,
|
|
4
|
+
import { TableExpression, From, FromTables } from '../parser/table-parser.js';
|
|
5
5
|
import { SelectExpression } from '../parser/select-parser.js';
|
|
6
6
|
import { ExistsExpression, FilterOperator, FilterValueExpressionOrList, WhereGrouper } from '../parser/filter-parser.js';
|
|
7
7
|
import { ReturningRow } from '../parser/returning-parser.js';
|
|
@@ -434,8 +434,8 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
434
434
|
* where "pet"."owner_id" = "person"."id"
|
|
435
435
|
* ```
|
|
436
436
|
*/
|
|
437
|
-
from<TE extends TableExpression<DB, TB>>(table: TE): UpdateQueryBuilder<
|
|
438
|
-
from<TE extends TableExpression<DB, TB>>(table: TE[]): UpdateQueryBuilder<
|
|
437
|
+
from<TE extends TableExpression<DB, TB>>(table: TE): UpdateQueryBuilder<From<DB, TE>, UT, FromTables<DB, TB, TE>, O>;
|
|
438
|
+
from<TE extends TableExpression<DB, TB>>(table: TE[]): UpdateQueryBuilder<From<DB, TE>, UT, FromTables<DB, TB, TE>, O>;
|
|
439
439
|
/**
|
|
440
440
|
* Joins another table to the query using an inner join.
|
|
441
441
|
*
|
|
@@ -2,7 +2,7 @@ import { SelectQueryBuilder } from './query-builder/select-query-builder.js';
|
|
|
2
2
|
import { InsertQueryBuilder } from './query-builder/insert-query-builder.js';
|
|
3
3
|
import { DeleteQueryBuilder } from './query-builder/delete-query-builder.js';
|
|
4
4
|
import { UpdateQueryBuilder } from './query-builder/update-query-builder.js';
|
|
5
|
-
import { TableExpression,
|
|
5
|
+
import { TableExpression, From, FromTables, TableReference } from './parser/table-parser.js';
|
|
6
6
|
import { QueryExecutor } from './query-executor/query-executor.js';
|
|
7
7
|
import { CommonTableExpression, QueryCreatorWithCommonTableExpression, RecursiveCommonTableExpression } from './parser/with-parser.js';
|
|
8
8
|
import { WithNode } from './operation-node/with-node.js';
|
|
@@ -120,8 +120,8 @@ export declare class QueryCreator<DB> {
|
|
|
120
120
|
* (select 1 as one) as "q"
|
|
121
121
|
* ```
|
|
122
122
|
*/
|
|
123
|
-
selectFrom<TE extends TableExpression<DB, keyof DB>>(from: TE[]): SelectQueryBuilder<
|
|
124
|
-
selectFrom<TE extends TableExpression<DB, keyof DB>>(from: TE): SelectQueryBuilder<
|
|
123
|
+
selectFrom<TE extends TableExpression<DB, keyof DB>>(from: TE[]): SelectQueryBuilder<From<DB, TE>, FromTables<DB, never, TE>, {}>;
|
|
124
|
+
selectFrom<TE extends TableExpression<DB, keyof DB>>(from: TE): SelectQueryBuilder<From<DB, TE>, FromTables<DB, never, TE>, {}>;
|
|
125
125
|
/**
|
|
126
126
|
* Creates an insert query.
|
|
127
127
|
*
|
|
@@ -180,7 +180,7 @@ export declare class QueryCreator<DB> {
|
|
|
180
180
|
* console.log(result.numDeletedRows)
|
|
181
181
|
* ```
|
|
182
182
|
*/
|
|
183
|
-
deleteFrom<TR extends TableReference<DB>>(table: TR): DeleteQueryBuilder<
|
|
183
|
+
deleteFrom<TR extends TableReference<DB>>(table: TR): DeleteQueryBuilder<From<DB, TR>, FromTables<DB, never, TR>, DeleteResult>;
|
|
184
184
|
/**
|
|
185
185
|
* Creates an update query.
|
|
186
186
|
*
|
|
@@ -204,7 +204,7 @@ export declare class QueryCreator<DB> {
|
|
|
204
204
|
* console.log(result.numUpdatedRows)
|
|
205
205
|
* ```
|
|
206
206
|
*/
|
|
207
|
-
updateTable<TR extends TableReference<DB>>(table: TR): UpdateQueryBuilder<
|
|
207
|
+
updateTable<TR extends TableReference<DB>>(table: TR): UpdateQueryBuilder<From<DB, TR>, FromTables<DB, never, TR>, FromTables<DB, never, TR>, UpdateResult>;
|
|
208
208
|
/**
|
|
209
209
|
* Creates a `with` query (Common Table Expression).
|
|
210
210
|
*
|