kysely 0.26.2 → 0.27.0
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/dialect-adapter-base.d.ts +8 -0
- package/dist/cjs/dialect/dialect-adapter-base.js +3 -0
- package/dist/cjs/dialect/dialect-adapter.d.ts +8 -0
- package/dist/cjs/dialect/mssql/mssql-adapter.d.ts +78 -0
- package/dist/cjs/dialect/mssql/mssql-adapter.js +30 -0
- package/dist/cjs/dialect/mssql/mssql-dialect-config.d.ts +143 -0
- package/dist/cjs/dialect/mssql/mssql-dialect-config.js +2 -0
- package/dist/cjs/dialect/mssql/mssql-dialect.d.ts +70 -0
- package/dist/cjs/dialect/mssql/mssql-dialect.js +65 -0
- package/dist/cjs/dialect/mssql/mssql-driver.d.ts +54 -0
- package/dist/cjs/dialect/mssql/mssql-driver.js +268 -0
- package/dist/cjs/dialect/mssql/mssql-introspector.d.ts +20 -0
- package/dist/cjs/dialect/mssql/mssql-introspector.js +97 -0
- package/dist/cjs/dialect/mssql/mssql-query-compiler.d.ts +11 -0
- package/dist/cjs/dialect/mssql/mssql-query-compiler.js +64 -0
- package/dist/cjs/dialect/mysql/mysql-query-compiler.d.ts +2 -0
- package/dist/cjs/dialect/mysql/mysql-query-compiler.js +28 -0
- package/dist/cjs/dialect/postgres/postgres-driver.js +1 -1
- package/dist/cjs/dialect/sqlite/sqlite-adapter.d.ts +1 -1
- package/dist/cjs/dialect/sqlite/sqlite-adapter.js +2 -1
- package/dist/cjs/dialect/sqlite/sqlite-dialect-config.d.ts +1 -0
- package/dist/cjs/dialect/sqlite/sqlite-driver.js +15 -2
- package/dist/cjs/driver/driver.d.ts +1 -1
- package/dist/cjs/driver/driver.js +1 -0
- package/dist/cjs/driver/runtime-driver.js +5 -1
- package/dist/cjs/driver/single-connection-provider.js +7 -8
- package/dist/cjs/expression/expression-builder.d.ts +66 -73
- package/dist/cjs/expression/expression-builder.js +8 -17
- package/dist/cjs/expression/expression-wrapper.d.ts +8 -8
- package/dist/cjs/helpers/mssql.d.ts +152 -0
- package/dist/cjs/helpers/mssql.js +160 -0
- package/dist/cjs/helpers/mysql.d.ts +3 -3
- package/dist/cjs/helpers/sqlite.d.ts +3 -3
- package/dist/cjs/index.d.ts +8 -2
- package/dist/cjs/index.js +6 -0
- package/dist/cjs/migration/migrator.js +12 -16
- package/dist/cjs/operation-node/add-index-node.d.ts +21 -0
- package/dist/cjs/operation-node/add-index-node.js +31 -0
- package/dist/cjs/operation-node/alter-table-node.d.ts +5 -1
- package/dist/cjs/operation-node/column-definition-node.d.ts +1 -0
- package/dist/cjs/operation-node/column-update-node.d.ts +2 -3
- package/dist/cjs/operation-node/create-index-node.d.ts +1 -0
- package/dist/cjs/operation-node/create-table-node.d.ts +1 -0
- package/dist/cjs/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-transformer.js +17 -0
- package/dist/cjs/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/cjs/operation-node/operation-node-visitor.js +1 -0
- package/dist/cjs/operation-node/operation-node.d.ts +1 -1
- package/dist/cjs/operation-node/operator-node.d.ts +3 -3
- package/dist/cjs/operation-node/operator-node.js +2 -0
- package/dist/cjs/operation-node/unique-constraint-node.d.ts +4 -1
- package/dist/cjs/operation-node/unique-constraint-node.js +8 -1
- package/dist/cjs/parser/binary-operation-parser.js +1 -1
- package/dist/cjs/parser/coalesce-parser.d.ts +12 -2
- package/dist/cjs/parser/expression-parser.d.ts +2 -2
- package/dist/cjs/parser/reference-parser.d.ts +3 -2
- package/dist/cjs/parser/returning-parser.d.ts +2 -1
- package/dist/cjs/parser/select-parser.d.ts +20 -9
- package/dist/cjs/parser/update-set-parser.d.ts +5 -2
- package/dist/cjs/parser/update-set-parser.js +13 -3
- package/dist/cjs/parser/value-parser.d.ts +2 -2
- package/dist/cjs/query-builder/aggregate-function-builder.d.ts +4 -4
- package/dist/cjs/query-builder/case-builder.d.ts +5 -4
- package/dist/cjs/query-builder/delete-query-builder.d.ts +8 -6
- package/dist/cjs/query-builder/function-module.d.ts +98 -27
- package/dist/cjs/query-builder/function-module.js +17 -3
- package/dist/cjs/query-builder/having-interface.d.ts +3 -5
- package/dist/cjs/query-builder/insert-query-builder.d.ts +32 -12
- package/dist/cjs/query-builder/insert-query-builder.js +3 -3
- package/dist/cjs/query-builder/insert-result.d.ts +8 -1
- package/dist/cjs/query-builder/insert-result.js +8 -1
- package/dist/cjs/query-builder/json-path-builder.d.ts +3 -2
- package/dist/cjs/query-builder/json-path-builder.js +6 -3
- package/dist/cjs/query-builder/on-conflict-builder.d.ts +58 -16
- package/dist/cjs/query-builder/on-conflict-builder.js +1 -6
- package/dist/cjs/query-builder/over-builder.d.ts +2 -2
- package/dist/cjs/query-builder/returning-interface.d.ts +3 -2
- package/dist/cjs/query-builder/select-query-builder-expression.d.ts +20 -0
- package/dist/cjs/query-builder/select-query-builder-expression.js +2 -0
- package/dist/cjs/query-builder/select-query-builder.d.ts +48 -29
- package/dist/cjs/query-builder/select-query-builder.js +5 -2
- package/dist/cjs/query-builder/update-query-builder.d.ts +25 -7
- package/dist/cjs/query-builder/update-query-builder.js +2 -2
- package/dist/cjs/query-builder/where-interface.d.ts +3 -3
- package/dist/cjs/query-compiler/default-query-compiler.d.ts +9 -1
- package/dist/cjs/query-compiler/default-query-compiler.js +65 -12
- package/dist/cjs/query-creator.d.ts +5 -3
- package/dist/cjs/query-creator.js +0 -47
- package/dist/cjs/raw-builder/raw-builder.d.ts +0 -3
- package/dist/cjs/schema/alter-table-add-index-builder.d.ts +104 -0
- package/dist/cjs/schema/alter-table-add-index-builder.js +146 -0
- package/dist/cjs/schema/alter-table-builder.d.ts +41 -1
- package/dist/cjs/schema/alter-table-builder.js +59 -2
- package/dist/cjs/schema/column-definition-builder.d.ts +25 -0
- package/dist/cjs/schema/column-definition-builder.js +27 -0
- package/dist/cjs/schema/create-index-builder.d.ts +23 -0
- package/dist/cjs/schema/create-index-builder.js +30 -0
- package/dist/cjs/schema/create-table-builder.d.ts +28 -2
- package/dist/cjs/schema/create-table-builder.js +38 -3
- package/dist/cjs/schema/create-view-builder.d.ts +2 -2
- package/dist/cjs/schema/unique-constraint-builder.d.ts +14 -0
- package/dist/cjs/schema/unique-constraint-builder.js +24 -0
- package/dist/cjs/util/infer-result.d.ts +2 -1
- package/dist/cjs/util/log.js +5 -1
- package/dist/cjs/util/object-utils.d.ts +1 -1
- package/dist/cjs/util/type-utils.d.ts +27 -20
- package/dist/esm/dialect/dialect-adapter-base.d.ts +8 -0
- package/dist/esm/dialect/dialect-adapter-base.js +3 -0
- package/dist/esm/dialect/dialect-adapter.d.ts +8 -0
- package/dist/esm/dialect/mssql/mssql-adapter.d.ts +78 -0
- package/dist/esm/dialect/mssql/mssql-adapter.js +27 -0
- package/dist/esm/dialect/mssql/mssql-dialect-config.d.ts +143 -0
- package/dist/esm/dialect/mssql/mssql-dialect-config.js +2 -0
- package/dist/esm/dialect/mssql/mssql-dialect.d.ts +70 -0
- package/dist/esm/dialect/mssql/mssql-dialect.js +62 -0
- package/dist/esm/dialect/mssql/mssql-driver.d.ts +54 -0
- package/dist/esm/dialect/mssql/mssql-driver.js +265 -0
- package/dist/esm/dialect/mssql/mssql-introspector.d.ts +20 -0
- package/dist/esm/dialect/mssql/mssql-introspector.js +94 -0
- package/dist/esm/dialect/mssql/mssql-query-compiler.d.ts +11 -0
- package/dist/esm/dialect/mssql/mssql-query-compiler.js +61 -0
- package/dist/esm/dialect/mysql/mysql-query-compiler.d.ts +2 -0
- package/dist/esm/dialect/mysql/mysql-query-compiler.js +28 -0
- package/dist/esm/dialect/postgres/postgres-driver.js +1 -1
- package/dist/esm/dialect/sqlite/sqlite-adapter.d.ts +1 -1
- package/dist/esm/dialect/sqlite/sqlite-adapter.js +2 -1
- package/dist/esm/dialect/sqlite/sqlite-dialect-config.d.ts +1 -0
- package/dist/esm/dialect/sqlite/sqlite-driver.js +15 -2
- package/dist/esm/driver/driver.d.ts +1 -1
- package/dist/esm/driver/driver.js +1 -0
- package/dist/esm/driver/runtime-driver.js +5 -1
- package/dist/esm/driver/single-connection-provider.js +7 -8
- package/dist/esm/expression/expression-builder.d.ts +66 -73
- package/dist/esm/expression/expression-builder.js +10 -19
- package/dist/esm/expression/expression-wrapper.d.ts +8 -8
- package/dist/esm/helpers/mssql.d.ts +152 -0
- package/dist/esm/helpers/mssql.js +155 -0
- package/dist/esm/helpers/mysql.d.ts +3 -3
- package/dist/esm/helpers/sqlite.d.ts +3 -3
- package/dist/esm/index.d.ts +8 -2
- package/dist/esm/index.js +6 -0
- package/dist/esm/migration/migrator.js +12 -16
- package/dist/esm/operation-node/add-index-node.d.ts +21 -0
- package/dist/esm/operation-node/add-index-node.js +29 -0
- package/dist/esm/operation-node/alter-table-node.d.ts +5 -1
- package/dist/esm/operation-node/column-definition-node.d.ts +1 -0
- package/dist/esm/operation-node/column-update-node.d.ts +2 -3
- package/dist/esm/operation-node/create-index-node.d.ts +1 -0
- package/dist/esm/operation-node/create-table-node.d.ts +1 -0
- package/dist/esm/operation-node/operation-node-transformer.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-transformer.js +17 -0
- package/dist/esm/operation-node/operation-node-visitor.d.ts +2 -0
- package/dist/esm/operation-node/operation-node-visitor.js +1 -0
- package/dist/esm/operation-node/operation-node.d.ts +1 -1
- package/dist/esm/operation-node/operator-node.d.ts +3 -3
- package/dist/esm/operation-node/operator-node.js +2 -0
- package/dist/esm/operation-node/unique-constraint-node.d.ts +4 -1
- package/dist/esm/operation-node/unique-constraint-node.js +8 -1
- package/dist/esm/parser/binary-operation-parser.js +1 -1
- package/dist/esm/parser/coalesce-parser.d.ts +12 -2
- package/dist/esm/parser/expression-parser.d.ts +2 -2
- package/dist/esm/parser/reference-parser.d.ts +3 -2
- package/dist/esm/parser/returning-parser.d.ts +2 -1
- package/dist/esm/parser/select-parser.d.ts +20 -9
- package/dist/esm/parser/update-set-parser.d.ts +5 -2
- package/dist/esm/parser/update-set-parser.js +10 -1
- package/dist/esm/parser/value-parser.d.ts +2 -2
- package/dist/esm/query-builder/aggregate-function-builder.d.ts +4 -4
- package/dist/esm/query-builder/case-builder.d.ts +5 -4
- package/dist/esm/query-builder/delete-query-builder.d.ts +8 -6
- package/dist/esm/query-builder/function-module.d.ts +98 -27
- package/dist/esm/query-builder/function-module.js +17 -3
- package/dist/esm/query-builder/having-interface.d.ts +3 -5
- package/dist/esm/query-builder/insert-query-builder.d.ts +32 -12
- package/dist/esm/query-builder/insert-query-builder.js +4 -4
- package/dist/esm/query-builder/insert-result.d.ts +8 -1
- package/dist/esm/query-builder/insert-result.js +8 -1
- package/dist/esm/query-builder/json-path-builder.d.ts +3 -2
- package/dist/esm/query-builder/json-path-builder.js +6 -3
- package/dist/esm/query-builder/on-conflict-builder.d.ts +58 -16
- package/dist/esm/query-builder/on-conflict-builder.js +2 -7
- package/dist/esm/query-builder/over-builder.d.ts +2 -2
- package/dist/esm/query-builder/returning-interface.d.ts +3 -2
- package/dist/esm/query-builder/select-query-builder-expression.d.ts +20 -0
- package/dist/esm/query-builder/select-query-builder-expression.js +2 -0
- package/dist/esm/query-builder/select-query-builder.d.ts +48 -29
- package/dist/esm/query-builder/select-query-builder.js +5 -2
- package/dist/esm/query-builder/update-query-builder.d.ts +25 -7
- package/dist/esm/query-builder/update-query-builder.js +3 -3
- package/dist/esm/query-builder/where-interface.d.ts +3 -3
- package/dist/esm/query-compiler/default-query-compiler.d.ts +9 -1
- package/dist/esm/query-compiler/default-query-compiler.js +65 -12
- package/dist/esm/query-creator.d.ts +5 -3
- package/dist/esm/query-creator.js +0 -47
- package/dist/esm/raw-builder/raw-builder.d.ts +0 -3
- package/dist/esm/schema/alter-table-add-index-builder.d.ts +104 -0
- package/dist/esm/schema/alter-table-add-index-builder.js +143 -0
- package/dist/esm/schema/alter-table-builder.d.ts +41 -1
- package/dist/esm/schema/alter-table-builder.js +59 -2
- package/dist/esm/schema/column-definition-builder.d.ts +25 -0
- package/dist/esm/schema/column-definition-builder.js +27 -0
- package/dist/esm/schema/create-index-builder.d.ts +23 -0
- package/dist/esm/schema/create-index-builder.js +30 -0
- package/dist/esm/schema/create-table-builder.d.ts +28 -2
- package/dist/esm/schema/create-table-builder.js +38 -3
- package/dist/esm/schema/create-view-builder.d.ts +2 -2
- package/dist/esm/schema/unique-constraint-builder.d.ts +14 -0
- package/dist/esm/schema/unique-constraint-builder.js +21 -0
- package/dist/esm/util/infer-result.d.ts +2 -1
- package/dist/esm/util/log.js +5 -1
- package/dist/esm/util/object-utils.d.ts +1 -1
- package/dist/esm/util/type-utils.d.ts +27 -20
- package/helpers/mssql.d.ts +1 -0
- package/helpers/mssql.js +1 -0
- package/package.json +17 -6
|
@@ -48,7 +48,7 @@ import { RootOperationNode, QueryCompiler } from './query-compiler.js';
|
|
|
48
48
|
import { HavingNode } from '../operation-node/having-node.js';
|
|
49
49
|
import { CreateSchemaNode } from '../operation-node/create-schema-node.js';
|
|
50
50
|
import { DropSchemaNode } from '../operation-node/drop-schema-node.js';
|
|
51
|
-
import { AlterTableNode } from '../operation-node/alter-table-node.js';
|
|
51
|
+
import { AlterTableColumnAlterationNode, AlterTableNode } from '../operation-node/alter-table-node.js';
|
|
52
52
|
import { DropColumnNode } from '../operation-node/drop-column-node.js';
|
|
53
53
|
import { RenameColumnNode } from '../operation-node/rename-column-node.js';
|
|
54
54
|
import { AlterColumnNode } from '../operation-node/alter-column-node.js';
|
|
@@ -88,6 +88,7 @@ import { JSONPathNode } from '../operation-node/json-path-node.js';
|
|
|
88
88
|
import { JSONPathLegNode } from '../operation-node/json-path-leg-node.js';
|
|
89
89
|
import { JSONOperatorChainNode } from '../operation-node/json-operator-chain-node.js';
|
|
90
90
|
import { TupleNode } from '../operation-node/tuple-node.js';
|
|
91
|
+
import { AddIndexNode } from '../operation-node/add-index-node.js';
|
|
91
92
|
export declare class DefaultQueryCompiler extends OperationNodeVisitor implements QueryCompiler {
|
|
92
93
|
#private;
|
|
93
94
|
protected get numParameters(): number;
|
|
@@ -184,6 +185,7 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
|
|
|
184
185
|
protected visitJSONPath(node: JSONPathNode): void;
|
|
185
186
|
protected visitJSONPathLeg(node: JSONPathLegNode): void;
|
|
186
187
|
protected visitJSONOperatorChain(node: JSONOperatorChainNode): void;
|
|
188
|
+
protected visitAddIndex(node: AddIndexNode): void;
|
|
187
189
|
protected append(str: string): void;
|
|
188
190
|
protected appendValue(parameter: unknown): void;
|
|
189
191
|
protected getLeftIdentifierWrapper(): string;
|
|
@@ -197,4 +199,10 @@ export declare class DefaultQueryCompiler extends OperationNodeVisitor implement
|
|
|
197
199
|
protected addParameter(parameter: unknown): void;
|
|
198
200
|
protected appendImmediateValue(value: unknown): void;
|
|
199
201
|
protected sortSelectModifiers(arr: SelectModifierNode[]): ReadonlyArray<SelectModifierNode>;
|
|
202
|
+
protected compileColumnAlterations(columnAlterations: readonly AlterTableColumnAlterationNode[]): void;
|
|
203
|
+
/**
|
|
204
|
+
* controls whether the dialect adds a "type" keyword before a column's new data
|
|
205
|
+
* type in an ALTER TABLE statement.
|
|
206
|
+
*/
|
|
207
|
+
protected announcesNewColumnDataType(): boolean;
|
|
200
208
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.DefaultQueryCompiler = void 0;
|
|
4
|
+
const create_table_node_js_1 = require("../operation-node/create-table-node.js");
|
|
4
5
|
const insert_query_node_js_1 = require("../operation-node/insert-query-node.js");
|
|
5
6
|
const operation_node_visitor_js_1 = require("../operation-node/operation-node-visitor.js");
|
|
6
7
|
const operator_node_js_1 = require("../operation-node/operator-node.js");
|
|
@@ -32,6 +33,7 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
32
33
|
const wrapInParens = this.parentNode !== undefined &&
|
|
33
34
|
!parens_node_js_1.ParensNode.is(this.parentNode) &&
|
|
34
35
|
!insert_query_node_js_1.InsertQueryNode.is(this.parentNode) &&
|
|
36
|
+
!create_table_node_js_1.CreateTableNode.is(this.parentNode) &&
|
|
35
37
|
!create_view_node_js_1.CreateViewNode.is(this.parentNode) &&
|
|
36
38
|
!set_operation_node_js_1.SetOperationNode.is(this.parentNode);
|
|
37
39
|
if (this.parentNode === undefined && node.explain) {
|
|
@@ -348,16 +350,22 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
348
350
|
this.append('if not exists ');
|
|
349
351
|
}
|
|
350
352
|
this.visitNode(node.table);
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
if (node.onCommit) {
|
|
355
|
-
this.append(' on commit ');
|
|
356
|
-
this.append(node.onCommit);
|
|
353
|
+
if (node.selectQuery) {
|
|
354
|
+
this.append(' as ');
|
|
355
|
+
this.visitNode(node.selectQuery);
|
|
357
356
|
}
|
|
358
|
-
|
|
359
|
-
this.append(' ');
|
|
360
|
-
this.compileList(node.
|
|
357
|
+
else {
|
|
358
|
+
this.append(' (');
|
|
359
|
+
this.compileList([...node.columns, ...(node.constraints ?? [])]);
|
|
360
|
+
this.append(')');
|
|
361
|
+
if (node.onCommit) {
|
|
362
|
+
this.append(' on commit ');
|
|
363
|
+
this.append(node.onCommit);
|
|
364
|
+
}
|
|
365
|
+
if (node.endModifiers && node.endModifiers.length > 0) {
|
|
366
|
+
this.append(' ');
|
|
367
|
+
this.compileList(node.endModifiers, ' ');
|
|
368
|
+
}
|
|
361
369
|
}
|
|
362
370
|
}
|
|
363
371
|
visitColumnDefinition(node) {
|
|
@@ -385,6 +393,9 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
385
393
|
if (node.unique) {
|
|
386
394
|
this.append(' unique');
|
|
387
395
|
}
|
|
396
|
+
if (node.nullsNotDistinct) {
|
|
397
|
+
this.append(' nulls not distinct');
|
|
398
|
+
}
|
|
388
399
|
if (node.primaryKey) {
|
|
389
400
|
this.append(' primary key');
|
|
390
401
|
}
|
|
@@ -565,6 +576,9 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
565
576
|
this.compileList(node.columns);
|
|
566
577
|
this.append(')');
|
|
567
578
|
}
|
|
579
|
+
if (node.nullsNotDistinct) {
|
|
580
|
+
this.append(' nulls not distinct');
|
|
581
|
+
}
|
|
568
582
|
if (node.where) {
|
|
569
583
|
this.append(' ');
|
|
570
584
|
this.visitNode(node.where);
|
|
@@ -617,7 +631,11 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
617
631
|
this.visitNode(node.name);
|
|
618
632
|
this.append(' ');
|
|
619
633
|
}
|
|
620
|
-
this.append('unique
|
|
634
|
+
this.append('unique');
|
|
635
|
+
if (node.nullsNotDistinct) {
|
|
636
|
+
this.append(' nulls not distinct');
|
|
637
|
+
}
|
|
638
|
+
this.append(' (');
|
|
621
639
|
this.compileList(node.columns);
|
|
622
640
|
this.append(')');
|
|
623
641
|
}
|
|
@@ -698,7 +716,13 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
698
716
|
this.visitNode(node.dropConstraint);
|
|
699
717
|
}
|
|
700
718
|
if (node.columnAlterations) {
|
|
701
|
-
this.
|
|
719
|
+
this.compileColumnAlterations(node.columnAlterations);
|
|
720
|
+
}
|
|
721
|
+
if (node.addIndex) {
|
|
722
|
+
this.visitNode(node.addIndex);
|
|
723
|
+
}
|
|
724
|
+
if (node.dropIndex) {
|
|
725
|
+
this.visitNode(node.dropIndex);
|
|
702
726
|
}
|
|
703
727
|
}
|
|
704
728
|
visitAddColumn(node) {
|
|
@@ -720,7 +744,9 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
720
744
|
this.visitNode(node.column);
|
|
721
745
|
this.append(' ');
|
|
722
746
|
if (node.dataType) {
|
|
723
|
-
this.
|
|
747
|
+
if (this.announcesNewColumnDataType()) {
|
|
748
|
+
this.append('type ');
|
|
749
|
+
}
|
|
724
750
|
this.visitNode(node.dataType);
|
|
725
751
|
if (node.dataTypeExpression) {
|
|
726
752
|
this.append('using ');
|
|
@@ -1006,6 +1032,23 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
1006
1032
|
this.visitNode(node.values[i]);
|
|
1007
1033
|
}
|
|
1008
1034
|
}
|
|
1035
|
+
visitAddIndex(node) {
|
|
1036
|
+
this.append('add ');
|
|
1037
|
+
if (node.unique) {
|
|
1038
|
+
this.append('unique ');
|
|
1039
|
+
}
|
|
1040
|
+
this.append('index ');
|
|
1041
|
+
this.visitNode(node.name);
|
|
1042
|
+
if (node.columns) {
|
|
1043
|
+
this.append(' (');
|
|
1044
|
+
this.compileList(node.columns);
|
|
1045
|
+
this.append(')');
|
|
1046
|
+
}
|
|
1047
|
+
if (node.using) {
|
|
1048
|
+
this.append(' using ');
|
|
1049
|
+
this.visitNode(node.using);
|
|
1050
|
+
}
|
|
1051
|
+
}
|
|
1009
1052
|
append(str) {
|
|
1010
1053
|
this.#sql += str;
|
|
1011
1054
|
}
|
|
@@ -1079,6 +1122,16 @@ class DefaultQueryCompiler extends operation_node_visitor_js_1.OperationNodeVisi
|
|
|
1079
1122
|
: 1);
|
|
1080
1123
|
return (0, object_utils_js_1.freeze)(arr);
|
|
1081
1124
|
}
|
|
1125
|
+
compileColumnAlterations(columnAlterations) {
|
|
1126
|
+
this.compileList(columnAlterations);
|
|
1127
|
+
}
|
|
1128
|
+
/**
|
|
1129
|
+
* controls whether the dialect adds a "type" keyword before a column's new data
|
|
1130
|
+
* type in an ALTER TABLE statement.
|
|
1131
|
+
*/
|
|
1132
|
+
announcesNewColumnDataType() {
|
|
1133
|
+
return true;
|
|
1134
|
+
}
|
|
1082
1135
|
}
|
|
1083
1136
|
exports.DefaultQueryCompiler = DefaultQueryCompiler;
|
|
1084
1137
|
const SELECT_MODIFIER_SQL = (0, object_utils_js_1.freeze)({
|
|
@@ -11,7 +11,7 @@ import { DeleteResult } from './query-builder/delete-result.js';
|
|
|
11
11
|
import { UpdateResult } from './query-builder/update-result.js';
|
|
12
12
|
import { KyselyPlugin } from './plugin/kysely-plugin.js';
|
|
13
13
|
import { CTEBuilderCallback } from './query-builder/cte-builder.js';
|
|
14
|
-
import {
|
|
14
|
+
import { CallbackSelection, SelectCallback, SelectExpression, Selection } from './parser/select-parser.js';
|
|
15
15
|
export declare class QueryCreator<DB> {
|
|
16
16
|
#private;
|
|
17
17
|
constructor(props: QueryCreatorProps);
|
|
@@ -139,7 +139,7 @@ export declare class QueryCreator<DB> {
|
|
|
139
139
|
* ### Examples
|
|
140
140
|
*
|
|
141
141
|
* ```ts
|
|
142
|
-
* const result = db.
|
|
142
|
+
* const result = db.selectNoFrom((eb) => [
|
|
143
143
|
* eb.selectFrom('person')
|
|
144
144
|
* .select('id')
|
|
145
145
|
* .where('first_name', '=', 'Jennifer')
|
|
@@ -174,7 +174,9 @@ export declare class QueryCreator<DB> {
|
|
|
174
174
|
* ) as "doggo_id"
|
|
175
175
|
* ```
|
|
176
176
|
*/
|
|
177
|
-
selectNoFrom<SE extends SelectExpression<DB, never>>(
|
|
177
|
+
selectNoFrom<SE extends SelectExpression<DB, never>>(selections: ReadonlyArray<SE>): SelectQueryBuilder<DB, never, Selection<DB, never, SE>>;
|
|
178
|
+
selectNoFrom<CB extends SelectCallback<DB, never>>(callback: CB): SelectQueryBuilder<DB, never, CallbackSelection<DB, never, CB>>;
|
|
179
|
+
selectNoFrom<SE extends SelectExpression<DB, never>>(selection: SE): SelectQueryBuilder<DB, never, Selection<DB, never, SE>>;
|
|
178
180
|
/**
|
|
179
181
|
* Creates an insert query.
|
|
180
182
|
*
|
|
@@ -28,53 +28,6 @@ class QueryCreator {
|
|
|
28
28
|
queryNode: select_query_node_js_1.SelectQueryNode.createFrom((0, table_parser_js_1.parseTableExpressionOrList)(from), this.#props.withNode),
|
|
29
29
|
});
|
|
30
30
|
}
|
|
31
|
-
/**
|
|
32
|
-
* Creates a `select` query builder without a `from` clause.
|
|
33
|
-
*
|
|
34
|
-
* If you want to create a `select from` query, use the `selectFrom` method instead.
|
|
35
|
-
* This one can be used to create a plain `select` statement without a `from` clause.
|
|
36
|
-
*
|
|
37
|
-
* This method accepts the same inputs as {@link SelectQueryBuilder.select}. See its
|
|
38
|
-
* documentation for more examples.
|
|
39
|
-
*
|
|
40
|
-
* ### Examples
|
|
41
|
-
*
|
|
42
|
-
* ```ts
|
|
43
|
-
* const result = db.select((eb) => [
|
|
44
|
-
* eb.selectFrom('person')
|
|
45
|
-
* .select('id')
|
|
46
|
-
* .where('first_name', '=', 'Jennifer')
|
|
47
|
-
* .limit(1)
|
|
48
|
-
* .as('jennifer_id'),
|
|
49
|
-
*
|
|
50
|
-
* eb.selectFrom('pet')
|
|
51
|
-
* .select('id')
|
|
52
|
-
* .where('name', '=', 'Doggo')
|
|
53
|
-
* .limit(1)
|
|
54
|
-
* .as('doggo_id')
|
|
55
|
-
* ])
|
|
56
|
-
* .executeTakeFirstOrThrow()
|
|
57
|
-
*
|
|
58
|
-
* console.log(result.jennifer_id)
|
|
59
|
-
* console.log(result.doggo_id)
|
|
60
|
-
* ```
|
|
61
|
-
*
|
|
62
|
-
* The generated SQL (PostgreSQL):
|
|
63
|
-
*
|
|
64
|
-
* ```sql
|
|
65
|
-
* select (
|
|
66
|
-
* select "id"
|
|
67
|
-
* from "person"
|
|
68
|
-
* where "first_name" = $1
|
|
69
|
-
* limit $2
|
|
70
|
-
* ) as "jennifer_id", (
|
|
71
|
-
* select "id"
|
|
72
|
-
* from "pet"
|
|
73
|
-
* where "name" = $3
|
|
74
|
-
* limit $4
|
|
75
|
-
* ) as "doggo_id"
|
|
76
|
-
* ```
|
|
77
|
-
*/
|
|
78
31
|
selectNoFrom(selection) {
|
|
79
32
|
return (0, select_query_builder_js_1.createSelectQueryBuilder)({
|
|
80
33
|
queryId: (0, query_id_js_1.createQueryId)(),
|
|
@@ -12,9 +12,6 @@ import { AliasableExpression, AliasedExpression, Expression } from '../expressio
|
|
|
12
12
|
* use the {@link sql} template tag.
|
|
13
13
|
*/
|
|
14
14
|
export interface RawBuilder<O> extends AliasableExpression<O> {
|
|
15
|
-
/**
|
|
16
|
-
* @private Without this SelectQueryBuilder extends RawBuilder and things break.
|
|
17
|
-
*/
|
|
18
15
|
get isRawBuilder(): true;
|
|
19
16
|
/**
|
|
20
17
|
* Returns an aliased version of the SQL expression.
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { Expression } from '../expression/expression.js';
|
|
2
|
+
import { AlterTableNode } from '../operation-node/alter-table-node.js';
|
|
3
|
+
import { IndexType } from '../operation-node/create-index-node.js';
|
|
4
|
+
import { OperationNodeSource } from '../operation-node/operation-node-source.js';
|
|
5
|
+
import { OrderedColumnName } from '../parser/reference-parser.js';
|
|
6
|
+
import { CompiledQuery } from '../query-compiler/compiled-query.js';
|
|
7
|
+
import { QueryExecutor } from '../query-executor/query-executor.js';
|
|
8
|
+
import { Compilable } from '../util/compilable.js';
|
|
9
|
+
import { QueryId } from '../util/query-id.js';
|
|
10
|
+
export declare class AlterTableAddIndexBuilder implements OperationNodeSource, Compilable {
|
|
11
|
+
#private;
|
|
12
|
+
constructor(props: AlterTableAddIndexBuilderProps);
|
|
13
|
+
/**
|
|
14
|
+
* Makes the index unique.
|
|
15
|
+
*/
|
|
16
|
+
unique(): AlterTableAddIndexBuilder;
|
|
17
|
+
/**
|
|
18
|
+
* Adds a column to the index.
|
|
19
|
+
*
|
|
20
|
+
* Also see {@link columns} for adding multiple columns at once or {@link expression}
|
|
21
|
+
* for specifying an arbitrary expression.
|
|
22
|
+
*
|
|
23
|
+
* ### Examples
|
|
24
|
+
*
|
|
25
|
+
* ```ts
|
|
26
|
+
* await db.schema
|
|
27
|
+
* .alterTable('person')
|
|
28
|
+
* .createIndex('person_first_name_and_age_index')
|
|
29
|
+
* .column('first_name')
|
|
30
|
+
* .column('age desc')
|
|
31
|
+
* .execute()
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* The generated SQL (MySQL):
|
|
35
|
+
*
|
|
36
|
+
* ```sql
|
|
37
|
+
* alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
column<CL extends string>(column: OrderedColumnName<CL>): AlterTableAddIndexBuilder;
|
|
41
|
+
/**
|
|
42
|
+
* Specifies a list of columns for the index.
|
|
43
|
+
*
|
|
44
|
+
* Also see {@link column} for adding a single column or {@link expression} for
|
|
45
|
+
* specifying an arbitrary expression.
|
|
46
|
+
*
|
|
47
|
+
* ### Examples
|
|
48
|
+
*
|
|
49
|
+
* ```ts
|
|
50
|
+
* await db.schema
|
|
51
|
+
* .alterTable('person')
|
|
52
|
+
* .addIndex('person_first_name_and_age_index')
|
|
53
|
+
* .columns(['first_name', 'age desc'])
|
|
54
|
+
* .execute()
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* The generated SQL (MySQL):
|
|
58
|
+
*
|
|
59
|
+
* ```sql
|
|
60
|
+
* alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
columns<CL extends string>(columns: OrderedColumnName<CL>[]): AlterTableAddIndexBuilder;
|
|
64
|
+
/**
|
|
65
|
+
* Specifies an arbitrary expression for the index.
|
|
66
|
+
*
|
|
67
|
+
* ### Examples
|
|
68
|
+
*
|
|
69
|
+
* ```ts
|
|
70
|
+
* import { sql } from 'kysely'
|
|
71
|
+
*
|
|
72
|
+
* await db.schema
|
|
73
|
+
* .alterTable('person')
|
|
74
|
+
* .addIndex('person_first_name_index')
|
|
75
|
+
* .expression(sql`(first_name < 'Sami')`)
|
|
76
|
+
* .execute()
|
|
77
|
+
* ```
|
|
78
|
+
*
|
|
79
|
+
* The generated SQL (MySQL):
|
|
80
|
+
*
|
|
81
|
+
* ```sql
|
|
82
|
+
* alter table `person` add index `person_first_name_index` ((first_name < 'Sami'))
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
expression(expression: Expression<any>): AlterTableAddIndexBuilder;
|
|
86
|
+
/**
|
|
87
|
+
* Specifies the index type.
|
|
88
|
+
*/
|
|
89
|
+
using(indexType: IndexType): AlterTableAddIndexBuilder;
|
|
90
|
+
using(indexType: string): AlterTableAddIndexBuilder;
|
|
91
|
+
/**
|
|
92
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
93
|
+
* what the provided function returns.
|
|
94
|
+
*/
|
|
95
|
+
$call<T>(func: (qb: this) => T): T;
|
|
96
|
+
toOperationNode(): AlterTableNode;
|
|
97
|
+
compile(): CompiledQuery;
|
|
98
|
+
execute(): Promise<void>;
|
|
99
|
+
}
|
|
100
|
+
export interface AlterTableAddIndexBuilderProps {
|
|
101
|
+
readonly queryId: QueryId;
|
|
102
|
+
readonly executor: QueryExecutor;
|
|
103
|
+
readonly node: AlterTableNode;
|
|
104
|
+
}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AlterTableAddIndexBuilder = void 0;
|
|
4
|
+
const add_index_node_js_1 = require("../operation-node/add-index-node.js");
|
|
5
|
+
const alter_table_node_js_1 = require("../operation-node/alter-table-node.js");
|
|
6
|
+
const raw_node_js_1 = require("../operation-node/raw-node.js");
|
|
7
|
+
const reference_parser_js_1 = require("../parser/reference-parser.js");
|
|
8
|
+
const object_utils_js_1 = require("../util/object-utils.js");
|
|
9
|
+
const prevent_await_js_1 = require("../util/prevent-await.js");
|
|
10
|
+
class AlterTableAddIndexBuilder {
|
|
11
|
+
#props;
|
|
12
|
+
constructor(props) {
|
|
13
|
+
this.#props = (0, object_utils_js_1.freeze)(props);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Makes the index unique.
|
|
17
|
+
*/
|
|
18
|
+
unique() {
|
|
19
|
+
return new AlterTableAddIndexBuilder({
|
|
20
|
+
...this.#props,
|
|
21
|
+
node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|
22
|
+
addIndex: add_index_node_js_1.AddIndexNode.cloneWith(this.#props.node.addIndex, {
|
|
23
|
+
unique: true,
|
|
24
|
+
}),
|
|
25
|
+
}),
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Adds a column to the index.
|
|
30
|
+
*
|
|
31
|
+
* Also see {@link columns} for adding multiple columns at once or {@link expression}
|
|
32
|
+
* for specifying an arbitrary expression.
|
|
33
|
+
*
|
|
34
|
+
* ### Examples
|
|
35
|
+
*
|
|
36
|
+
* ```ts
|
|
37
|
+
* await db.schema
|
|
38
|
+
* .alterTable('person')
|
|
39
|
+
* .createIndex('person_first_name_and_age_index')
|
|
40
|
+
* .column('first_name')
|
|
41
|
+
* .column('age desc')
|
|
42
|
+
* .execute()
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* The generated SQL (MySQL):
|
|
46
|
+
*
|
|
47
|
+
* ```sql
|
|
48
|
+
* alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
column(column) {
|
|
52
|
+
return new AlterTableAddIndexBuilder({
|
|
53
|
+
...this.#props,
|
|
54
|
+
node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|
55
|
+
addIndex: add_index_node_js_1.AddIndexNode.cloneWithColumns(this.#props.node.addIndex, [(0, reference_parser_js_1.parseOrderedColumnName)(column)]),
|
|
56
|
+
}),
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Specifies a list of columns for the index.
|
|
61
|
+
*
|
|
62
|
+
* Also see {@link column} for adding a single column or {@link expression} for
|
|
63
|
+
* specifying an arbitrary expression.
|
|
64
|
+
*
|
|
65
|
+
* ### Examples
|
|
66
|
+
*
|
|
67
|
+
* ```ts
|
|
68
|
+
* await db.schema
|
|
69
|
+
* .alterTable('person')
|
|
70
|
+
* .addIndex('person_first_name_and_age_index')
|
|
71
|
+
* .columns(['first_name', 'age desc'])
|
|
72
|
+
* .execute()
|
|
73
|
+
* ```
|
|
74
|
+
*
|
|
75
|
+
* The generated SQL (MySQL):
|
|
76
|
+
*
|
|
77
|
+
* ```sql
|
|
78
|
+
* alter table `person` add index `person_first_name_and_age_index` (`first_name`, `age` desc)
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
columns(columns) {
|
|
82
|
+
return new AlterTableAddIndexBuilder({
|
|
83
|
+
...this.#props,
|
|
84
|
+
node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|
85
|
+
addIndex: add_index_node_js_1.AddIndexNode.cloneWithColumns(this.#props.node.addIndex, columns.map(reference_parser_js_1.parseOrderedColumnName)),
|
|
86
|
+
}),
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Specifies an arbitrary expression for the index.
|
|
91
|
+
*
|
|
92
|
+
* ### Examples
|
|
93
|
+
*
|
|
94
|
+
* ```ts
|
|
95
|
+
* import { sql } from 'kysely'
|
|
96
|
+
*
|
|
97
|
+
* await db.schema
|
|
98
|
+
* .alterTable('person')
|
|
99
|
+
* .addIndex('person_first_name_index')
|
|
100
|
+
* .expression(sql`(first_name < 'Sami')`)
|
|
101
|
+
* .execute()
|
|
102
|
+
* ```
|
|
103
|
+
*
|
|
104
|
+
* The generated SQL (MySQL):
|
|
105
|
+
*
|
|
106
|
+
* ```sql
|
|
107
|
+
* alter table `person` add index `person_first_name_index` ((first_name < 'Sami'))
|
|
108
|
+
* ```
|
|
109
|
+
*/
|
|
110
|
+
expression(expression) {
|
|
111
|
+
return new AlterTableAddIndexBuilder({
|
|
112
|
+
...this.#props,
|
|
113
|
+
node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|
114
|
+
addIndex: add_index_node_js_1.AddIndexNode.cloneWithColumns(this.#props.node.addIndex, [expression.toOperationNode()]),
|
|
115
|
+
}),
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
using(indexType) {
|
|
119
|
+
return new AlterTableAddIndexBuilder({
|
|
120
|
+
...this.#props,
|
|
121
|
+
node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|
122
|
+
addIndex: add_index_node_js_1.AddIndexNode.cloneWith(this.#props.node.addIndex, {
|
|
123
|
+
using: raw_node_js_1.RawNode.createWithSql(indexType),
|
|
124
|
+
}),
|
|
125
|
+
}),
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Simply calls the provided function passing `this` as the only argument. `$call` returns
|
|
130
|
+
* what the provided function returns.
|
|
131
|
+
*/
|
|
132
|
+
$call(func) {
|
|
133
|
+
return func(this);
|
|
134
|
+
}
|
|
135
|
+
toOperationNode() {
|
|
136
|
+
return this.#props.executor.transformQuery(this.#props.node, this.#props.queryId);
|
|
137
|
+
}
|
|
138
|
+
compile() {
|
|
139
|
+
return this.#props.executor.compileQuery(this.toOperationNode(), this.#props.queryId);
|
|
140
|
+
}
|
|
141
|
+
async execute() {
|
|
142
|
+
await this.#props.executor.executeQuery(this.compile(), this.#props.queryId);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
exports.AlterTableAddIndexBuilder = AlterTableAddIndexBuilder;
|
|
146
|
+
(0, prevent_await_js_1.preventAwait)(AlterTableAddIndexBuilder, "don't await AlterTableAddIndexBuilder instances directly. To execute the query you need to call `execute`");
|
|
@@ -11,6 +11,8 @@ import { AlterColumnBuilderCallback } from './alter-column-builder.js';
|
|
|
11
11
|
import { AlterTableExecutor } from './alter-table-executor.js';
|
|
12
12
|
import { AlterTableAddForeignKeyConstraintBuilder } from './alter-table-add-foreign-key-constraint-builder.js';
|
|
13
13
|
import { AlterTableDropConstraintBuilder } from './alter-table-drop-constraint-builder.js';
|
|
14
|
+
import { AlterTableAddIndexBuilder } from './alter-table-add-index-builder.js';
|
|
15
|
+
import { UniqueConstraintNodeBuilderCallback } from './unique-constraint-builder.js';
|
|
14
16
|
/**
|
|
15
17
|
* This builder can be used to create a `alter table` query.
|
|
16
18
|
*/
|
|
@@ -35,7 +37,7 @@ export declare class AlterTableBuilder implements ColumnAlteringInterface {
|
|
|
35
37
|
/**
|
|
36
38
|
* See {@link CreateTableBuilder.addUniqueConstraint}
|
|
37
39
|
*/
|
|
38
|
-
addUniqueConstraint(constraintName: string, columns: string[]): AlterTableExecutor;
|
|
40
|
+
addUniqueConstraint(constraintName: string, columns: string[], build?: UniqueConstraintNodeBuilderCallback): AlterTableExecutor;
|
|
39
41
|
/**
|
|
40
42
|
* See {@link CreateTableBuilder.addCheckConstraint}
|
|
41
43
|
*/
|
|
@@ -53,6 +55,44 @@ export declare class AlterTableBuilder implements ColumnAlteringInterface {
|
|
|
53
55
|
*/
|
|
54
56
|
addPrimaryKeyConstraint(constraintName: string, columns: string[]): AlterTableExecutor;
|
|
55
57
|
dropConstraint(constraintName: string): AlterTableDropConstraintBuilder;
|
|
58
|
+
/**
|
|
59
|
+
* This can be used to add index to table.
|
|
60
|
+
*
|
|
61
|
+
* ### Examples
|
|
62
|
+
*
|
|
63
|
+
* ```ts
|
|
64
|
+
* db.schema.alterTable('person')
|
|
65
|
+
* .addIndex('person_email_index')
|
|
66
|
+
* .column('email')
|
|
67
|
+
* .unique()
|
|
68
|
+
* .execute()
|
|
69
|
+
* ```
|
|
70
|
+
*
|
|
71
|
+
* The generated SQL (MySQL):
|
|
72
|
+
*
|
|
73
|
+
* ```sql
|
|
74
|
+
* alter table `person` add unique index `person_email_index` (`email`)
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
addIndex(indexName: string): AlterTableAddIndexBuilder;
|
|
78
|
+
/**
|
|
79
|
+
* This can be used to drop index from table.
|
|
80
|
+
*
|
|
81
|
+
* ### Examples
|
|
82
|
+
*
|
|
83
|
+
* ```ts
|
|
84
|
+
* db.schema.alterTable('person')
|
|
85
|
+
* .dropIndex('person_email_index')
|
|
86
|
+
* .execute()
|
|
87
|
+
* ```
|
|
88
|
+
*
|
|
89
|
+
* The generated SQL (MySQL):
|
|
90
|
+
*
|
|
91
|
+
* ```sql
|
|
92
|
+
* alter table `person` drop index `test_first_name_index`
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
dropIndex(indexName: string): AlterTableExecutor;
|
|
56
96
|
/**
|
|
57
97
|
* Calls the given function passing `this` as the only argument.
|
|
58
98
|
*
|
|
@@ -25,6 +25,10 @@ const alter_table_executor_js_1 = require("./alter-table-executor.js");
|
|
|
25
25
|
const alter_table_add_foreign_key_constraint_builder_js_1 = require("./alter-table-add-foreign-key-constraint-builder.js");
|
|
26
26
|
const alter_table_drop_constraint_builder_js_1 = require("./alter-table-drop-constraint-builder.js");
|
|
27
27
|
const primary_constraint_node_js_1 = require("../operation-node/primary-constraint-node.js");
|
|
28
|
+
const drop_index_node_js_1 = require("../operation-node/drop-index-node.js");
|
|
29
|
+
const add_index_node_js_1 = require("../operation-node/add-index-node.js");
|
|
30
|
+
const alter_table_add_index_builder_js_1 = require("./alter-table-add-index-builder.js");
|
|
31
|
+
const unique_constraint_builder_js_1 = require("./unique-constraint-builder.js");
|
|
28
32
|
/**
|
|
29
33
|
* This builder can be used to create a `alter table` query.
|
|
30
34
|
*/
|
|
@@ -85,11 +89,12 @@ class AlterTableBuilder {
|
|
|
85
89
|
/**
|
|
86
90
|
* See {@link CreateTableBuilder.addUniqueConstraint}
|
|
87
91
|
*/
|
|
88
|
-
addUniqueConstraint(constraintName, columns) {
|
|
92
|
+
addUniqueConstraint(constraintName, columns, build = object_utils_js_1.noop) {
|
|
93
|
+
const uniqueConstraintBuilder = build(new unique_constraint_builder_js_1.UniqueConstraintNodeBuilder(unique_constraint_node_js_1.UniqueConstraintNode.create(columns, constraintName)));
|
|
89
94
|
return new alter_table_executor_js_1.AlterTableExecutor({
|
|
90
95
|
...this.#props,
|
|
91
96
|
node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|
92
|
-
addConstraint: add_constraint_node_js_1.AddConstraintNode.create(
|
|
97
|
+
addConstraint: add_constraint_node_js_1.AddConstraintNode.create(uniqueConstraintBuilder.toOperationNode()),
|
|
93
98
|
}),
|
|
94
99
|
});
|
|
95
100
|
}
|
|
@@ -136,6 +141,58 @@ class AlterTableBuilder {
|
|
|
136
141
|
}),
|
|
137
142
|
});
|
|
138
143
|
}
|
|
144
|
+
/**
|
|
145
|
+
* This can be used to add index to table.
|
|
146
|
+
*
|
|
147
|
+
* ### Examples
|
|
148
|
+
*
|
|
149
|
+
* ```ts
|
|
150
|
+
* db.schema.alterTable('person')
|
|
151
|
+
* .addIndex('person_email_index')
|
|
152
|
+
* .column('email')
|
|
153
|
+
* .unique()
|
|
154
|
+
* .execute()
|
|
155
|
+
* ```
|
|
156
|
+
*
|
|
157
|
+
* The generated SQL (MySQL):
|
|
158
|
+
*
|
|
159
|
+
* ```sql
|
|
160
|
+
* alter table `person` add unique index `person_email_index` (`email`)
|
|
161
|
+
* ```
|
|
162
|
+
*/
|
|
163
|
+
addIndex(indexName) {
|
|
164
|
+
return new alter_table_add_index_builder_js_1.AlterTableAddIndexBuilder({
|
|
165
|
+
...this.#props,
|
|
166
|
+
node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|
167
|
+
addIndex: add_index_node_js_1.AddIndexNode.create(indexName),
|
|
168
|
+
}),
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* This can be used to drop index from table.
|
|
173
|
+
*
|
|
174
|
+
* ### Examples
|
|
175
|
+
*
|
|
176
|
+
* ```ts
|
|
177
|
+
* db.schema.alterTable('person')
|
|
178
|
+
* .dropIndex('person_email_index')
|
|
179
|
+
* .execute()
|
|
180
|
+
* ```
|
|
181
|
+
*
|
|
182
|
+
* The generated SQL (MySQL):
|
|
183
|
+
*
|
|
184
|
+
* ```sql
|
|
185
|
+
* alter table `person` drop index `test_first_name_index`
|
|
186
|
+
* ```
|
|
187
|
+
*/
|
|
188
|
+
dropIndex(indexName) {
|
|
189
|
+
return new alter_table_executor_js_1.AlterTableExecutor({
|
|
190
|
+
...this.#props,
|
|
191
|
+
node: alter_table_node_js_1.AlterTableNode.cloneWithTableProps(this.#props.node, {
|
|
192
|
+
dropIndex: drop_index_node_js_1.DropIndexNode.create(indexName),
|
|
193
|
+
}),
|
|
194
|
+
});
|
|
195
|
+
}
|
|
139
196
|
/**
|
|
140
197
|
* Calls the given function passing `this` as the only argument.
|
|
141
198
|
*
|