kysely 0.26.2 → 0.26.3
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/expression/expression-builder.d.ts +4 -2
- package/dist/cjs/helpers/mysql.d.ts +3 -3
- package/dist/cjs/helpers/sqlite.d.ts +3 -3
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/parser/expression-parser.d.ts +2 -2
- package/dist/cjs/parser/reference-parser.d.ts +2 -2
- package/dist/cjs/parser/returning-parser.d.ts +2 -1
- package/dist/cjs/parser/select-parser.d.ts +20 -9
- package/dist/cjs/parser/value-parser.d.ts +2 -2
- package/dist/cjs/query-builder/delete-query-builder.d.ts +5 -3
- package/dist/cjs/query-builder/function-module.d.ts +2 -2
- package/dist/cjs/query-builder/insert-query-builder.d.ts +5 -3
- package/dist/cjs/query-builder/returning-interface.d.ts +3 -2
- package/dist/cjs/query-builder/select-query-builder-expression.d.ts +20 -0
- package/dist/cjs/query-builder/select-query-builder-expression.js +2 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +10 -7
- package/dist/cjs/query-builder/select-query-builder.js +5 -2
- package/dist/cjs/query-builder/update-query-builder.d.ts +5 -3
- package/dist/cjs/query-creator.d.ts +5 -3
- package/dist/cjs/query-creator.js +0 -47
- package/dist/cjs/raw-builder/raw-builder.d.ts +0 -3
- package/dist/cjs/schema/create-view-builder.d.ts +2 -2
- package/dist/cjs/util/infer-result.d.ts +2 -1
- package/dist/cjs/util/type-utils.d.ts +8 -9
- package/dist/esm/expression/expression-builder.d.ts +4 -2
- package/dist/esm/helpers/mysql.d.ts +3 -3
- package/dist/esm/helpers/sqlite.d.ts +3 -3
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/parser/expression-parser.d.ts +2 -2
- package/dist/esm/parser/reference-parser.d.ts +2 -2
- package/dist/esm/parser/returning-parser.d.ts +2 -1
- package/dist/esm/parser/select-parser.d.ts +20 -9
- package/dist/esm/parser/value-parser.d.ts +2 -2
- package/dist/esm/query-builder/delete-query-builder.d.ts +5 -3
- package/dist/esm/query-builder/function-module.d.ts +2 -2
- package/dist/esm/query-builder/insert-query-builder.d.ts +5 -3
- package/dist/esm/query-builder/returning-interface.d.ts +3 -2
- package/dist/esm/query-builder/select-query-builder-expression.d.ts +20 -0
- package/dist/esm/query-builder/select-query-builder-expression.js +2 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +10 -7
- package/dist/esm/query-builder/select-query-builder.js +5 -2
- package/dist/esm/query-builder/update-query-builder.d.ts +5 -3
- package/dist/esm/query-creator.d.ts +5 -3
- package/dist/esm/query-creator.js +0 -47
- package/dist/esm/raw-builder/raw-builder.d.ts +0 -3
- package/dist/esm/schema/create-view-builder.d.ts +2 -2
- package/dist/esm/util/infer-result.d.ts +2 -1
- package/dist/esm/util/type-utils.d.ts +8 -9
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Expression } from '../expression/expression.js';
|
|
2
|
-
import {
|
|
2
|
+
import { SelectQueryBuilderExpression } from '../query-builder/select-query-builder-expression.js';
|
|
3
3
|
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
4
4
|
import { Simplify } from '../util/type-utils.js';
|
|
5
5
|
/**
|
|
@@ -48,7 +48,7 @@ import { Simplify } from '../util/type-utils.js';
|
|
|
48
48
|
* from `person`
|
|
49
49
|
* ```
|
|
50
50
|
*/
|
|
51
|
-
export declare function jsonArrayFrom<O>(expr:
|
|
51
|
+
export declare function jsonArrayFrom<O>(expr: SelectQueryBuilderExpression<O>): RawBuilder<Simplify<O>[]>;
|
|
52
52
|
/**
|
|
53
53
|
* A MySQL helper for turning a subquery into a JSON object.
|
|
54
54
|
*
|
|
@@ -97,7 +97,7 @@ export declare function jsonArrayFrom<O>(expr: SelectQueryBuilder<any, any, O>):
|
|
|
97
97
|
* from `person`
|
|
98
98
|
* ```
|
|
99
99
|
*/
|
|
100
|
-
export declare function jsonObjectFrom<O>(expr:
|
|
100
|
+
export declare function jsonObjectFrom<O>(expr: SelectQueryBuilderExpression<O>): RawBuilder<Simplify<O> | null>;
|
|
101
101
|
/**
|
|
102
102
|
* The MySQL `json_object` function.
|
|
103
103
|
*
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Expression } from '../expression/expression.js';
|
|
2
|
-
import {
|
|
2
|
+
import { SelectQueryBuilderExpression } from '../query-builder/select-query-builder-expression.js';
|
|
3
3
|
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
4
4
|
import { Simplify } from '../util/type-utils.js';
|
|
5
5
|
/**
|
|
@@ -55,7 +55,7 @@ import { Simplify } from '../util/type-utils.js';
|
|
|
55
55
|
* from "person"
|
|
56
56
|
* ```
|
|
57
57
|
*/
|
|
58
|
-
export declare function jsonArrayFrom<O>(expr:
|
|
58
|
+
export declare function jsonArrayFrom<O>(expr: SelectQueryBuilderExpression<O>): RawBuilder<Simplify<O>[]>;
|
|
59
59
|
/**
|
|
60
60
|
* A SQLite helper for turning a subquery into a JSON object.
|
|
61
61
|
*
|
|
@@ -111,7 +111,7 @@ export declare function jsonArrayFrom<O>(expr: SelectQueryBuilder<any, any, O>):
|
|
|
111
111
|
* from "person";
|
|
112
112
|
* ```
|
|
113
113
|
*/
|
|
114
|
-
export declare function jsonObjectFrom<O>(expr:
|
|
114
|
+
export declare function jsonObjectFrom<O>(expr: SelectQueryBuilderExpression<O>): RawBuilder<Simplify<O> | null>;
|
|
115
115
|
/**
|
|
116
116
|
* The SQLite `json_object` function.
|
|
117
117
|
*
|
package/dist/esm/index.d.ts
CHANGED
|
@@ -176,10 +176,10 @@ export * from './util/compilable.js';
|
|
|
176
176
|
export * from './util/explainable.js';
|
|
177
177
|
export * from './util/streamable.js';
|
|
178
178
|
export * from './util/log.js';
|
|
179
|
-
export { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable,
|
|
179
|
+
export { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, Equals, UnknownRow, Simplify, SqlBool, } from './util/type-utils.js';
|
|
180
180
|
export * from './util/infer-result.js';
|
|
181
181
|
export { logOnce } from './util/log-once.js';
|
|
182
|
-
export { SelectExpression, SelectArg, Selection, } from './parser/select-parser.js';
|
|
182
|
+
export { SelectExpression, SelectCallback, SelectArg, Selection, CallbackSelection, } from './parser/select-parser.js';
|
|
183
183
|
export { ReferenceExpression, ReferenceExpressionOrList, SimpleReferenceExpression, StringReference, ExtractTypeFromStringReference, ExtractTypeFromReferenceExpression, } from './parser/reference-parser.js';
|
|
184
184
|
export { ValueExpression, ValueExpressionOrList, } from './parser/value-parser.js';
|
|
185
185
|
export { TableExpression, TableExpressionOrList, } from './parser/table-parser.js';
|
|
@@ -2,13 +2,13 @@ import { AliasedExpression, Expression } from '../expression/expression.js';
|
|
|
2
2
|
import { AliasNode } from '../operation-node/alias-node.js';
|
|
3
3
|
import { OperationNode } from '../operation-node/operation-node.js';
|
|
4
4
|
import { ExpressionBuilder } from '../expression/expression-builder.js';
|
|
5
|
-
import {
|
|
5
|
+
import { SelectQueryBuilderExpression } from '../query-builder/select-query-builder-expression.js';
|
|
6
6
|
/**
|
|
7
7
|
* Like `Expression<V>` but also accepts a select query with an output
|
|
8
8
|
* type extending `Record<string, V>`. This type is useful because SQL
|
|
9
9
|
* treats records with a single column as single values.
|
|
10
10
|
*/
|
|
11
|
-
export type OperandExpression<V> = Expression<V> |
|
|
11
|
+
export type OperandExpression<V> = Expression<V> | SelectQueryBuilderExpression<Record<string, V>>;
|
|
12
12
|
export type ExpressionOrFactory<DB, TB extends keyof DB, V> = OperandExpression<V> | OperandExpressionFactory<DB, TB, V>;
|
|
13
13
|
export type AliasedExpressionOrFactory<DB, TB extends keyof DB> = AliasedExpression<any, any> | AliasedExpressionFactory<DB, TB>;
|
|
14
14
|
export type ExpressionFactory<DB, TB extends keyof DB, V> = (eb: ExpressionBuilder<DB, TB>) => Expression<V>;
|
|
@@ -2,7 +2,7 @@ import { AliasNode } from '../operation-node/alias-node.js';
|
|
|
2
2
|
import { ColumnNode } from '../operation-node/column-node.js';
|
|
3
3
|
import { ReferenceNode } from '../operation-node/reference-node.js';
|
|
4
4
|
import { AnyColumn, AnyColumnWithTable, ExtractColumnType } from '../util/type-utils.js';
|
|
5
|
-
import {
|
|
5
|
+
import { SelectQueryBuilderExpression } from '../query-builder/select-query-builder-expression.js';
|
|
6
6
|
import { ExpressionOrFactory } from './expression-parser.js';
|
|
7
7
|
import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
|
|
8
8
|
import { SelectType } from '../util/column-type.js';
|
|
@@ -16,7 +16,7 @@ export type StringReference<DB, TB extends keyof DB> = AnyColumn<DB, TB> | AnyCo
|
|
|
16
16
|
export type SimpleReferenceExpression<DB, TB extends keyof DB> = StringReference<DB, TB> | DynamicReferenceBuilder<any>;
|
|
17
17
|
export type ReferenceExpression<DB, TB extends keyof DB> = SimpleReferenceExpression<DB, TB> | ExpressionOrFactory<DB, TB, any>;
|
|
18
18
|
export type ReferenceExpressionOrList<DB, TB extends keyof DB> = ReferenceExpression<DB, TB> | ReadonlyArray<ReferenceExpression<DB, TB>>;
|
|
19
|
-
export type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE, DV = unknown> = RE extends string ? SelectType<ExtractTypeFromStringReference<DB, TB, RE>> : RE extends
|
|
19
|
+
export type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE, DV = unknown> = RE extends string ? SelectType<ExtractTypeFromStringReference<DB, TB, RE>> : RE extends SelectQueryBuilderExpression<infer O> ? O[keyof O] | null : RE extends (qb: any) => SelectQueryBuilderExpression<infer O> ? O[keyof O] | null : RE extends Expression<infer O> ? O : RE extends (qb: any) => Expression<infer O> ? O : DV;
|
|
20
20
|
export type ExtractTypeFromStringReference<DB, TB extends keyof DB, RE extends string, DV = unknown> = RE extends `${infer SC}.${infer T}.${infer C}` ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : RE extends `${infer T}.${infer C}` ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : RE extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, RE> : DV;
|
|
21
21
|
export type OrderedColumnName<C extends string> = C extends `${string} ${infer O}` ? O extends OrderByDirection ? C : never : C;
|
|
22
22
|
export type ExtractColumnNameFromOrderedColumnName<C extends string> = C extends `${infer CL} ${infer O}` ? O extends OrderByDirection ? CL : never : C;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { DeleteResult } from '../query-builder/delete-result.js';
|
|
2
2
|
import { InsertResult } from '../query-builder/insert-result.js';
|
|
3
3
|
import { UpdateResult } from '../query-builder/update-result.js';
|
|
4
|
-
import { Selection, AllSelection } from './select-parser.js';
|
|
4
|
+
import { Selection, AllSelection, CallbackSelection } from './select-parser.js';
|
|
5
5
|
export type ReturningRow<DB, TB extends keyof DB, O, SE> = O extends InsertResult ? Selection<DB, TB, SE> : O extends DeleteResult ? Selection<DB, TB, SE> : O extends UpdateResult ? Selection<DB, TB, SE> : O & Selection<DB, TB, SE>;
|
|
6
|
+
export type ReturningCallbackRow<DB, TB extends keyof DB, O, CB> = O extends InsertResult ? CallbackSelection<DB, TB, CB> : O extends DeleteResult ? CallbackSelection<DB, TB, CB> : O extends UpdateResult ? CallbackSelection<DB, TB, CB> : O & CallbackSelection<DB, TB, CB>;
|
|
6
7
|
export type ReturningAllRow<DB, TB extends keyof DB, O> = O extends InsertResult ? AllSelection<DB, TB> : O extends DeleteResult ? AllSelection<DB, TB> : O extends UpdateResult ? AllSelection<DB, TB> : O & AllSelection<DB, TB>;
|
|
@@ -3,23 +3,34 @@ import { SelectionNode } from '../operation-node/selection-node.js';
|
|
|
3
3
|
import { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, DrainOuterGeneric, ExtractColumnType } from '../util/type-utils.js';
|
|
4
4
|
import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
|
|
5
5
|
import { AliasedExpressionOrFactory } from './expression-parser.js';
|
|
6
|
-
import {
|
|
6
|
+
import { SelectType } from '../util/column-type.js';
|
|
7
7
|
import { AliasedExpression } from '../expression/expression.js';
|
|
8
8
|
import { ExpressionBuilder } from '../expression/expression-builder.js';
|
|
9
9
|
export type SelectExpression<DB, TB extends keyof DB> = AnyAliasedColumnWithTable<DB, TB> | AnyAliasedColumn<DB, TB> | AnyColumnWithTable<DB, TB> | AnyColumn<DB, TB> | DynamicReferenceBuilder<any> | AliasedExpressionOrFactory<DB, TB>;
|
|
10
|
+
export type SelectCallback<DB, TB extends keyof DB> = (eb: ExpressionBuilder<DB, TB>) => ReadonlyArray<SelectExpression<DB, TB>>;
|
|
11
|
+
/**
|
|
12
|
+
* Turns a SelectExpression or a union of them into a selection object.
|
|
13
|
+
*/
|
|
14
|
+
export type Selection<DB, TB extends keyof DB, SE> = [DB] extends [unknown] ? {
|
|
15
|
+
[E in FlattenSelectExpression<SE> as ExtractAliasFromSelectExpression<E>]: SelectType<ExtractTypeFromSelectExpression<DB, TB, E>>;
|
|
16
|
+
} : {};
|
|
17
|
+
/**
|
|
18
|
+
* Turns a SelectCallback into a selection object.
|
|
19
|
+
*/
|
|
20
|
+
export type CallbackSelection<DB, TB extends keyof DB, CB> = CB extends (eb: any) => ReadonlyArray<infer SE> ? Selection<DB, TB, SE> : never;
|
|
10
21
|
export type SelectArg<DB, TB extends keyof DB, SE extends SelectExpression<DB, TB>> = SE | ReadonlyArray<SE> | ((eb: ExpressionBuilder<DB, TB>) => ReadonlyArray<SE>);
|
|
11
|
-
|
|
12
|
-
[
|
|
13
|
-
}
|
|
22
|
+
type FlattenSelectExpression<SE> = SE extends DynamicReferenceBuilder<infer RA> ? {
|
|
23
|
+
[R in RA]: DynamicReferenceBuilder<R>;
|
|
24
|
+
}[RA] : SE;
|
|
14
25
|
type ExtractAliasFromSelectExpression<SE> = SE extends string ? ExtractAliasFromStringSelectExpression<SE> : SE extends AliasedExpression<any, infer EA> ? EA : SE extends (qb: any) => AliasedExpression<any, infer EA> ? EA : SE extends DynamicReferenceBuilder<infer RA> ? ExtractAliasFromStringSelectExpression<RA> : never;
|
|
15
26
|
type ExtractAliasFromStringSelectExpression<SE extends string> = SE extends `${string}.${string}.${string} as ${infer A}` ? A : SE extends `${string}.${string} as ${infer A}` ? A : SE extends `${string} as ${infer A}` ? A : SE extends `${string}.${string}.${infer C}` ? C : SE extends `${string}.${infer C}` ? C : SE;
|
|
16
|
-
type ExtractTypeFromSelectExpression<DB, TB extends keyof DB, SE
|
|
17
|
-
type ExtractTypeFromStringSelectExpression<DB, TB extends keyof DB, SE extends string
|
|
18
|
-
export type AllSelection<DB, TB extends keyof DB> = DrainOuterGeneric<
|
|
27
|
+
type ExtractTypeFromSelectExpression<DB, TB extends keyof DB, SE> = SE extends string ? ExtractTypeFromStringSelectExpression<DB, TB, SE> : SE extends AliasedSelectQueryBuilder<infer O, any> ? O[keyof O] | null : SE extends (eb: any) => AliasedSelectQueryBuilder<infer O, any> ? O[keyof O] | null : SE extends AliasedExpression<infer O, any> ? O : SE extends (eb: any) => AliasedExpression<infer O, any> ? O : SE extends DynamicReferenceBuilder<infer RA> ? ExtractTypeFromStringSelectExpression<DB, TB, RA> | undefined : never;
|
|
28
|
+
type ExtractTypeFromStringSelectExpression<DB, TB extends keyof DB, SE extends string> = SE extends `${infer SC}.${infer T}.${infer C} as ${string}` ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : SE extends `${infer T}.${infer C} as ${string}` ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : SE extends `${infer C} as ${string}` ? C extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, C> : never : SE extends `${infer SC}.${infer T}.${infer C}` ? `${SC}.${T}` extends TB ? C extends keyof DB[`${SC}.${T}`] ? DB[`${SC}.${T}`][C] : never : never : SE extends `${infer T}.${infer C}` ? T extends TB ? C extends keyof DB[T] ? DB[T][C] : never : never : SE extends AnyColumn<DB, TB> ? ExtractColumnType<DB, TB, SE> : never;
|
|
29
|
+
export type AllSelection<DB, TB extends keyof DB> = DrainOuterGeneric<{
|
|
19
30
|
[C in AnyColumn<DB, TB>]: {
|
|
20
|
-
[T in TB]: C extends keyof DB[T] ? DB[T][C] : never
|
|
31
|
+
[T in TB]: SelectType<C extends keyof DB[T] ? DB[T][C] : never>;
|
|
21
32
|
}[TB];
|
|
22
|
-
}
|
|
33
|
+
}>;
|
|
23
34
|
export declare function parseSelectArg(selection: SelectArg<any, any, SelectExpression<any, any>>): SelectionNode[];
|
|
24
35
|
export declare function parseSelectAll(table?: string | string[]): SelectionNode[];
|
|
25
36
|
export {};
|
|
@@ -2,11 +2,11 @@ import { ValueNode } from '../operation-node/value-node.js';
|
|
|
2
2
|
import { ExpressionOrFactory } from './expression-parser.js';
|
|
3
3
|
import { OperationNode } from '../operation-node/operation-node.js';
|
|
4
4
|
import { Expression } from '../expression/expression.js';
|
|
5
|
-
import {
|
|
5
|
+
import { SelectQueryBuilderExpression } from '../query-builder/select-query-builder-expression.js';
|
|
6
6
|
export type ValueExpression<DB, TB extends keyof DB, V> = V | ExpressionOrFactory<DB, TB, V>;
|
|
7
7
|
export type ValueExpressionOrList<DB, TB extends keyof DB, V> = ValueExpression<DB, TB, V> | ReadonlyArray<ValueExpression<DB, TB, V>>;
|
|
8
8
|
export type ExtractTypeFromValueExpressionOrList<VE> = VE extends ReadonlyArray<infer AV> ? ExtractTypeFromValueExpression<AV> : ExtractTypeFromValueExpression<VE>;
|
|
9
|
-
export type ExtractTypeFromValueExpression<VE> = VE extends
|
|
9
|
+
export type ExtractTypeFromValueExpression<VE> = VE extends SelectQueryBuilderExpression<Record<string, infer SV>> ? SV : VE extends Expression<infer V> ? V : VE;
|
|
10
10
|
export declare function parseValueExpressionOrList(arg: ValueExpressionOrList<any, any, unknown>): OperationNode;
|
|
11
11
|
export declare function parseValueExpression(exp: ValueExpression<any, any, unknown>): OperationNode;
|
|
12
12
|
export declare function isSafeImmediateValue(value: unknown): value is number | boolean | null;
|
|
@@ -2,8 +2,8 @@ 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
4
|
import { From, FromTables, TableExpression } from '../parser/table-parser.js';
|
|
5
|
-
import { SelectExpression,
|
|
6
|
-
import { ReturningAllRow, ReturningRow } from '../parser/returning-parser.js';
|
|
5
|
+
import { SelectExpression, SelectCallback } from '../parser/select-parser.js';
|
|
6
|
+
import { ReturningAllRow, ReturningCallbackRow, ReturningRow } from '../parser/returning-parser.js';
|
|
7
7
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
8
8
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
9
9
|
import { DrainOuterGeneric, NarrowPartial, Nullable, ShallowRecord, SimplifyResult, SimplifySingleResult, SqlBool } from '../util/type-utils.js';
|
|
@@ -659,7 +659,9 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
659
659
|
* .executeTakeFirst()
|
|
660
660
|
* ```
|
|
661
661
|
*/
|
|
662
|
-
returning<SE extends SelectExpression<DB, TB>>(
|
|
662
|
+
returning<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): DeleteQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SE>>;
|
|
663
|
+
returning<CB extends SelectCallback<DB, TB>>(callback: CB): DeleteQueryBuilder<DB, TB, ReturningCallbackRow<DB, TB, O, CB>>;
|
|
664
|
+
returning<SE extends SelectExpression<DB, TB>>(selection: SE): DeleteQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SE>>;
|
|
663
665
|
/**
|
|
664
666
|
* Adds `returning *` or `returning table.*` clause to the query.
|
|
665
667
|
*
|
|
@@ -6,7 +6,7 @@ import { ExtractTypeFromReferenceExpression, ReferenceExpression, StringReferenc
|
|
|
6
6
|
import { KyselyTypeError } from '../util/type-error.js';
|
|
7
7
|
import { Equals, IsAny } from '../util/type-utils.js';
|
|
8
8
|
import { AggregateFunctionBuilder } from './aggregate-function-builder.js';
|
|
9
|
-
import {
|
|
9
|
+
import { SelectQueryBuilderExpression } from '../query-builder/select-query-builder-expression.js';
|
|
10
10
|
/**
|
|
11
11
|
* Helpers for type safe SQL function calls.
|
|
12
12
|
*
|
|
@@ -538,7 +538,7 @@ export interface FunctionModule<DB, TB extends keyof DB> {
|
|
|
538
538
|
* ```
|
|
539
539
|
*/
|
|
540
540
|
any<RE extends StringReference<DB, TB>>(expr: RE): Exclude<ExtractTypeFromStringReference<DB, TB, RE>, null> extends ReadonlyArray<infer I> ? ExpressionWrapper<DB, TB, I> : KyselyTypeError<'any(expr) call failed: expr must be an array'>;
|
|
541
|
-
any<T>(subquery:
|
|
541
|
+
any<T>(subquery: SelectQueryBuilderExpression<Record<string, T>>): ExpressionWrapper<DB, TB, T>;
|
|
542
542
|
any<T>(expr: Expression<ReadonlyArray<T>>): ExpressionWrapper<DB, TB, T>;
|
|
543
543
|
}
|
|
544
544
|
export declare function createFunctionModule<DB, TB extends keyof DB>(): FunctionModule<DB, TB>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
2
2
|
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
3
|
-
import { SelectExpression,
|
|
3
|
+
import { SelectExpression, SelectCallback } from '../parser/select-parser.js';
|
|
4
4
|
import { InsertObjectOrList, InsertObjectOrListFactory } from '../parser/insert-values-parser.js';
|
|
5
5
|
import { InsertQueryNode } from '../operation-node/insert-query-node.js';
|
|
6
6
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
@@ -11,7 +11,7 @@ import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
|
11
11
|
import { QueryId } from '../util/query-id.js';
|
|
12
12
|
import { InsertResult } from './insert-result.js';
|
|
13
13
|
import { KyselyPlugin } from '../plugin/kysely-plugin.js';
|
|
14
|
-
import { ReturningRow } from '../parser/returning-parser.js';
|
|
14
|
+
import { ReturningCallbackRow, ReturningRow } from '../parser/returning-parser.js';
|
|
15
15
|
import { NoResultErrorConstructor } from './no-result-error.js';
|
|
16
16
|
import { ExpressionOrFactory } from '../parser/expression-parser.js';
|
|
17
17
|
import { ReturningInterface } from './returning-interface.js';
|
|
@@ -474,7 +474,9 @@ export declare class InsertQueryBuilder<DB, TB extends keyof DB, O> implements R
|
|
|
474
474
|
* .executeTakeFirst()
|
|
475
475
|
* ```
|
|
476
476
|
*/
|
|
477
|
-
returning<SE extends SelectExpression<DB, TB>>(
|
|
477
|
+
returning<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): InsertQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SE>>;
|
|
478
|
+
returning<CB extends SelectCallback<DB, TB>>(callback: CB): InsertQueryBuilder<DB, TB, ReturningCallbackRow<DB, TB, O, CB>>;
|
|
479
|
+
returning<SE extends SelectExpression<DB, TB>>(selection: SE): InsertQueryBuilder<DB, TB, ReturningRow<DB, TB, O, SE>>;
|
|
478
480
|
/**
|
|
479
481
|
* Adds a `returning *` to an insert/update/delete query on databases
|
|
480
482
|
* that support `returning` such as PostgreSQL.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ReturningRow } from '../parser/returning-parser.js';
|
|
2
|
-
import { SelectExpression } from '../parser/select-parser.js';
|
|
1
|
+
import { ReturningCallbackRow, ReturningRow } from '../parser/returning-parser.js';
|
|
2
|
+
import { SelectCallback, SelectExpression } from '../parser/select-parser.js';
|
|
3
3
|
import { Selectable } from '../util/column-type.js';
|
|
4
4
|
export interface ReturningInterface<DB, TB extends keyof DB, O> {
|
|
5
5
|
/**
|
|
@@ -62,6 +62,7 @@ export interface ReturningInterface<DB, TB extends keyof DB, O> {
|
|
|
62
62
|
* ```
|
|
63
63
|
*/
|
|
64
64
|
returning<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): ReturningInterface<DB, TB, ReturningRow<DB, TB, O, SE>>;
|
|
65
|
+
returning<CB extends SelectCallback<DB, TB>>(callback: CB): ReturningInterface<DB, TB, ReturningCallbackRow<DB, TB, O, CB>>;
|
|
65
66
|
returning<SE extends SelectExpression<DB, TB>>(selection: SE): ReturningInterface<DB, TB, ReturningRow<DB, TB, O, SE>>;
|
|
66
67
|
/**
|
|
67
68
|
* Adds a `returning *` to an insert/update/delete query on databases
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { AliasableExpression } from '../expression/expression.js';
|
|
2
|
+
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
3
|
+
export interface SelectQueryBuilderExpression<O> extends AliasableExpression<O> {
|
|
4
|
+
get isSelectQueryBuilder(): true;
|
|
5
|
+
/**
|
|
6
|
+
* Creates the OperationNode that describes how to compile this expression into SQL.
|
|
7
|
+
*
|
|
8
|
+
* If you are creating a custom expression, it's often easiest to use the {@link sql}
|
|
9
|
+
* template tag to build the node:
|
|
10
|
+
*
|
|
11
|
+
* ```ts
|
|
12
|
+
* class SomeExpression<T> implements Expression<T> {
|
|
13
|
+
* toOperationNode(): OperationNode {
|
|
14
|
+
* return sql`some sql here`.toOperationNode()
|
|
15
|
+
* }
|
|
16
|
+
* }
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
toOperationNode(): SelectQueryNode;
|
|
20
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
2
2
|
import { JoinCallbackExpression, JoinReferenceExpression } from '../parser/join-parser.js';
|
|
3
3
|
import { TableExpression } from '../parser/table-parser.js';
|
|
4
|
-
import { SelectExpression, Selection,
|
|
4
|
+
import { SelectExpression, Selection, AllSelection, SelectCallback, CallbackSelection } from '../parser/select-parser.js';
|
|
5
5
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
6
6
|
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
7
7
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
@@ -17,14 +17,15 @@ import { NoResultErrorConstructor } from './no-result-error.js';
|
|
|
17
17
|
import { HavingInterface } from './having-interface.js';
|
|
18
18
|
import { Explainable, ExplainFormat } from '../util/explainable.js';
|
|
19
19
|
import { SetOperandExpression } from '../parser/set-operation-parser.js';
|
|
20
|
-
import {
|
|
20
|
+
import { AliasedExpression, Expression } from '../expression/expression.js';
|
|
21
21
|
import { ComparisonOperatorExpression, OperandValueExpressionOrList } from '../parser/binary-operation-parser.js';
|
|
22
22
|
import { KyselyTypeError } from '../util/type-error.js';
|
|
23
23
|
import { Selectable } from '../util/column-type.js';
|
|
24
24
|
import { Streamable } from '../util/streamable.js';
|
|
25
25
|
import { ExpressionOrFactory } from '../parser/expression-parser.js';
|
|
26
26
|
import { ExpressionWrapper } from '../expression/expression-wrapper.js';
|
|
27
|
-
|
|
27
|
+
import { SelectQueryBuilderExpression } from './select-query-builder-expression.js';
|
|
28
|
+
export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInterface<DB, TB>, HavingInterface<DB, TB>, SelectQueryBuilderExpression<O>, Compilable<O>, Explainable, Streamable<O> {
|
|
28
29
|
/**
|
|
29
30
|
* Adds a `where` expression to the query.
|
|
30
31
|
*
|
|
@@ -575,7 +576,9 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
575
576
|
* persons[0].id
|
|
576
577
|
* ```
|
|
577
578
|
*/
|
|
578
|
-
select<SE extends SelectExpression<DB, TB>>(
|
|
579
|
+
select<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): SelectQueryBuilder<DB, TB, O & Selection<DB, TB, SE>>;
|
|
580
|
+
select<CB extends SelectCallback<DB, TB>>(callback: CB): SelectQueryBuilder<DB, TB, O & CallbackSelection<DB, TB, CB>>;
|
|
581
|
+
select<SE extends SelectExpression<DB, TB>>(selection: SE): SelectQueryBuilder<DB, TB, O & Selection<DB, TB, SE>>;
|
|
579
582
|
/**
|
|
580
583
|
* Adds `distinct on` expressions to the select clause.
|
|
581
584
|
*
|
|
@@ -1356,7 +1359,7 @@ export interface SelectQueryBuilder<DB, TB extends keyof DB, O> extends WhereInt
|
|
|
1356
1359
|
* pets[0].owner_first_name
|
|
1357
1360
|
* ```
|
|
1358
1361
|
*/
|
|
1359
|
-
as<A extends string>(alias: A): AliasedSelectQueryBuilder<
|
|
1362
|
+
as<A extends string>(alias: A): AliasedSelectQueryBuilder<O, A>;
|
|
1360
1363
|
/**
|
|
1361
1364
|
* Clears all select clauses from the query.
|
|
1362
1365
|
*
|
|
@@ -1789,8 +1792,8 @@ export interface SelectQueryBuilderProps {
|
|
|
1789
1792
|
readonly queryNode: SelectQueryNode;
|
|
1790
1793
|
readonly executor: QueryExecutor;
|
|
1791
1794
|
}
|
|
1792
|
-
export interface AliasedSelectQueryBuilder<
|
|
1793
|
-
get
|
|
1795
|
+
export interface AliasedSelectQueryBuilder<O = undefined, A extends string = never> extends AliasedExpression<O, A> {
|
|
1796
|
+
get isAliasedSelectQueryBuilder(): true;
|
|
1794
1797
|
}
|
|
1795
1798
|
export type SelectQueryBuilderWithInnerJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? InnerJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? SelectQueryBuilder<DB, TB | TE, O> : TE extends AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedExpression<infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : never;
|
|
1796
1799
|
type InnerJoinedBuilder<DB, TB extends keyof DB, O, A extends string, R> = A extends keyof DB ? SelectQueryBuilder<InnerJoinedDB<DB, A, R>, TB | A, O> : SelectQueryBuilder<DB & ShallowRecord<A, R>, TB | A, O>;
|
|
@@ -25,6 +25,9 @@ class SelectQueryBuilderImpl {
|
|
|
25
25
|
get expressionType() {
|
|
26
26
|
return undefined;
|
|
27
27
|
}
|
|
28
|
+
get isSelectQueryBuilder() {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
28
31
|
where(...args) {
|
|
29
32
|
return new SelectQueryBuilderImpl({
|
|
30
33
|
...this.#props,
|
|
@@ -339,8 +342,8 @@ class AliasedSelectQueryBuilderImpl {
|
|
|
339
342
|
get alias() {
|
|
340
343
|
return this.#alias;
|
|
341
344
|
}
|
|
342
|
-
get
|
|
343
|
-
return
|
|
345
|
+
get isAliasedSelectQueryBuilder() {
|
|
346
|
+
return true;
|
|
344
347
|
}
|
|
345
348
|
toOperationNode() {
|
|
346
349
|
return AliasNode.create(this.#queryBuilder.toOperationNode(), IdentifierNode.create(this.#alias));
|
|
@@ -2,8 +2,8 @@ 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
4
|
import { TableExpression, From, FromTables } from '../parser/table-parser.js';
|
|
5
|
-
import { SelectExpression,
|
|
6
|
-
import { ReturningRow } from '../parser/returning-parser.js';
|
|
5
|
+
import { SelectExpression, SelectCallback } from '../parser/select-parser.js';
|
|
6
|
+
import { ReturningCallbackRow, ReturningRow } from '../parser/returning-parser.js';
|
|
7
7
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
8
8
|
import { QueryNode } from '../operation-node/query-node.js';
|
|
9
9
|
import { DrainOuterGeneric, NarrowPartial, Nullable, ShallowRecord, SimplifyResult, SimplifySingleResult, SqlBool } from '../util/type-utils.js';
|
|
@@ -741,7 +741,9 @@ export declare class UpdateQueryBuilder<DB, UT extends keyof DB, TB extends keyo
|
|
|
741
741
|
* .executeTakeFirst()
|
|
742
742
|
* ```
|
|
743
743
|
*/
|
|
744
|
-
returning<SE extends SelectExpression<DB, TB>>(
|
|
744
|
+
returning<SE extends SelectExpression<DB, TB>>(selections: ReadonlyArray<SE>): UpdateQueryBuilder<DB, UT, TB, ReturningRow<DB, TB, O, SE>>;
|
|
745
|
+
returning<CB extends SelectCallback<DB, TB>>(callback: CB): UpdateQueryBuilder<DB, UT, TB, ReturningCallbackRow<DB, TB, O, CB>>;
|
|
746
|
+
returning<SE extends SelectExpression<DB, TB>>(selection: SE): UpdateQueryBuilder<DB, UT, TB, ReturningRow<DB, TB, O, SE>>;
|
|
745
747
|
/**
|
|
746
748
|
* Adds a `returning *` to an insert/update/delete query on databases
|
|
747
749
|
* that support `returning` such as PostgreSQL.
|
|
@@ -11,7 +11,7 @@ import { DeleteResult } from './query-builder/delete-result.js';
|
|
|
11
11
|
import { UpdateResult } from './query-builder/update-result.js';
|
|
12
12
|
import { KyselyPlugin } from './plugin/kysely-plugin.js';
|
|
13
13
|
import { CTEBuilderCallback } from './query-builder/cte-builder.js';
|
|
14
|
-
import {
|
|
14
|
+
import { CallbackSelection, SelectCallback, SelectExpression, Selection } from './parser/select-parser.js';
|
|
15
15
|
export declare class QueryCreator<DB> {
|
|
16
16
|
#private;
|
|
17
17
|
constructor(props: QueryCreatorProps);
|
|
@@ -139,7 +139,7 @@ export declare class QueryCreator<DB> {
|
|
|
139
139
|
* ### Examples
|
|
140
140
|
*
|
|
141
141
|
* ```ts
|
|
142
|
-
* const result = db.
|
|
142
|
+
* const result = db.selectNoFrom((eb) => [
|
|
143
143
|
* eb.selectFrom('person')
|
|
144
144
|
* .select('id')
|
|
145
145
|
* .where('first_name', '=', 'Jennifer')
|
|
@@ -174,7 +174,9 @@ export declare class QueryCreator<DB> {
|
|
|
174
174
|
* ) as "doggo_id"
|
|
175
175
|
* ```
|
|
176
176
|
*/
|
|
177
|
-
selectNoFrom<SE extends SelectExpression<DB, never>>(
|
|
177
|
+
selectNoFrom<SE extends SelectExpression<DB, never>>(selections: ReadonlyArray<SE>): SelectQueryBuilder<DB, never, Selection<DB, never, SE>>;
|
|
178
|
+
selectNoFrom<CB extends SelectCallback<DB, never>>(callback: CB): SelectQueryBuilder<DB, never, CallbackSelection<DB, never, CB>>;
|
|
179
|
+
selectNoFrom<SE extends SelectExpression<DB, never>>(selection: SE): SelectQueryBuilder<DB, never, Selection<DB, never, SE>>;
|
|
178
180
|
/**
|
|
179
181
|
* Creates an insert query.
|
|
180
182
|
*
|
|
@@ -26,53 +26,6 @@ export class QueryCreator {
|
|
|
26
26
|
queryNode: SelectQueryNode.createFrom(parseTableExpressionOrList(from), this.#props.withNode),
|
|
27
27
|
});
|
|
28
28
|
}
|
|
29
|
-
/**
|
|
30
|
-
* Creates a `select` query builder without a `from` clause.
|
|
31
|
-
*
|
|
32
|
-
* If you want to create a `select from` query, use the `selectFrom` method instead.
|
|
33
|
-
* This one can be used to create a plain `select` statement without a `from` clause.
|
|
34
|
-
*
|
|
35
|
-
* This method accepts the same inputs as {@link SelectQueryBuilder.select}. See its
|
|
36
|
-
* documentation for more examples.
|
|
37
|
-
*
|
|
38
|
-
* ### Examples
|
|
39
|
-
*
|
|
40
|
-
* ```ts
|
|
41
|
-
* const result = db.select((eb) => [
|
|
42
|
-
* eb.selectFrom('person')
|
|
43
|
-
* .select('id')
|
|
44
|
-
* .where('first_name', '=', 'Jennifer')
|
|
45
|
-
* .limit(1)
|
|
46
|
-
* .as('jennifer_id'),
|
|
47
|
-
*
|
|
48
|
-
* eb.selectFrom('pet')
|
|
49
|
-
* .select('id')
|
|
50
|
-
* .where('name', '=', 'Doggo')
|
|
51
|
-
* .limit(1)
|
|
52
|
-
* .as('doggo_id')
|
|
53
|
-
* ])
|
|
54
|
-
* .executeTakeFirstOrThrow()
|
|
55
|
-
*
|
|
56
|
-
* console.log(result.jennifer_id)
|
|
57
|
-
* console.log(result.doggo_id)
|
|
58
|
-
* ```
|
|
59
|
-
*
|
|
60
|
-
* The generated SQL (PostgreSQL):
|
|
61
|
-
*
|
|
62
|
-
* ```sql
|
|
63
|
-
* select (
|
|
64
|
-
* select "id"
|
|
65
|
-
* from "person"
|
|
66
|
-
* where "first_name" = $1
|
|
67
|
-
* limit $2
|
|
68
|
-
* ) as "jennifer_id", (
|
|
69
|
-
* select "id"
|
|
70
|
-
* from "pet"
|
|
71
|
-
* where "name" = $3
|
|
72
|
-
* limit $4
|
|
73
|
-
* ) as "doggo_id"
|
|
74
|
-
* ```
|
|
75
|
-
*/
|
|
76
29
|
selectNoFrom(selection) {
|
|
77
30
|
return createSelectQueryBuilder({
|
|
78
31
|
queryId: createQueryId(),
|
|
@@ -12,9 +12,6 @@ import { AliasableExpression, AliasedExpression, Expression } from '../expressio
|
|
|
12
12
|
* use the {@link sql} template tag.
|
|
13
13
|
*/
|
|
14
14
|
export interface RawBuilder<O> extends AliasableExpression<O> {
|
|
15
|
-
/**
|
|
16
|
-
* @private Without this SelectQueryBuilder extends RawBuilder and things break.
|
|
17
|
-
*/
|
|
18
15
|
get isRawBuilder(): true;
|
|
19
16
|
/**
|
|
20
17
|
* Returns an aliased version of the SQL expression.
|
|
@@ -4,8 +4,8 @@ import { Compilable } from '../util/compilable.js';
|
|
|
4
4
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
5
5
|
import { QueryId } from '../util/query-id.js';
|
|
6
6
|
import { CreateViewNode } from '../operation-node/create-view-node.js';
|
|
7
|
-
import { AnySelectQueryBuilder } from '../util/type-utils.js';
|
|
8
7
|
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
8
|
+
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
9
9
|
export declare class CreateViewBuilder implements OperationNodeSource, Compilable {
|
|
10
10
|
#private;
|
|
11
11
|
constructor(props: CreateViewBuilderProps);
|
|
@@ -31,7 +31,7 @@ export declare class CreateViewBuilder implements OperationNodeSource, Compilabl
|
|
|
31
31
|
* string opening an SQL injection vulnerability. DO NOT pass unchecked user input
|
|
32
32
|
* into the query or raw expression passed to this method!
|
|
33
33
|
*/
|
|
34
|
-
as(query:
|
|
34
|
+
as(query: SelectQueryBuilder<any, any, any> | RawBuilder<any>): CreateViewBuilder;
|
|
35
35
|
/**
|
|
36
36
|
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
37
37
|
* what the provided function returns.
|
|
@@ -3,6 +3,7 @@ import { InsertResult } from '../query-builder/insert-result.js';
|
|
|
3
3
|
import { UpdateResult } from '../query-builder/update-result.js';
|
|
4
4
|
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
5
5
|
import { Compilable } from './compilable.js';
|
|
6
|
+
import { Simplify } from './type-utils.js';
|
|
6
7
|
/**
|
|
7
8
|
* A helper type that allows inferring a select/insert/update/delete query's result
|
|
8
9
|
* type from a query builder or compiled query.
|
|
@@ -42,5 +43,5 @@ import { Compilable } from './compilable.js';
|
|
|
42
43
|
* ```
|
|
43
44
|
*/
|
|
44
45
|
export type InferResult<C extends Compilable<any> | CompiledQuery<any>> = C extends Compilable<infer O> ? ResolveResult<O> : C extends CompiledQuery<infer O> ? ResolveResult<O> : never;
|
|
45
|
-
type ResolveResult<O> = O extends InsertResult | UpdateResult | DeleteResult ? O : O[];
|
|
46
|
+
type ResolveResult<O> = O extends InsertResult | UpdateResult | DeleteResult ? O : Simplify<O>[];
|
|
46
47
|
export {};
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
2
1
|
import { InsertResult } from '../query-builder/insert-result.js';
|
|
3
2
|
import { DeleteResult } from '../query-builder/delete-result.js';
|
|
4
3
|
import { UpdateResult } from '../query-builder/update-result.js';
|
|
@@ -34,15 +33,19 @@ import { KyselyTypeError } from './type-error.js';
|
|
|
34
33
|
* // Columns == 'id' | 'name' | 'species'
|
|
35
34
|
* ```
|
|
36
35
|
*/
|
|
37
|
-
export type AnyColumn<DB, TB extends keyof DB> =
|
|
36
|
+
export type AnyColumn<DB, TB extends keyof DB> = [
|
|
37
|
+
DB
|
|
38
|
+
] extends [unknown] ? {
|
|
38
39
|
[T in TB]: keyof DB[T];
|
|
39
|
-
}[TB] & string
|
|
40
|
+
}[TB] & string : never;
|
|
40
41
|
/**
|
|
41
42
|
* Extracts a column type.
|
|
42
43
|
*/
|
|
43
|
-
export type ExtractColumnType<DB, TB extends keyof DB, C> =
|
|
44
|
+
export type ExtractColumnType<DB, TB extends keyof DB, C> = [
|
|
45
|
+
DB
|
|
46
|
+
] extends [unknown] ? {
|
|
44
47
|
[T in TB]: C extends keyof DB[T] ? DB[T][C] : never;
|
|
45
|
-
}[TB]
|
|
48
|
+
}[TB] : never;
|
|
46
49
|
/**
|
|
47
50
|
* Given a database type and a union of table names in that db, returns
|
|
48
51
|
* a union type with all possible `table`.`column` combinations.
|
|
@@ -93,10 +96,6 @@ export type AnyAliasedColumnWithTable<DB, TB extends keyof DB> = DrainOuterGener
|
|
|
93
96
|
* Extracts the item type of an array.
|
|
94
97
|
*/
|
|
95
98
|
export type ArrayItemType<T> = T extends ReadonlyArray<infer I> ? I : never;
|
|
96
|
-
/**
|
|
97
|
-
* Any select query builder.
|
|
98
|
-
*/
|
|
99
|
-
export type AnySelectQueryBuilder = SelectQueryBuilder<any, any, any>;
|
|
100
99
|
export type SimplifySingleResult<O> = O extends InsertResult ? O : O extends DeleteResult ? O : O extends UpdateResult ? O : Simplify<O> | undefined;
|
|
101
100
|
export type SimplifyResult<O> = O extends InsertResult ? O : O extends DeleteResult ? O : O extends UpdateResult ? O : Simplify<O>;
|
|
102
101
|
export type Simplify<T> = DrainOuterGeneric<{
|