kysely 0.16.9 → 0.17.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +2 -2
- package/dist/cjs/dialect/mysql/mysql-adapter.js +3 -4
- package/dist/cjs/dialect/mysql/mysql-introspector.js +2 -1
- package/dist/cjs/dialect/postgres/postgres-adapter.js +3 -2
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +2 -1
- package/dist/cjs/driver/connection-provider.d.ts +1 -1
- package/dist/cjs/driver/default-connection-provider.d.ts +1 -1
- package/dist/cjs/driver/default-connection-provider.js +1 -1
- package/dist/cjs/driver/single-connection-provider.d.ts +1 -1
- package/dist/cjs/driver/single-connection-provider.js +1 -1
- package/dist/cjs/index-nodeless.d.ts +2 -0
- package/dist/cjs/index-nodeless.js +2 -0
- package/dist/cjs/kysely.d.ts +3 -6
- package/dist/cjs/kysely.js +30 -41
- package/dist/cjs/migration/migrator.js +4 -4
- package/dist/cjs/operation-node/delete-query-node.d.ts +7 -0
- package/dist/cjs/operation-node/delete-query-node.js +15 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +1 -1
- package/dist/cjs/operation-node/raw-node.d.ts +4 -2
- package/dist/cjs/operation-node/raw-node.js +8 -2
- package/dist/cjs/parser/complex-expression-parser.d.ts +5 -5
- package/dist/cjs/parser/complex-expression-parser.js +5 -4
- package/dist/cjs/parser/filter-parser.d.ts +9 -9
- package/dist/cjs/parser/filter-parser.js +31 -30
- package/dist/cjs/parser/group-by-parser.d.ts +1 -2
- package/dist/cjs/parser/group-by-parser.js +2 -2
- package/dist/cjs/parser/insert-values-parser.d.ts +1 -2
- package/dist/cjs/parser/insert-values-parser.js +6 -6
- package/dist/cjs/parser/join-parser.d.ts +1 -2
- package/dist/cjs/parser/join-parser.js +8 -7
- package/dist/cjs/parser/order-by-parser.d.ts +1 -2
- package/dist/cjs/parser/order-by-parser.js +4 -4
- package/dist/cjs/parser/parse-utils.d.ts +10 -0
- package/dist/cjs/parser/parse-utils.js +38 -0
- package/dist/cjs/parser/reference-parser.d.ts +2 -3
- package/dist/cjs/parser/reference-parser.js +5 -5
- package/dist/cjs/parser/select-parser.d.ts +1 -2
- package/dist/cjs/parser/select-parser.js +5 -5
- package/dist/cjs/parser/table-parser.d.ts +2 -3
- package/dist/cjs/parser/table-parser.js +5 -5
- package/dist/cjs/parser/update-set-parser.d.ts +1 -2
- package/dist/cjs/parser/update-set-parser.js +2 -2
- package/dist/cjs/parser/value-parser.d.ts +3 -4
- package/dist/cjs/parser/value-parser.js +7 -7
- package/dist/cjs/parser/with-parser.d.ts +1 -2
- package/dist/cjs/parser/with-parser.js +3 -2
- package/dist/cjs/query-builder/delete-query-builder.d.ts +77 -20
- package/dist/cjs/query-builder/delete-query-builder.js +81 -14
- package/dist/cjs/query-builder/expression-builder.d.ts +4 -13
- package/dist/cjs/query-builder/expression-builder.js +12 -21
- package/dist/cjs/query-builder/function-builder.d.ts +2 -6
- package/dist/cjs/query-builder/function-builder.js +5 -8
- package/dist/cjs/query-builder/insert-query-builder.d.ts +11 -9
- package/dist/cjs/query-builder/insert-query-builder.js +8 -7
- package/dist/cjs/query-builder/join-builder.d.ts +0 -2
- package/dist/cjs/query-builder/join-builder.js +8 -8
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +24 -20
- package/dist/cjs/query-builder/on-conflict-builder.js +17 -17
- package/dist/cjs/query-builder/returning-interface.d.ts +2 -2
- package/dist/cjs/query-builder/select-query-builder.d.ts +43 -32
- package/dist/cjs/query-builder/select-query-builder.js +28 -26
- package/dist/cjs/query-builder/update-query-builder.d.ts +29 -25
- package/dist/cjs/query-builder/update-query-builder.js +22 -20
- package/dist/cjs/query-builder/where-interface.d.ts +20 -16
- package/dist/cjs/query-compiler/default-query-compiler.js +16 -7
- package/dist/cjs/query-creator.d.ts +24 -138
- package/dist/cjs/query-creator.js +19 -145
- package/dist/cjs/query-executor/default-query-executor.d.ts +14 -3
- package/dist/cjs/query-executor/default-query-executor.js +15 -17
- package/dist/cjs/query-executor/noop-query-executor.d.ts +13 -2
- package/dist/cjs/query-executor/noop-query-executor.js +9 -2
- package/dist/cjs/query-executor/query-executor-provider.d.ts +8 -0
- package/dist/cjs/query-executor/query-executor-provider.js +2 -0
- package/dist/cjs/query-executor/query-executor.d.ts +14 -6
- package/dist/cjs/query-executor/query-executor.js +4 -2
- package/dist/cjs/raw-builder/raw-builder.d.ts +42 -11
- package/dist/cjs/raw-builder/raw-builder.js +55 -56
- package/dist/cjs/raw-builder/sql.d.ts +323 -0
- package/dist/cjs/raw-builder/sql.js +153 -0
- package/dist/cjs/schema/alter-table-builder.d.ts +20 -8
- package/dist/cjs/schema/alter-table-builder.js +3 -3
- package/dist/cjs/schema/column-definition-builder.d.ts +20 -8
- package/dist/cjs/schema/create-index-builder.d.ts +3 -1
- package/dist/cjs/schema/create-index-builder.js +3 -1
- package/dist/cjs/schema/create-table-builder.d.ts +6 -2
- package/dist/cjs/schema/create-table-builder.js +8 -4
- package/dist/cjs/schema/create-view-builder.d.ts +3 -3
- package/dist/cjs/schema/create-view-builder.js +3 -3
- package/dist/cjs/util/query-id.js +10 -4
- package/dist/cjs/util/random-string.js +65 -2
- package/dist/esm/dialect/mysql/mysql-adapter.js +3 -4
- package/dist/esm/dialect/mysql/mysql-introspector.js +2 -1
- package/dist/esm/dialect/postgres/postgres-adapter.js +3 -2
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +2 -1
- package/dist/esm/driver/connection-provider.d.ts +1 -1
- package/dist/esm/driver/default-connection-provider.d.ts +1 -1
- package/dist/esm/driver/default-connection-provider.js +1 -1
- package/dist/esm/driver/single-connection-provider.d.ts +1 -1
- package/dist/esm/driver/single-connection-provider.js +1 -1
- package/dist/esm/index-nodeless.d.ts +2 -0
- package/dist/esm/index-nodeless.js +2 -0
- package/dist/esm/kysely.d.ts +3 -6
- package/dist/esm/kysely.js +30 -41
- package/dist/esm/migration/migrator.js +4 -4
- package/dist/esm/operation-node/delete-query-node.d.ts +7 -0
- package/dist/esm/operation-node/delete-query-node.js +15 -0
- package/dist/esm/operation-node/operation-node-transformer.js +1 -1
- package/dist/esm/operation-node/raw-node.d.ts +4 -2
- package/dist/esm/operation-node/raw-node.js +8 -2
- package/dist/esm/parser/complex-expression-parser.d.ts +5 -5
- package/dist/esm/parser/complex-expression-parser.js +5 -4
- package/dist/esm/parser/filter-parser.d.ts +9 -9
- package/dist/esm/parser/filter-parser.js +31 -30
- package/dist/esm/parser/group-by-parser.d.ts +1 -2
- package/dist/esm/parser/group-by-parser.js +2 -2
- package/dist/esm/parser/insert-values-parser.d.ts +1 -2
- package/dist/esm/parser/insert-values-parser.js +6 -6
- package/dist/esm/parser/join-parser.d.ts +1 -2
- package/dist/esm/parser/join-parser.js +8 -7
- package/dist/esm/parser/order-by-parser.d.ts +1 -2
- package/dist/esm/parser/order-by-parser.js +4 -4
- package/dist/esm/parser/parse-utils.d.ts +10 -0
- package/dist/esm/parser/parse-utils.js +32 -0
- package/dist/esm/parser/reference-parser.d.ts +2 -3
- package/dist/esm/parser/reference-parser.js +5 -5
- package/dist/esm/parser/select-parser.d.ts +1 -2
- package/dist/esm/parser/select-parser.js +5 -5
- package/dist/esm/parser/table-parser.d.ts +2 -3
- package/dist/esm/parser/table-parser.js +5 -5
- package/dist/esm/parser/update-set-parser.d.ts +1 -2
- package/dist/esm/parser/update-set-parser.js +2 -2
- package/dist/esm/parser/value-parser.d.ts +3 -4
- package/dist/esm/parser/value-parser.js +7 -7
- package/dist/esm/parser/with-parser.d.ts +1 -2
- package/dist/esm/parser/with-parser.js +3 -2
- package/dist/esm/query-builder/delete-query-builder.d.ts +77 -20
- package/dist/esm/query-builder/delete-query-builder.js +81 -14
- package/dist/esm/query-builder/expression-builder.d.ts +4 -13
- package/dist/esm/query-builder/expression-builder.js +12 -21
- package/dist/esm/query-builder/function-builder.d.ts +2 -6
- package/dist/esm/query-builder/function-builder.js +5 -8
- package/dist/esm/query-builder/insert-query-builder.d.ts +11 -9
- package/dist/esm/query-builder/insert-query-builder.js +8 -7
- package/dist/esm/query-builder/join-builder.d.ts +0 -2
- package/dist/esm/query-builder/join-builder.js +8 -8
- package/dist/esm/query-builder/on-conflict-builder.d.ts +24 -20
- package/dist/esm/query-builder/on-conflict-builder.js +17 -17
- package/dist/esm/query-builder/returning-interface.d.ts +2 -2
- package/dist/esm/query-builder/select-query-builder.d.ts +43 -32
- package/dist/esm/query-builder/select-query-builder.js +28 -26
- package/dist/esm/query-builder/update-query-builder.d.ts +29 -25
- package/dist/esm/query-builder/update-query-builder.js +22 -20
- package/dist/esm/query-builder/where-interface.d.ts +20 -16
- package/dist/esm/query-compiler/default-query-compiler.js +16 -7
- package/dist/esm/query-creator.d.ts +24 -138
- package/dist/esm/query-creator.js +19 -145
- package/dist/esm/query-executor/default-query-executor.d.ts +14 -3
- package/dist/esm/query-executor/default-query-executor.js +15 -17
- package/dist/esm/query-executor/noop-query-executor.d.ts +13 -2
- package/dist/esm/query-executor/noop-query-executor.js +8 -1
- package/dist/esm/query-executor/query-executor-provider.d.ts +8 -0
- package/dist/esm/query-executor/query-executor-provider.js +2 -0
- package/dist/esm/query-executor/query-executor.d.ts +14 -6
- package/dist/esm/query-executor/query-executor.js +4 -2
- package/dist/esm/raw-builder/raw-builder.d.ts +42 -11
- package/dist/esm/raw-builder/raw-builder.js +56 -57
- package/dist/esm/raw-builder/sql.d.ts +323 -0
- package/dist/esm/raw-builder/sql.js +151 -0
- package/dist/esm/schema/alter-table-builder.d.ts +20 -8
- package/dist/esm/schema/alter-table-builder.js +3 -3
- package/dist/esm/schema/column-definition-builder.d.ts +20 -8
- package/dist/esm/schema/create-index-builder.d.ts +3 -1
- package/dist/esm/schema/create-index-builder.js +3 -1
- package/dist/esm/schema/create-table-builder.d.ts +6 -2
- package/dist/esm/schema/create-table-builder.js +8 -4
- package/dist/esm/schema/create-view-builder.d.ts +3 -3
- package/dist/esm/schema/create-view-builder.js +3 -3
- package/dist/esm/util/query-id.js +10 -4
- package/dist/esm/util/random-string.js +65 -2
- package/package.json +13 -13
- package/dist/cjs/parser/parse-context.d.ts +0 -55
- package/dist/cjs/parser/parse-context.js +0 -50
- package/dist/cjs/util/private-symbols.d.ts +0 -5
- package/dist/cjs/util/private-symbols.js +0 -8
- package/dist/esm/parser/parse-context.d.ts +0 -55
- package/dist/esm/parser/parse-context.js +0 -47
- package/dist/esm/util/private-symbols.d.ts +0 -5
- package/dist/esm/util/private-symbols.js +0 -6
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/// <reference types="./parse-utils.d.ts" />
|
|
2
|
+
import { JoinNode } from '../operation-node/join-node.js';
|
|
3
|
+
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
4
|
+
import { ExpressionBuilder } from '../query-builder/expression-builder.js';
|
|
5
|
+
import { JoinBuilder } from '../query-builder/join-builder.js';
|
|
6
|
+
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
7
|
+
import { QueryCreator } from '../query-creator.js';
|
|
8
|
+
import { NOOP_QUERY_EXECUTOR } from '../query-executor/noop-query-executor.js';
|
|
9
|
+
import { createQueryId } from '../util/query-id.js';
|
|
10
|
+
import { parseTableExpression, parseTableExpressionOrList, } from './table-parser.js';
|
|
11
|
+
export function createSelectQueryBuilder() {
|
|
12
|
+
return new SelectQueryBuilder({
|
|
13
|
+
queryId: createQueryId(),
|
|
14
|
+
executor: NOOP_QUERY_EXECUTOR,
|
|
15
|
+
queryNode: SelectQueryNode.create(parseTableExpressionOrList([])),
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
export function createExpressionBuilder() {
|
|
19
|
+
return new ExpressionBuilder({
|
|
20
|
+
executor: NOOP_QUERY_EXECUTOR,
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
export function createQueryCreator() {
|
|
24
|
+
return new QueryCreator({
|
|
25
|
+
executor: NOOP_QUERY_EXECUTOR,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
export function createJoinBuilder(joinType, table) {
|
|
29
|
+
return new JoinBuilder({
|
|
30
|
+
joinNode: JoinNode.create(joinType, parseTableExpression(table)),
|
|
31
|
+
});
|
|
32
|
+
}
|
|
@@ -5,7 +5,6 @@ import { ReferenceNode } from '../operation-node/reference-node.js';
|
|
|
5
5
|
import { AnyColumn, AnyColumnWithTable, ExtractColumnType, ValueType } from '../util/type-utils.js';
|
|
6
6
|
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
7
7
|
import { SelectQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
8
|
-
import { ParseContext } from './parse-context.js';
|
|
9
8
|
import { ComplexExpression } from './complex-expression-parser.js';
|
|
10
9
|
import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
|
|
11
10
|
import { SelectType } from '../util/column-type.js';
|
|
@@ -14,8 +13,8 @@ export declare type ReferenceExpressionOrList<DB, TB extends keyof DB> = Referen
|
|
|
14
13
|
export declare type StringReference<DB, TB extends keyof DB> = AnyColumn<DB, TB> | AnyColumnWithTable<DB, TB>;
|
|
15
14
|
export declare type ExtractTypeFromReferenceExpression<DB, TB extends keyof DB, RE> = RE extends string ? SelectType<ExtractTypeFromStringReference<DB, TB, RE>> : RE extends RawBuilder<infer O> ? O : RE extends (qb: any) => RawBuilder<infer O> ? O : RE extends SelectQueryBuilder<any, any, infer O> ? ValueType<O> : RE extends (qb: any) => SelectQueryBuilder<any, any, infer O> ? ValueType<O> : unknown;
|
|
16
15
|
declare type ExtractTypeFromStringReference<DB, TB extends keyof DB, RE extends string> = 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> : unknown;
|
|
17
|
-
export declare function parseReferenceExpressionOrList(
|
|
18
|
-
export declare function parseReferenceExpression(
|
|
16
|
+
export declare function parseReferenceExpressionOrList(arg: ReferenceExpressionOrList<any, any>): ReferenceExpressionNode[];
|
|
17
|
+
export declare function parseReferenceExpression(exp: ReferenceExpression<any, any>): ReferenceExpressionNode;
|
|
19
18
|
export declare function parseStringReference(ref: string): ColumnNode | ReferenceNode;
|
|
20
19
|
export declare function parseAliasedStringReference(ref: string): ColumnNode | ReferenceNode | AliasNode;
|
|
21
20
|
export declare function parseColumnName(column: AnyColumn<any, any>): ColumnNode;
|
|
@@ -6,22 +6,22 @@ import { TableNode } from '../operation-node/table-node.js';
|
|
|
6
6
|
import { isReadonlyArray, isString } from '../util/object-utils.js';
|
|
7
7
|
import { parseComplexExpression, } from './complex-expression-parser.js';
|
|
8
8
|
import { isDynamicReferenceBuilder, } from '../dynamic/dynamic-reference-builder.js';
|
|
9
|
-
export function parseReferenceExpressionOrList(
|
|
9
|
+
export function parseReferenceExpressionOrList(arg) {
|
|
10
10
|
if (isReadonlyArray(arg)) {
|
|
11
|
-
return arg.map((it) => parseReferenceExpression(
|
|
11
|
+
return arg.map((it) => parseReferenceExpression(it));
|
|
12
12
|
}
|
|
13
13
|
else {
|
|
14
|
-
return [parseReferenceExpression(
|
|
14
|
+
return [parseReferenceExpression(arg)];
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
-
export function parseReferenceExpression(
|
|
17
|
+
export function parseReferenceExpression(exp) {
|
|
18
18
|
if (isString(exp)) {
|
|
19
19
|
return parseStringReference(exp);
|
|
20
20
|
}
|
|
21
21
|
else if (isDynamicReferenceBuilder(exp)) {
|
|
22
22
|
return exp.toOperationNode();
|
|
23
23
|
}
|
|
24
|
-
return parseComplexExpression(
|
|
24
|
+
return parseComplexExpression(exp);
|
|
25
25
|
}
|
|
26
26
|
export function parseStringReference(ref) {
|
|
27
27
|
const COLUMN_SEPARATOR = '.';
|
|
@@ -3,7 +3,6 @@ import { AliasedQueryBuilder, SelectQueryBuilder } from '../query-builder/select
|
|
|
3
3
|
import { SelectionNode } from '../operation-node/selection-node.js';
|
|
4
4
|
import { AnyAliasedColumn, AnyAliasedColumnWithTable, AnyColumn, AnyColumnWithTable, ExtractColumnType, ValueType } from '../util/type-utils.js';
|
|
5
5
|
import { DynamicReferenceBuilder } from '../dynamic/dynamic-reference-builder.js';
|
|
6
|
-
import { ParseContext } from './parse-context.js';
|
|
7
6
|
import { AliasedComplexExpression } from './complex-expression-parser.js';
|
|
8
7
|
import { Selectable, SelectType } from '../util/column-type.js';
|
|
9
8
|
export declare type SelectExpression<DB, TB extends keyof DB> = AnyAliasedColumnWithTable<DB, TB> | AnyAliasedColumn<DB, TB> | AnyColumnWithTable<DB, TB> | AnyColumn<DB, TB> | DynamicReferenceBuilder<any> | AliasedComplexExpression<DB, TB>;
|
|
@@ -29,6 +28,6 @@ declare type AllSelection<DB, TB extends keyof DB> = Selectable<{
|
|
|
29
28
|
[T in TB]: C extends keyof DB[T] ? DB[T][C] : never;
|
|
30
29
|
}[TB];
|
|
31
30
|
}>;
|
|
32
|
-
export declare function parseSelectExpressionOrList(
|
|
31
|
+
export declare function parseSelectExpressionOrList(selection: SelectExpressionOrList<any, any>): SelectionNode[];
|
|
33
32
|
export declare function parseSelectAll(table?: string | string[]): SelectionNode[];
|
|
34
33
|
export {};
|
|
@@ -4,15 +4,15 @@ import { SelectionNode } from '../operation-node/selection-node.js';
|
|
|
4
4
|
import { parseAliasedStringReference } from './reference-parser.js';
|
|
5
5
|
import { isDynamicReferenceBuilder, } from '../dynamic/dynamic-reference-builder.js';
|
|
6
6
|
import { parseAliasedComplexExpression, } from './complex-expression-parser.js';
|
|
7
|
-
export function parseSelectExpressionOrList(
|
|
7
|
+
export function parseSelectExpressionOrList(selection) {
|
|
8
8
|
if (isReadonlyArray(selection)) {
|
|
9
|
-
return selection.map((it) => parseSelectExpression(
|
|
9
|
+
return selection.map((it) => parseSelectExpression(it));
|
|
10
10
|
}
|
|
11
11
|
else {
|
|
12
|
-
return [parseSelectExpression(
|
|
12
|
+
return [parseSelectExpression(selection)];
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
|
-
function parseSelectExpression(
|
|
15
|
+
function parseSelectExpression(selection) {
|
|
16
16
|
if (isString(selection)) {
|
|
17
17
|
return SelectionNode.create(parseAliasedStringReference(selection));
|
|
18
18
|
}
|
|
@@ -20,7 +20,7 @@ function parseSelectExpression(ctx, selection) {
|
|
|
20
20
|
return SelectionNode.create(selection.toOperationNode());
|
|
21
21
|
}
|
|
22
22
|
else {
|
|
23
|
-
return SelectionNode.create(parseAliasedComplexExpression(
|
|
23
|
+
return SelectionNode.create(parseAliasedComplexExpression(selection));
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
export function parseSelectAll(table) {
|
|
@@ -3,7 +3,6 @@ import { TableNode } from '../operation-node/table-node.js';
|
|
|
3
3
|
import { AnyAliasedRawBuilder, Nullable } from '../util/type-utils.js';
|
|
4
4
|
import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
|
|
5
5
|
import { TableExpressionNode } from '../operation-node/operation-node-utils.js';
|
|
6
|
-
import { ParseContext } from './parse-context.js';
|
|
7
6
|
import { AliasedComplexExpression } from './complex-expression-parser.js';
|
|
8
7
|
export declare type TableExpression<DB, TB extends keyof DB> = TableReference<DB> | AliasedComplexExpression<DB, TB>;
|
|
9
8
|
export declare type TableExpressionOrList<DB, TB extends keyof DB> = TableExpression<DB, TB> | ReadonlyArray<TableExpression<DB, TB>>;
|
|
@@ -25,8 +24,8 @@ export declare type TableExpressionTables<DB, TB extends keyof DB, TE> = TB | Ex
|
|
|
25
24
|
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;
|
|
26
25
|
declare type AnyAliasedTable<DB> = `${AnyTable<DB>} as ${string}`;
|
|
27
26
|
declare type AnyTable<DB> = keyof DB & string;
|
|
28
|
-
export declare function parseTableExpressionOrList(
|
|
29
|
-
export declare function parseTableExpression(
|
|
27
|
+
export declare function parseTableExpressionOrList(table: TableExpressionOrList<any, any>): TableExpressionNode[];
|
|
28
|
+
export declare function parseTableExpression(table: TableExpression<any, any>): TableExpressionNode;
|
|
30
29
|
export declare function parseAliasedTable(from: string): TableExpressionNode;
|
|
31
30
|
export declare function parseTable(from: string): TableNode;
|
|
32
31
|
export {};
|
|
@@ -3,20 +3,20 @@ import { isReadonlyArray, isString } from '../util/object-utils.js';
|
|
|
3
3
|
import { AliasNode } from '../operation-node/alias-node.js';
|
|
4
4
|
import { TableNode } from '../operation-node/table-node.js';
|
|
5
5
|
import { parseAliasedComplexExpression, } from './complex-expression-parser.js';
|
|
6
|
-
export function parseTableExpressionOrList(
|
|
6
|
+
export function parseTableExpressionOrList(table) {
|
|
7
7
|
if (isReadonlyArray(table)) {
|
|
8
|
-
return table.map((it) => parseTableExpression(
|
|
8
|
+
return table.map((it) => parseTableExpression(it));
|
|
9
9
|
}
|
|
10
10
|
else {
|
|
11
|
-
return [parseTableExpression(
|
|
11
|
+
return [parseTableExpression(table)];
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
|
-
export function parseTableExpression(
|
|
14
|
+
export function parseTableExpression(table) {
|
|
15
15
|
if (isString(table)) {
|
|
16
16
|
return parseAliasedTable(table);
|
|
17
17
|
}
|
|
18
18
|
else {
|
|
19
|
-
return parseAliasedComplexExpression(
|
|
19
|
+
return parseAliasedComplexExpression(table);
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
22
|
export function parseAliasedTable(from) {
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { ColumnUpdateNode } from '../operation-node/column-update-node.js';
|
|
2
2
|
import { UpdateKeys, UpdateType } from '../util/column-type.js';
|
|
3
|
-
import { ParseContext } from './parse-context.js';
|
|
4
3
|
import { ValueExpression } from './value-parser.js';
|
|
5
4
|
export declare type MutationObject<DB, TB extends keyof DB> = {
|
|
6
5
|
[C in UpdateKeys<DB[TB]>]?: ValueExpression<DB, TB, UpdateType<DB[TB][C]>>;
|
|
7
6
|
};
|
|
8
|
-
export declare function parseUpdateObject(
|
|
7
|
+
export declare function parseUpdateObject(row: MutationObject<any, any>): ReadonlyArray<ColumnUpdateNode>;
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
import { ColumnNode } from '../operation-node/column-node.js';
|
|
3
3
|
import { ColumnUpdateNode } from '../operation-node/column-update-node.js';
|
|
4
4
|
import { parseValueExpression } from './value-parser.js';
|
|
5
|
-
export function parseUpdateObject(
|
|
5
|
+
export function parseUpdateObject(row) {
|
|
6
6
|
return Object.entries(row)
|
|
7
7
|
.filter(([_, value]) => value !== undefined)
|
|
8
8
|
.map(([key, value]) => {
|
|
9
|
-
return ColumnUpdateNode.create(ColumnNode.create(key), parseValueExpression(
|
|
9
|
+
return ColumnUpdateNode.create(ColumnNode.create(key), parseValueExpression(value));
|
|
10
10
|
});
|
|
11
11
|
}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { ValueExpressionNode } from '../operation-node/operation-node-utils.js';
|
|
2
2
|
import { ValueNode } from '../operation-node/value-node.js';
|
|
3
|
-
import { ParseContext } from './parse-context.js';
|
|
4
3
|
import { SelectQueryNode } from '../operation-node/select-query-node.js';
|
|
5
4
|
import { RawNode } from '../operation-node/raw-node.js';
|
|
6
5
|
import { ComplexExpression } from './complex-expression-parser.js';
|
|
7
|
-
export declare type ValueExpression<DB, TB extends keyof DB, V> = V | ComplexExpression<DB, TB>;
|
|
6
|
+
export declare type ValueExpression<DB, TB extends keyof DB, V> = V | ComplexExpression<DB, TB, V>;
|
|
8
7
|
export declare type ValueExpressionOrList<DB, TB extends keyof DB, V> = ValueExpression<DB, TB, V> | ReadonlyArray<ValueExpression<DB, TB, V>>;
|
|
9
|
-
export declare function parseValueExpressionOrList(
|
|
10
|
-
export declare function parseValueExpression(
|
|
8
|
+
export declare function parseValueExpressionOrList(arg: ValueExpressionOrList<any, any, unknown>): ValueExpressionNode;
|
|
9
|
+
export declare function parseValueExpression(exp: ValueExpression<any, any, unknown>): ValueNode | SelectQueryNode | RawNode;
|
|
@@ -4,23 +4,23 @@ import { ValueListNode } from '../operation-node/value-list-node.js';
|
|
|
4
4
|
import { ValueNode } from '../operation-node/value-node.js';
|
|
5
5
|
import { isReadonlyArray } from '../util/object-utils.js';
|
|
6
6
|
import { parseComplexExpression, isComplexExpression, } from './complex-expression-parser.js';
|
|
7
|
-
export function parseValueExpressionOrList(
|
|
7
|
+
export function parseValueExpressionOrList(arg) {
|
|
8
8
|
if (isReadonlyArray(arg)) {
|
|
9
|
-
return parseValueExpressionList(
|
|
9
|
+
return parseValueExpressionList(arg);
|
|
10
10
|
}
|
|
11
11
|
else {
|
|
12
|
-
return parseValueExpression(
|
|
12
|
+
return parseValueExpression(arg);
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
|
-
export function parseValueExpression(
|
|
15
|
+
export function parseValueExpression(exp) {
|
|
16
16
|
if (isComplexExpression(exp)) {
|
|
17
|
-
return parseComplexExpression(
|
|
17
|
+
return parseComplexExpression(exp);
|
|
18
18
|
}
|
|
19
19
|
return ValueNode.create(exp);
|
|
20
20
|
}
|
|
21
|
-
function parseValueExpressionList(
|
|
21
|
+
function parseValueExpressionList(arg) {
|
|
22
22
|
if (arg.some(isComplexExpression)) {
|
|
23
|
-
return ValueListNode.create(arg.map((it) => parseValueExpression(
|
|
23
|
+
return ValueListNode.create(arg.map((it) => parseValueExpression(it)));
|
|
24
24
|
}
|
|
25
25
|
return PrimitiveValueListNode.create(arg);
|
|
26
26
|
}
|
|
@@ -5,7 +5,6 @@ import { InsertQueryBuilder } from '../query-builder/insert-query-builder.js';
|
|
|
5
5
|
import { CommonTableExpressionNode } from '../operation-node/common-table-expression-node.js';
|
|
6
6
|
import { QueryCreator } from '../query-creator.js';
|
|
7
7
|
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
8
|
-
import { ParseContext } from './parse-context.js';
|
|
9
8
|
export declare type CommonTableExpression<DB, CN extends string> = (creator: QueryCreator<DB>) => CommonTableExpressionOutput<DB, CN>;
|
|
10
9
|
export declare type RecursiveCommonTableExpression<DB, CN extends string> = (creator: QueryCreator<DB & Record<ExtractTableFromCommonTableExpressionName<CN>, ExtractRowFromCommonTableExpressionName<CN>>>) => CommonTableExpressionOutput<DB, CN>;
|
|
11
10
|
export declare type QueryCreatorWithCommonTableExpression<DB, CN extends string, CTE> = QueryCreator<DB & Record<ExtractTableFromCommonTableExpressionName<CN>, ExtractRowFromCommonTableExpression<CTE>>>;
|
|
@@ -37,5 +36,5 @@ declare type ExtractRowFromCommonTableExpressionName<CN extends string> = CN ext
|
|
|
37
36
|
* Parses a string like 'id, first_name' into a type 'id' | 'first_name'
|
|
38
37
|
*/
|
|
39
38
|
declare type ExtractColumnNamesFromColumnList<R extends string> = R extends `${infer C}, ${infer RS}` ? C | ExtractColumnNamesFromColumnList<RS> : R;
|
|
40
|
-
export declare function parseCommonTableExpression(
|
|
39
|
+
export declare function parseCommonTableExpression(name: string, expression: CommonTableExpression<any, any>): CommonTableExpressionNode;
|
|
41
40
|
export {};
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/// <reference types="./with-parser.d.ts" />
|
|
2
2
|
import { CommonTableExpressionNode } from '../operation-node/common-table-expression-node.js';
|
|
3
3
|
import { CommonTableExpressionNameNode } from '../operation-node/common-table-expression-name-node.js';
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
import { createQueryCreator } from './parse-utils.js';
|
|
5
|
+
export function parseCommonTableExpression(name, expression) {
|
|
6
|
+
const builder = expression(createQueryCreator());
|
|
6
7
|
return CommonTableExpressionNode.create(parseCommonTableExpressionName(name), builder.toOperationNode());
|
|
7
8
|
}
|
|
8
9
|
function parseCommonTableExpressionName(name) {
|
|
@@ -10,7 +10,6 @@ import { AnyRawBuilder, MergePartial, SingleResultType } from '../util/type-util
|
|
|
10
10
|
import { Compilable } from '../util/compilable.js';
|
|
11
11
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
12
12
|
import { QueryId } from '../util/query-id.js';
|
|
13
|
-
import { ParseContext } from '../parser/parse-context.js';
|
|
14
13
|
import { KyselyPlugin } from '../plugin/kysely-plugin.js';
|
|
15
14
|
import { WhereInterface } from './where-interface.js';
|
|
16
15
|
import { JoinInterface } from './join-interface.js';
|
|
@@ -19,6 +18,7 @@ import { NoResultErrorConstructor } from './no-result-error.js';
|
|
|
19
18
|
import { DeleteResult } from './delete-result.js';
|
|
20
19
|
import { DeleteQueryNode } from '../operation-node/delete-query-node.js';
|
|
21
20
|
import { Selectable } from '../util/column-type.js';
|
|
21
|
+
import { OrderByDirectionExpression, OrderByExpression } from '../parser/order-by-parser.js';
|
|
22
22
|
export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, JoinInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable {
|
|
23
23
|
#private;
|
|
24
24
|
constructor(props: DeleteQueryBuilderProps);
|
|
@@ -46,7 +46,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
46
46
|
* ```
|
|
47
47
|
*
|
|
48
48
|
* Operator can be any supported operator or if the typings don't support it
|
|
49
|
-
* you can always use `
|
|
49
|
+
* you can always use `sql\`your operator\``.
|
|
50
50
|
*
|
|
51
51
|
* ```ts
|
|
52
52
|
* const persons = await db
|
|
@@ -116,7 +116,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
116
116
|
*
|
|
117
117
|
* A `where in` query can be built by using the `in` operator and an array
|
|
118
118
|
* of values. The values in the array can also be subqueries or raw
|
|
119
|
-
*
|
|
119
|
+
* {@link sql} expressions.
|
|
120
120
|
*
|
|
121
121
|
* ```ts
|
|
122
122
|
* const persons = await db
|
|
@@ -132,15 +132,17 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
132
132
|
* select * from "person" where "id" in ($1, $2, $3)
|
|
133
133
|
* ```
|
|
134
134
|
*
|
|
135
|
-
* If everything else fails, you can always
|
|
135
|
+
* If everything else fails, you can always use the {@link sql} tag
|
|
136
136
|
* as any of the arguments, including the operator:
|
|
137
137
|
*
|
|
138
138
|
* ```ts
|
|
139
|
+
* import { sql } from 'kysely'
|
|
140
|
+
*
|
|
139
141
|
* const persons = await db
|
|
140
142
|
* .selectFrom('person')
|
|
141
143
|
* .selectAll()
|
|
142
144
|
* .where(
|
|
143
|
-
*
|
|
145
|
+
* sql`coalesce(first_name, last_name)`,
|
|
144
146
|
* 'like',
|
|
145
147
|
* '%' + name + '%',
|
|
146
148
|
* )
|
|
@@ -175,24 +177,25 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
175
177
|
* ```
|
|
176
178
|
*
|
|
177
179
|
* In all examples above the columns were known at compile time
|
|
178
|
-
* (except for the
|
|
179
|
-
* you to refer to columns that exist in the database **and**
|
|
180
|
-
* referred to in the current query and context.
|
|
180
|
+
* (except for the raw {@link sql} expressions). By default kysely only
|
|
181
|
+
* allows you to refer to columns that exist in the database **and**
|
|
182
|
+
* can be referred to in the current query and context.
|
|
181
183
|
*
|
|
182
184
|
* Sometimes you may want to refer to columns that come from the user
|
|
183
185
|
* input and thus are not available at compile time.
|
|
184
186
|
*
|
|
185
|
-
* You have two options,
|
|
187
|
+
* You have two options, the {@link sql} tag or `db.dynamic`. The example below
|
|
186
188
|
* uses both:
|
|
187
189
|
*
|
|
188
190
|
* ```ts
|
|
191
|
+
* import { sql } from 'kysely'
|
|
189
192
|
* const { ref } = db.dynamic
|
|
190
193
|
*
|
|
191
194
|
* const persons = await db
|
|
192
195
|
* .selectFrom('person')
|
|
193
196
|
* .selectAll()
|
|
194
197
|
* .where(ref(columnFromUserInput), '=', 1)
|
|
195
|
-
* .orWhere(
|
|
198
|
+
* .orWhere(sql.id(columnFromUserInput), '=', 2)
|
|
196
199
|
* .execute()
|
|
197
200
|
* ```
|
|
198
201
|
*/
|
|
@@ -326,13 +329,14 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
326
329
|
/**
|
|
327
330
|
* Adds a `where exists` clause to the query.
|
|
328
331
|
*
|
|
329
|
-
* You can either use a subquery or a raw
|
|
332
|
+
* You can either use a subquery or a raw {@link sql} snippet.
|
|
330
333
|
*
|
|
331
334
|
* ### Examples
|
|
332
335
|
*
|
|
333
336
|
* The query below selets all persons that own a pet named Catto:
|
|
334
337
|
*
|
|
335
338
|
* ```ts
|
|
339
|
+
* const petName = 'Catto'
|
|
336
340
|
* const persons = await db
|
|
337
341
|
* .selectFrom('person')
|
|
338
342
|
* .selectAll()
|
|
@@ -340,7 +344,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
340
344
|
* .selectFrom('pet')
|
|
341
345
|
* .select('pet.id')
|
|
342
346
|
* .whereRef('person.id', '=', 'pet.owner_id')
|
|
343
|
-
* .where('pet.name', '=',
|
|
347
|
+
* .where('pet.name', '=', petName)
|
|
344
348
|
* )
|
|
345
349
|
* .execute()
|
|
346
350
|
* ```
|
|
@@ -357,16 +361,16 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
357
361
|
* )
|
|
358
362
|
* ```
|
|
359
363
|
*
|
|
360
|
-
* The same query as in the previous example but with using raw:
|
|
364
|
+
* The same query as in the previous example but with using raw {@link sql}:
|
|
361
365
|
*
|
|
362
366
|
* ```ts
|
|
367
|
+
* import { sql } from 'kysely'
|
|
368
|
+
*
|
|
369
|
+
* const petName = 'Catto'
|
|
363
370
|
* db.selectFrom('person')
|
|
364
371
|
* .selectAll()
|
|
365
372
|
* .whereExists(
|
|
366
|
-
*
|
|
367
|
-
* '(select pet.id from pet where person.id = pet.owner_id and pet.name = ?)',
|
|
368
|
-
* ['Catto']
|
|
369
|
-
* )
|
|
373
|
+
* sql`(select pet.id from pet where person.id = pet.owner_id and pet.name = ${petName})`
|
|
370
374
|
* )
|
|
371
375
|
* ```
|
|
372
376
|
*
|
|
@@ -564,7 +568,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
564
568
|
* Return arbitrary expressions:
|
|
565
569
|
*
|
|
566
570
|
* ```ts
|
|
567
|
-
*
|
|
571
|
+
* import { sql } from 'kysely'
|
|
568
572
|
*
|
|
569
573
|
* const { id, full_name, first_pet_id } = await db
|
|
570
574
|
* .insertInto('person')
|
|
@@ -574,7 +578,7 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
574
578
|
* })
|
|
575
579
|
* .returning([
|
|
576
580
|
* 'id as id',
|
|
577
|
-
*
|
|
581
|
+
* sql<string>`concat(first_name, ' ', last_name)`.as('full_name'),
|
|
578
582
|
* (qb) => qb.selectFrom('pets').select('pet.id').limit(1).as('first_pet_id')
|
|
579
583
|
* ])
|
|
580
584
|
* .executeTakeFirst()
|
|
@@ -587,6 +591,60 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
587
591
|
* that support `returning` such as PostgreSQL.
|
|
588
592
|
*/
|
|
589
593
|
returningAll(): DeleteQueryBuilder<DB, TB, Selectable<DB[TB]>>;
|
|
594
|
+
/**
|
|
595
|
+
* Adds an `order by` clause to the query.
|
|
596
|
+
*
|
|
597
|
+
* `orderBy` calls are additive. To order by multiple columns, call `orderBy`
|
|
598
|
+
* multiple times.
|
|
599
|
+
*
|
|
600
|
+
* The first argument is the expression to order by and the second is the
|
|
601
|
+
* order (`asc` or `desc`).
|
|
602
|
+
*
|
|
603
|
+
* An `order by` clause in a delete query is only supported by some dialects
|
|
604
|
+
* like MySQL.
|
|
605
|
+
*
|
|
606
|
+
* See {@link SelectQueryBuilder.orderBy} for more examples.
|
|
607
|
+
*
|
|
608
|
+
* ### Examples
|
|
609
|
+
*
|
|
610
|
+
* Delete 5 oldest items in a table:
|
|
611
|
+
*
|
|
612
|
+
* ```ts
|
|
613
|
+
* await db
|
|
614
|
+
* .deleteFrom('pet')
|
|
615
|
+
* .orderBy('created_at')
|
|
616
|
+
* .limit(5)
|
|
617
|
+
* .execute()
|
|
618
|
+
* ```
|
|
619
|
+
*
|
|
620
|
+
* The generated SQL (MySQL):
|
|
621
|
+
*
|
|
622
|
+
* ```sql
|
|
623
|
+
* delete from `pet`
|
|
624
|
+
* order by `created_at`
|
|
625
|
+
* limit ?
|
|
626
|
+
* ```
|
|
627
|
+
*/
|
|
628
|
+
orderBy(orderBy: OrderByExpression<DB, TB, O>, direction?: OrderByDirectionExpression): DeleteQueryBuilder<DB, TB, O>;
|
|
629
|
+
/**
|
|
630
|
+
* Adds a limit clause to the query.
|
|
631
|
+
*
|
|
632
|
+
* A limit clause in a delete query is only supported by some dialects
|
|
633
|
+
* like MySQL.
|
|
634
|
+
*
|
|
635
|
+
* ### Examples
|
|
636
|
+
*
|
|
637
|
+
* Delete 5 oldest items in a table:
|
|
638
|
+
*
|
|
639
|
+
* ```ts
|
|
640
|
+
* await db
|
|
641
|
+
* .deleteFrom('pet')
|
|
642
|
+
* .orderBy('created_at')
|
|
643
|
+
* .limit(5)
|
|
644
|
+
* .execute()
|
|
645
|
+
* ```
|
|
646
|
+
*/
|
|
647
|
+
limit(limit: number): DeleteQueryBuilder<DB, TB, O>;
|
|
590
648
|
/**
|
|
591
649
|
* Simply calls the given function passing `this` as the only argument.
|
|
592
650
|
*
|
|
@@ -683,5 +741,4 @@ export interface DeleteQueryBuilderProps {
|
|
|
683
741
|
readonly queryId: QueryId;
|
|
684
742
|
readonly queryNode: DeleteQueryNode;
|
|
685
743
|
readonly executor: QueryExecutor;
|
|
686
|
-
readonly parseContext: ParseContext;
|
|
687
744
|
}
|