kysely 0.19.3 → 0.19.6
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/dialect/database-introspector.d.ts +11 -2
- package/dist/cjs/dialect/mysql/mysql-introspector.js +4 -0
- package/dist/cjs/dialect/postgres/postgres-introspector.js +12 -0
- package/dist/cjs/dialect/sqlite/sqlite-introspector.js +17 -3
- package/dist/cjs/index.d.ts +0 -1
- package/dist/cjs/index.js +0 -1
- package/dist/cjs/operation-node/check-constraint-node.d.ts +1 -1
- package/dist/cjs/operation-node/common-table-expression-name-node.d.ts +1 -1
- package/dist/cjs/operation-node/create-schema-node.d.ts +1 -1
- package/dist/cjs/operation-node/delete-query-node.d.ts +1 -1
- package/dist/cjs/operation-node/drop-index-node.d.ts +1 -1
- package/dist/cjs/operation-node/drop-schema-node.d.ts +1 -1
- package/dist/cjs/operation-node/drop-table-node.d.ts +1 -1
- package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +1 -1
- package/dist/cjs/operation-node/insert-query-node.d.ts +1 -1
- package/dist/cjs/operation-node/join-node.d.ts +1 -1
- package/dist/cjs/operation-node/order-by-item-node.d.ts +1 -1
- package/dist/cjs/operation-node/primary-constraint-node.d.ts +1 -1
- package/dist/cjs/operation-node/select-query-node.d.ts +1 -1
- package/dist/cjs/operation-node/unique-constraint-node.d.ts +1 -1
- package/dist/cjs/operation-node/update-query-node.d.ts +1 -1
- package/dist/cjs/operation-node/with-node.d.ts +1 -1
- package/dist/cjs/parser/join-parser.d.ts +4 -4
- package/dist/cjs/parser/table-parser.d.ts +5 -14
- package/dist/cjs/query-builder/delete-query-builder.d.ts +35 -13
- package/dist/cjs/query-builder/expression-builder.d.ts +3 -3
- package/dist/cjs/query-builder/join-builder.d.ts +4 -0
- package/dist/cjs/query-builder/join-builder.js +10 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +74 -13
- package/dist/cjs/query-builder/select-query-builder.js +12 -0
- package/dist/cjs/query-builder/update-query-builder.d.ts +37 -15
- package/dist/cjs/query-compiler/default-query-compiler.js +2 -0
- package/dist/cjs/query-creator.d.ts +5 -5
- package/dist/cjs/util/type-utils.d.ts +3 -0
- package/dist/esm/dialect/database-introspector.d.ts +11 -2
- package/dist/esm/dialect/mysql/mysql-introspector.js +4 -0
- package/dist/esm/dialect/postgres/postgres-introspector.js +12 -0
- package/dist/esm/dialect/sqlite/sqlite-introspector.js +17 -3
- package/dist/esm/index.d.ts +0 -1
- package/dist/esm/index.js +0 -1
- package/dist/esm/operation-node/check-constraint-node.d.ts +1 -1
- package/dist/esm/operation-node/common-table-expression-name-node.d.ts +1 -1
- package/dist/esm/operation-node/create-schema-node.d.ts +1 -1
- package/dist/esm/operation-node/delete-query-node.d.ts +1 -1
- package/dist/esm/operation-node/drop-index-node.d.ts +1 -1
- package/dist/esm/operation-node/drop-schema-node.d.ts +1 -1
- package/dist/esm/operation-node/drop-table-node.d.ts +1 -1
- package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +1 -1
- package/dist/esm/operation-node/insert-query-node.d.ts +1 -1
- package/dist/esm/operation-node/join-node.d.ts +1 -1
- package/dist/esm/operation-node/order-by-item-node.d.ts +1 -1
- package/dist/esm/operation-node/primary-constraint-node.d.ts +1 -1
- package/dist/esm/operation-node/select-query-node.d.ts +1 -1
- package/dist/esm/operation-node/unique-constraint-node.d.ts +1 -1
- package/dist/esm/operation-node/update-query-node.d.ts +1 -1
- package/dist/esm/operation-node/with-node.d.ts +1 -1
- package/dist/esm/parser/join-parser.d.ts +4 -4
- package/dist/esm/parser/table-parser.d.ts +5 -14
- package/dist/esm/query-builder/delete-query-builder.d.ts +35 -13
- package/dist/esm/query-builder/expression-builder.d.ts +3 -3
- package/dist/esm/query-builder/join-builder.d.ts +4 -0
- package/dist/esm/query-builder/join-builder.js +10 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +74 -13
- package/dist/esm/query-builder/select-query-builder.js +12 -0
- package/dist/esm/query-builder/update-query-builder.d.ts +37 -15
- package/dist/esm/query-compiler/default-query-compiler.js +2 -0
- package/dist/esm/query-creator.d.ts +5 -5
- package/dist/esm/util/type-utils.d.ts +3 -0
- package/package.json +10 -10
- package/dist/cjs/query-builder/join-interface.d.ts +0 -130
- package/dist/cjs/query-builder/join-interface.js +0 -2
- package/dist/esm/query-builder/join-interface.d.ts +0 -130
- package/dist/esm/query-builder/join-interface.js +0 -2
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { ColumnDataType } from '../operation-node/data-type-node.js';
|
|
2
1
|
/**
|
|
3
2
|
* An interface for getting the database metadata (names of the tables and columns etc.)
|
|
4
3
|
*/
|
|
@@ -41,6 +40,16 @@ export interface TableMetadata {
|
|
|
41
40
|
}
|
|
42
41
|
export interface ColumnMetadata {
|
|
43
42
|
readonly name: string;
|
|
44
|
-
|
|
43
|
+
/**
|
|
44
|
+
* The data type of the column as reported by the database.
|
|
45
|
+
*
|
|
46
|
+
* NOTE: This value is whatever the database engine returns and it will be
|
|
47
|
+
* different on different dialects even if you run the same migrations.
|
|
48
|
+
* For example `integer` datatype in a migration will produce `int4`
|
|
49
|
+
* on PostgreSQL, `INTEGER` on SQLite and `int` on MySQL.
|
|
50
|
+
*/
|
|
51
|
+
readonly dataType: string;
|
|
52
|
+
readonly isAutoIncrementing: boolean;
|
|
45
53
|
readonly isNullable: boolean;
|
|
54
|
+
readonly hasDefaultValue: boolean;
|
|
46
55
|
}
|
|
@@ -22,10 +22,12 @@ class MysqlIntrospector {
|
|
|
22
22
|
.selectFrom('information_schema.columns')
|
|
23
23
|
.select([
|
|
24
24
|
'column_name',
|
|
25
|
+
'column_default',
|
|
25
26
|
'table_name',
|
|
26
27
|
'table_schema',
|
|
27
28
|
'is_nullable',
|
|
28
29
|
'data_type',
|
|
30
|
+
'extra',
|
|
29
31
|
])
|
|
30
32
|
.where('table_schema', '=', (0, sql_js_1.sql) `database()`)
|
|
31
33
|
.castTo();
|
|
@@ -57,6 +59,8 @@ class MysqlIntrospector {
|
|
|
57
59
|
name: it.COLUMN_NAME,
|
|
58
60
|
dataType: it.DATA_TYPE,
|
|
59
61
|
isNullable: it.IS_NULLABLE === 'YES',
|
|
62
|
+
isAutoIncrementing: it.EXTRA.toLowerCase().includes('auto_increment'),
|
|
63
|
+
hasDefaultValue: it.COLUMN_DEFAULT !== null,
|
|
60
64
|
}));
|
|
61
65
|
return tables;
|
|
62
66
|
}, []);
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.PostgresIntrospector = void 0;
|
|
4
4
|
const migrator_js_1 = require("../../migration/migrator.js");
|
|
5
5
|
const object_utils_js_1 = require("../../util/object-utils.js");
|
|
6
|
+
const sql_js_1 = require("../../raw-builder/sql.js");
|
|
6
7
|
class PostgresIntrospector {
|
|
7
8
|
#db;
|
|
8
9
|
constructor(db) {
|
|
@@ -25,9 +26,18 @@ class PostgresIntrospector {
|
|
|
25
26
|
.select([
|
|
26
27
|
'a.attname as column',
|
|
27
28
|
'a.attnotnull as not_null',
|
|
29
|
+
'a.atthasdef as has_default',
|
|
28
30
|
't.tablename as table',
|
|
29
31
|
't.schemaname as schema',
|
|
30
32
|
'typ.typname as type',
|
|
33
|
+
// Detect if the column is auto incrementing by finding the sequence
|
|
34
|
+
// that is created for `serial` and `bigserial` columns.
|
|
35
|
+
this.#db
|
|
36
|
+
.selectFrom('pg_class')
|
|
37
|
+
.select((0, sql_js_1.sql) `true`.as('auto_incrementing'))
|
|
38
|
+
.where('relkind', '=', 'S')
|
|
39
|
+
.where('relname', '=', (0, sql_js_1.sql) `t.tablename || '_' || a.attname || '_seq'`)
|
|
40
|
+
.as('auto_incrementing'),
|
|
31
41
|
])
|
|
32
42
|
.where('t.schemaname', '!~', '^pg_')
|
|
33
43
|
.where('t.schemaname', '!=', 'information_schema')
|
|
@@ -62,6 +72,8 @@ class PostgresIntrospector {
|
|
|
62
72
|
name: it.column,
|
|
63
73
|
dataType: it.type,
|
|
64
74
|
isNullable: !it.not_null,
|
|
75
|
+
isAutoIncrementing: !!it.auto_incrementing,
|
|
76
|
+
hasDefaultValue: it.has_default,
|
|
65
77
|
}));
|
|
66
78
|
return tables;
|
|
67
79
|
}, []);
|
|
@@ -34,17 +34,31 @@ class SqliteIntrospector {
|
|
|
34
34
|
}
|
|
35
35
|
async #getTableMetadata(table) {
|
|
36
36
|
const db = this.#db;
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
.
|
|
37
|
+
// Get the SQL that was used to create the table.
|
|
38
|
+
const createSql = await db
|
|
39
|
+
.selectFrom('sqlite_master')
|
|
40
|
+
.where('name', '=', table)
|
|
41
|
+
.select('sql')
|
|
40
42
|
.castTo()
|
|
41
43
|
.execute();
|
|
44
|
+
// Try to find the name of the column that has `autoincrement` 🤦
|
|
45
|
+
const autoIncrementCol = createSql[0]?.sql
|
|
46
|
+
?.split(/[\(\),]/)
|
|
47
|
+
?.find((it) => it.toLowerCase().includes('autoincrement'))
|
|
48
|
+
?.split(/\s+/)?.[0]
|
|
49
|
+
?.replace(/["`]/g, '');
|
|
50
|
+
const columns = await db
|
|
51
|
+
.selectFrom((0, sql_js_1.sql) `pragma_table_info(${table})`.as('table_info'))
|
|
52
|
+
.select(['name', 'type', 'notnull', 'dflt_value'])
|
|
53
|
+
.execute();
|
|
42
54
|
return {
|
|
43
55
|
name: table,
|
|
44
56
|
columns: columns.map((col) => ({
|
|
45
57
|
name: col.name,
|
|
46
58
|
dataType: col.type,
|
|
47
59
|
isNullable: !col.notnull,
|
|
60
|
+
isAutoIncrementing: col.name === autoIncrementCol,
|
|
61
|
+
hasDefaultValue: !!col.dflt_value,
|
|
48
62
|
})),
|
|
49
63
|
};
|
|
50
64
|
}
|
package/dist/cjs/index.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export * from './kysely.js';
|
|
2
2
|
export * from './query-creator.js';
|
|
3
3
|
export * from './query-builder/where-interface.js';
|
|
4
|
-
export * from './query-builder/join-interface.js';
|
|
5
4
|
export * from './query-builder/returning-interface.js';
|
|
6
5
|
export * from './query-builder/having-interface.js';
|
|
7
6
|
export * from './query-builder/select-query-builder.js';
|
package/dist/cjs/index.js
CHANGED
|
@@ -17,7 +17,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
__exportStar(require("./kysely.js"), exports);
|
|
18
18
|
__exportStar(require("./query-creator.js"), exports);
|
|
19
19
|
__exportStar(require("./query-builder/where-interface.js"), exports);
|
|
20
|
-
__exportStar(require("./query-builder/join-interface.js"), exports);
|
|
21
20
|
__exportStar(require("./query-builder/returning-interface.js"), exports);
|
|
22
21
|
__exportStar(require("./query-builder/having-interface.js"), exports);
|
|
23
22
|
__exportStar(require("./query-builder/select-query-builder.js"), exports);
|
|
@@ -11,5 +11,5 @@ export interface CheckConstraintNode extends OperationNode {
|
|
|
11
11
|
*/
|
|
12
12
|
export declare const CheckConstraintNode: Readonly<{
|
|
13
13
|
is(node: OperationNode): node is CheckConstraintNode;
|
|
14
|
-
create(expression: RawNode, constraintName?: string
|
|
14
|
+
create(expression: RawNode, constraintName?: string): CheckConstraintNode;
|
|
15
15
|
}>;
|
|
@@ -11,5 +11,5 @@ export interface CommonTableExpressionNameNode extends OperationNode {
|
|
|
11
11
|
*/
|
|
12
12
|
export declare const CommonTableExpressionNameNode: Readonly<{
|
|
13
13
|
is(node: OperationNode): node is CommonTableExpressionNameNode;
|
|
14
|
-
create(tableName: string, columnNames?:
|
|
14
|
+
create(tableName: string, columnNames?: ReadonlyArray<string>): CommonTableExpressionNameNode;
|
|
15
15
|
}>;
|
|
@@ -11,6 +11,6 @@ export interface CreateSchemaNode extends OperationNode {
|
|
|
11
11
|
*/
|
|
12
12
|
export declare const CreateSchemaNode: Readonly<{
|
|
13
13
|
is(node: OperationNode): node is CreateSchemaNode;
|
|
14
|
-
create(schema: string, params?: CreateSchemaNodeParams
|
|
14
|
+
create(schema: string, params?: CreateSchemaNodeParams): CreateSchemaNode;
|
|
15
15
|
cloneWith(createSchema: CreateSchemaNode, params: CreateSchemaNodeParams): CreateSchemaNode;
|
|
16
16
|
}>;
|
|
@@ -23,7 +23,7 @@ export interface DeleteQueryNode extends OperationNode {
|
|
|
23
23
|
*/
|
|
24
24
|
export declare const DeleteQueryNode: Readonly<{
|
|
25
25
|
is(node: OperationNode): node is DeleteQueryNode;
|
|
26
|
-
create(fromItem: TableExpressionNode, withNode?: WithNode
|
|
26
|
+
create(fromItem: TableExpressionNode, withNode?: WithNode): DeleteQueryNode;
|
|
27
27
|
cloneWithOrderByItem(deleteNode: DeleteQueryNode, item: OrderByItemNode): DeleteQueryNode;
|
|
28
28
|
cloneWithLimit(deleteNode: DeleteQueryNode, limit: LimitNode): DeleteQueryNode;
|
|
29
29
|
}>;
|
|
@@ -13,6 +13,6 @@ export interface DropIndexNode extends OperationNode {
|
|
|
13
13
|
*/
|
|
14
14
|
export declare const DropIndexNode: Readonly<{
|
|
15
15
|
is(node: OperationNode): node is DropIndexNode;
|
|
16
|
-
create(name: string, params?: DropIndexNodeProps
|
|
16
|
+
create(name: string, params?: DropIndexNodeProps): DropIndexNode;
|
|
17
17
|
cloneWith(dropIndex: DropIndexNode, props: DropIndexNodeProps): DropIndexNode;
|
|
18
18
|
}>;
|
|
@@ -11,6 +11,6 @@ export interface DropSchemaNode extends OperationNode {
|
|
|
11
11
|
*/
|
|
12
12
|
export declare const DropSchemaNode: Readonly<{
|
|
13
13
|
is(node: OperationNode): node is DropSchemaNode;
|
|
14
|
-
create(schema: string, params?: DropSchemaNodeParams
|
|
14
|
+
create(schema: string, params?: DropSchemaNodeParams): DropSchemaNode;
|
|
15
15
|
cloneWith(dropSchema: DropSchemaNode, params: DropSchemaNodeParams): DropSchemaNode;
|
|
16
16
|
}>;
|
|
@@ -11,6 +11,6 @@ export interface DropTableNode extends OperationNode {
|
|
|
11
11
|
*/
|
|
12
12
|
export declare const DropTableNode: Readonly<{
|
|
13
13
|
is(node: OperationNode): node is DropTableNode;
|
|
14
|
-
create(table: TableNode, params?: DropTablexNodeParams
|
|
14
|
+
create(table: TableNode, params?: DropTablexNodeParams): DropTableNode;
|
|
15
15
|
cloneWith(dropIndex: DropTableNode, params: DropTablexNodeParams): DropTableNode;
|
|
16
16
|
}>;
|
|
@@ -17,7 +17,7 @@ export interface ForeignKeyConstraintNode extends OperationNode {
|
|
|
17
17
|
*/
|
|
18
18
|
export declare const ForeignKeyConstraintNode: Readonly<{
|
|
19
19
|
is(node: OperationNode): node is ForeignKeyConstraintNode;
|
|
20
|
-
create(sourceColumns: ReadonlyArray<ColumnNode>, targetTable: TableNode, targetColumns: ReadonlyArray<ColumnNode>, constraintName?: string
|
|
20
|
+
create(sourceColumns: ReadonlyArray<ColumnNode>, targetTable: TableNode, targetColumns: ReadonlyArray<ColumnNode>, constraintName?: string): ForeignKeyConstraintNode;
|
|
21
21
|
cloneWith(node: ForeignKeyConstraintNode, props: ForeignKeyConstraintNodeProps): Readonly<{
|
|
22
22
|
name?: IdentifierNode | undefined;
|
|
23
23
|
onDelete?: OnModifyForeignAction | undefined;
|
|
@@ -25,6 +25,6 @@ export interface InsertQueryNode extends OperationNode {
|
|
|
25
25
|
*/
|
|
26
26
|
export declare const InsertQueryNode: Readonly<{
|
|
27
27
|
is(node: OperationNode): node is InsertQueryNode;
|
|
28
|
-
create(into: TableNode, withNode?: WithNode
|
|
28
|
+
create(into: TableNode, withNode?: WithNode): InsertQueryNode;
|
|
29
29
|
cloneWith(insertQuery: InsertQueryNode, props: InsertQueryNodeProps): InsertQueryNode;
|
|
30
30
|
}>;
|
|
@@ -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;
|
|
@@ -11,5 +11,5 @@ export interface OrderByItemNode extends OperationNode {
|
|
|
11
11
|
*/
|
|
12
12
|
export declare const OrderByItemNode: Readonly<{
|
|
13
13
|
is(node: OperationNode): node is OrderByItemNode;
|
|
14
|
-
create(orderBy: ReferenceExpressionNode, direction?: RawNode
|
|
14
|
+
create(orderBy: ReferenceExpressionNode, direction?: RawNode): OrderByItemNode;
|
|
15
15
|
}>;
|
|
@@ -11,5 +11,5 @@ export interface PrimaryKeyConstraintNode extends OperationNode {
|
|
|
11
11
|
*/
|
|
12
12
|
export declare const PrimaryConstraintNode: Readonly<{
|
|
13
13
|
is(node: OperationNode): node is PrimaryKeyConstraintNode;
|
|
14
|
-
create(columns: string[], constraintName?: string
|
|
14
|
+
create(columns: string[], constraintName?: string): PrimaryKeyConstraintNode;
|
|
15
15
|
}>;
|
|
@@ -36,7 +36,7 @@ export interface SelectQueryNode extends OperationNode {
|
|
|
36
36
|
*/
|
|
37
37
|
export declare const SelectQueryNode: Readonly<{
|
|
38
38
|
is(node: OperationNode): node is SelectQueryNode;
|
|
39
|
-
create(fromItems: ReadonlyArray<TableExpressionNode>, withNode?: WithNode
|
|
39
|
+
create(fromItems: ReadonlyArray<TableExpressionNode>, withNode?: WithNode): SelectQueryNode;
|
|
40
40
|
cloneWithSelections(select: SelectQueryNode, selections: ReadonlyArray<SelectionNode>): SelectQueryNode;
|
|
41
41
|
cloneWithDistinctOnSelections(select: SelectQueryNode, selections: ReadonlyArray<SelectionNode>): SelectQueryNode;
|
|
42
42
|
cloneWithModifier(select: SelectQueryNode, modifier: SelectModifier): SelectQueryNode;
|
|
@@ -11,5 +11,5 @@ export interface UniqueConstraintNode extends OperationNode {
|
|
|
11
11
|
*/
|
|
12
12
|
export declare const UniqueConstraintNode: Readonly<{
|
|
13
13
|
is(node: OperationNode): node is UniqueConstraintNode;
|
|
14
|
-
create(columns: string[], constraintName?: string
|
|
14
|
+
create(columns: string[], constraintName?: string): UniqueConstraintNode;
|
|
15
15
|
}>;
|
|
@@ -24,7 +24,7 @@ export interface UpdateQueryNode extends OperationNode {
|
|
|
24
24
|
*/
|
|
25
25
|
export declare const UpdateQueryNode: Readonly<{
|
|
26
26
|
is(node: OperationNode): node is UpdateQueryNode;
|
|
27
|
-
create(table: TableExpressionNode, withNode?: WithNode
|
|
27
|
+
create(table: TableExpressionNode, withNode?: WithNode): UpdateQueryNode;
|
|
28
28
|
cloneWithFromItems(updateQuery: UpdateQueryNode, fromItems: ReadonlyArray<TableExpressionNode>): UpdateQueryNode;
|
|
29
29
|
cloneWithUpdates(updateQuery: UpdateQueryNode, updates: ReadonlyArray<ColumnUpdateNode>): UpdateQueryNode;
|
|
30
30
|
}>;
|
|
@@ -11,6 +11,6 @@ export interface WithNode extends OperationNode {
|
|
|
11
11
|
*/
|
|
12
12
|
export declare const WithNode: Readonly<{
|
|
13
13
|
is(node: OperationNode): node is WithNode;
|
|
14
|
-
create(expression: CommonTableExpressionNode, params?: WithNodeParams
|
|
14
|
+
create(expression: CommonTableExpressionNode, params?: WithNodeParams): WithNode;
|
|
15
15
|
cloneWithExpression(withNode: WithNode, expression: CommonTableExpressionNode): WithNode;
|
|
16
16
|
}>;
|
|
@@ -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 {};
|
|
@@ -1,26 +1,17 @@
|
|
|
1
1
|
import { AliasedQueryBuilder } from '../query-builder/select-query-builder.js';
|
|
2
2
|
import { TableNode } from '../operation-node/table-node.js';
|
|
3
|
-
import { AnyAliasedRawBuilder
|
|
3
|
+
import { AnyAliasedRawBuilder } 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
6
|
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
|
-
};
|
|
16
|
-
export declare type RightJoinTableExpressionDatabase<DB, TB extends keyof DB, TE, A extends keyof any = ExtractAliasFromTableExpression<DB, TE>> = {
|
|
17
|
-
[C in keyof DB | A]: C extends A ? ExtractRowTypeFromTableExpression<DB, TE, C> : C extends keyof DB ? C extends TB ? Nullable<DB[C]> : DB[C] : never;
|
|
18
|
-
};
|
|
19
|
-
export declare type FullJoinTableExpressionDatabase<DB, TB extends keyof DB, TE, A extends keyof any = ExtractAliasFromTableExpression<DB, TE>> = {
|
|
20
|
-
[C in keyof DB | A]: C extends A ? Nullable<ExtractRowTypeFromTableExpression<DB, TE, C>> : C extends keyof DB ? C extends TB ? Nullable<DB[C]> : DB[C] : never;
|
|
21
|
-
};
|
|
22
|
-
export 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;
|
|
23
|
-
export declare type TableExpressionTables<DB, TB extends keyof DB, TE> = TB | ExtractAliasFromTableExpression<DB, TE>;
|
|
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;
|
|
24
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;
|
|
25
16
|
declare type AnyAliasedTable<DB> = `${AnyTable<DB>} as ${string}`;
|
|
26
17
|
declare type AnyTable<DB> = keyof DB & string;
|
|
@@ -1,25 +1,26 @@
|
|
|
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 '../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';
|
|
8
8
|
import { ReferenceExpression } from '../parser/reference-parser.js';
|
|
9
|
-
import { AnyRawBuilder, MergePartial, SingleResultType } from '../util/type-utils.js';
|
|
9
|
+
import { AnyRawBuilder, MergePartial, Nullable, SingleResultType } from '../util/type-utils.js';
|
|
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
13
|
import { KyselyPlugin } from '../plugin/kysely-plugin.js';
|
|
14
14
|
import { WhereInterface } from './where-interface.js';
|
|
15
|
-
import { JoinInterface } from './join-interface.js';
|
|
16
15
|
import { ReturningInterface } from './returning-interface.js';
|
|
17
16
|
import { NoResultErrorConstructor } from './no-result-error.js';
|
|
18
17
|
import { DeleteResult } from './delete-result.js';
|
|
19
18
|
import { DeleteQueryNode } from '../operation-node/delete-query-node.js';
|
|
20
19
|
import { Selectable } from '../util/column-type.js';
|
|
21
20
|
import { OrderByDirectionExpression, OrderByExpression } from '../parser/order-by-parser.js';
|
|
22
|
-
|
|
21
|
+
import { AliasedQueryBuilder } from './select-query-builder.js';
|
|
22
|
+
import { AliasedRawBuilder } from '../raw-builder/raw-builder.js';
|
|
23
|
+
export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements WhereInterface<DB, TB>, ReturningInterface<DB, TB, O>, OperationNodeSource, Compilable {
|
|
23
24
|
#private;
|
|
24
25
|
constructor(props: DeleteQueryBuilderProps);
|
|
25
26
|
/**
|
|
@@ -515,23 +516,23 @@ export declare class DeleteQueryBuilder<DB, TB extends keyof DB, O> implements W
|
|
|
515
516
|
* on "doggos"."owner_id" = "person"."id"
|
|
516
517
|
* ```
|
|
517
518
|
*/
|
|
518
|
-
innerJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2):
|
|
519
|
-
innerJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN):
|
|
519
|
+
innerJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): DeleteQueryBuilderWithInnerJoin<DB, TB, O, TE>;
|
|
520
|
+
innerJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): DeleteQueryBuilderWithInnerJoin<DB, TB, O, TE>;
|
|
520
521
|
/**
|
|
521
|
-
* Just like {@link innerJoin} but adds a left join
|
|
522
|
+
* Just like {@link innerJoin} but adds a left join instead of an inner join.
|
|
522
523
|
*/
|
|
523
|
-
leftJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2):
|
|
524
|
-
leftJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN):
|
|
524
|
+
leftJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): DeleteQueryBuilderWithLeftJoin<DB, TB, O, TE>;
|
|
525
|
+
leftJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): DeleteQueryBuilderWithLeftJoin<DB, TB, O, TE>;
|
|
525
526
|
/**
|
|
526
527
|
* Just like {@link innerJoin} but adds a right join instead of an inner join.
|
|
527
528
|
*/
|
|
528
|
-
rightJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2):
|
|
529
|
-
rightJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN):
|
|
529
|
+
rightJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): DeleteQueryBuilderWithRightJoin<DB, TB, O, TE>;
|
|
530
|
+
rightJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): DeleteQueryBuilderWithRightJoin<DB, TB, O, TE>;
|
|
530
531
|
/**
|
|
531
532
|
* Just like {@link innerJoin} but adds a full join instead of an inner join.
|
|
532
533
|
*/
|
|
533
|
-
fullJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2):
|
|
534
|
-
fullJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN):
|
|
534
|
+
fullJoin<TE extends TableExpression<DB, TB>, K1 extends JoinReferenceExpression<DB, TB, TE>, K2 extends JoinReferenceExpression<DB, TB, TE>>(table: TE, k1: K1, k2: K2): DeleteQueryBuilderWithFullJoin<DB, TB, O, TE>;
|
|
535
|
+
fullJoin<TE extends TableExpression<DB, TB>, FN extends JoinCallbackExpression<DB, TB, TE>>(table: TE, callback: FN): DeleteQueryBuilderWithFullJoin<DB, TB, O, TE>;
|
|
535
536
|
/**
|
|
536
537
|
* Allows you to return data from modified rows.
|
|
537
538
|
*
|
|
@@ -749,3 +750,24 @@ export interface DeleteQueryBuilderProps {
|
|
|
749
750
|
readonly queryNode: DeleteQueryNode;
|
|
750
751
|
readonly executor: QueryExecutor;
|
|
751
752
|
}
|
|
753
|
+
export declare type DeleteQueryBuilderWithInnerJoin<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 ? DeleteQueryBuilder<DB, TB | TE, O> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? InnerJoinedBuilder<DB, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? InnerJoinedBuilder<DB, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? InnerJoinedBuilder<DB, TB, O, RA, RO> : never;
|
|
754
|
+
declare type InnerJoinedBuilder<DB, TB extends keyof DB, O, A extends string, R> = A extends keyof DB ? DeleteQueryBuilder<InnerJoinedDB<DB, A, R>, TB | A, O> : DeleteQueryBuilder<DB & Record<A, R>, TB | A, O>;
|
|
755
|
+
declare type InnerJoinedDB<DB, A extends string, R> = {
|
|
756
|
+
[C in keyof DB | A]: C extends A ? R : C extends keyof DB ? DB[C] : never;
|
|
757
|
+
};
|
|
758
|
+
export declare type DeleteQueryBuilderWithLeftJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? LeftJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? LeftJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? LeftJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? LeftJoinedBuilder<DB, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? LeftJoinedBuilder<DB, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? LeftJoinedBuilder<DB, TB, O, RA, RO> : never;
|
|
759
|
+
declare type LeftJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = A extends keyof DB ? DeleteQueryBuilder<LeftJoinedDB<DB, A, R>, TB | A, O> : DeleteQueryBuilder<DB & Record<A, Nullable<R>>, TB | A, O>;
|
|
760
|
+
declare type LeftJoinedDB<DB, A extends keyof any, R> = {
|
|
761
|
+
[C in keyof DB | A]: C extends A ? Nullable<R> : C extends keyof DB ? DB[C] : never;
|
|
762
|
+
};
|
|
763
|
+
export declare type DeleteQueryBuilderWithRightJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? RightJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? RightJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? RightJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? RightJoinedBuilder<DB, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? RightJoinedBuilder<DB, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? RightJoinedBuilder<DB, TB, O, RA, RO> : never;
|
|
764
|
+
declare type RightJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = DeleteQueryBuilder<RightJoinedDB<DB, TB, A, R>, TB | A, O>;
|
|
765
|
+
declare type RightJoinedDB<DB, TB extends keyof DB, A extends keyof any, R> = {
|
|
766
|
+
[C in keyof DB | A]: C extends A ? R : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
|
|
767
|
+
};
|
|
768
|
+
export declare type DeleteQueryBuilderWithFullJoin<DB, TB extends keyof DB, O, TE extends TableExpression<DB, TB>> = TE extends `${infer T} as ${infer A}` ? T extends keyof DB ? OuterJoinedBuilder<DB, TB, O, A, DB[T]> : never : TE extends keyof DB ? OuterJoinedBuilder<DB, TB, O, TE, DB[TE]> : TE extends AliasedQueryBuilder<any, any, infer QO, infer QA> ? OuterJoinedBuilder<DB, TB, O, QA, QO> : TE extends (qb: any) => AliasedQueryBuilder<any, any, infer QO, infer QA> ? OuterJoinedBuilder<DB, TB, O, QA, QO> : TE extends AliasedRawBuilder<infer RO, infer RA> ? OuterJoinedBuilder<DB, TB, O, RA, RO> : TE extends (qb: any) => AliasedRawBuilder<infer RO, infer RA> ? OuterJoinedBuilder<DB, TB, O, RA, RO> : never;
|
|
769
|
+
declare type OuterJoinedBuilder<DB, TB extends keyof DB, O, A extends keyof any, R> = DeleteQueryBuilder<OuterJoinedBuilderDB<DB, TB, A, R>, TB | A, O>;
|
|
770
|
+
declare type OuterJoinedBuilderDB<DB, TB extends keyof DB, A extends keyof any, R> = {
|
|
771
|
+
[C in keyof DB | A]: C extends A ? Nullable<R> : C extends TB ? Nullable<DB[C]> : C extends keyof DB ? DB[C] : never;
|
|
772
|
+
};
|
|
773
|
+
export {};
|
|
@@ -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
|
*/
|
|
@@ -66,6 +66,10 @@ export declare class JoinBuilder<DB, TB extends keyof DB> implements OperationNo
|
|
|
66
66
|
* See {@link WhereInterface.orWhereNotExists} for documentation and examples.
|
|
67
67
|
*/
|
|
68
68
|
orOnNotExists(arg: ExistsExpression<DB, TB>): JoinBuilder<DB, TB>;
|
|
69
|
+
/**
|
|
70
|
+
* Adds `on true`.
|
|
71
|
+
*/
|
|
72
|
+
onTrue(): JoinBuilder<DB, TB>;
|
|
69
73
|
toOperationNode(): JoinNode;
|
|
70
74
|
}
|
|
71
75
|
export interface JoinBuilderProps {
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.JoinBuilder = void 0;
|
|
4
4
|
const join_node_js_1 = require("../operation-node/join-node.js");
|
|
5
|
+
const raw_node_js_1 = require("../operation-node/raw-node.js");
|
|
5
6
|
const filter_parser_js_1 = require("../parser/filter-parser.js");
|
|
6
7
|
const object_utils_js_1 = require("../util/object-utils.js");
|
|
7
8
|
const prevent_await_js_1 = require("../util/prevent-await.js");
|
|
@@ -94,6 +95,15 @@ class JoinBuilder {
|
|
|
94
95
|
joinNode: join_node_js_1.JoinNode.cloneWithOrOn(this.#props.joinNode, (0, filter_parser_js_1.parseNotExistFilter)(arg)),
|
|
95
96
|
});
|
|
96
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* Adds `on true`.
|
|
100
|
+
*/
|
|
101
|
+
onTrue() {
|
|
102
|
+
return new JoinBuilder({
|
|
103
|
+
...this.#props,
|
|
104
|
+
joinNode: join_node_js_1.JoinNode.cloneWithOn(this.#props.joinNode, raw_node_js_1.RawNode.createWithSql('true')),
|
|
105
|
+
});
|
|
106
|
+
}
|
|
97
107
|
toOperationNode() {
|
|
98
108
|
return this.#props.joinNode;
|
|
99
109
|
}
|