typeorm 0.3.6-dev.0418ebc → 0.3.6-dev.1b4cb00
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 +1 -1
- package/browser/cache/RedisQueryResultCache.js +3 -0
- package/browser/cache/RedisQueryResultCache.js.map +1 -1
- package/browser/decorator/options/ColumnOptions.d.ts +8 -0
- package/browser/decorator/options/ColumnOptions.js.map +1 -1
- package/browser/decorator/options/JoinColumnOptions.d.ts +4 -0
- package/browser/decorator/options/JoinColumnOptions.js.map +1 -1
- package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +4 -0
- package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
- package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +4 -0
- package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
- package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.d.ts +4 -0
- package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
- package/browser/decorator/relations/JoinColumn.js +1 -0
- package/browser/decorator/relations/JoinColumn.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +3 -3
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +100 -22
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.js +16 -0
- package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/browser/driver/oracle/OracleQueryRunner.d.ts +3 -3
- package/browser/driver/oracle/OracleQueryRunner.js +98 -21
- package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.d.ts +3 -3
- package/browser/driver/postgres/PostgresQueryRunner.js +99 -21
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +59 -15
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +53 -12
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +3 -3
- package/browser/driver/sqlserver/SqlServerQueryRunner.js +100 -22
- package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/browser/entity-schema/EntitySchemaColumnOptions.d.ts +4 -0
- package/browser/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaTransformer.js +2 -0
- package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/browser/metadata/ColumnMetadata.d.ts +8 -0
- package/browser/metadata/ColumnMetadata.js +8 -0
- package/browser/metadata/ColumnMetadata.js.map +1 -1
- package/browser/metadata/ForeignKeyMetadata.d.ts +7 -0
- package/browser/metadata/ForeignKeyMetadata.js +4 -1
- package/browser/metadata/ForeignKeyMetadata.js.map +1 -1
- package/browser/metadata-args/JoinColumnMetadataArgs.d.ts +4 -0
- package/browser/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataValidator.js +9 -0
- package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +5 -0
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/RelationJoinColumnBuilder.js +2 -0
- package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/browser/query-builder/QueryBuilder.js +1 -3
- package/browser/query-builder/QueryBuilder.js.map +1 -1
- package/browser/query-runner/QueryRunner.d.ts +2 -2
- package/browser/query-runner/QueryRunner.js.map +1 -1
- package/browser/schema-builder/options/TableColumnOptions.d.ts +8 -0
- package/browser/schema-builder/options/TableColumnOptions.js.map +1 -1
- package/browser/schema-builder/table/TableColumn.d.ts +4 -0
- package/browser/schema-builder/table/TableColumn.js +2 -0
- package/browser/schema-builder/table/TableColumn.js.map +1 -1
- package/browser/schema-builder/util/TableUtils.js +1 -0
- package/browser/schema-builder/util/TableUtils.js.map +1 -1
- package/browser/util/escapeRegExp.d.ts +1 -0
- package/browser/util/escapeRegExp.js +6 -0
- package/browser/util/escapeRegExp.js.map +1 -0
- package/cache/RedisQueryResultCache.js +3 -0
- package/cache/RedisQueryResultCache.js.map +1 -1
- package/commands/InitCommand.js +1 -1
- package/commands/InitCommand.js.map +1 -1
- package/commands/MigrationGenerateCommand.js +3 -2
- package/commands/MigrationGenerateCommand.js.map +1 -1
- package/decorator/options/ColumnOptions.d.ts +8 -0
- package/decorator/options/ColumnOptions.js.map +1 -1
- package/decorator/options/JoinColumnOptions.d.ts +4 -0
- package/decorator/options/JoinColumnOptions.js.map +1 -1
- package/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +4 -0
- package/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
- package/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +4 -0
- package/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
- package/decorator/options/PrimaryGeneratedColumnUUIDOptions.d.ts +4 -0
- package/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
- package/decorator/relations/JoinColumn.js +1 -0
- package/decorator/relations/JoinColumn.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.d.ts +3 -3
- package/driver/cockroachdb/CockroachQueryRunner.js +100 -22
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/mysql/MysqlQueryRunner.js +16 -0
- package/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/driver/oracle/OracleQueryRunner.d.ts +3 -3
- package/driver/oracle/OracleQueryRunner.js +98 -21
- package/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.d.ts +3 -3
- package/driver/postgres/PostgresQueryRunner.js +99 -21
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.js +59 -15
- package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +53 -12
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/driver/sqlserver/SqlServerQueryRunner.d.ts +3 -3
- package/driver/sqlserver/SqlServerQueryRunner.js +100 -22
- package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/entity-schema/EntitySchemaColumnOptions.d.ts +4 -0
- package/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
- package/entity-schema/EntitySchemaTransformer.js +2 -0
- package/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/metadata/ColumnMetadata.d.ts +8 -0
- package/metadata/ColumnMetadata.js +8 -0
- package/metadata/ColumnMetadata.js.map +1 -1
- package/metadata/ForeignKeyMetadata.d.ts +7 -0
- package/metadata/ForeignKeyMetadata.js +4 -1
- package/metadata/ForeignKeyMetadata.js.map +1 -1
- package/metadata-args/JoinColumnMetadataArgs.d.ts +4 -0
- package/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
- package/metadata-builder/EntityMetadataValidator.js +9 -0
- package/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/metadata-builder/JunctionEntityMetadataBuilder.js +5 -0
- package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/RelationJoinColumnBuilder.js +2 -0
- package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/package.json +1 -1
- package/query-builder/QueryBuilder.js +3 -5
- package/query-builder/QueryBuilder.js.map +1 -1
- package/query-runner/QueryRunner.d.ts +2 -2
- package/query-runner/QueryRunner.js.map +1 -1
- package/schema-builder/options/TableColumnOptions.d.ts +8 -0
- package/schema-builder/options/TableColumnOptions.js.map +1 -1
- package/schema-builder/table/TableColumn.d.ts +4 -0
- package/schema-builder/table/TableColumn.js +2 -0
- package/schema-builder/table/TableColumn.js.map +1 -1
- package/schema-builder/util/TableUtils.js +1 -0
- package/schema-builder/util/TableUtils.js.map +1 -1
- package/util/escapeRegExp.d.ts +1 -0
- package/util/escapeRegExp.js +10 -0
- package/util/escapeRegExp.js.map +1 -0
|
@@ -162,7 +162,7 @@ export declare class SqlServerQueryRunner extends BaseQueryRunner implements Que
|
|
|
162
162
|
/**
|
|
163
163
|
* Creates a new primary key.
|
|
164
164
|
*/
|
|
165
|
-
createPrimaryKey(tableOrName: Table | string, columnNames: string[]): Promise<void>;
|
|
165
|
+
createPrimaryKey(tableOrName: Table | string, columnNames: string[], constraintName?: string): Promise<void>;
|
|
166
166
|
/**
|
|
167
167
|
* Updates composite primary keys.
|
|
168
168
|
*/
|
|
@@ -170,7 +170,7 @@ export declare class SqlServerQueryRunner extends BaseQueryRunner implements Que
|
|
|
170
170
|
/**
|
|
171
171
|
* Drops a primary key.
|
|
172
172
|
*/
|
|
173
|
-
dropPrimaryKey(tableOrName: Table | string): Promise<void>;
|
|
173
|
+
dropPrimaryKey(tableOrName: Table | string, constraintName?: string): Promise<void>;
|
|
174
174
|
/**
|
|
175
175
|
* Creates a new unique constraint.
|
|
176
176
|
*/
|
|
@@ -294,7 +294,7 @@ export declare class SqlServerQueryRunner extends BaseQueryRunner implements Que
|
|
|
294
294
|
/**
|
|
295
295
|
* Builds create primary key sql.
|
|
296
296
|
*/
|
|
297
|
-
protected createPrimaryKeySql(table: Table, columnNames: string[]): Query;
|
|
297
|
+
protected createPrimaryKeySql(table: Table, columnNames: string[], constraintName?: string): Query;
|
|
298
298
|
/**
|
|
299
299
|
* Builds drop primary key sql.
|
|
300
300
|
*/
|
|
@@ -601,7 +601,8 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
|
|
|
601
601
|
upQueries.push(new Query(`EXEC sp_rename "${this.getTablePath(oldTable)}", "${newTableName}"`));
|
|
602
602
|
downQueries.push(new Query(`EXEC sp_rename "${this.getTablePath(newTable)}", "${oldTableName}"`));
|
|
603
603
|
// rename primary key constraint
|
|
604
|
-
if (newTable.primaryColumns.length > 0
|
|
604
|
+
if (newTable.primaryColumns.length > 0 &&
|
|
605
|
+
!newTable.primaryColumns[0].primaryKeyConstraintName) {
|
|
605
606
|
const columnNames = newTable.primaryColumns.map((column) => column.name);
|
|
606
607
|
const oldPkName = this.connection.namingStrategy.primaryKeyName(oldTable, columnNames);
|
|
607
608
|
const newPkName = this.connection.namingStrategy.primaryKeyName(newTable, columnNames);
|
|
@@ -611,6 +612,10 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
|
|
|
611
612
|
}
|
|
612
613
|
// rename unique constraints
|
|
613
614
|
newTable.uniques.forEach((unique) => {
|
|
615
|
+
const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(oldTable, unique.columnNames);
|
|
616
|
+
// Skip renaming if Unique has user defined constraint name
|
|
617
|
+
if (unique.name !== oldUniqueName)
|
|
618
|
+
return;
|
|
614
619
|
// build new constraint name
|
|
615
620
|
const newUniqueName = this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames);
|
|
616
621
|
// build queries
|
|
@@ -621,6 +626,10 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
|
|
|
621
626
|
});
|
|
622
627
|
// rename index constraints
|
|
623
628
|
newTable.indices.forEach((index) => {
|
|
629
|
+
const oldIndexName = this.connection.namingStrategy.indexName(oldTable, index.columnNames, index.where);
|
|
630
|
+
// Skip renaming if Index has user defined constraint name
|
|
631
|
+
if (index.name !== oldIndexName)
|
|
632
|
+
return;
|
|
624
633
|
// build new constraint name
|
|
625
634
|
const newIndexName = this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);
|
|
626
635
|
// build queries
|
|
@@ -631,6 +640,10 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
|
|
|
631
640
|
});
|
|
632
641
|
// rename foreign key constraints
|
|
633
642
|
newTable.foreignKeys.forEach((foreignKey) => {
|
|
643
|
+
const oldForeignKeyName = this.connection.namingStrategy.foreignKeyName(oldTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
644
|
+
// Skip renaming if foreign key has user defined constraint name
|
|
645
|
+
if (foreignKey.name !== oldForeignKeyName)
|
|
646
|
+
return;
|
|
634
647
|
// build new constraint name
|
|
635
648
|
const newForeignKeyName = this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
636
649
|
// build queries
|
|
@@ -666,7 +679,9 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
|
|
|
666
679
|
const primaryColumns = clonedTable.primaryColumns;
|
|
667
680
|
// if table already have primary key, me must drop it and recreate again
|
|
668
681
|
if (primaryColumns.length > 0) {
|
|
669
|
-
const pkName =
|
|
682
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
683
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
684
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
670
685
|
const columnNames = primaryColumns
|
|
671
686
|
.map((column) => `"${column.name}"`)
|
|
672
687
|
.join(", ");
|
|
@@ -674,7 +689,9 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
|
|
|
674
689
|
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${pkName}" PRIMARY KEY (${columnNames})`));
|
|
675
690
|
}
|
|
676
691
|
primaryColumns.push(column);
|
|
677
|
-
const pkName =
|
|
692
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
693
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
694
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
678
695
|
const columnNames = primaryColumns
|
|
679
696
|
.map((column) => `"${column.name}"`)
|
|
680
697
|
.join(", ");
|
|
@@ -812,7 +829,9 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
|
|
|
812
829
|
// rename the column
|
|
813
830
|
upQueries.push(new Query(`EXEC sp_rename "${this.getTablePath(table)}.${oldColumn.name}", "${newColumn.name}"`));
|
|
814
831
|
downQueries.push(new Query(`EXEC sp_rename "${this.getTablePath(table)}.${newColumn.name}", "${oldColumn.name}"`));
|
|
815
|
-
|
|
832
|
+
// rename column primary key constraint
|
|
833
|
+
if (oldColumn.isPrimary === true &&
|
|
834
|
+
!oldColumn.primaryKeyConstraintName) {
|
|
816
835
|
const primaryColumns = clonedTable.primaryColumns;
|
|
817
836
|
// build old primary constraint name
|
|
818
837
|
const columnNames = primaryColumns.map((column) => column.name);
|
|
@@ -828,6 +847,10 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
|
|
|
828
847
|
}
|
|
829
848
|
// rename index constraints
|
|
830
849
|
clonedTable.findColumnIndices(oldColumn).forEach((index) => {
|
|
850
|
+
const oldIndexName = this.connection.namingStrategy.indexName(clonedTable, index.columnNames, index.where);
|
|
851
|
+
// Skip renaming if Index has user defined constraint name
|
|
852
|
+
if (index.name !== oldIndexName)
|
|
853
|
+
return;
|
|
831
854
|
// build new constraint name
|
|
832
855
|
index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);
|
|
833
856
|
index.columnNames.push(newColumn.name);
|
|
@@ -842,6 +865,10 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
|
|
|
842
865
|
clonedTable
|
|
843
866
|
.findColumnForeignKeys(oldColumn)
|
|
844
867
|
.forEach((foreignKey) => {
|
|
868
|
+
const foreignKeyName = this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
869
|
+
// Skip renaming if foreign key has user defined constraint name
|
|
870
|
+
if (foreignKey.name !== foreignKeyName)
|
|
871
|
+
return;
|
|
845
872
|
// build new constraint name
|
|
846
873
|
foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);
|
|
847
874
|
foreignKey.columnNames.push(newColumn.name);
|
|
@@ -866,6 +893,10 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
|
|
|
866
893
|
});
|
|
867
894
|
// rename unique constraints
|
|
868
895
|
clonedTable.findColumnUniques(oldColumn).forEach((unique) => {
|
|
896
|
+
const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(clonedTable, unique.columnNames);
|
|
897
|
+
// Skip renaming if Unique has user defined constraint name
|
|
898
|
+
if (unique.name !== oldUniqueName)
|
|
899
|
+
return;
|
|
869
900
|
// build new constraint name
|
|
870
901
|
unique.columnNames.splice(unique.columnNames.indexOf(oldColumn.name), 1);
|
|
871
902
|
unique.columnNames.push(newColumn.name);
|
|
@@ -904,7 +935,9 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
|
|
|
904
935
|
const primaryColumns = clonedTable.primaryColumns;
|
|
905
936
|
// if primary column state changed, we must always drop existed constraint.
|
|
906
937
|
if (primaryColumns.length > 0) {
|
|
907
|
-
const pkName =
|
|
938
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
939
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
940
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
908
941
|
const columnNames = primaryColumns
|
|
909
942
|
.map((column) => `"${column.name}"`)
|
|
910
943
|
.join(", ");
|
|
@@ -916,7 +949,9 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
|
|
|
916
949
|
// update column in table
|
|
917
950
|
const column = clonedTable.columns.find((column) => column.name === newColumn.name);
|
|
918
951
|
column.isPrimary = true;
|
|
919
|
-
const pkName =
|
|
952
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
953
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
954
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
920
955
|
const columnNames = primaryColumns
|
|
921
956
|
.map((column) => `"${column.name}"`)
|
|
922
957
|
.join(", ");
|
|
@@ -931,7 +966,10 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
|
|
|
931
966
|
column.isPrimary = false;
|
|
932
967
|
// if we have another primary keys, we must recreate constraint.
|
|
933
968
|
if (primaryColumns.length > 0) {
|
|
934
|
-
const pkName =
|
|
969
|
+
const pkName = primaryColumns[0]
|
|
970
|
+
.primaryKeyConstraintName
|
|
971
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
972
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
935
973
|
const columnNames = primaryColumns
|
|
936
974
|
.map((column) => `"${column.name}"`)
|
|
937
975
|
.join(", ");
|
|
@@ -1004,7 +1042,9 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
|
|
|
1004
1042
|
const downQueries = [];
|
|
1005
1043
|
// drop primary key constraint
|
|
1006
1044
|
if (column.isPrimary) {
|
|
1007
|
-
const pkName =
|
|
1045
|
+
const pkName = column.primaryKeyConstraintName
|
|
1046
|
+
? column.primaryKeyConstraintName
|
|
1047
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
|
|
1008
1048
|
const columnNames = clonedTable.primaryColumns
|
|
1009
1049
|
.map((primaryColumn) => `"${primaryColumn.name}"`)
|
|
1010
1050
|
.join(", ");
|
|
@@ -1015,7 +1055,10 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
|
|
|
1015
1055
|
tableColumn.isPrimary = false;
|
|
1016
1056
|
// if primary key have multiple columns, we must recreate it without dropped column
|
|
1017
1057
|
if (clonedTable.primaryColumns.length > 0) {
|
|
1018
|
-
const pkName =
|
|
1058
|
+
const pkName = clonedTable.primaryColumns[0]
|
|
1059
|
+
.primaryKeyConstraintName
|
|
1060
|
+
? clonedTable.primaryColumns[0].primaryKeyConstraintName
|
|
1061
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
|
|
1019
1062
|
const columnNames = clonedTable.primaryColumns
|
|
1020
1063
|
.map((primaryColumn) => `"${primaryColumn.name}"`)
|
|
1021
1064
|
.join(", ");
|
|
@@ -1094,12 +1137,12 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
|
|
|
1094
1137
|
/**
|
|
1095
1138
|
* Creates a new primary key.
|
|
1096
1139
|
*/
|
|
1097
|
-
async createPrimaryKey(tableOrName, columnNames) {
|
|
1140
|
+
async createPrimaryKey(tableOrName, columnNames, constraintName) {
|
|
1098
1141
|
const table = InstanceChecker.isTable(tableOrName)
|
|
1099
1142
|
? tableOrName
|
|
1100
1143
|
: await this.getCachedTable(tableOrName);
|
|
1101
1144
|
const clonedTable = table.clone();
|
|
1102
|
-
const up = this.createPrimaryKeySql(table, columnNames);
|
|
1145
|
+
const up = this.createPrimaryKeySql(table, columnNames, constraintName);
|
|
1103
1146
|
// mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.
|
|
1104
1147
|
clonedTable.columns.forEach((column) => {
|
|
1105
1148
|
if (columnNames.find((columnName) => columnName === column.name))
|
|
@@ -1123,7 +1166,9 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
|
|
|
1123
1166
|
// if table already have primary columns, we must drop them.
|
|
1124
1167
|
const primaryColumns = clonedTable.primaryColumns;
|
|
1125
1168
|
if (primaryColumns.length > 0) {
|
|
1126
|
-
const pkName =
|
|
1169
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
1170
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
1171
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
1127
1172
|
const columnNamesString = primaryColumns
|
|
1128
1173
|
.map((column) => `"${column.name}"`)
|
|
1129
1174
|
.join(", ");
|
|
@@ -1134,7 +1179,9 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
|
|
|
1134
1179
|
clonedTable.columns
|
|
1135
1180
|
.filter((column) => columnNames.indexOf(column.name) !== -1)
|
|
1136
1181
|
.forEach((column) => (column.isPrimary = true));
|
|
1137
|
-
const pkName =
|
|
1182
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
1183
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
1184
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
|
|
1138
1185
|
const columnNamesString = columnNames
|
|
1139
1186
|
.map((columnName) => `"${columnName}"`)
|
|
1140
1187
|
.join(", ");
|
|
@@ -1146,12 +1193,12 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
|
|
|
1146
1193
|
/**
|
|
1147
1194
|
* Drops a primary key.
|
|
1148
1195
|
*/
|
|
1149
|
-
async dropPrimaryKey(tableOrName) {
|
|
1196
|
+
async dropPrimaryKey(tableOrName, constraintName) {
|
|
1150
1197
|
const table = InstanceChecker.isTable(tableOrName)
|
|
1151
1198
|
? tableOrName
|
|
1152
1199
|
: await this.getCachedTable(tableOrName);
|
|
1153
1200
|
const up = this.dropPrimaryKeySql(table);
|
|
1154
|
-
const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name));
|
|
1201
|
+
const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name), constraintName);
|
|
1155
1202
|
await this.executeQueries(up, down);
|
|
1156
1203
|
table.primaryColumns.forEach((column) => {
|
|
1157
1204
|
column.isPrimary = false;
|
|
@@ -1724,8 +1771,6 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
|
|
|
1724
1771
|
dbConstraint["COLUMN_NAME"] !==
|
|
1725
1772
|
dbColumn["COLUMN_NAME"]);
|
|
1726
1773
|
});
|
|
1727
|
-
const isPrimary = !!columnConstraints.find((constraint) => constraint["CONSTRAINT_TYPE"] ===
|
|
1728
|
-
"PRIMARY KEY");
|
|
1729
1774
|
const isGenerated = !!dbIdentityColumns.find((column) => column["TABLE_NAME"] ===
|
|
1730
1775
|
dbColumn["TABLE_NAME"] &&
|
|
1731
1776
|
column["TABLE_SCHEMA"] ===
|
|
@@ -1786,6 +1831,33 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
|
|
|
1786
1831
|
}
|
|
1787
1832
|
}
|
|
1788
1833
|
}
|
|
1834
|
+
const primaryConstraint = columnConstraints.find((constraint) => constraint["CONSTRAINT_TYPE"] ===
|
|
1835
|
+
"PRIMARY KEY");
|
|
1836
|
+
if (primaryConstraint) {
|
|
1837
|
+
tableColumn.isPrimary = true;
|
|
1838
|
+
// find another columns involved in primary key constraint
|
|
1839
|
+
const anotherPrimaryConstraints = dbConstraints.filter((constraint) => constraint["TABLE_NAME"] ===
|
|
1840
|
+
dbColumn["TABLE_NAME"] &&
|
|
1841
|
+
constraint["TABLE_SCHEMA"] ===
|
|
1842
|
+
dbColumn["TABLE_SCHEMA"] &&
|
|
1843
|
+
constraint["TABLE_CATALOG"] ===
|
|
1844
|
+
dbColumn["TABLE_CATALOG"] &&
|
|
1845
|
+
constraint["COLUMN_NAME"] !==
|
|
1846
|
+
dbColumn["COLUMN_NAME"] &&
|
|
1847
|
+
constraint["CONSTRAINT_TYPE"] ===
|
|
1848
|
+
"PRIMARY KEY");
|
|
1849
|
+
// collect all column names
|
|
1850
|
+
const columnNames = anotherPrimaryConstraints.map((constraint) => constraint["COLUMN_NAME"]);
|
|
1851
|
+
columnNames.push(dbColumn["COLUMN_NAME"]);
|
|
1852
|
+
// build default primary key constraint name
|
|
1853
|
+
const pkName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
1854
|
+
// if primary key has user-defined constraint name, write it in table column
|
|
1855
|
+
if (primaryConstraint["CONSTRAINT_NAME"] !==
|
|
1856
|
+
pkName) {
|
|
1857
|
+
tableColumn.primaryKeyConstraintName =
|
|
1858
|
+
primaryConstraint["CONSTRAINT_NAME"];
|
|
1859
|
+
}
|
|
1860
|
+
}
|
|
1789
1861
|
tableColumn.default =
|
|
1790
1862
|
dbColumn["COLUMN_DEFAULT"] !== null &&
|
|
1791
1863
|
dbColumn["COLUMN_DEFAULT"] !== undefined
|
|
@@ -1793,7 +1865,6 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
|
|
|
1793
1865
|
: undefined;
|
|
1794
1866
|
tableColumn.isNullable =
|
|
1795
1867
|
dbColumn["IS_NULLABLE"] === "YES";
|
|
1796
|
-
tableColumn.isPrimary = isPrimary;
|
|
1797
1868
|
tableColumn.isUnique =
|
|
1798
1869
|
uniqueConstraints.length > 0 &&
|
|
1799
1870
|
!isConstraintComposite;
|
|
@@ -2000,7 +2071,9 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
|
|
|
2000
2071
|
}
|
|
2001
2072
|
const primaryColumns = table.columns.filter((column) => column.isPrimary);
|
|
2002
2073
|
if (primaryColumns.length > 0) {
|
|
2003
|
-
const primaryKeyName =
|
|
2074
|
+
const primaryKeyName = primaryColumns[0].primaryKeyConstraintName
|
|
2075
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
2076
|
+
: this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
|
|
2004
2077
|
const columnNames = primaryColumns
|
|
2005
2078
|
.map((column) => `"${column.name}"`)
|
|
2006
2079
|
.join(", ");
|
|
@@ -2091,8 +2164,10 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
|
|
|
2091
2164
|
/**
|
|
2092
2165
|
* Builds create primary key sql.
|
|
2093
2166
|
*/
|
|
2094
|
-
createPrimaryKeySql(table, columnNames) {
|
|
2095
|
-
const primaryKeyName =
|
|
2167
|
+
createPrimaryKeySql(table, columnNames, constraintName) {
|
|
2168
|
+
const primaryKeyName = constraintName
|
|
2169
|
+
? constraintName
|
|
2170
|
+
: this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
2096
2171
|
const columnNamesString = columnNames
|
|
2097
2172
|
.map((columnName) => `"${columnName}"`)
|
|
2098
2173
|
.join(", ");
|
|
@@ -2103,7 +2178,10 @@ export class SqlServerQueryRunner extends BaseQueryRunner {
|
|
|
2103
2178
|
*/
|
|
2104
2179
|
dropPrimaryKeySql(table) {
|
|
2105
2180
|
const columnNames = table.primaryColumns.map((column) => column.name);
|
|
2106
|
-
const
|
|
2181
|
+
const constraintName = table.primaryColumns[0].primaryKeyConstraintName;
|
|
2182
|
+
const primaryKeyName = constraintName
|
|
2183
|
+
? constraintName
|
|
2184
|
+
: this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
2107
2185
|
return new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${primaryKeyName}"`);
|
|
2108
2186
|
}
|
|
2109
2187
|
/**
|