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
|
@@ -510,7 +510,8 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
510
510
|
upQueries.push(new Query(`ALTER TABLE ${this.escapePath(oldTable)} RENAME TO "${newTableName}"`));
|
|
511
511
|
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(newTable)} RENAME TO "${oldTableName}"`));
|
|
512
512
|
// rename column primary key constraint
|
|
513
|
-
if (newTable.primaryColumns.length > 0
|
|
513
|
+
if (newTable.primaryColumns.length > 0 &&
|
|
514
|
+
!newTable.primaryColumns[0].primaryKeyConstraintName) {
|
|
514
515
|
const columnNames = newTable.primaryColumns.map((column) => column.name);
|
|
515
516
|
const oldPkName = this.connection.namingStrategy.primaryKeyName(oldTable, columnNames);
|
|
516
517
|
const newPkName = this.connection.namingStrategy.primaryKeyName(newTable, columnNames);
|
|
@@ -519,6 +520,10 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
519
520
|
}
|
|
520
521
|
// rename unique constraints
|
|
521
522
|
newTable.uniques.forEach((unique) => {
|
|
523
|
+
const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(oldTable, unique.columnNames);
|
|
524
|
+
// Skip renaming if Unique has user defined constraint name
|
|
525
|
+
if (unique.name !== oldUniqueName)
|
|
526
|
+
return;
|
|
522
527
|
// build new constraint name
|
|
523
528
|
const newUniqueName = this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames);
|
|
524
529
|
// build queries
|
|
@@ -529,6 +534,10 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
529
534
|
});
|
|
530
535
|
// rename index constraints
|
|
531
536
|
newTable.indices.forEach((index) => {
|
|
537
|
+
const oldIndexName = this.connection.namingStrategy.indexName(oldTable, index.columnNames, index.where);
|
|
538
|
+
// Skip renaming if Index has user defined constraint name
|
|
539
|
+
if (index.name !== oldIndexName)
|
|
540
|
+
return;
|
|
532
541
|
// build new constraint name
|
|
533
542
|
const { schema } = this.driver.parseTableName(newTable);
|
|
534
543
|
const newIndexName = this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);
|
|
@@ -546,6 +555,10 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
546
555
|
});
|
|
547
556
|
// rename foreign key constraints
|
|
548
557
|
newTable.foreignKeys.forEach((foreignKey) => {
|
|
558
|
+
const oldForeignKeyName = this.connection.namingStrategy.foreignKeyName(oldTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
559
|
+
// Skip renaming if foreign key has user defined constraint name
|
|
560
|
+
if (foreignKey.name !== oldForeignKeyName)
|
|
561
|
+
return;
|
|
549
562
|
// build new constraint name
|
|
550
563
|
const newForeignKeyName = this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
551
564
|
// build queries
|
|
@@ -575,9 +588,11 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
575
588
|
if (column.isPrimary) {
|
|
576
589
|
const primaryColumns = clonedTable.primaryColumns;
|
|
577
590
|
// if table already have primary key, me must drop it and recreate again
|
|
578
|
-
// todo:
|
|
591
|
+
// todo: https://go.crdb.dev/issue-v/48026/v21.1
|
|
579
592
|
if (primaryColumns.length > 0) {
|
|
580
|
-
const pkName =
|
|
593
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
594
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
595
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
581
596
|
const columnNames = primaryColumns
|
|
582
597
|
.map((column) => `"${column.name}"`)
|
|
583
598
|
.join(", ");
|
|
@@ -585,7 +600,9 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
585
600
|
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${pkName}" PRIMARY KEY (${columnNames})`));
|
|
586
601
|
}
|
|
587
602
|
primaryColumns.push(column);
|
|
588
|
-
const pkName =
|
|
603
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
604
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
605
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
589
606
|
const columnNames = primaryColumns
|
|
590
607
|
.map((column) => `"${column.name}"`)
|
|
591
608
|
.join(", ");
|
|
@@ -713,7 +730,8 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
713
730
|
upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} RENAME COLUMN "${oldColumn.name}" TO "${newColumn.name}"`));
|
|
714
731
|
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} RENAME COLUMN "${newColumn.name}" TO "${oldColumn.name}"`));
|
|
715
732
|
// rename column primary key constraint
|
|
716
|
-
if (oldColumn.isPrimary === true
|
|
733
|
+
if (oldColumn.isPrimary === true &&
|
|
734
|
+
!oldColumn.primaryKeyConstraintName) {
|
|
717
735
|
const primaryColumns = clonedTable.primaryColumns;
|
|
718
736
|
// build old primary constraint name
|
|
719
737
|
const columnNames = primaryColumns.map((column) => column.name);
|
|
@@ -728,6 +746,10 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
728
746
|
}
|
|
729
747
|
// rename unique constraints
|
|
730
748
|
clonedTable.findColumnUniques(oldColumn).forEach((unique) => {
|
|
749
|
+
const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(clonedTable, unique.columnNames);
|
|
750
|
+
// Skip renaming if Unique has user defined constraint name
|
|
751
|
+
if (unique.name !== oldUniqueName)
|
|
752
|
+
return;
|
|
731
753
|
// build new constraint name
|
|
732
754
|
unique.columnNames.splice(unique.columnNames.indexOf(oldColumn.name), 1);
|
|
733
755
|
unique.columnNames.push(newColumn.name);
|
|
@@ -740,6 +762,10 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
740
762
|
});
|
|
741
763
|
// rename index constraints
|
|
742
764
|
clonedTable.findColumnIndices(oldColumn).forEach((index) => {
|
|
765
|
+
const oldIndexName = this.connection.namingStrategy.indexName(clonedTable, index.columnNames, index.where);
|
|
766
|
+
// Skip renaming if Index has user defined constraint name
|
|
767
|
+
if (index.name !== oldIndexName)
|
|
768
|
+
return;
|
|
743
769
|
// build new constraint name
|
|
744
770
|
index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);
|
|
745
771
|
index.columnNames.push(newColumn.name);
|
|
@@ -761,6 +787,10 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
761
787
|
clonedTable
|
|
762
788
|
.findColumnForeignKeys(oldColumn)
|
|
763
789
|
.forEach((foreignKey) => {
|
|
790
|
+
const foreignKeyName = this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
791
|
+
// Skip renaming if foreign key has user defined constraint name
|
|
792
|
+
if (foreignKey.name !== foreignKeyName)
|
|
793
|
+
return;
|
|
764
794
|
// build new constraint name
|
|
765
795
|
foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);
|
|
766
796
|
foreignKey.columnNames.push(newColumn.name);
|
|
@@ -799,7 +829,9 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
799
829
|
const primaryColumns = clonedTable.primaryColumns;
|
|
800
830
|
// if primary column state changed, we must always drop existed constraint.
|
|
801
831
|
if (primaryColumns.length > 0) {
|
|
802
|
-
const pkName =
|
|
832
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
833
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
834
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
803
835
|
const columnNames = primaryColumns
|
|
804
836
|
.map((column) => `"${column.name}"`)
|
|
805
837
|
.join(", ");
|
|
@@ -811,7 +843,9 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
811
843
|
// update column in table
|
|
812
844
|
const column = clonedTable.columns.find((column) => column.name === newColumn.name);
|
|
813
845
|
column.isPrimary = true;
|
|
814
|
-
const pkName =
|
|
846
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
847
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
848
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
815
849
|
const columnNames = primaryColumns
|
|
816
850
|
.map((column) => `"${column.name}"`)
|
|
817
851
|
.join(", ");
|
|
@@ -826,7 +860,10 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
826
860
|
column.isPrimary = false;
|
|
827
861
|
// if we have another primary keys, we must recreate constraint.
|
|
828
862
|
if (primaryColumns.length > 0) {
|
|
829
|
-
const pkName =
|
|
863
|
+
const pkName = primaryColumns[0]
|
|
864
|
+
.primaryKeyConstraintName
|
|
865
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
866
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
830
867
|
const columnNames = primaryColumns
|
|
831
868
|
.map((column) => `"${column.name}"`)
|
|
832
869
|
.join(", ");
|
|
@@ -921,9 +958,11 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
921
958
|
const upQueries = [];
|
|
922
959
|
const downQueries = [];
|
|
923
960
|
// drop primary key constraint
|
|
924
|
-
// todo:
|
|
961
|
+
// todo: https://go.crdb.dev/issue-v/48026/v21.1
|
|
925
962
|
if (column.isPrimary) {
|
|
926
|
-
const pkName =
|
|
963
|
+
const pkName = column.primaryKeyConstraintName
|
|
964
|
+
? column.primaryKeyConstraintName
|
|
965
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
|
|
927
966
|
const columnNames = clonedTable.primaryColumns
|
|
928
967
|
.map((primaryColumn) => `"${primaryColumn.name}"`)
|
|
929
968
|
.join(", ");
|
|
@@ -934,7 +973,10 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
934
973
|
tableColumn.isPrimary = false;
|
|
935
974
|
// if primary key have multiple columns, we must recreate it without dropped column
|
|
936
975
|
if (clonedTable.primaryColumns.length > 0) {
|
|
937
|
-
const pkName =
|
|
976
|
+
const pkName = clonedTable.primaryColumns[0]
|
|
977
|
+
.primaryKeyConstraintName
|
|
978
|
+
? clonedTable.primaryColumns[0].primaryKeyConstraintName
|
|
979
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
|
|
938
980
|
const columnNames = clonedTable.primaryColumns
|
|
939
981
|
.map((primaryColumn) => `"${primaryColumn.name}"`)
|
|
940
982
|
.join(", ");
|
|
@@ -1010,12 +1052,12 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
1010
1052
|
/**
|
|
1011
1053
|
* Creates a new primary key.
|
|
1012
1054
|
*/
|
|
1013
|
-
async createPrimaryKey(tableOrName, columnNames) {
|
|
1055
|
+
async createPrimaryKey(tableOrName, columnNames, constraintName) {
|
|
1014
1056
|
const table = InstanceChecker.isTable(tableOrName)
|
|
1015
1057
|
? tableOrName
|
|
1016
1058
|
: await this.getCachedTable(tableOrName);
|
|
1017
1059
|
const clonedTable = table.clone();
|
|
1018
|
-
const up = this.createPrimaryKeySql(table, columnNames);
|
|
1060
|
+
const up = this.createPrimaryKeySql(table, columnNames, constraintName);
|
|
1019
1061
|
// mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.
|
|
1020
1062
|
clonedTable.columns.forEach((column) => {
|
|
1021
1063
|
if (columnNames.find((columnName) => columnName === column.name))
|
|
@@ -1039,7 +1081,9 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
1039
1081
|
// if table already have primary columns, we must drop them.
|
|
1040
1082
|
const primaryColumns = clonedTable.primaryColumns;
|
|
1041
1083
|
if (primaryColumns.length > 0) {
|
|
1042
|
-
const pkName =
|
|
1084
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
1085
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
1086
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
1043
1087
|
const columnNamesString = primaryColumns
|
|
1044
1088
|
.map((column) => `"${column.name}"`)
|
|
1045
1089
|
.join(", ");
|
|
@@ -1050,7 +1094,9 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
1050
1094
|
clonedTable.columns
|
|
1051
1095
|
.filter((column) => columnNames.indexOf(column.name) !== -1)
|
|
1052
1096
|
.forEach((column) => (column.isPrimary = true));
|
|
1053
|
-
const pkName =
|
|
1097
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
1098
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
1099
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
|
|
1054
1100
|
const columnNamesString = columnNames
|
|
1055
1101
|
.map((columnName) => `"${columnName}"`)
|
|
1056
1102
|
.join(", ");
|
|
@@ -1062,12 +1108,12 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
1062
1108
|
/**
|
|
1063
1109
|
* Drops a primary key.
|
|
1064
1110
|
*/
|
|
1065
|
-
async dropPrimaryKey(tableOrName) {
|
|
1111
|
+
async dropPrimaryKey(tableOrName, constraintName) {
|
|
1066
1112
|
const table = InstanceChecker.isTable(tableOrName)
|
|
1067
1113
|
? tableOrName
|
|
1068
1114
|
: await this.getCachedTable(tableOrName);
|
|
1069
1115
|
const up = this.dropPrimaryKeySql(table);
|
|
1070
|
-
const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name));
|
|
1116
|
+
const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name), constraintName);
|
|
1071
1117
|
await this.executeQueries(up, down);
|
|
1072
1118
|
table.primaryColumns.forEach((column) => {
|
|
1073
1119
|
column.isPrimary = false;
|
|
@@ -1570,7 +1616,30 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
1570
1616
|
}
|
|
1571
1617
|
tableColumn.isNullable =
|
|
1572
1618
|
dbColumn["is_nullable"] === "YES";
|
|
1573
|
-
|
|
1619
|
+
const primaryConstraint = columnConstraints.find((constraint) => constraint["constraint_type"] === "PRIMARY");
|
|
1620
|
+
if (primaryConstraint) {
|
|
1621
|
+
tableColumn.isPrimary = true;
|
|
1622
|
+
// find another columns involved in primary key constraint
|
|
1623
|
+
const anotherPrimaryConstraints = dbConstraints.filter((constraint) => constraint["table_name"] ===
|
|
1624
|
+
dbColumn["table_name"] &&
|
|
1625
|
+
constraint["table_schema"] ===
|
|
1626
|
+
dbColumn["table_schema"] &&
|
|
1627
|
+
constraint["column_name"] !==
|
|
1628
|
+
dbColumn["column_name"] &&
|
|
1629
|
+
constraint["constraint_type"] ===
|
|
1630
|
+
"PRIMARY");
|
|
1631
|
+
// collect all column names
|
|
1632
|
+
const columnNames = anotherPrimaryConstraints.map((constraint) => constraint["column_name"]);
|
|
1633
|
+
columnNames.push(dbColumn["column_name"]);
|
|
1634
|
+
// build default primary key constraint name
|
|
1635
|
+
const pkName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
1636
|
+
// if primary key has user-defined constraint name, write it in table column
|
|
1637
|
+
if (primaryConstraint["constraint_name"] !==
|
|
1638
|
+
pkName) {
|
|
1639
|
+
tableColumn.primaryKeyConstraintName =
|
|
1640
|
+
primaryConstraint["constraint_name"];
|
|
1641
|
+
}
|
|
1642
|
+
}
|
|
1574
1643
|
const uniqueConstraints = columnConstraints.filter((constraint) => constraint["constraint_type"] === "UNIQUE");
|
|
1575
1644
|
const isConstraintComposite = uniqueConstraints.every((uniqueConstraint) => {
|
|
1576
1645
|
return dbConstraints.some((dbConstraint) => dbConstraint["constraint_type"] ===
|
|
@@ -1801,7 +1870,9 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
1801
1870
|
}
|
|
1802
1871
|
const primaryColumns = table.columns.filter((column) => column.isPrimary);
|
|
1803
1872
|
if (primaryColumns.length > 0) {
|
|
1804
|
-
const primaryKeyName =
|
|
1873
|
+
const primaryKeyName = primaryColumns[0].primaryKeyConstraintName
|
|
1874
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
1875
|
+
: this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
|
|
1805
1876
|
const columnNames = primaryColumns
|
|
1806
1877
|
.map((column) => `"${column.name}"`)
|
|
1807
1878
|
.join(", ");
|
|
@@ -1889,8 +1960,10 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
1889
1960
|
/**
|
|
1890
1961
|
* Builds create primary key sql.
|
|
1891
1962
|
*/
|
|
1892
|
-
createPrimaryKeySql(table, columnNames) {
|
|
1893
|
-
const primaryKeyName =
|
|
1963
|
+
createPrimaryKeySql(table, columnNames, constraintName) {
|
|
1964
|
+
const primaryKeyName = constraintName
|
|
1965
|
+
? constraintName
|
|
1966
|
+
: this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
1894
1967
|
const columnNamesString = columnNames
|
|
1895
1968
|
.map((columnName) => `"${columnName}"`)
|
|
1896
1969
|
.join(", ");
|
|
@@ -1900,8 +1973,13 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
1900
1973
|
* Builds drop primary key sql.
|
|
1901
1974
|
*/
|
|
1902
1975
|
dropPrimaryKeySql(table) {
|
|
1976
|
+
if (!table.primaryColumns.length)
|
|
1977
|
+
throw new TypeORMError(`Table ${table} has no primary keys.`);
|
|
1903
1978
|
const columnNames = table.primaryColumns.map((column) => column.name);
|
|
1904
|
-
const
|
|
1979
|
+
const constraintName = table.primaryColumns[0].primaryKeyConstraintName;
|
|
1980
|
+
const primaryKeyName = constraintName
|
|
1981
|
+
? constraintName
|
|
1982
|
+
: this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
1905
1983
|
return new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${primaryKeyName}"`);
|
|
1906
1984
|
}
|
|
1907
1985
|
/**
|