typeorm 0.3.6-dev.7dfb69f → 0.3.6-dev.862a402
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/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/aurora-mysql/AuroraMysqlDriver.d.ts +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.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/mongodb/typings.d.ts +5 -5
- package/browser/driver/mongodb/typings.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/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.d.ts +1 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.d.ts +2 -2
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.d.ts +2 -2
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.d.ts +2 -2
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
- package/browser/entity-manager/EntityManager.js +1 -1
- package/browser/entity-manager/EntityManager.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/EntityMetadata.js +1 -1
- package/browser/metadata/EntityMetadata.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/migration/MigrationExecutor.js +1 -1
- package/browser/migration/MigrationExecutor.js.map +1 -1
- package/browser/persistence/SubjectDatabaseEntityLoader.d.ts +1 -1
- package/browser/persistence/SubjectDatabaseEntityLoader.js +1 -1
- package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/browser/persistence/SubjectExecutor.js +1 -1
- package/browser/persistence/SubjectExecutor.js.map +1 -1
- package/browser/persistence/subject-builder/CascadesSubjectBuilder.d.ts +1 -1
- package/browser/persistence/subject-builder/CascadesSubjectBuilder.js +1 -1
- package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
- package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js +1 -1
- package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
- package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +1 -1
- package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
- package/browser/query-builder/QueryBuilder.d.ts +1 -1
- package/browser/query-builder/QueryBuilder.js +3 -5
- package/browser/query-builder/QueryBuilder.js.map +1 -1
- package/browser/query-builder/QueryExpressionMap.d.ts +1 -1
- package/browser/query-builder/QueryExpressionMap.js +1 -1
- package/browser/query-builder/QueryExpressionMap.js.map +1 -1
- package/browser/query-builder/ReturningResultsEntityUpdator.js +2 -2
- package/browser/query-builder/ReturningResultsEntityUpdator.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/options/TableForeignKeyOptions.d.ts +1 -1
- package/browser/schema-builder/options/TableForeignKeyOptions.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/OrmUtils.d.ts +1 -1
- package/browser/util/OrmUtils.js +4 -4
- package/browser/util/OrmUtils.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/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/aurora-mysql/AuroraMysqlDriver.d.ts +1 -1
- package/driver/aurora-mysql/AuroraMysqlDriver.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/mongodb/typings.d.ts +5 -5
- package/driver/mongodb/typings.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/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.d.ts +1 -1
- package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.d.ts +2 -2
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.d.ts +2 -2
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
- package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.d.ts +2 -2
- package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
- package/entity-manager/EntityManager.js +1 -1
- package/entity-manager/EntityManager.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/EntityMetadata.js +1 -1
- package/metadata/EntityMetadata.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/migration/MigrationExecutor.js +1 -1
- package/migration/MigrationExecutor.js.map +1 -1
- package/package.json +1 -1
- package/persistence/SubjectDatabaseEntityLoader.d.ts +1 -1
- package/persistence/SubjectDatabaseEntityLoader.js +1 -1
- package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/persistence/SubjectExecutor.js +1 -1
- package/persistence/SubjectExecutor.js.map +1 -1
- package/persistence/subject-builder/CascadesSubjectBuilder.d.ts +1 -1
- package/persistence/subject-builder/CascadesSubjectBuilder.js +1 -1
- package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
- package/persistence/subject-builder/ManyToManySubjectBuilder.js +1 -1
- package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
- package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +1 -1
- package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
- package/query-builder/QueryBuilder.d.ts +1 -1
- package/query-builder/QueryBuilder.js +5 -7
- package/query-builder/QueryBuilder.js.map +1 -1
- package/query-builder/QueryExpressionMap.d.ts +1 -1
- package/query-builder/QueryExpressionMap.js +1 -1
- package/query-builder/QueryExpressionMap.js.map +1 -1
- package/query-builder/ReturningResultsEntityUpdator.js +2 -2
- package/query-builder/ReturningResultsEntityUpdator.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/options/TableForeignKeyOptions.d.ts +1 -1
- package/schema-builder/options/TableForeignKeyOptions.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/OrmUtils.d.ts +1 -1
- package/util/OrmUtils.js +4 -4
- package/util/OrmUtils.js.map +1 -1
- package/util/escapeRegExp.d.ts +1 -0
- package/util/escapeRegExp.js +10 -0
- package/util/escapeRegExp.js.map +1 -0
|
@@ -173,7 +173,7 @@ export declare class PostgresQueryRunner extends BaseQueryRunner implements Quer
|
|
|
173
173
|
/**
|
|
174
174
|
* Creates a new primary key.
|
|
175
175
|
*/
|
|
176
|
-
createPrimaryKey(tableOrName: Table | string, columnNames: string[]): Promise<void>;
|
|
176
|
+
createPrimaryKey(tableOrName: Table | string, columnNames: string[], constraintName?: string): Promise<void>;
|
|
177
177
|
/**
|
|
178
178
|
* Updates composite primary keys.
|
|
179
179
|
*/
|
|
@@ -181,7 +181,7 @@ export declare class PostgresQueryRunner extends BaseQueryRunner implements Quer
|
|
|
181
181
|
/**
|
|
182
182
|
* Drops a primary key.
|
|
183
183
|
*/
|
|
184
|
-
dropPrimaryKey(tableOrName: Table | string): Promise<void>;
|
|
184
|
+
dropPrimaryKey(tableOrName: Table | string, constraintName?: string): Promise<void>;
|
|
185
185
|
/**
|
|
186
186
|
* Creates new unique constraint.
|
|
187
187
|
*/
|
|
@@ -325,7 +325,7 @@ export declare class PostgresQueryRunner extends BaseQueryRunner implements Quer
|
|
|
325
325
|
/**
|
|
326
326
|
* Builds create primary key sql.
|
|
327
327
|
*/
|
|
328
|
-
protected createPrimaryKeySql(table: Table, columnNames: string[]): Query;
|
|
328
|
+
protected createPrimaryKeySql(table: Table, columnNames: string[], constraintName?: string): Query;
|
|
329
329
|
/**
|
|
330
330
|
* Builds drop primary key sql.
|
|
331
331
|
*/
|
|
@@ -504,8 +504,9 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
504
504
|
: newTableName;
|
|
505
505
|
upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(oldTable)} RENAME TO "${newTableName}"`));
|
|
506
506
|
downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(newTable)} RENAME TO "${oldTableName}"`));
|
|
507
|
-
// rename column primary key constraint
|
|
508
|
-
if (newTable.primaryColumns.length > 0
|
|
507
|
+
// rename column primary key constraint if it has default constraint name
|
|
508
|
+
if (newTable.primaryColumns.length > 0 &&
|
|
509
|
+
!newTable.primaryColumns[0].primaryKeyConstraintName) {
|
|
509
510
|
const columnNames = newTable.primaryColumns.map((column) => column.name);
|
|
510
511
|
const oldPkName = this.connection.namingStrategy.primaryKeyName(oldTable, columnNames);
|
|
511
512
|
const newPkName = this.connection.namingStrategy.primaryKeyName(newTable, columnNames);
|
|
@@ -527,6 +528,10 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
527
528
|
});
|
|
528
529
|
// rename unique constraints
|
|
529
530
|
newTable.uniques.forEach((unique) => {
|
|
531
|
+
const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(oldTable, unique.columnNames);
|
|
532
|
+
// Skip renaming if Unique has user defined constraint name
|
|
533
|
+
if (unique.name !== oldUniqueName)
|
|
534
|
+
return;
|
|
530
535
|
// build new constraint name
|
|
531
536
|
const newUniqueName = this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames);
|
|
532
537
|
// build queries
|
|
@@ -537,6 +542,10 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
537
542
|
});
|
|
538
543
|
// rename index constraints
|
|
539
544
|
newTable.indices.forEach((index) => {
|
|
545
|
+
const oldIndexName = this.connection.namingStrategy.indexName(oldTable, index.columnNames, index.where);
|
|
546
|
+
// Skip renaming if Index has user defined constraint name
|
|
547
|
+
if (index.name !== oldIndexName)
|
|
548
|
+
return;
|
|
540
549
|
// build new constraint name
|
|
541
550
|
const { schema } = this.driver.parseTableName(newTable);
|
|
542
551
|
const newIndexName = this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);
|
|
@@ -554,6 +563,10 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
554
563
|
});
|
|
555
564
|
// rename foreign key constraints
|
|
556
565
|
newTable.foreignKeys.forEach((foreignKey) => {
|
|
566
|
+
const oldForeignKeyName = this.connection.namingStrategy.foreignKeyName(oldTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
567
|
+
// Skip renaming if foreign key has user defined constraint name
|
|
568
|
+
if (foreignKey.name !== oldForeignKeyName)
|
|
569
|
+
return;
|
|
557
570
|
// build new constraint name
|
|
558
571
|
const newForeignKeyName = this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
559
572
|
// build queries
|
|
@@ -598,7 +611,9 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
598
611
|
const primaryColumns = clonedTable.primaryColumns;
|
|
599
612
|
// if table already have primary key, me must drop it and recreate again
|
|
600
613
|
if (primaryColumns.length > 0) {
|
|
601
|
-
const pkName =
|
|
614
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
615
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
616
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
602
617
|
const columnNames = primaryColumns
|
|
603
618
|
.map((column) => `"${column.name}"`)
|
|
604
619
|
.join(", ");
|
|
@@ -606,7 +621,9 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
606
621
|
downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${pkName}" PRIMARY KEY (${columnNames})`));
|
|
607
622
|
}
|
|
608
623
|
primaryColumns.push(column);
|
|
609
|
-
const pkName =
|
|
624
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
625
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
626
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
610
627
|
const columnNames = primaryColumns
|
|
611
628
|
.map((column) => `"${column.name}"`)
|
|
612
629
|
.join(", ");
|
|
@@ -733,7 +750,8 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
733
750
|
downQueries.push(new Query_1.Query(`ALTER TYPE ${this.buildEnumName(table, newColumn)} RENAME TO "${oldEnumType.name}"`));
|
|
734
751
|
}
|
|
735
752
|
// rename column primary key constraint
|
|
736
|
-
if (oldColumn.isPrimary === true
|
|
753
|
+
if (oldColumn.isPrimary === true &&
|
|
754
|
+
!oldColumn.primaryKeyConstraintName) {
|
|
737
755
|
const primaryColumns = clonedTable.primaryColumns;
|
|
738
756
|
// build old primary constraint name
|
|
739
757
|
const columnNames = primaryColumns.map((column) => column.name);
|
|
@@ -760,6 +778,10 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
760
778
|
}
|
|
761
779
|
// rename unique constraints
|
|
762
780
|
clonedTable.findColumnUniques(oldColumn).forEach((unique) => {
|
|
781
|
+
const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(clonedTable, unique.columnNames);
|
|
782
|
+
// Skip renaming if Unique has user defined constraint name
|
|
783
|
+
if (unique.name !== oldUniqueName)
|
|
784
|
+
return;
|
|
763
785
|
// build new constraint name
|
|
764
786
|
unique.columnNames.splice(unique.columnNames.indexOf(oldColumn.name), 1);
|
|
765
787
|
unique.columnNames.push(newColumn.name);
|
|
@@ -772,6 +794,10 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
772
794
|
});
|
|
773
795
|
// rename index constraints
|
|
774
796
|
clonedTable.findColumnIndices(oldColumn).forEach((index) => {
|
|
797
|
+
const oldIndexName = this.connection.namingStrategy.indexName(clonedTable, index.columnNames, index.where);
|
|
798
|
+
// Skip renaming if Index has user defined constraint name
|
|
799
|
+
if (index.name !== oldIndexName)
|
|
800
|
+
return;
|
|
775
801
|
// build new constraint name
|
|
776
802
|
index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);
|
|
777
803
|
index.columnNames.push(newColumn.name);
|
|
@@ -793,6 +819,10 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
793
819
|
clonedTable
|
|
794
820
|
.findColumnForeignKeys(oldColumn)
|
|
795
821
|
.forEach((foreignKey) => {
|
|
822
|
+
const foreignKeyName = this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
823
|
+
// Skip renaming if foreign key has user defined constraint name
|
|
824
|
+
if (foreignKey.name !== foreignKeyName)
|
|
825
|
+
return;
|
|
796
826
|
// build new constraint name
|
|
797
827
|
foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);
|
|
798
828
|
foreignKey.columnNames.push(newColumn.name);
|
|
@@ -878,7 +908,9 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
878
908
|
const primaryColumns = clonedTable.primaryColumns;
|
|
879
909
|
// if primary column state changed, we must always drop existed constraint.
|
|
880
910
|
if (primaryColumns.length > 0) {
|
|
881
|
-
const pkName =
|
|
911
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
912
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
913
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
882
914
|
const columnNames = primaryColumns
|
|
883
915
|
.map((column) => `"${column.name}"`)
|
|
884
916
|
.join(", ");
|
|
@@ -890,7 +922,9 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
890
922
|
// update column in table
|
|
891
923
|
const column = clonedTable.columns.find((column) => column.name === newColumn.name);
|
|
892
924
|
column.isPrimary = true;
|
|
893
|
-
const pkName =
|
|
925
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
926
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
927
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
894
928
|
const columnNames = primaryColumns
|
|
895
929
|
.map((column) => `"${column.name}"`)
|
|
896
930
|
.join(", ");
|
|
@@ -905,7 +939,10 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
905
939
|
column.isPrimary = false;
|
|
906
940
|
// if we have another primary keys, we must recreate constraint.
|
|
907
941
|
if (primaryColumns.length > 0) {
|
|
908
|
-
const pkName =
|
|
942
|
+
const pkName = primaryColumns[0]
|
|
943
|
+
.primaryKeyConstraintName
|
|
944
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
945
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
909
946
|
const columnNames = primaryColumns
|
|
910
947
|
.map((column) => `"${column.name}"`)
|
|
911
948
|
.join(", ");
|
|
@@ -1069,7 +1106,9 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1069
1106
|
const downQueries = [];
|
|
1070
1107
|
// drop primary key constraint
|
|
1071
1108
|
if (column.isPrimary) {
|
|
1072
|
-
const pkName =
|
|
1109
|
+
const pkName = column.primaryKeyConstraintName
|
|
1110
|
+
? column.primaryKeyConstraintName
|
|
1111
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
|
|
1073
1112
|
const columnNames = clonedTable.primaryColumns
|
|
1074
1113
|
.map((primaryColumn) => `"${primaryColumn.name}"`)
|
|
1075
1114
|
.join(", ");
|
|
@@ -1080,7 +1119,10 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1080
1119
|
tableColumn.isPrimary = false;
|
|
1081
1120
|
// if primary key have multiple columns, we must recreate it without dropped column
|
|
1082
1121
|
if (clonedTable.primaryColumns.length > 0) {
|
|
1083
|
-
const pkName =
|
|
1122
|
+
const pkName = clonedTable.primaryColumns[0]
|
|
1123
|
+
.primaryKeyConstraintName
|
|
1124
|
+
? clonedTable.primaryColumns[0].primaryKeyConstraintName
|
|
1125
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
|
|
1084
1126
|
const columnNames = clonedTable.primaryColumns
|
|
1085
1127
|
.map((primaryColumn) => `"${primaryColumn.name}"`)
|
|
1086
1128
|
.join(", ");
|
|
@@ -1162,12 +1204,12 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1162
1204
|
/**
|
|
1163
1205
|
* Creates a new primary key.
|
|
1164
1206
|
*/
|
|
1165
|
-
async createPrimaryKey(tableOrName, columnNames) {
|
|
1207
|
+
async createPrimaryKey(tableOrName, columnNames, constraintName) {
|
|
1166
1208
|
const table = InstanceChecker_1.InstanceChecker.isTable(tableOrName)
|
|
1167
1209
|
? tableOrName
|
|
1168
1210
|
: await this.getCachedTable(tableOrName);
|
|
1169
1211
|
const clonedTable = table.clone();
|
|
1170
|
-
const up = this.createPrimaryKeySql(table, columnNames);
|
|
1212
|
+
const up = this.createPrimaryKeySql(table, columnNames, constraintName);
|
|
1171
1213
|
// mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.
|
|
1172
1214
|
clonedTable.columns.forEach((column) => {
|
|
1173
1215
|
if (columnNames.find((columnName) => columnName === column.name))
|
|
@@ -1191,7 +1233,9 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1191
1233
|
// if table already have primary columns, we must drop them.
|
|
1192
1234
|
const primaryColumns = clonedTable.primaryColumns;
|
|
1193
1235
|
if (primaryColumns.length > 0) {
|
|
1194
|
-
const pkName =
|
|
1236
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
1237
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
1238
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
1195
1239
|
const columnNamesString = primaryColumns
|
|
1196
1240
|
.map((column) => `"${column.name}"`)
|
|
1197
1241
|
.join(", ");
|
|
@@ -1202,7 +1246,9 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1202
1246
|
clonedTable.columns
|
|
1203
1247
|
.filter((column) => columnNames.indexOf(column.name) !== -1)
|
|
1204
1248
|
.forEach((column) => (column.isPrimary = true));
|
|
1205
|
-
const pkName =
|
|
1249
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
1250
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
1251
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
|
|
1206
1252
|
const columnNamesString = columnNames
|
|
1207
1253
|
.map((columnName) => `"${columnName}"`)
|
|
1208
1254
|
.join(", ");
|
|
@@ -1214,12 +1260,12 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1214
1260
|
/**
|
|
1215
1261
|
* Drops a primary key.
|
|
1216
1262
|
*/
|
|
1217
|
-
async dropPrimaryKey(tableOrName) {
|
|
1263
|
+
async dropPrimaryKey(tableOrName, constraintName) {
|
|
1218
1264
|
const table = InstanceChecker_1.InstanceChecker.isTable(tableOrName)
|
|
1219
1265
|
? tableOrName
|
|
1220
1266
|
: await this.getCachedTable(tableOrName);
|
|
1221
1267
|
const up = this.dropPrimaryKeySql(table);
|
|
1222
|
-
const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name));
|
|
1268
|
+
const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name), constraintName);
|
|
1223
1269
|
await this.executeQueries(up, down);
|
|
1224
1270
|
table.primaryColumns.forEach((column) => {
|
|
1225
1271
|
column.isPrimary = false;
|
|
@@ -1841,7 +1887,30 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1841
1887
|
}
|
|
1842
1888
|
tableColumn.isNullable =
|
|
1843
1889
|
dbColumn["is_nullable"] === "YES";
|
|
1844
|
-
|
|
1890
|
+
const primaryConstraint = columnConstraints.find((constraint) => constraint["constraint_type"] === "PRIMARY");
|
|
1891
|
+
if (primaryConstraint) {
|
|
1892
|
+
tableColumn.isPrimary = true;
|
|
1893
|
+
// find another columns involved in primary key constraint
|
|
1894
|
+
const anotherPrimaryConstraints = dbConstraints.filter((constraint) => constraint["table_name"] ===
|
|
1895
|
+
dbColumn["table_name"] &&
|
|
1896
|
+
constraint["table_schema"] ===
|
|
1897
|
+
dbColumn["table_schema"] &&
|
|
1898
|
+
constraint["column_name"] !==
|
|
1899
|
+
dbColumn["column_name"] &&
|
|
1900
|
+
constraint["constraint_type"] ===
|
|
1901
|
+
"PRIMARY");
|
|
1902
|
+
// collect all column names
|
|
1903
|
+
const columnNames = anotherPrimaryConstraints.map((constraint) => constraint["column_name"]);
|
|
1904
|
+
columnNames.push(dbColumn["column_name"]);
|
|
1905
|
+
// build default primary key constraint name
|
|
1906
|
+
const pkName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
1907
|
+
// if primary key has user-defined constraint name, write it in table column
|
|
1908
|
+
if (primaryConstraint["constraint_name"] !==
|
|
1909
|
+
pkName) {
|
|
1910
|
+
tableColumn.primaryKeyConstraintName =
|
|
1911
|
+
primaryConstraint["constraint_name"];
|
|
1912
|
+
}
|
|
1913
|
+
}
|
|
1845
1914
|
const uniqueConstraints = columnConstraints.filter((constraint) => constraint["constraint_type"] === "UNIQUE");
|
|
1846
1915
|
const isConstraintComposite = uniqueConstraints.every((uniqueConstraint) => {
|
|
1847
1916
|
return dbConstraints.some((dbConstraint) => dbConstraint["constraint_type"] ===
|
|
@@ -2105,7 +2174,9 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
2105
2174
|
}
|
|
2106
2175
|
const primaryColumns = table.columns.filter((column) => column.isPrimary);
|
|
2107
2176
|
if (primaryColumns.length > 0) {
|
|
2108
|
-
const primaryKeyName =
|
|
2177
|
+
const primaryKeyName = primaryColumns[0].primaryKeyConstraintName
|
|
2178
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
2179
|
+
: this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
|
|
2109
2180
|
const columnNames = primaryColumns
|
|
2110
2181
|
.map((column) => `"${column.name}"`)
|
|
2111
2182
|
.join(", ");
|
|
@@ -2251,8 +2322,10 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
2251
2322
|
/**
|
|
2252
2323
|
* Builds create primary key sql.
|
|
2253
2324
|
*/
|
|
2254
|
-
createPrimaryKeySql(table, columnNames) {
|
|
2255
|
-
const primaryKeyName =
|
|
2325
|
+
createPrimaryKeySql(table, columnNames, constraintName) {
|
|
2326
|
+
const primaryKeyName = constraintName
|
|
2327
|
+
? constraintName
|
|
2328
|
+
: this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
2256
2329
|
const columnNamesString = columnNames
|
|
2257
2330
|
.map((columnName) => `"${columnName}"`)
|
|
2258
2331
|
.join(", ");
|
|
@@ -2262,8 +2335,13 @@ class PostgresQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
2262
2335
|
* Builds drop primary key sql.
|
|
2263
2336
|
*/
|
|
2264
2337
|
dropPrimaryKeySql(table) {
|
|
2338
|
+
if (!table.primaryColumns.length)
|
|
2339
|
+
throw new error_1.TypeORMError(`Table ${table} has no primary keys.`);
|
|
2265
2340
|
const columnNames = table.primaryColumns.map((column) => column.name);
|
|
2266
|
-
const
|
|
2341
|
+
const constraintName = table.primaryColumns[0].primaryKeyConstraintName;
|
|
2342
|
+
const primaryKeyName = constraintName
|
|
2343
|
+
? constraintName
|
|
2344
|
+
: this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
2267
2345
|
return new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${primaryKeyName}"`);
|
|
2268
2346
|
}
|
|
2269
2347
|
/**
|