typeorm 0.3.6-dev.2d8afbe → 0.3.6-dev.506133e
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 +15 -15
- 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/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 +15 -15
- 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
|
*/
|
|
@@ -501,8 +501,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
501
501
|
: newTableName;
|
|
502
502
|
upQueries.push(new Query(`ALTER TABLE ${this.escapePath(oldTable)} RENAME TO "${newTableName}"`));
|
|
503
503
|
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(newTable)} RENAME TO "${oldTableName}"`));
|
|
504
|
-
// rename column primary key constraint
|
|
505
|
-
if (newTable.primaryColumns.length > 0
|
|
504
|
+
// rename column primary key constraint if it has default constraint name
|
|
505
|
+
if (newTable.primaryColumns.length > 0 &&
|
|
506
|
+
!newTable.primaryColumns[0].primaryKeyConstraintName) {
|
|
506
507
|
const columnNames = newTable.primaryColumns.map((column) => column.name);
|
|
507
508
|
const oldPkName = this.connection.namingStrategy.primaryKeyName(oldTable, columnNames);
|
|
508
509
|
const newPkName = this.connection.namingStrategy.primaryKeyName(newTable, columnNames);
|
|
@@ -524,6 +525,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
524
525
|
});
|
|
525
526
|
// rename unique constraints
|
|
526
527
|
newTable.uniques.forEach((unique) => {
|
|
528
|
+
const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(oldTable, unique.columnNames);
|
|
529
|
+
// Skip renaming if Unique has user defined constraint name
|
|
530
|
+
if (unique.name !== oldUniqueName)
|
|
531
|
+
return;
|
|
527
532
|
// build new constraint name
|
|
528
533
|
const newUniqueName = this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames);
|
|
529
534
|
// build queries
|
|
@@ -534,6 +539,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
534
539
|
});
|
|
535
540
|
// rename index constraints
|
|
536
541
|
newTable.indices.forEach((index) => {
|
|
542
|
+
const oldIndexName = this.connection.namingStrategy.indexName(oldTable, index.columnNames, index.where);
|
|
543
|
+
// Skip renaming if Index has user defined constraint name
|
|
544
|
+
if (index.name !== oldIndexName)
|
|
545
|
+
return;
|
|
537
546
|
// build new constraint name
|
|
538
547
|
const { schema } = this.driver.parseTableName(newTable);
|
|
539
548
|
const newIndexName = this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);
|
|
@@ -551,6 +560,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
551
560
|
});
|
|
552
561
|
// rename foreign key constraints
|
|
553
562
|
newTable.foreignKeys.forEach((foreignKey) => {
|
|
563
|
+
const oldForeignKeyName = this.connection.namingStrategy.foreignKeyName(oldTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
564
|
+
// Skip renaming if foreign key has user defined constraint name
|
|
565
|
+
if (foreignKey.name !== oldForeignKeyName)
|
|
566
|
+
return;
|
|
554
567
|
// build new constraint name
|
|
555
568
|
const newForeignKeyName = this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
556
569
|
// build queries
|
|
@@ -595,7 +608,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
595
608
|
const primaryColumns = clonedTable.primaryColumns;
|
|
596
609
|
// if table already have primary key, me must drop it and recreate again
|
|
597
610
|
if (primaryColumns.length > 0) {
|
|
598
|
-
const pkName =
|
|
611
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
612
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
613
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
599
614
|
const columnNames = primaryColumns
|
|
600
615
|
.map((column) => `"${column.name}"`)
|
|
601
616
|
.join(", ");
|
|
@@ -603,7 +618,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
603
618
|
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${pkName}" PRIMARY KEY (${columnNames})`));
|
|
604
619
|
}
|
|
605
620
|
primaryColumns.push(column);
|
|
606
|
-
const pkName =
|
|
621
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
622
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
623
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
607
624
|
const columnNames = primaryColumns
|
|
608
625
|
.map((column) => `"${column.name}"`)
|
|
609
626
|
.join(", ");
|
|
@@ -730,7 +747,8 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
730
747
|
downQueries.push(new Query(`ALTER TYPE ${this.buildEnumName(table, newColumn)} RENAME TO "${oldEnumType.name}"`));
|
|
731
748
|
}
|
|
732
749
|
// rename column primary key constraint
|
|
733
|
-
if (oldColumn.isPrimary === true
|
|
750
|
+
if (oldColumn.isPrimary === true &&
|
|
751
|
+
!oldColumn.primaryKeyConstraintName) {
|
|
734
752
|
const primaryColumns = clonedTable.primaryColumns;
|
|
735
753
|
// build old primary constraint name
|
|
736
754
|
const columnNames = primaryColumns.map((column) => column.name);
|
|
@@ -757,6 +775,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
757
775
|
}
|
|
758
776
|
// rename unique constraints
|
|
759
777
|
clonedTable.findColumnUniques(oldColumn).forEach((unique) => {
|
|
778
|
+
const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(clonedTable, unique.columnNames);
|
|
779
|
+
// Skip renaming if Unique has user defined constraint name
|
|
780
|
+
if (unique.name !== oldUniqueName)
|
|
781
|
+
return;
|
|
760
782
|
// build new constraint name
|
|
761
783
|
unique.columnNames.splice(unique.columnNames.indexOf(oldColumn.name), 1);
|
|
762
784
|
unique.columnNames.push(newColumn.name);
|
|
@@ -769,6 +791,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
769
791
|
});
|
|
770
792
|
// rename index constraints
|
|
771
793
|
clonedTable.findColumnIndices(oldColumn).forEach((index) => {
|
|
794
|
+
const oldIndexName = this.connection.namingStrategy.indexName(clonedTable, index.columnNames, index.where);
|
|
795
|
+
// Skip renaming if Index has user defined constraint name
|
|
796
|
+
if (index.name !== oldIndexName)
|
|
797
|
+
return;
|
|
772
798
|
// build new constraint name
|
|
773
799
|
index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);
|
|
774
800
|
index.columnNames.push(newColumn.name);
|
|
@@ -790,6 +816,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
790
816
|
clonedTable
|
|
791
817
|
.findColumnForeignKeys(oldColumn)
|
|
792
818
|
.forEach((foreignKey) => {
|
|
819
|
+
const foreignKeyName = this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
820
|
+
// Skip renaming if foreign key has user defined constraint name
|
|
821
|
+
if (foreignKey.name !== foreignKeyName)
|
|
822
|
+
return;
|
|
793
823
|
// build new constraint name
|
|
794
824
|
foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);
|
|
795
825
|
foreignKey.columnNames.push(newColumn.name);
|
|
@@ -875,7 +905,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
875
905
|
const primaryColumns = clonedTable.primaryColumns;
|
|
876
906
|
// if primary column state changed, we must always drop existed constraint.
|
|
877
907
|
if (primaryColumns.length > 0) {
|
|
878
|
-
const pkName =
|
|
908
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
909
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
910
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
879
911
|
const columnNames = primaryColumns
|
|
880
912
|
.map((column) => `"${column.name}"`)
|
|
881
913
|
.join(", ");
|
|
@@ -887,7 +919,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
887
919
|
// update column in table
|
|
888
920
|
const column = clonedTable.columns.find((column) => column.name === newColumn.name);
|
|
889
921
|
column.isPrimary = true;
|
|
890
|
-
const pkName =
|
|
922
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
923
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
924
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
891
925
|
const columnNames = primaryColumns
|
|
892
926
|
.map((column) => `"${column.name}"`)
|
|
893
927
|
.join(", ");
|
|
@@ -902,7 +936,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
902
936
|
column.isPrimary = false;
|
|
903
937
|
// if we have another primary keys, we must recreate constraint.
|
|
904
938
|
if (primaryColumns.length > 0) {
|
|
905
|
-
const pkName =
|
|
939
|
+
const pkName = primaryColumns[0]
|
|
940
|
+
.primaryKeyConstraintName
|
|
941
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
942
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
906
943
|
const columnNames = primaryColumns
|
|
907
944
|
.map((column) => `"${column.name}"`)
|
|
908
945
|
.join(", ");
|
|
@@ -1066,7 +1103,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
1066
1103
|
const downQueries = [];
|
|
1067
1104
|
// drop primary key constraint
|
|
1068
1105
|
if (column.isPrimary) {
|
|
1069
|
-
const pkName =
|
|
1106
|
+
const pkName = column.primaryKeyConstraintName
|
|
1107
|
+
? column.primaryKeyConstraintName
|
|
1108
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
|
|
1070
1109
|
const columnNames = clonedTable.primaryColumns
|
|
1071
1110
|
.map((primaryColumn) => `"${primaryColumn.name}"`)
|
|
1072
1111
|
.join(", ");
|
|
@@ -1077,7 +1116,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
1077
1116
|
tableColumn.isPrimary = false;
|
|
1078
1117
|
// if primary key have multiple columns, we must recreate it without dropped column
|
|
1079
1118
|
if (clonedTable.primaryColumns.length > 0) {
|
|
1080
|
-
const pkName =
|
|
1119
|
+
const pkName = clonedTable.primaryColumns[0]
|
|
1120
|
+
.primaryKeyConstraintName
|
|
1121
|
+
? clonedTable.primaryColumns[0].primaryKeyConstraintName
|
|
1122
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
|
|
1081
1123
|
const columnNames = clonedTable.primaryColumns
|
|
1082
1124
|
.map((primaryColumn) => `"${primaryColumn.name}"`)
|
|
1083
1125
|
.join(", ");
|
|
@@ -1159,12 +1201,12 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
1159
1201
|
/**
|
|
1160
1202
|
* Creates a new primary key.
|
|
1161
1203
|
*/
|
|
1162
|
-
async createPrimaryKey(tableOrName, columnNames) {
|
|
1204
|
+
async createPrimaryKey(tableOrName, columnNames, constraintName) {
|
|
1163
1205
|
const table = InstanceChecker.isTable(tableOrName)
|
|
1164
1206
|
? tableOrName
|
|
1165
1207
|
: await this.getCachedTable(tableOrName);
|
|
1166
1208
|
const clonedTable = table.clone();
|
|
1167
|
-
const up = this.createPrimaryKeySql(table, columnNames);
|
|
1209
|
+
const up = this.createPrimaryKeySql(table, columnNames, constraintName);
|
|
1168
1210
|
// mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.
|
|
1169
1211
|
clonedTable.columns.forEach((column) => {
|
|
1170
1212
|
if (columnNames.find((columnName) => columnName === column.name))
|
|
@@ -1188,7 +1230,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
1188
1230
|
// if table already have primary columns, we must drop them.
|
|
1189
1231
|
const primaryColumns = clonedTable.primaryColumns;
|
|
1190
1232
|
if (primaryColumns.length > 0) {
|
|
1191
|
-
const pkName =
|
|
1233
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
1234
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
1235
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
1192
1236
|
const columnNamesString = primaryColumns
|
|
1193
1237
|
.map((column) => `"${column.name}"`)
|
|
1194
1238
|
.join(", ");
|
|
@@ -1199,7 +1243,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
1199
1243
|
clonedTable.columns
|
|
1200
1244
|
.filter((column) => columnNames.indexOf(column.name) !== -1)
|
|
1201
1245
|
.forEach((column) => (column.isPrimary = true));
|
|
1202
|
-
const pkName =
|
|
1246
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
1247
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
1248
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
|
|
1203
1249
|
const columnNamesString = columnNames
|
|
1204
1250
|
.map((columnName) => `"${columnName}"`)
|
|
1205
1251
|
.join(", ");
|
|
@@ -1211,12 +1257,12 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
1211
1257
|
/**
|
|
1212
1258
|
* Drops a primary key.
|
|
1213
1259
|
*/
|
|
1214
|
-
async dropPrimaryKey(tableOrName) {
|
|
1260
|
+
async dropPrimaryKey(tableOrName, constraintName) {
|
|
1215
1261
|
const table = InstanceChecker.isTable(tableOrName)
|
|
1216
1262
|
? tableOrName
|
|
1217
1263
|
: await this.getCachedTable(tableOrName);
|
|
1218
1264
|
const up = this.dropPrimaryKeySql(table);
|
|
1219
|
-
const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name));
|
|
1265
|
+
const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name), constraintName);
|
|
1220
1266
|
await this.executeQueries(up, down);
|
|
1221
1267
|
table.primaryColumns.forEach((column) => {
|
|
1222
1268
|
column.isPrimary = false;
|
|
@@ -1838,7 +1884,30 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
1838
1884
|
}
|
|
1839
1885
|
tableColumn.isNullable =
|
|
1840
1886
|
dbColumn["is_nullable"] === "YES";
|
|
1841
|
-
|
|
1887
|
+
const primaryConstraint = columnConstraints.find((constraint) => constraint["constraint_type"] === "PRIMARY");
|
|
1888
|
+
if (primaryConstraint) {
|
|
1889
|
+
tableColumn.isPrimary = true;
|
|
1890
|
+
// find another columns involved in primary key constraint
|
|
1891
|
+
const anotherPrimaryConstraints = dbConstraints.filter((constraint) => constraint["table_name"] ===
|
|
1892
|
+
dbColumn["table_name"] &&
|
|
1893
|
+
constraint["table_schema"] ===
|
|
1894
|
+
dbColumn["table_schema"] &&
|
|
1895
|
+
constraint["column_name"] !==
|
|
1896
|
+
dbColumn["column_name"] &&
|
|
1897
|
+
constraint["constraint_type"] ===
|
|
1898
|
+
"PRIMARY");
|
|
1899
|
+
// collect all column names
|
|
1900
|
+
const columnNames = anotherPrimaryConstraints.map((constraint) => constraint["column_name"]);
|
|
1901
|
+
columnNames.push(dbColumn["column_name"]);
|
|
1902
|
+
// build default primary key constraint name
|
|
1903
|
+
const pkName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
1904
|
+
// if primary key has user-defined constraint name, write it in table column
|
|
1905
|
+
if (primaryConstraint["constraint_name"] !==
|
|
1906
|
+
pkName) {
|
|
1907
|
+
tableColumn.primaryKeyConstraintName =
|
|
1908
|
+
primaryConstraint["constraint_name"];
|
|
1909
|
+
}
|
|
1910
|
+
}
|
|
1842
1911
|
const uniqueConstraints = columnConstraints.filter((constraint) => constraint["constraint_type"] === "UNIQUE");
|
|
1843
1912
|
const isConstraintComposite = uniqueConstraints.every((uniqueConstraint) => {
|
|
1844
1913
|
return dbConstraints.some((dbConstraint) => dbConstraint["constraint_type"] ===
|
|
@@ -2102,7 +2171,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
2102
2171
|
}
|
|
2103
2172
|
const primaryColumns = table.columns.filter((column) => column.isPrimary);
|
|
2104
2173
|
if (primaryColumns.length > 0) {
|
|
2105
|
-
const primaryKeyName =
|
|
2174
|
+
const primaryKeyName = primaryColumns[0].primaryKeyConstraintName
|
|
2175
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
2176
|
+
: this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
|
|
2106
2177
|
const columnNames = primaryColumns
|
|
2107
2178
|
.map((column) => `"${column.name}"`)
|
|
2108
2179
|
.join(", ");
|
|
@@ -2248,8 +2319,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
2248
2319
|
/**
|
|
2249
2320
|
* Builds create primary key sql.
|
|
2250
2321
|
*/
|
|
2251
|
-
createPrimaryKeySql(table, columnNames) {
|
|
2252
|
-
const primaryKeyName =
|
|
2322
|
+
createPrimaryKeySql(table, columnNames, constraintName) {
|
|
2323
|
+
const primaryKeyName = constraintName
|
|
2324
|
+
? constraintName
|
|
2325
|
+
: this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
2253
2326
|
const columnNamesString = columnNames
|
|
2254
2327
|
.map((columnName) => `"${columnName}"`)
|
|
2255
2328
|
.join(", ");
|
|
@@ -2259,8 +2332,13 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
2259
2332
|
* Builds drop primary key sql.
|
|
2260
2333
|
*/
|
|
2261
2334
|
dropPrimaryKeySql(table) {
|
|
2335
|
+
if (!table.primaryColumns.length)
|
|
2336
|
+
throw new TypeORMError(`Table ${table} has no primary keys.`);
|
|
2262
2337
|
const columnNames = table.primaryColumns.map((column) => column.name);
|
|
2263
|
-
const
|
|
2338
|
+
const constraintName = table.primaryColumns[0].primaryKeyConstraintName;
|
|
2339
|
+
const primaryKeyName = constraintName
|
|
2340
|
+
? constraintName
|
|
2341
|
+
: this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
2264
2342
|
return new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${primaryKeyName}"`);
|
|
2265
2343
|
}
|
|
2266
2344
|
/**
|