typeorm 0.3.6-dev.0418ebc → 0.3.6-dev.22570f5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/browser/cache/RedisQueryResultCache.js +3 -0
- package/browser/cache/RedisQueryResultCache.js.map +1 -1
- package/browser/decorator/options/ColumnOptions.d.ts +8 -0
- package/browser/decorator/options/ColumnOptions.js.map +1 -1
- package/browser/decorator/options/JoinColumnOptions.d.ts +4 -0
- package/browser/decorator/options/JoinColumnOptions.js.map +1 -1
- package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +4 -0
- package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
- package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +4 -0
- package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
- package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.d.ts +4 -0
- package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
- package/browser/decorator/relations/JoinColumn.js +1 -0
- package/browser/decorator/relations/JoinColumn.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +3 -3
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +100 -22
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.js +16 -0
- package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/browser/driver/oracle/OracleQueryRunner.d.ts +3 -3
- package/browser/driver/oracle/OracleQueryRunner.js +98 -21
- package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.d.ts +3 -3
- package/browser/driver/postgres/PostgresQueryRunner.js +99 -21
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +59 -15
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +53 -12
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +3 -3
- package/browser/driver/sqlserver/SqlServerQueryRunner.js +100 -22
- package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/browser/entity-schema/EntitySchemaTransformer.js +1 -0
- package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/browser/metadata/ColumnMetadata.d.ts +8 -0
- package/browser/metadata/ColumnMetadata.js +8 -0
- package/browser/metadata/ColumnMetadata.js.map +1 -1
- package/browser/metadata/ForeignKeyMetadata.d.ts +7 -0
- package/browser/metadata/ForeignKeyMetadata.js +4 -1
- package/browser/metadata/ForeignKeyMetadata.js.map +1 -1
- package/browser/metadata-args/JoinColumnMetadataArgs.d.ts +4 -0
- package/browser/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataValidator.js +9 -0
- package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +5 -0
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/RelationJoinColumnBuilder.js +2 -0
- package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/browser/query-runner/QueryRunner.d.ts +2 -2
- package/browser/query-runner/QueryRunner.js.map +1 -1
- package/browser/schema-builder/options/TableColumnOptions.d.ts +8 -0
- package/browser/schema-builder/options/TableColumnOptions.js.map +1 -1
- package/browser/schema-builder/table/TableColumn.d.ts +4 -0
- package/browser/schema-builder/table/TableColumn.js +2 -0
- package/browser/schema-builder/table/TableColumn.js.map +1 -1
- package/browser/schema-builder/util/TableUtils.js +1 -0
- package/browser/schema-builder/util/TableUtils.js.map +1 -1
- package/cache/RedisQueryResultCache.js +3 -0
- package/cache/RedisQueryResultCache.js.map +1 -1
- package/commands/InitCommand.js +1 -1
- package/commands/InitCommand.js.map +1 -1
- package/commands/MigrationGenerateCommand.js +3 -2
- package/commands/MigrationGenerateCommand.js.map +1 -1
- package/decorator/options/ColumnOptions.d.ts +8 -0
- package/decorator/options/ColumnOptions.js.map +1 -1
- package/decorator/options/JoinColumnOptions.d.ts +4 -0
- package/decorator/options/JoinColumnOptions.js.map +1 -1
- package/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +4 -0
- package/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
- package/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +4 -0
- package/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
- package/decorator/options/PrimaryGeneratedColumnUUIDOptions.d.ts +4 -0
- package/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
- package/decorator/relations/JoinColumn.js +1 -0
- package/decorator/relations/JoinColumn.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.d.ts +3 -3
- package/driver/cockroachdb/CockroachQueryRunner.js +100 -22
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/mysql/MysqlQueryRunner.js +16 -0
- package/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/driver/oracle/OracleQueryRunner.d.ts +3 -3
- package/driver/oracle/OracleQueryRunner.js +98 -21
- package/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.d.ts +3 -3
- package/driver/postgres/PostgresQueryRunner.js +99 -21
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.js +59 -15
- package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +53 -12
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/driver/sqlserver/SqlServerQueryRunner.d.ts +3 -3
- package/driver/sqlserver/SqlServerQueryRunner.js +100 -22
- package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/entity-schema/EntitySchemaTransformer.js +1 -0
- package/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/metadata/ColumnMetadata.d.ts +8 -0
- package/metadata/ColumnMetadata.js +8 -0
- package/metadata/ColumnMetadata.js.map +1 -1
- package/metadata/ForeignKeyMetadata.d.ts +7 -0
- package/metadata/ForeignKeyMetadata.js +4 -1
- package/metadata/ForeignKeyMetadata.js.map +1 -1
- package/metadata-args/JoinColumnMetadataArgs.d.ts +4 -0
- package/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
- package/metadata-builder/EntityMetadataValidator.js +9 -0
- package/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/metadata-builder/JunctionEntityMetadataBuilder.js +5 -0
- package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/RelationJoinColumnBuilder.js +2 -0
- package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/package.json +1 -1
- package/query-runner/QueryRunner.d.ts +2 -2
- package/query-runner/QueryRunner.js.map +1 -1
- package/schema-builder/options/TableColumnOptions.d.ts +8 -0
- package/schema-builder/options/TableColumnOptions.js.map +1 -1
- package/schema-builder/table/TableColumn.d.ts +4 -0
- package/schema-builder/table/TableColumn.js +2 -0
- package/schema-builder/table/TableColumn.js.map +1 -1
- package/schema-builder/util/TableUtils.js +1 -0
- package/schema-builder/util/TableUtils.js.map +1 -1
|
@@ -513,7 +513,8 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
513
513
|
upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(oldTable)} RENAME TO "${newTableName}"`));
|
|
514
514
|
downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(newTable)} RENAME TO "${oldTableName}"`));
|
|
515
515
|
// rename column primary key constraint
|
|
516
|
-
if (newTable.primaryColumns.length > 0
|
|
516
|
+
if (newTable.primaryColumns.length > 0 &&
|
|
517
|
+
!newTable.primaryColumns[0].primaryKeyConstraintName) {
|
|
517
518
|
const columnNames = newTable.primaryColumns.map((column) => column.name);
|
|
518
519
|
const oldPkName = this.connection.namingStrategy.primaryKeyName(oldTable, columnNames);
|
|
519
520
|
const newPkName = this.connection.namingStrategy.primaryKeyName(newTable, columnNames);
|
|
@@ -522,6 +523,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
522
523
|
}
|
|
523
524
|
// rename unique constraints
|
|
524
525
|
newTable.uniques.forEach((unique) => {
|
|
526
|
+
const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(oldTable, unique.columnNames);
|
|
527
|
+
// Skip renaming if Unique has user defined constraint name
|
|
528
|
+
if (unique.name !== oldUniqueName)
|
|
529
|
+
return;
|
|
525
530
|
// build new constraint name
|
|
526
531
|
const newUniqueName = this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames);
|
|
527
532
|
// build queries
|
|
@@ -532,6 +537,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
532
537
|
});
|
|
533
538
|
// rename index constraints
|
|
534
539
|
newTable.indices.forEach((index) => {
|
|
540
|
+
const oldIndexName = this.connection.namingStrategy.indexName(oldTable, index.columnNames, index.where);
|
|
541
|
+
// Skip renaming if Index has user defined constraint name
|
|
542
|
+
if (index.name !== oldIndexName)
|
|
543
|
+
return;
|
|
535
544
|
// build new constraint name
|
|
536
545
|
const { schema } = this.driver.parseTableName(newTable);
|
|
537
546
|
const newIndexName = this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);
|
|
@@ -549,6 +558,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
549
558
|
});
|
|
550
559
|
// rename foreign key constraints
|
|
551
560
|
newTable.foreignKeys.forEach((foreignKey) => {
|
|
561
|
+
const oldForeignKeyName = this.connection.namingStrategy.foreignKeyName(oldTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
562
|
+
// Skip renaming if foreign key has user defined constraint name
|
|
563
|
+
if (foreignKey.name !== oldForeignKeyName)
|
|
564
|
+
return;
|
|
552
565
|
// build new constraint name
|
|
553
566
|
const newForeignKeyName = this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
554
567
|
// build queries
|
|
@@ -578,9 +591,11 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
578
591
|
if (column.isPrimary) {
|
|
579
592
|
const primaryColumns = clonedTable.primaryColumns;
|
|
580
593
|
// if table already have primary key, me must drop it and recreate again
|
|
581
|
-
// todo:
|
|
594
|
+
// todo: https://go.crdb.dev/issue-v/48026/v21.1
|
|
582
595
|
if (primaryColumns.length > 0) {
|
|
583
|
-
const pkName =
|
|
596
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
597
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
598
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
584
599
|
const columnNames = primaryColumns
|
|
585
600
|
.map((column) => `"${column.name}"`)
|
|
586
601
|
.join(", ");
|
|
@@ -588,7 +603,9 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
588
603
|
downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${pkName}" PRIMARY KEY (${columnNames})`));
|
|
589
604
|
}
|
|
590
605
|
primaryColumns.push(column);
|
|
591
|
-
const pkName =
|
|
606
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
607
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
608
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
592
609
|
const columnNames = primaryColumns
|
|
593
610
|
.map((column) => `"${column.name}"`)
|
|
594
611
|
.join(", ");
|
|
@@ -716,7 +733,8 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
716
733
|
upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} RENAME COLUMN "${oldColumn.name}" TO "${newColumn.name}"`));
|
|
717
734
|
downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} RENAME COLUMN "${newColumn.name}" TO "${oldColumn.name}"`));
|
|
718
735
|
// rename column primary key constraint
|
|
719
|
-
if (oldColumn.isPrimary === true
|
|
736
|
+
if (oldColumn.isPrimary === true &&
|
|
737
|
+
!oldColumn.primaryKeyConstraintName) {
|
|
720
738
|
const primaryColumns = clonedTable.primaryColumns;
|
|
721
739
|
// build old primary constraint name
|
|
722
740
|
const columnNames = primaryColumns.map((column) => column.name);
|
|
@@ -731,6 +749,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
731
749
|
}
|
|
732
750
|
// rename unique constraints
|
|
733
751
|
clonedTable.findColumnUniques(oldColumn).forEach((unique) => {
|
|
752
|
+
const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(clonedTable, unique.columnNames);
|
|
753
|
+
// Skip renaming if Unique has user defined constraint name
|
|
754
|
+
if (unique.name !== oldUniqueName)
|
|
755
|
+
return;
|
|
734
756
|
// build new constraint name
|
|
735
757
|
unique.columnNames.splice(unique.columnNames.indexOf(oldColumn.name), 1);
|
|
736
758
|
unique.columnNames.push(newColumn.name);
|
|
@@ -743,6 +765,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
743
765
|
});
|
|
744
766
|
// rename index constraints
|
|
745
767
|
clonedTable.findColumnIndices(oldColumn).forEach((index) => {
|
|
768
|
+
const oldIndexName = this.connection.namingStrategy.indexName(clonedTable, index.columnNames, index.where);
|
|
769
|
+
// Skip renaming if Index has user defined constraint name
|
|
770
|
+
if (index.name !== oldIndexName)
|
|
771
|
+
return;
|
|
746
772
|
// build new constraint name
|
|
747
773
|
index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);
|
|
748
774
|
index.columnNames.push(newColumn.name);
|
|
@@ -764,6 +790,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
764
790
|
clonedTable
|
|
765
791
|
.findColumnForeignKeys(oldColumn)
|
|
766
792
|
.forEach((foreignKey) => {
|
|
793
|
+
const foreignKeyName = this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
794
|
+
// Skip renaming if foreign key has user defined constraint name
|
|
795
|
+
if (foreignKey.name !== foreignKeyName)
|
|
796
|
+
return;
|
|
767
797
|
// build new constraint name
|
|
768
798
|
foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);
|
|
769
799
|
foreignKey.columnNames.push(newColumn.name);
|
|
@@ -802,7 +832,9 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
802
832
|
const primaryColumns = clonedTable.primaryColumns;
|
|
803
833
|
// if primary column state changed, we must always drop existed constraint.
|
|
804
834
|
if (primaryColumns.length > 0) {
|
|
805
|
-
const pkName =
|
|
835
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
836
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
837
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
806
838
|
const columnNames = primaryColumns
|
|
807
839
|
.map((column) => `"${column.name}"`)
|
|
808
840
|
.join(", ");
|
|
@@ -814,7 +846,9 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
814
846
|
// update column in table
|
|
815
847
|
const column = clonedTable.columns.find((column) => column.name === newColumn.name);
|
|
816
848
|
column.isPrimary = true;
|
|
817
|
-
const pkName =
|
|
849
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
850
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
851
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
818
852
|
const columnNames = primaryColumns
|
|
819
853
|
.map((column) => `"${column.name}"`)
|
|
820
854
|
.join(", ");
|
|
@@ -829,7 +863,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
829
863
|
column.isPrimary = false;
|
|
830
864
|
// if we have another primary keys, we must recreate constraint.
|
|
831
865
|
if (primaryColumns.length > 0) {
|
|
832
|
-
const pkName =
|
|
866
|
+
const pkName = primaryColumns[0]
|
|
867
|
+
.primaryKeyConstraintName
|
|
868
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
869
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
833
870
|
const columnNames = primaryColumns
|
|
834
871
|
.map((column) => `"${column.name}"`)
|
|
835
872
|
.join(", ");
|
|
@@ -924,9 +961,11 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
924
961
|
const upQueries = [];
|
|
925
962
|
const downQueries = [];
|
|
926
963
|
// drop primary key constraint
|
|
927
|
-
// todo:
|
|
964
|
+
// todo: https://go.crdb.dev/issue-v/48026/v21.1
|
|
928
965
|
if (column.isPrimary) {
|
|
929
|
-
const pkName =
|
|
966
|
+
const pkName = column.primaryKeyConstraintName
|
|
967
|
+
? column.primaryKeyConstraintName
|
|
968
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
|
|
930
969
|
const columnNames = clonedTable.primaryColumns
|
|
931
970
|
.map((primaryColumn) => `"${primaryColumn.name}"`)
|
|
932
971
|
.join(", ");
|
|
@@ -937,7 +976,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
937
976
|
tableColumn.isPrimary = false;
|
|
938
977
|
// if primary key have multiple columns, we must recreate it without dropped column
|
|
939
978
|
if (clonedTable.primaryColumns.length > 0) {
|
|
940
|
-
const pkName =
|
|
979
|
+
const pkName = clonedTable.primaryColumns[0]
|
|
980
|
+
.primaryKeyConstraintName
|
|
981
|
+
? clonedTable.primaryColumns[0].primaryKeyConstraintName
|
|
982
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
|
|
941
983
|
const columnNames = clonedTable.primaryColumns
|
|
942
984
|
.map((primaryColumn) => `"${primaryColumn.name}"`)
|
|
943
985
|
.join(", ");
|
|
@@ -1013,12 +1055,12 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1013
1055
|
/**
|
|
1014
1056
|
* Creates a new primary key.
|
|
1015
1057
|
*/
|
|
1016
|
-
async createPrimaryKey(tableOrName, columnNames) {
|
|
1058
|
+
async createPrimaryKey(tableOrName, columnNames, constraintName) {
|
|
1017
1059
|
const table = InstanceChecker_1.InstanceChecker.isTable(tableOrName)
|
|
1018
1060
|
? tableOrName
|
|
1019
1061
|
: await this.getCachedTable(tableOrName);
|
|
1020
1062
|
const clonedTable = table.clone();
|
|
1021
|
-
const up = this.createPrimaryKeySql(table, columnNames);
|
|
1063
|
+
const up = this.createPrimaryKeySql(table, columnNames, constraintName);
|
|
1022
1064
|
// mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.
|
|
1023
1065
|
clonedTable.columns.forEach((column) => {
|
|
1024
1066
|
if (columnNames.find((columnName) => columnName === column.name))
|
|
@@ -1042,7 +1084,9 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1042
1084
|
// if table already have primary columns, we must drop them.
|
|
1043
1085
|
const primaryColumns = clonedTable.primaryColumns;
|
|
1044
1086
|
if (primaryColumns.length > 0) {
|
|
1045
|
-
const pkName =
|
|
1087
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
1088
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
1089
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
1046
1090
|
const columnNamesString = primaryColumns
|
|
1047
1091
|
.map((column) => `"${column.name}"`)
|
|
1048
1092
|
.join(", ");
|
|
@@ -1053,7 +1097,9 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1053
1097
|
clonedTable.columns
|
|
1054
1098
|
.filter((column) => columnNames.indexOf(column.name) !== -1)
|
|
1055
1099
|
.forEach((column) => (column.isPrimary = true));
|
|
1056
|
-
const pkName =
|
|
1100
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
1101
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
1102
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
|
|
1057
1103
|
const columnNamesString = columnNames
|
|
1058
1104
|
.map((columnName) => `"${columnName}"`)
|
|
1059
1105
|
.join(", ");
|
|
@@ -1065,12 +1111,12 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1065
1111
|
/**
|
|
1066
1112
|
* Drops a primary key.
|
|
1067
1113
|
*/
|
|
1068
|
-
async dropPrimaryKey(tableOrName) {
|
|
1114
|
+
async dropPrimaryKey(tableOrName, constraintName) {
|
|
1069
1115
|
const table = InstanceChecker_1.InstanceChecker.isTable(tableOrName)
|
|
1070
1116
|
? tableOrName
|
|
1071
1117
|
: await this.getCachedTable(tableOrName);
|
|
1072
1118
|
const up = this.dropPrimaryKeySql(table);
|
|
1073
|
-
const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name));
|
|
1119
|
+
const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name), constraintName);
|
|
1074
1120
|
await this.executeQueries(up, down);
|
|
1075
1121
|
table.primaryColumns.forEach((column) => {
|
|
1076
1122
|
column.isPrimary = false;
|
|
@@ -1573,7 +1619,30 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1573
1619
|
}
|
|
1574
1620
|
tableColumn.isNullable =
|
|
1575
1621
|
dbColumn["is_nullable"] === "YES";
|
|
1576
|
-
|
|
1622
|
+
const primaryConstraint = columnConstraints.find((constraint) => constraint["constraint_type"] === "PRIMARY");
|
|
1623
|
+
if (primaryConstraint) {
|
|
1624
|
+
tableColumn.isPrimary = true;
|
|
1625
|
+
// find another columns involved in primary key constraint
|
|
1626
|
+
const anotherPrimaryConstraints = dbConstraints.filter((constraint) => constraint["table_name"] ===
|
|
1627
|
+
dbColumn["table_name"] &&
|
|
1628
|
+
constraint["table_schema"] ===
|
|
1629
|
+
dbColumn["table_schema"] &&
|
|
1630
|
+
constraint["column_name"] !==
|
|
1631
|
+
dbColumn["column_name"] &&
|
|
1632
|
+
constraint["constraint_type"] ===
|
|
1633
|
+
"PRIMARY");
|
|
1634
|
+
// collect all column names
|
|
1635
|
+
const columnNames = anotherPrimaryConstraints.map((constraint) => constraint["column_name"]);
|
|
1636
|
+
columnNames.push(dbColumn["column_name"]);
|
|
1637
|
+
// build default primary key constraint name
|
|
1638
|
+
const pkName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
1639
|
+
// if primary key has user-defined constraint name, write it in table column
|
|
1640
|
+
if (primaryConstraint["constraint_name"] !==
|
|
1641
|
+
pkName) {
|
|
1642
|
+
tableColumn.primaryKeyConstraintName =
|
|
1643
|
+
primaryConstraint["constraint_name"];
|
|
1644
|
+
}
|
|
1645
|
+
}
|
|
1577
1646
|
const uniqueConstraints = columnConstraints.filter((constraint) => constraint["constraint_type"] === "UNIQUE");
|
|
1578
1647
|
const isConstraintComposite = uniqueConstraints.every((uniqueConstraint) => {
|
|
1579
1648
|
return dbConstraints.some((dbConstraint) => dbConstraint["constraint_type"] ===
|
|
@@ -1804,7 +1873,9 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1804
1873
|
}
|
|
1805
1874
|
const primaryColumns = table.columns.filter((column) => column.isPrimary);
|
|
1806
1875
|
if (primaryColumns.length > 0) {
|
|
1807
|
-
const primaryKeyName =
|
|
1876
|
+
const primaryKeyName = primaryColumns[0].primaryKeyConstraintName
|
|
1877
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
1878
|
+
: this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
|
|
1808
1879
|
const columnNames = primaryColumns
|
|
1809
1880
|
.map((column) => `"${column.name}"`)
|
|
1810
1881
|
.join(", ");
|
|
@@ -1892,8 +1963,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1892
1963
|
/**
|
|
1893
1964
|
* Builds create primary key sql.
|
|
1894
1965
|
*/
|
|
1895
|
-
createPrimaryKeySql(table, columnNames) {
|
|
1896
|
-
const primaryKeyName =
|
|
1966
|
+
createPrimaryKeySql(table, columnNames, constraintName) {
|
|
1967
|
+
const primaryKeyName = constraintName
|
|
1968
|
+
? constraintName
|
|
1969
|
+
: this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
1897
1970
|
const columnNamesString = columnNames
|
|
1898
1971
|
.map((columnName) => `"${columnName}"`)
|
|
1899
1972
|
.join(", ");
|
|
@@ -1903,8 +1976,13 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1903
1976
|
* Builds drop primary key sql.
|
|
1904
1977
|
*/
|
|
1905
1978
|
dropPrimaryKeySql(table) {
|
|
1979
|
+
if (!table.primaryColumns.length)
|
|
1980
|
+
throw new error_1.TypeORMError(`Table ${table} has no primary keys.`);
|
|
1906
1981
|
const columnNames = table.primaryColumns.map((column) => column.name);
|
|
1907
|
-
const
|
|
1982
|
+
const constraintName = table.primaryColumns[0].primaryKeyConstraintName;
|
|
1983
|
+
const primaryKeyName = constraintName
|
|
1984
|
+
? constraintName
|
|
1985
|
+
: this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
1908
1986
|
return new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${primaryKeyName}"`);
|
|
1909
1987
|
}
|
|
1910
1988
|
/**
|