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.
Files changed (212) hide show
  1. package/README.md +1 -1
  2. package/browser/decorator/options/ColumnOptions.d.ts +8 -0
  3. package/browser/decorator/options/ColumnOptions.js.map +1 -1
  4. package/browser/decorator/options/JoinColumnOptions.d.ts +4 -0
  5. package/browser/decorator/options/JoinColumnOptions.js.map +1 -1
  6. package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +4 -0
  7. package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
  8. package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +4 -0
  9. package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
  10. package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.d.ts +4 -0
  11. package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
  12. package/browser/decorator/relations/JoinColumn.js +1 -0
  13. package/browser/decorator/relations/JoinColumn.js.map +1 -1
  14. package/browser/driver/aurora-mysql/AuroraMysqlDriver.d.ts +1 -1
  15. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  16. package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +3 -3
  17. package/browser/driver/cockroachdb/CockroachQueryRunner.js +100 -22
  18. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  19. package/browser/driver/mongodb/typings.d.ts +5 -5
  20. package/browser/driver/mongodb/typings.js.map +1 -1
  21. package/browser/driver/mysql/MysqlQueryRunner.js +16 -0
  22. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  23. package/browser/driver/oracle/OracleQueryRunner.d.ts +3 -3
  24. package/browser/driver/oracle/OracleQueryRunner.js +98 -21
  25. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  26. package/browser/driver/postgres/PostgresQueryRunner.d.ts +3 -3
  27. package/browser/driver/postgres/PostgresQueryRunner.js +99 -21
  28. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  29. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +59 -15
  30. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  31. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +53 -12
  32. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  33. package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +3 -3
  34. package/browser/driver/sqlserver/SqlServerQueryRunner.js +100 -22
  35. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  36. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.d.ts +1 -1
  37. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
  38. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.d.ts +2 -2
  39. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
  40. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.d.ts +2 -2
  41. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
  42. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.d.ts +2 -2
  43. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
  44. package/browser/entity-manager/EntityManager.js +1 -1
  45. package/browser/entity-manager/EntityManager.js.map +1 -1
  46. package/browser/entity-schema/EntitySchemaColumnOptions.d.ts +4 -0
  47. package/browser/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  48. package/browser/entity-schema/EntitySchemaTransformer.js +2 -0
  49. package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
  50. package/browser/metadata/ColumnMetadata.d.ts +8 -0
  51. package/browser/metadata/ColumnMetadata.js +8 -0
  52. package/browser/metadata/ColumnMetadata.js.map +1 -1
  53. package/browser/metadata/EntityMetadata.js +1 -1
  54. package/browser/metadata/EntityMetadata.js.map +1 -1
  55. package/browser/metadata/ForeignKeyMetadata.d.ts +7 -0
  56. package/browser/metadata/ForeignKeyMetadata.js +4 -1
  57. package/browser/metadata/ForeignKeyMetadata.js.map +1 -1
  58. package/browser/metadata-args/JoinColumnMetadataArgs.d.ts +4 -0
  59. package/browser/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
  60. package/browser/metadata-builder/EntityMetadataValidator.js +9 -0
  61. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  62. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +5 -0
  63. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  64. package/browser/metadata-builder/RelationJoinColumnBuilder.js +2 -0
  65. package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  66. package/browser/migration/MigrationExecutor.js +1 -1
  67. package/browser/migration/MigrationExecutor.js.map +1 -1
  68. package/browser/persistence/SubjectDatabaseEntityLoader.d.ts +1 -1
  69. package/browser/persistence/SubjectDatabaseEntityLoader.js +1 -1
  70. package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  71. package/browser/persistence/SubjectExecutor.js +1 -1
  72. package/browser/persistence/SubjectExecutor.js.map +1 -1
  73. package/browser/persistence/subject-builder/CascadesSubjectBuilder.d.ts +1 -1
  74. package/browser/persistence/subject-builder/CascadesSubjectBuilder.js +1 -1
  75. package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  76. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js +1 -1
  77. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  78. package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +1 -1
  79. package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  80. package/browser/query-builder/QueryBuilder.d.ts +1 -1
  81. package/browser/query-builder/QueryBuilder.js +3 -5
  82. package/browser/query-builder/QueryBuilder.js.map +1 -1
  83. package/browser/query-builder/QueryExpressionMap.d.ts +1 -1
  84. package/browser/query-builder/QueryExpressionMap.js +1 -1
  85. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  86. package/browser/query-builder/ReturningResultsEntityUpdator.js +2 -2
  87. package/browser/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  88. package/browser/query-runner/QueryRunner.d.ts +2 -2
  89. package/browser/query-runner/QueryRunner.js.map +1 -1
  90. package/browser/schema-builder/options/TableColumnOptions.d.ts +8 -0
  91. package/browser/schema-builder/options/TableColumnOptions.js.map +1 -1
  92. package/browser/schema-builder/options/TableForeignKeyOptions.d.ts +1 -1
  93. package/browser/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
  94. package/browser/schema-builder/table/TableColumn.d.ts +4 -0
  95. package/browser/schema-builder/table/TableColumn.js +2 -0
  96. package/browser/schema-builder/table/TableColumn.js.map +1 -1
  97. package/browser/schema-builder/util/TableUtils.js +1 -0
  98. package/browser/schema-builder/util/TableUtils.js.map +1 -1
  99. package/browser/util/OrmUtils.d.ts +1 -1
  100. package/browser/util/OrmUtils.js +4 -4
  101. package/browser/util/OrmUtils.js.map +1 -1
  102. package/browser/util/escapeRegExp.d.ts +1 -0
  103. package/browser/util/escapeRegExp.js +6 -0
  104. package/browser/util/escapeRegExp.js.map +1 -0
  105. package/commands/InitCommand.js +1 -1
  106. package/commands/InitCommand.js.map +1 -1
  107. package/commands/MigrationGenerateCommand.js +3 -2
  108. package/commands/MigrationGenerateCommand.js.map +1 -1
  109. package/decorator/options/ColumnOptions.d.ts +8 -0
  110. package/decorator/options/ColumnOptions.js.map +1 -1
  111. package/decorator/options/JoinColumnOptions.d.ts +4 -0
  112. package/decorator/options/JoinColumnOptions.js.map +1 -1
  113. package/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +4 -0
  114. package/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
  115. package/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +4 -0
  116. package/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
  117. package/decorator/options/PrimaryGeneratedColumnUUIDOptions.d.ts +4 -0
  118. package/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
  119. package/decorator/relations/JoinColumn.js +1 -0
  120. package/decorator/relations/JoinColumn.js.map +1 -1
  121. package/driver/aurora-mysql/AuroraMysqlDriver.d.ts +1 -1
  122. package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  123. package/driver/cockroachdb/CockroachQueryRunner.d.ts +3 -3
  124. package/driver/cockroachdb/CockroachQueryRunner.js +100 -22
  125. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  126. package/driver/mongodb/typings.d.ts +5 -5
  127. package/driver/mongodb/typings.js.map +1 -1
  128. package/driver/mysql/MysqlQueryRunner.js +16 -0
  129. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  130. package/driver/oracle/OracleQueryRunner.d.ts +3 -3
  131. package/driver/oracle/OracleQueryRunner.js +98 -21
  132. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  133. package/driver/postgres/PostgresQueryRunner.d.ts +3 -3
  134. package/driver/postgres/PostgresQueryRunner.js +99 -21
  135. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  136. package/driver/sqlite-abstract/AbstractSqliteDriver.js +59 -15
  137. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  138. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +53 -12
  139. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  140. package/driver/sqlserver/SqlServerQueryRunner.d.ts +3 -3
  141. package/driver/sqlserver/SqlServerQueryRunner.js +100 -22
  142. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  143. package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.d.ts +1 -1
  144. package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
  145. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.d.ts +2 -2
  146. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
  147. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.d.ts +2 -2
  148. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
  149. package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.d.ts +2 -2
  150. package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
  151. package/entity-manager/EntityManager.js +1 -1
  152. package/entity-manager/EntityManager.js.map +1 -1
  153. package/entity-schema/EntitySchemaColumnOptions.d.ts +4 -0
  154. package/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  155. package/entity-schema/EntitySchemaTransformer.js +2 -0
  156. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  157. package/metadata/ColumnMetadata.d.ts +8 -0
  158. package/metadata/ColumnMetadata.js +8 -0
  159. package/metadata/ColumnMetadata.js.map +1 -1
  160. package/metadata/EntityMetadata.js +1 -1
  161. package/metadata/EntityMetadata.js.map +1 -1
  162. package/metadata/ForeignKeyMetadata.d.ts +7 -0
  163. package/metadata/ForeignKeyMetadata.js +4 -1
  164. package/metadata/ForeignKeyMetadata.js.map +1 -1
  165. package/metadata-args/JoinColumnMetadataArgs.d.ts +4 -0
  166. package/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
  167. package/metadata-builder/EntityMetadataValidator.js +9 -0
  168. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  169. package/metadata-builder/JunctionEntityMetadataBuilder.js +5 -0
  170. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  171. package/metadata-builder/RelationJoinColumnBuilder.js +2 -0
  172. package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  173. package/migration/MigrationExecutor.js +1 -1
  174. package/migration/MigrationExecutor.js.map +1 -1
  175. package/package.json +1 -1
  176. package/persistence/SubjectDatabaseEntityLoader.d.ts +1 -1
  177. package/persistence/SubjectDatabaseEntityLoader.js +1 -1
  178. package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  179. package/persistence/SubjectExecutor.js +1 -1
  180. package/persistence/SubjectExecutor.js.map +1 -1
  181. package/persistence/subject-builder/CascadesSubjectBuilder.d.ts +1 -1
  182. package/persistence/subject-builder/CascadesSubjectBuilder.js +1 -1
  183. package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  184. package/persistence/subject-builder/ManyToManySubjectBuilder.js +1 -1
  185. package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  186. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +1 -1
  187. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  188. package/query-builder/QueryBuilder.d.ts +1 -1
  189. package/query-builder/QueryBuilder.js +5 -7
  190. package/query-builder/QueryBuilder.js.map +1 -1
  191. package/query-builder/QueryExpressionMap.d.ts +1 -1
  192. package/query-builder/QueryExpressionMap.js +1 -1
  193. package/query-builder/QueryExpressionMap.js.map +1 -1
  194. package/query-builder/ReturningResultsEntityUpdator.js +2 -2
  195. package/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  196. package/query-runner/QueryRunner.d.ts +2 -2
  197. package/query-runner/QueryRunner.js.map +1 -1
  198. package/schema-builder/options/TableColumnOptions.d.ts +8 -0
  199. package/schema-builder/options/TableColumnOptions.js.map +1 -1
  200. package/schema-builder/options/TableForeignKeyOptions.d.ts +1 -1
  201. package/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
  202. package/schema-builder/table/TableColumn.d.ts +4 -0
  203. package/schema-builder/table/TableColumn.js +2 -0
  204. package/schema-builder/table/TableColumn.js.map +1 -1
  205. package/schema-builder/util/TableUtils.js +1 -0
  206. package/schema-builder/util/TableUtils.js.map +1 -1
  207. package/util/OrmUtils.d.ts +1 -1
  208. package/util/OrmUtils.js +4 -4
  209. package/util/OrmUtils.js.map +1 -1
  210. package/util/escapeRegExp.d.ts +1 -0
  211. package/util/escapeRegExp.js +10 -0
  212. 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 = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
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 = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
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 = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
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 = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
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 = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
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 = this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
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 = this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
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 = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
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 = this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
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
- tableColumn.isPrimary = !!columnConstraints.find((constraint) => constraint["constraint_type"] === "PRIMARY");
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 = this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
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 = this.connection.namingStrategy.primaryKeyName(table, columnNames);
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 primaryKeyName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
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
  /**