kysely 0.7.1 → 0.7.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -19
- package/dist/cjs/dialect/dialect-adapter.d.ts +11 -9
- package/dist/cjs/dialect/mysql/mysql-dialect.d.ts +1 -1
- package/dist/cjs/dialect/mysql/mysql-driver.js +1 -0
- package/dist/cjs/dialect/mysql/mysql-introspector.d.ts +0 -1
- package/dist/cjs/dialect/mysql/mysql-introspector.js +2 -2
- package/dist/cjs/dialect/mysql/mysql-query-compiler.d.ts +0 -4
- package/dist/cjs/dialect/mysql/mysql-query-compiler.js +0 -18
- package/dist/cjs/dialect/postgres/postgres-introspector.d.ts +0 -1
- package/dist/cjs/dialect/postgres/postgres-introspector.js +2 -2
- package/dist/cjs/driver/database-connection.d.ts +2 -1
- package/dist/cjs/driver/driver.d.ts +1 -1
- package/dist/cjs/driver/single-connection-provider.d.ts +0 -1
- package/dist/cjs/driver/single-connection-provider.js +2 -2
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.js +2 -1
- package/dist/cjs/kysely.d.ts +7 -6
- package/dist/cjs/kysely.js +8 -6
- package/dist/cjs/migration/migration.js +11 -10
- package/dist/cjs/operation-node/alter-column-node.d.ts +2 -2
- package/dist/cjs/operation-node/alter-column-node.js +2 -2
- package/dist/cjs/operation-node/alter-table-node.d.ts +2 -2
- package/dist/cjs/operation-node/alter-table-node.js +2 -2
- package/dist/cjs/operation-node/column-definition-node.d.ts +2 -2
- package/dist/cjs/operation-node/column-definition-node.js +2 -2
- package/dist/cjs/operation-node/create-index-node.d.ts +2 -2
- package/dist/cjs/operation-node/create-index-node.js +2 -2
- package/dist/cjs/operation-node/create-table-node.d.ts +2 -1
- package/dist/cjs/operation-node/create-table-node.js +1 -5
- package/dist/cjs/operation-node/drop-index-node.d.ts +3 -3
- package/dist/cjs/operation-node/drop-index-node.js +2 -2
- package/dist/cjs/operation-node/foreign-key-constraint-node.d.ts +12 -1
- package/dist/cjs/operation-node/foreign-key-constraint-node.js +6 -0
- package/dist/cjs/operation-node/insert-query-node.d.ts +5 -2
- package/dist/cjs/operation-node/insert-query-node.js +2 -9
- package/dist/cjs/operation-node/join-node.d.ts +1 -0
- package/dist/cjs/operation-node/join-node.js +8 -0
- package/dist/cjs/operation-node/on-conflict-node.d.ts +2 -2
- package/dist/cjs/operation-node/on-conflict-node.js +2 -2
- package/dist/cjs/operation-node/on-duplicate-key-node.d.ts +14 -0
- package/dist/cjs/operation-node/on-duplicate-key-node.js +18 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +12 -0
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +4 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/references-node.d.ts +5 -3
- package/dist/cjs/operation-node/references-node.js +6 -0
- package/dist/cjs/operation-node/table-node.js +2 -2
- package/dist/cjs/parser/data-type-parser.d.ts +5 -0
- package/dist/cjs/parser/data-type-parser.js +11 -0
- package/dist/cjs/parser/default-value-parser.d.ts +6 -0
- package/dist/cjs/parser/default-value-parser.js +11 -0
- package/dist/cjs/parser/filter-parser.d.ts +2 -2
- package/dist/cjs/parser/filter-parser.js +34 -36
- package/dist/cjs/parser/join-parser.d.ts +1 -1
- package/dist/cjs/parser/join-parser.js +9 -11
- package/dist/cjs/parser/parse-context.d.ts +34 -7
- package/dist/cjs/parser/parse-context.js +42 -34
- package/dist/cjs/parser/reference-parser.d.ts +2 -2
- package/dist/cjs/parser/reference-parser.js +16 -12
- package/dist/cjs/parser/select-parser.d.ts +1 -2
- package/dist/cjs/parser/select-parser.js +4 -5
- package/dist/cjs/parser/table-parser.js +11 -6
- package/dist/cjs/parser/update-set-parser.js +1 -1
- package/dist/cjs/parser/value-parser.js +1 -1
- package/dist/cjs/query-builder/{sub-query-builder.d.ts → expression-builder.d.ts} +7 -7
- package/dist/cjs/query-builder/{sub-query-builder.js → expression-builder.js} +6 -10
- package/dist/cjs/query-builder/join-builder.d.ts +2 -2
- package/dist/cjs/query-builder/join-builder.js +8 -12
- package/dist/cjs/query-builder/query-builder.d.ts +47 -8
- package/dist/cjs/query-builder/query-builder.js +163 -91
- package/dist/cjs/query-builder/type-utils.d.ts +5 -5
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +2 -1
- package/dist/cjs/query-compiler/default-query-compiler.js +26 -6
- package/dist/cjs/query-creator.d.ts +2 -2
- package/dist/cjs/query-creator.js +8 -12
- package/dist/cjs/schema/alter-table-builder.d.ts +31 -8
- package/dist/cjs/schema/alter-table-builder.js +80 -7
- package/dist/cjs/schema/column-definition-builder.d.ts +10 -4
- package/dist/cjs/schema/column-definition-builder.js +11 -6
- package/dist/cjs/schema/create-index-builder.d.ts +5 -5
- package/dist/cjs/schema/create-index-builder.js +19 -28
- package/dist/cjs/schema/create-schema-builder.d.ts +5 -5
- package/dist/cjs/schema/create-schema-builder.js +9 -13
- package/dist/cjs/schema/create-table-builder.d.ts +22 -10
- package/dist/cjs/schema/create-table-builder.js +41 -34
- package/dist/cjs/schema/drop-index-builder.d.ts +5 -5
- package/dist/cjs/schema/drop-index-builder.js +11 -16
- package/dist/cjs/schema/drop-schema-builder.d.ts +5 -5
- package/dist/cjs/schema/drop-schema-builder.js +9 -13
- package/dist/cjs/schema/drop-table-builder.d.ts +5 -5
- package/dist/cjs/schema/drop-table-builder.js +9 -13
- package/dist/cjs/schema/foreign-key-constraint-builder.d.ts +14 -0
- package/dist/cjs/schema/foreign-key-constraint-builder.js +26 -0
- package/dist/cjs/transformers/with-schema-transformer.d.ts +0 -5
- package/dist/cjs/transformers/with-schema-transformer.js +21 -21
- package/dist/esm/dialect/dialect-adapter.d.ts +11 -9
- package/dist/esm/dialect/mysql/mysql-dialect.d.ts +1 -1
- package/dist/esm/dialect/mysql/mysql-driver.js +1 -0
- package/dist/esm/dialect/mysql/mysql-introspector.d.ts +0 -1
- package/dist/esm/dialect/mysql/mysql-introspector.js +2 -2
- package/dist/esm/dialect/mysql/mysql-query-compiler.d.ts +0 -4
- package/dist/esm/dialect/mysql/mysql-query-compiler.js +0 -18
- package/dist/esm/dialect/postgres/postgres-introspector.d.ts +0 -1
- package/dist/esm/dialect/postgres/postgres-introspector.js +2 -2
- package/dist/esm/driver/database-connection.d.ts +2 -1
- package/dist/esm/driver/driver.d.ts +1 -1
- package/dist/esm/driver/single-connection-provider.d.ts +0 -1
- package/dist/esm/driver/single-connection-provider.js +2 -2
- package/dist/esm/index.d.ts +2 -1
- package/dist/esm/index.js +2 -1
- package/dist/esm/kysely.d.ts +7 -6
- package/dist/esm/kysely.js +8 -6
- package/dist/esm/migration/migration.js +12 -11
- package/dist/esm/operation-node/alter-column-node.d.ts +2 -2
- package/dist/esm/operation-node/alter-column-node.js +2 -2
- package/dist/esm/operation-node/alter-table-node.d.ts +2 -2
- package/dist/esm/operation-node/alter-table-node.js +2 -2
- package/dist/esm/operation-node/column-definition-node.d.ts +2 -2
- package/dist/esm/operation-node/column-definition-node.js +2 -2
- package/dist/esm/operation-node/create-index-node.d.ts +2 -2
- package/dist/esm/operation-node/create-index-node.js +2 -2
- package/dist/esm/operation-node/create-table-node.d.ts +2 -1
- package/dist/esm/operation-node/create-table-node.js +1 -5
- package/dist/esm/operation-node/drop-index-node.d.ts +3 -3
- package/dist/esm/operation-node/drop-index-node.js +2 -2
- package/dist/esm/operation-node/foreign-key-constraint-node.d.ts +12 -1
- package/dist/esm/operation-node/foreign-key-constraint-node.js +6 -0
- package/dist/esm/operation-node/insert-query-node.d.ts +5 -2
- package/dist/esm/operation-node/insert-query-node.js +2 -9
- package/dist/esm/operation-node/join-node.d.ts +1 -0
- package/dist/esm/operation-node/join-node.js +8 -0
- package/dist/esm/operation-node/on-conflict-node.d.ts +2 -2
- package/dist/esm/operation-node/on-conflict-node.js +2 -2
- package/dist/esm/operation-node/on-duplicate-key-node.d.ts +14 -0
- package/dist/esm/operation-node/on-duplicate-key-node.js +15 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.js +12 -0
- package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-visitor.js +4 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/references-node.d.ts +5 -3
- package/dist/esm/operation-node/references-node.js +6 -0
- package/dist/esm/operation-node/table-node.js +2 -2
- package/dist/esm/parser/data-type-parser.d.ts +5 -0
- package/dist/esm/parser/data-type-parser.js +7 -0
- package/dist/esm/parser/default-value-parser.d.ts +6 -0
- package/dist/esm/parser/default-value-parser.js +7 -0
- package/dist/esm/parser/filter-parser.d.ts +2 -2
- package/dist/esm/parser/filter-parser.js +31 -33
- package/dist/esm/parser/join-parser.d.ts +1 -1
- package/dist/esm/parser/join-parser.js +7 -9
- package/dist/esm/parser/parse-context.d.ts +34 -7
- package/dist/esm/parser/parse-context.js +40 -32
- package/dist/esm/parser/reference-parser.d.ts +2 -2
- package/dist/esm/parser/reference-parser.js +16 -12
- package/dist/esm/parser/select-parser.d.ts +1 -2
- package/dist/esm/parser/select-parser.js +3 -3
- package/dist/esm/parser/table-parser.js +11 -6
- package/dist/esm/parser/update-set-parser.js +1 -1
- package/dist/esm/parser/value-parser.js +1 -1
- package/dist/esm/query-builder/{sub-query-builder.d.ts → expression-builder.d.ts} +7 -7
- package/dist/esm/query-builder/{sub-query-builder.js → expression-builder.js} +4 -8
- package/dist/esm/query-builder/join-builder.d.ts +2 -2
- package/dist/esm/query-builder/join-builder.js +9 -13
- package/dist/esm/query-builder/query-builder.d.ts +47 -8
- package/dist/esm/query-builder/query-builder.js +165 -93
- package/dist/esm/query-builder/type-utils.d.ts +5 -5
- package/dist/esm/query-compiler/default-query-compiler.d.ts +2 -1
- package/dist/esm/query-compiler/default-query-compiler.js +27 -7
- package/dist/esm/query-creator.d.ts +2 -2
- package/dist/esm/query-creator.js +8 -12
- package/dist/esm/schema/alter-table-builder.d.ts +31 -8
- package/dist/esm/schema/alter-table-builder.js +78 -6
- package/dist/esm/schema/column-definition-builder.d.ts +10 -4
- package/dist/esm/schema/column-definition-builder.js +12 -7
- package/dist/esm/schema/create-index-builder.d.ts +5 -5
- package/dist/esm/schema/create-index-builder.js +19 -28
- package/dist/esm/schema/create-schema-builder.d.ts +5 -5
- package/dist/esm/schema/create-schema-builder.js +9 -13
- package/dist/esm/schema/create-table-builder.d.ts +22 -10
- package/dist/esm/schema/create-table-builder.js +41 -34
- package/dist/esm/schema/drop-index-builder.d.ts +5 -5
- package/dist/esm/schema/drop-index-builder.js +11 -16
- package/dist/esm/schema/drop-schema-builder.d.ts +5 -5
- package/dist/esm/schema/drop-schema-builder.js +9 -13
- package/dist/esm/schema/drop-table-builder.d.ts +5 -5
- package/dist/esm/schema/drop-table-builder.js +9 -13
- package/dist/esm/schema/foreign-key-constraint-builder.d.ts +14 -0
- package/dist/esm/schema/foreign-key-constraint-builder.js +22 -0
- package/dist/esm/transformers/with-schema-transformer.d.ts +0 -5
- package/dist/esm/transformers/with-schema-transformer.js +21 -21
- package/package.json +1 -1
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { CreateTableNode } from '../operation-node/create-table-node.js';
|
|
2
|
-
import { ColumnDataType } from '../operation-node/data-type-node.js';
|
|
3
2
|
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
4
3
|
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
5
4
|
import { Compilable } from '../util/compilable.js';
|
|
6
5
|
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
7
6
|
import { ColumnDefinitionBuilder } from './column-definition-builder.js';
|
|
8
|
-
import { RawBuilder } from '../raw-builder/raw-builder.js';
|
|
9
7
|
import { QueryId } from '../util/query-id.js';
|
|
8
|
+
import { ForeignKeyConstraintBuilder } from './foreign-key-constraint-builder.js';
|
|
9
|
+
import { DataTypeExpression } from '../parser/data-type-parser.js';
|
|
10
10
|
export declare class CreateTableBuilder implements OperationNodeSource, Compilable {
|
|
11
11
|
#private;
|
|
12
|
-
constructor(
|
|
12
|
+
constructor(props: CreateTableBuilderProps);
|
|
13
13
|
/**
|
|
14
14
|
* Adds the "if not exists" modifier.
|
|
15
15
|
*
|
|
@@ -30,7 +30,7 @@ export declare class CreateTableBuilder implements OperationNodeSource, Compilab
|
|
|
30
30
|
* .addColumn('data', db.raw('customtype'))
|
|
31
31
|
* ```
|
|
32
32
|
*/
|
|
33
|
-
addColumn(columnName: string, dataType:
|
|
33
|
+
addColumn(columnName: string, dataType: DataTypeExpression, build?: ColumnBuilderCallback): CreateTableBuilder;
|
|
34
34
|
/**
|
|
35
35
|
* Adds a primary key constraint for one or more columns.
|
|
36
36
|
*
|
|
@@ -70,15 +70,27 @@ export declare class CreateTableBuilder implements OperationNodeSource, Compilab
|
|
|
70
70
|
* ['id'],
|
|
71
71
|
* )
|
|
72
72
|
* ```
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```ts
|
|
76
|
+
* addForeignKeyConstraint(
|
|
77
|
+
* 'owner_id_foreign',
|
|
78
|
+
* ['owner_id1', 'owner_id2'],
|
|
79
|
+
* 'person',
|
|
80
|
+
* ['id1', 'id2'],
|
|
81
|
+
* (cb) => cb.onDelete('cascade')
|
|
82
|
+
* )
|
|
83
|
+
* ```
|
|
73
84
|
*/
|
|
74
|
-
addForeignKeyConstraint(constraintName: string, columns: string[], targetTable: string, targetColumns: string[]): CreateTableBuilder;
|
|
85
|
+
addForeignKeyConstraint(constraintName: string, columns: string[], targetTable: string, targetColumns: string[], build?: ForeignKeyConstraintBuilderCallback): CreateTableBuilder;
|
|
75
86
|
toOperationNode(): CreateTableNode;
|
|
76
87
|
compile(): CompiledQuery;
|
|
77
88
|
execute(): Promise<void>;
|
|
78
89
|
}
|
|
79
|
-
export interface
|
|
80
|
-
queryId: QueryId;
|
|
81
|
-
|
|
82
|
-
|
|
90
|
+
export interface CreateTableBuilderProps {
|
|
91
|
+
readonly queryId: QueryId;
|
|
92
|
+
readonly executor: QueryExecutor;
|
|
93
|
+
readonly createTableNode: CreateTableNode;
|
|
83
94
|
}
|
|
84
|
-
export declare type ColumnBuilderCallback = (
|
|
95
|
+
export declare type ColumnBuilderCallback = (builder: ColumnDefinitionBuilder) => ColumnDefinitionBuilder;
|
|
96
|
+
export declare type ForeignKeyConstraintBuilderCallback = (builder: ForeignKeyConstraintBuilder) => ForeignKeyConstraintBuilder;
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { ColumnDefinitionNode } from '../operation-node/column-definition-node.js';
|
|
2
2
|
import { CreateTableNode } from '../operation-node/create-table-node.js';
|
|
3
|
-
import { DataTypeNode, } from '../operation-node/data-type-node.js';
|
|
4
|
-
import { isOperationNodeSource, } from '../operation-node/operation-node-source.js';
|
|
5
3
|
import { preventAwait } from '../util/prevent-await.js';
|
|
6
4
|
import { ColumnDefinitionBuilder } from './column-definition-builder.js';
|
|
5
|
+
import { freeze } from '../util/object-utils.js';
|
|
6
|
+
import { ForeignKeyConstraintNode } from '../operation-node/foreign-key-constraint-node.js';
|
|
7
|
+
import { ColumnNode } from '../operation-node/column-node.js';
|
|
8
|
+
import { TableNode } from '../operation-node/table-node.js';
|
|
9
|
+
import { ForeignKeyConstraintBuilder } from './foreign-key-constraint-builder.js';
|
|
10
|
+
import { parseDataTypeExpression, } from '../parser/data-type-parser.js';
|
|
7
11
|
export class CreateTableBuilder {
|
|
8
|
-
#
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
constructor(args) {
|
|
12
|
-
this.#queryId = args.queryId;
|
|
13
|
-
this.#createTableNode = args.createTableNode;
|
|
14
|
-
this.#executor = args.executor;
|
|
12
|
+
#props;
|
|
13
|
+
constructor(props) {
|
|
14
|
+
this.#props = freeze(props);
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
17
|
* Adds the "if not exists" modifier.
|
|
@@ -20,9 +20,8 @@ export class CreateTableBuilder {
|
|
|
20
20
|
*/
|
|
21
21
|
ifNotExists() {
|
|
22
22
|
return new CreateTableBuilder({
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
createTableNode: CreateTableNode.cloneWithModifier(this.#createTableNode, 'IfNotExists'),
|
|
23
|
+
...this.#props,
|
|
24
|
+
createTableNode: CreateTableNode.cloneWithModifier(this.#props.createTableNode, 'IfNotExists'),
|
|
26
25
|
});
|
|
27
26
|
}
|
|
28
27
|
/**
|
|
@@ -40,16 +39,13 @@ export class CreateTableBuilder {
|
|
|
40
39
|
* ```
|
|
41
40
|
*/
|
|
42
41
|
addColumn(columnName, dataType, build) {
|
|
43
|
-
let columnBuilder = new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName,
|
|
44
|
-
? dataType.toOperationNode()
|
|
45
|
-
: DataTypeNode.create(dataType)));
|
|
42
|
+
let columnBuilder = new ColumnDefinitionBuilder(ColumnDefinitionNode.create(columnName, parseDataTypeExpression(dataType)));
|
|
46
43
|
if (build) {
|
|
47
44
|
columnBuilder = build(columnBuilder);
|
|
48
45
|
}
|
|
49
46
|
return new CreateTableBuilder({
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
createTableNode: CreateTableNode.cloneWithColumn(this.#createTableNode, columnBuilder.toOperationNode()),
|
|
47
|
+
...this.#props,
|
|
48
|
+
createTableNode: CreateTableNode.cloneWithColumn(this.#props.createTableNode, columnBuilder.toOperationNode()),
|
|
53
49
|
});
|
|
54
50
|
}
|
|
55
51
|
/**
|
|
@@ -62,9 +58,8 @@ export class CreateTableBuilder {
|
|
|
62
58
|
*/
|
|
63
59
|
addPrimaryKeyConstraint(constraintName, columns) {
|
|
64
60
|
return new CreateTableBuilder({
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
createTableNode: CreateTableNode.cloneWithPrimaryKeyConstraint(this.#createTableNode, constraintName, columns),
|
|
61
|
+
...this.#props,
|
|
62
|
+
createTableNode: CreateTableNode.cloneWithPrimaryKeyConstraint(this.#props.createTableNode, constraintName, columns),
|
|
68
63
|
});
|
|
69
64
|
}
|
|
70
65
|
/**
|
|
@@ -77,9 +72,8 @@ export class CreateTableBuilder {
|
|
|
77
72
|
*/
|
|
78
73
|
addUniqueConstraint(constraintName, columns) {
|
|
79
74
|
return new CreateTableBuilder({
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
createTableNode: CreateTableNode.cloneWithUniqueConstraint(this.#createTableNode, constraintName, columns),
|
|
75
|
+
...this.#props,
|
|
76
|
+
createTableNode: CreateTableNode.cloneWithUniqueConstraint(this.#props.createTableNode, constraintName, columns),
|
|
83
77
|
});
|
|
84
78
|
}
|
|
85
79
|
/**
|
|
@@ -92,9 +86,8 @@ export class CreateTableBuilder {
|
|
|
92
86
|
*/
|
|
93
87
|
addCheckConstraint(constraintName, checkExpression) {
|
|
94
88
|
return new CreateTableBuilder({
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
createTableNode: CreateTableNode.cloneWithCheckConstraint(this.#createTableNode, constraintName, checkExpression),
|
|
89
|
+
...this.#props,
|
|
90
|
+
createTableNode: CreateTableNode.cloneWithCheckConstraint(this.#props.createTableNode, constraintName, checkExpression),
|
|
98
91
|
});
|
|
99
92
|
}
|
|
100
93
|
/**
|
|
@@ -109,22 +102,36 @@ export class CreateTableBuilder {
|
|
|
109
102
|
* ['id'],
|
|
110
103
|
* )
|
|
111
104
|
* ```
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* ```ts
|
|
108
|
+
* addForeignKeyConstraint(
|
|
109
|
+
* 'owner_id_foreign',
|
|
110
|
+
* ['owner_id1', 'owner_id2'],
|
|
111
|
+
* 'person',
|
|
112
|
+
* ['id1', 'id2'],
|
|
113
|
+
* (cb) => cb.onDelete('cascade')
|
|
114
|
+
* )
|
|
115
|
+
* ```
|
|
112
116
|
*/
|
|
113
|
-
addForeignKeyConstraint(constraintName, columns, targetTable, targetColumns) {
|
|
117
|
+
addForeignKeyConstraint(constraintName, columns, targetTable, targetColumns, build) {
|
|
118
|
+
let builder = new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.create(columns.map(ColumnNode.create), TableNode.create(targetTable), targetColumns.map(ColumnNode.create), constraintName));
|
|
119
|
+
if (build) {
|
|
120
|
+
builder = build(builder);
|
|
121
|
+
}
|
|
114
122
|
return new CreateTableBuilder({
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
createTableNode: CreateTableNode.cloneWithForeignKeyConstraint(this.#createTableNode, constraintName, columns, targetTable, targetColumns),
|
|
123
|
+
...this.#props,
|
|
124
|
+
createTableNode: CreateTableNode.cloneWithForeignKeyConstraint(this.#props.createTableNode, builder.toOperationNode()),
|
|
118
125
|
});
|
|
119
126
|
}
|
|
120
127
|
toOperationNode() {
|
|
121
|
-
return this.#executor.transformQuery(this.#createTableNode, this.#queryId);
|
|
128
|
+
return this.#props.executor.transformQuery(this.#props.createTableNode, this.#props.queryId);
|
|
122
129
|
}
|
|
123
130
|
compile() {
|
|
124
|
-
return this.#executor.compileQuery(this.toOperationNode(), this.#queryId);
|
|
131
|
+
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
125
132
|
}
|
|
126
133
|
async execute() {
|
|
127
|
-
await this.#executor.executeQuery(this.compile(), this.#queryId);
|
|
134
|
+
await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
|
|
128
135
|
}
|
|
129
136
|
}
|
|
130
137
|
preventAwait(CreateTableBuilder, "don't await CreateTableBuilder instances directly. To execute the query you need to call `execute`");
|
|
@@ -6,7 +6,7 @@ import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
|
6
6
|
import { QueryId } from '../util/query-id.js';
|
|
7
7
|
export declare class DropIndexBuilder implements OperationNodeSource, Compilable {
|
|
8
8
|
#private;
|
|
9
|
-
constructor(
|
|
9
|
+
constructor(props: DropIndexBuilderProps);
|
|
10
10
|
/**
|
|
11
11
|
* Specifies the table the index was created for. This is not needed
|
|
12
12
|
* in all dialects.
|
|
@@ -17,8 +17,8 @@ export declare class DropIndexBuilder implements OperationNodeSource, Compilable
|
|
|
17
17
|
compile(): CompiledQuery;
|
|
18
18
|
execute(): Promise<void>;
|
|
19
19
|
}
|
|
20
|
-
export interface
|
|
21
|
-
queryId: QueryId;
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
export interface DropIndexBuilderProps {
|
|
21
|
+
readonly queryId: QueryId;
|
|
22
|
+
readonly executor: QueryExecutor;
|
|
23
|
+
readonly dropIndexNode: DropIndexNode;
|
|
24
24
|
}
|
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
import { DropIndexNode } from '../operation-node/drop-index-node.js';
|
|
2
2
|
import { preventAwait } from '../util/prevent-await.js';
|
|
3
3
|
import { parseTable } from '../parser/table-parser.js';
|
|
4
|
+
import { freeze } from '../util/object-utils.js';
|
|
4
5
|
export class DropIndexBuilder {
|
|
5
|
-
#
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
constructor(args) {
|
|
9
|
-
this.#queryId = args.queryId;
|
|
10
|
-
this.#dropIndexNode = args.dropIndexNode;
|
|
11
|
-
this.#executor = args.executor;
|
|
6
|
+
#props;
|
|
7
|
+
constructor(props) {
|
|
8
|
+
this.#props = freeze(props);
|
|
12
9
|
}
|
|
13
10
|
/**
|
|
14
11
|
* Specifies the table the index was created for. This is not needed
|
|
@@ -16,30 +13,28 @@ export class DropIndexBuilder {
|
|
|
16
13
|
*/
|
|
17
14
|
on(table) {
|
|
18
15
|
return new DropIndexBuilder({
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
dropIndexNode: DropIndexNode.cloneWith(this.#dropIndexNode, {
|
|
16
|
+
...this.#props,
|
|
17
|
+
dropIndexNode: DropIndexNode.cloneWith(this.#props.dropIndexNode, {
|
|
22
18
|
table: parseTable(table),
|
|
23
19
|
}),
|
|
24
20
|
});
|
|
25
21
|
}
|
|
26
22
|
ifExists() {
|
|
27
23
|
return new DropIndexBuilder({
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
dropIndexNode: DropIndexNode.cloneWith(this.#dropIndexNode, {
|
|
24
|
+
...this.#props,
|
|
25
|
+
dropIndexNode: DropIndexNode.cloneWith(this.#props.dropIndexNode, {
|
|
31
26
|
modifier: 'IfExists',
|
|
32
27
|
}),
|
|
33
28
|
});
|
|
34
29
|
}
|
|
35
30
|
toOperationNode() {
|
|
36
|
-
return this.#executor.transformQuery(this.#dropIndexNode, this.#queryId);
|
|
31
|
+
return this.#props.executor.transformQuery(this.#props.dropIndexNode, this.#props.queryId);
|
|
37
32
|
}
|
|
38
33
|
compile() {
|
|
39
|
-
return this.#executor.compileQuery(this.toOperationNode(), this.#queryId);
|
|
34
|
+
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
40
35
|
}
|
|
41
36
|
async execute() {
|
|
42
|
-
await this.#executor.executeQuery(this.compile(), this.#queryId);
|
|
37
|
+
await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
|
|
43
38
|
}
|
|
44
39
|
}
|
|
45
40
|
preventAwait(DropIndexBuilder, "don't await DropIndexBuilder instances directly. To execute the query you need to call `execute`");
|
|
@@ -6,14 +6,14 @@ import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
|
6
6
|
import { QueryId } from '../util/query-id.js';
|
|
7
7
|
export declare class DropSchemaBuilder implements OperationNodeSource, Compilable {
|
|
8
8
|
#private;
|
|
9
|
-
constructor(
|
|
9
|
+
constructor(props: DropSchemaBuilderProps);
|
|
10
10
|
ifExists(): DropSchemaBuilder;
|
|
11
11
|
toOperationNode(): DropSchemaNode;
|
|
12
12
|
compile(): CompiledQuery;
|
|
13
13
|
execute(): Promise<void>;
|
|
14
14
|
}
|
|
15
|
-
export interface
|
|
16
|
-
queryId: QueryId;
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
export interface DropSchemaBuilderProps {
|
|
16
|
+
readonly queryId: QueryId;
|
|
17
|
+
readonly executor: QueryExecutor;
|
|
18
|
+
readonly dropSchemaNode: DropSchemaNode;
|
|
19
19
|
}
|
|
@@ -1,29 +1,25 @@
|
|
|
1
1
|
import { DropSchemaNode } from '../operation-node/drop-schema-node.js';
|
|
2
2
|
import { preventAwait } from '../util/prevent-await.js';
|
|
3
|
+
import { freeze } from '../util/object-utils.js';
|
|
3
4
|
export class DropSchemaBuilder {
|
|
4
|
-
#
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
constructor(args) {
|
|
8
|
-
this.#queryId = args.queryId;
|
|
9
|
-
this.#dropSchemaNode = args.dropSchemaNode;
|
|
10
|
-
this.#executor = args.executor;
|
|
5
|
+
#props;
|
|
6
|
+
constructor(props) {
|
|
7
|
+
this.#props = freeze(props);
|
|
11
8
|
}
|
|
12
9
|
ifExists() {
|
|
13
10
|
return new DropSchemaBuilder({
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
dropSchemaNode: DropSchemaNode.cloneWithModifier(this.#dropSchemaNode, 'IfExists'),
|
|
11
|
+
...this.#props,
|
|
12
|
+
dropSchemaNode: DropSchemaNode.cloneWithModifier(this.#props.dropSchemaNode, 'IfExists'),
|
|
17
13
|
});
|
|
18
14
|
}
|
|
19
15
|
toOperationNode() {
|
|
20
|
-
return this.#executor.transformQuery(this.#dropSchemaNode, this.#queryId);
|
|
16
|
+
return this.#props.executor.transformQuery(this.#props.dropSchemaNode, this.#props.queryId);
|
|
21
17
|
}
|
|
22
18
|
compile() {
|
|
23
|
-
return this.#executor.compileQuery(this.toOperationNode(), this.#queryId);
|
|
19
|
+
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
24
20
|
}
|
|
25
21
|
async execute() {
|
|
26
|
-
await this.#executor.executeQuery(this.compile(), this.#queryId);
|
|
22
|
+
await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
|
|
27
23
|
}
|
|
28
24
|
}
|
|
29
25
|
preventAwait(DropSchemaBuilder, "don't await DropSchemaBuilder instances directly. To execute the query you need to call `execute`");
|
|
@@ -6,14 +6,14 @@ import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
|
6
6
|
import { QueryId } from '../util/query-id.js';
|
|
7
7
|
export declare class DropTableBuilder implements OperationNodeSource, Compilable {
|
|
8
8
|
#private;
|
|
9
|
-
constructor(
|
|
9
|
+
constructor(props: DropTableBuilderProps);
|
|
10
10
|
ifExists(): DropTableBuilder;
|
|
11
11
|
toOperationNode(): DropTableNode;
|
|
12
12
|
compile(): CompiledQuery;
|
|
13
13
|
execute(): Promise<void>;
|
|
14
14
|
}
|
|
15
|
-
export interface
|
|
16
|
-
queryId: QueryId;
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
export interface DropTableBuilderProps {
|
|
16
|
+
readonly queryId: QueryId;
|
|
17
|
+
readonly executor: QueryExecutor;
|
|
18
|
+
readonly dropTableNode: DropTableNode;
|
|
19
19
|
}
|
|
@@ -1,29 +1,25 @@
|
|
|
1
1
|
import { DropTableNode } from '../operation-node/drop-table-node.js';
|
|
2
2
|
import { preventAwait } from '../util/prevent-await.js';
|
|
3
|
+
import { freeze } from '../util/object-utils.js';
|
|
3
4
|
export class DropTableBuilder {
|
|
4
|
-
#
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
constructor(args) {
|
|
8
|
-
this.#queryId = args.queryId;
|
|
9
|
-
this.#dropTableNode = args.dropTableNode;
|
|
10
|
-
this.#executor = args.executor;
|
|
5
|
+
#props;
|
|
6
|
+
constructor(props) {
|
|
7
|
+
this.#props = freeze(props);
|
|
11
8
|
}
|
|
12
9
|
ifExists() {
|
|
13
10
|
return new DropTableBuilder({
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
dropTableNode: DropTableNode.cloneWithModifier(this.#dropTableNode, 'IfExists'),
|
|
11
|
+
...this.#props,
|
|
12
|
+
dropTableNode: DropTableNode.cloneWithModifier(this.#props.dropTableNode, 'IfExists'),
|
|
17
13
|
});
|
|
18
14
|
}
|
|
19
15
|
toOperationNode() {
|
|
20
|
-
return this.#executor.transformQuery(this.#dropTableNode, this.#queryId);
|
|
16
|
+
return this.#props.executor.transformQuery(this.#props.dropTableNode, this.#props.queryId);
|
|
21
17
|
}
|
|
22
18
|
compile() {
|
|
23
|
-
return this.#executor.compileQuery(this.toOperationNode(), this.#queryId);
|
|
19
|
+
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
24
20
|
}
|
|
25
21
|
async execute() {
|
|
26
|
-
await this.#executor.executeQuery(this.compile(), this.#queryId);
|
|
22
|
+
await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
|
|
27
23
|
}
|
|
28
24
|
}
|
|
29
25
|
preventAwait(DropTableBuilder, "don't await DropTableBuilder instances directly. To execute the query you need to call `execute`");
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ForeignKeyConstraintNode } from '../operation-node/foreign-key-constraint-node.js';
|
|
2
|
+
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
3
|
+
import { OnModifyForeignAction } from '../operation-node/references-node.js';
|
|
4
|
+
export interface ForeignKeyConstraintBuilderInterface<R> {
|
|
5
|
+
onDelete(onDelete: OnModifyForeignAction): R;
|
|
6
|
+
onUpdate(onUpdate: OnModifyForeignAction): R;
|
|
7
|
+
}
|
|
8
|
+
export declare class ForeignKeyConstraintBuilder implements ForeignKeyConstraintBuilderInterface<ForeignKeyConstraintBuilder>, OperationNodeSource {
|
|
9
|
+
#private;
|
|
10
|
+
constructor(node: ForeignKeyConstraintNode);
|
|
11
|
+
onDelete(onDelete: OnModifyForeignAction): ForeignKeyConstraintBuilder;
|
|
12
|
+
onUpdate(onUpdate: OnModifyForeignAction): ForeignKeyConstraintBuilder;
|
|
13
|
+
toOperationNode(): ForeignKeyConstraintNode;
|
|
14
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ForeignKeyConstraintNode } from '../operation-node/foreign-key-constraint-node.js';
|
|
2
|
+
import { preventAwait } from '../util/prevent-await.js';
|
|
3
|
+
export class ForeignKeyConstraintBuilder {
|
|
4
|
+
#node;
|
|
5
|
+
constructor(node) {
|
|
6
|
+
this.#node = node;
|
|
7
|
+
}
|
|
8
|
+
onDelete(onDelete) {
|
|
9
|
+
return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, {
|
|
10
|
+
onDelete,
|
|
11
|
+
}));
|
|
12
|
+
}
|
|
13
|
+
onUpdate(onUpdate) {
|
|
14
|
+
return new ForeignKeyConstraintBuilder(ForeignKeyConstraintNode.cloneWith(this.#node, {
|
|
15
|
+
onUpdate,
|
|
16
|
+
}));
|
|
17
|
+
}
|
|
18
|
+
toOperationNode() {
|
|
19
|
+
return this.#node;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
preventAwait(ForeignKeyConstraintBuilder, "don't await ForeignKeyConstraintBuilder instances directly.");
|
|
@@ -22,9 +22,4 @@ export declare class WithSchemaTransformer extends OperationNodeTransformer {
|
|
|
22
22
|
protected transformDropIndex(node: DropIndexNode): DropIndexNode;
|
|
23
23
|
protected transformAlterTable(node: AlterTableNode): AlterTableNode;
|
|
24
24
|
protected transformTable(node: TableNode): TableNode;
|
|
25
|
-
private transformRoot;
|
|
26
|
-
private collectTables;
|
|
27
|
-
private collectTablesFromTableExpressionNodes;
|
|
28
|
-
private collectTablesFromJoins;
|
|
29
|
-
private collectTablesFromTableExpressionNode;
|
|
30
25
|
}
|
|
@@ -9,31 +9,31 @@ export class WithSchemaTransformer extends OperationNodeTransformer {
|
|
|
9
9
|
this.#schema = schema;
|
|
10
10
|
}
|
|
11
11
|
transformSelectQuery(node) {
|
|
12
|
-
return this
|
|
12
|
+
return this.#transformRoot(node, (node) => super.transformSelectQuery(node));
|
|
13
13
|
}
|
|
14
14
|
transformInsertQuery(node) {
|
|
15
|
-
return this
|
|
15
|
+
return this.#transformRoot(node, (node) => super.transformInsertQuery(node));
|
|
16
16
|
}
|
|
17
17
|
transformUpdateQuery(node) {
|
|
18
|
-
return this
|
|
18
|
+
return this.#transformRoot(node, (node) => super.transformUpdateQuery(node));
|
|
19
19
|
}
|
|
20
20
|
transformDeleteQuery(node) {
|
|
21
|
-
return this
|
|
21
|
+
return this.#transformRoot(node, (node) => super.transformDeleteQuery(node));
|
|
22
22
|
}
|
|
23
23
|
transformCreateTable(node) {
|
|
24
|
-
return this
|
|
24
|
+
return this.#transformRoot(node, (node) => super.transformCreateTable(node));
|
|
25
25
|
}
|
|
26
26
|
transformDropTable(node) {
|
|
27
|
-
return this
|
|
27
|
+
return this.#transformRoot(node, (node) => super.transformDropTable(node));
|
|
28
28
|
}
|
|
29
29
|
transformCreateIndex(node) {
|
|
30
|
-
return this
|
|
30
|
+
return this.#transformRoot(node, (node) => super.transformCreateIndex(node));
|
|
31
31
|
}
|
|
32
32
|
transformDropIndex(node) {
|
|
33
|
-
return this
|
|
33
|
+
return this.#transformRoot(node, (node) => super.transformDropIndex(node));
|
|
34
34
|
}
|
|
35
35
|
transformAlterTable(node) {
|
|
36
|
-
return this
|
|
36
|
+
return this.#transformRoot(node, (node) => super.transformAlterTable(node));
|
|
37
37
|
}
|
|
38
38
|
transformTable(node) {
|
|
39
39
|
const transformed = super.transformTable(node);
|
|
@@ -48,8 +48,8 @@ export class WithSchemaTransformer extends OperationNodeTransformer {
|
|
|
48
48
|
},
|
|
49
49
|
};
|
|
50
50
|
}
|
|
51
|
-
transformRoot(node, transform) {
|
|
52
|
-
const tables = this
|
|
51
|
+
#transformRoot(node, transform) {
|
|
52
|
+
const tables = this.#collectTables(node);
|
|
53
53
|
for (const table of tables) {
|
|
54
54
|
this.#tables.add(table);
|
|
55
55
|
}
|
|
@@ -59,33 +59,33 @@ export class WithSchemaTransformer extends OperationNodeTransformer {
|
|
|
59
59
|
}
|
|
60
60
|
return transformed;
|
|
61
61
|
}
|
|
62
|
-
collectTables(node) {
|
|
62
|
+
#collectTables(node) {
|
|
63
63
|
const tables = new Set();
|
|
64
64
|
if ('from' in node && node.from) {
|
|
65
|
-
this
|
|
65
|
+
this.#collectTablesFromTableExpressionNodes(node.from.froms, tables);
|
|
66
66
|
}
|
|
67
67
|
if ('into' in node && node.into) {
|
|
68
|
-
this
|
|
68
|
+
this.#collectTablesFromTableExpressionNode(node.into, tables);
|
|
69
69
|
}
|
|
70
70
|
if ('table' in node && node.table) {
|
|
71
|
-
this
|
|
71
|
+
this.#collectTablesFromTableExpressionNode(node.table, tables);
|
|
72
72
|
}
|
|
73
73
|
if ('joins' in node && node.joins) {
|
|
74
|
-
this
|
|
74
|
+
this.#collectTablesFromJoins(node.joins, tables);
|
|
75
75
|
}
|
|
76
76
|
return tables;
|
|
77
77
|
}
|
|
78
|
-
collectTablesFromTableExpressionNodes(nodes, tables) {
|
|
78
|
+
#collectTablesFromTableExpressionNodes(nodes, tables) {
|
|
79
79
|
for (const node of nodes) {
|
|
80
|
-
this
|
|
80
|
+
this.#collectTablesFromTableExpressionNode(node, tables);
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
|
-
collectTablesFromJoins(nodes, tables) {
|
|
83
|
+
#collectTablesFromJoins(nodes, tables) {
|
|
84
84
|
for (const node of nodes) {
|
|
85
|
-
this
|
|
85
|
+
this.#collectTablesFromTableExpressionNode(node.table, tables);
|
|
86
86
|
}
|
|
87
87
|
}
|
|
88
|
-
collectTablesFromTableExpressionNode(node, tables) {
|
|
88
|
+
#collectTablesFromTableExpressionNode(node, tables) {
|
|
89
89
|
const table = TableNode.is(node)
|
|
90
90
|
? node
|
|
91
91
|
: AliasNode.is(node) && TableNode.is(node.node)
|