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
@@ -162,7 +162,7 @@ export declare class OracleQueryRunner extends BaseQueryRunner implements QueryR
162
162
  /**
163
163
  * Creates a new primary key.
164
164
  */
165
- createPrimaryKey(tableOrName: Table | string, columnNames: string[]): Promise<void>;
165
+ createPrimaryKey(tableOrName: Table | string, columnNames: string[], constraintName?: string): Promise<void>;
166
166
  /**
167
167
  * Updates composite primary keys.
168
168
  */
@@ -170,7 +170,7 @@ export declare class OracleQueryRunner extends BaseQueryRunner implements QueryR
170
170
  /**
171
171
  * Drops a primary key.
172
172
  */
173
- dropPrimaryKey(tableOrName: Table | string): Promise<void>;
173
+ dropPrimaryKey(tableOrName: Table | string, constraintName?: string): Promise<void>;
174
174
  /**
175
175
  * Creates a new unique constraint.
176
176
  */
@@ -294,7 +294,7 @@ export declare class OracleQueryRunner extends BaseQueryRunner implements QueryR
294
294
  /**
295
295
  * Builds create primary key sql.
296
296
  */
297
- protected createPrimaryKeySql(table: Table, columnNames: string[]): Query;
297
+ protected createPrimaryKeySql(table: Table, columnNames: string[], constraintName?: string): Query;
298
298
  /**
299
299
  * Builds drop primary key sql.
300
300
  */
@@ -456,7 +456,8 @@ export class OracleQueryRunner extends BaseQueryRunner {
456
456
  upQueries.push(new Query(`ALTER TABLE ${this.escapePath(oldTable)} RENAME TO "${newTableName}"`));
457
457
  downQueries.push(new Query(`ALTER TABLE ${this.escapePath(newTable)} RENAME TO "${oldTableName}"`));
458
458
  // rename primary key constraint
459
- if (newTable.primaryColumns.length > 0) {
459
+ if (newTable.primaryColumns.length > 0 &&
460
+ !newTable.primaryColumns[0].primaryKeyConstraintName) {
460
461
  const columnNames = newTable.primaryColumns.map((column) => column.name);
461
462
  const oldPkName = this.connection.namingStrategy.primaryKeyName(oldTable, columnNames);
462
463
  const newPkName = this.connection.namingStrategy.primaryKeyName(newTable, columnNames);
@@ -466,6 +467,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
466
467
  }
467
468
  // rename unique constraints
468
469
  newTable.uniques.forEach((unique) => {
470
+ const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(oldTable, unique.columnNames);
471
+ // Skip renaming if Unique has user defined constraint name
472
+ if (unique.name !== oldUniqueName)
473
+ return;
469
474
  // build new constraint name
470
475
  const newUniqueName = this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames);
471
476
  // build queries
@@ -476,6 +481,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
476
481
  });
477
482
  // rename index constraints
478
483
  newTable.indices.forEach((index) => {
484
+ const oldIndexName = this.connection.namingStrategy.indexName(oldTable, index.columnNames, index.where);
485
+ // Skip renaming if Index has user defined constraint name
486
+ if (index.name !== oldIndexName)
487
+ return;
479
488
  // build new constraint name
480
489
  const newIndexName = this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);
481
490
  // build queries
@@ -486,6 +495,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
486
495
  });
487
496
  // rename foreign key constraints
488
497
  newTable.foreignKeys.forEach((foreignKey) => {
498
+ const oldForeignKeyName = this.connection.namingStrategy.foreignKeyName(oldTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
499
+ // Skip renaming if foreign key has user defined constraint name
500
+ if (foreignKey.name !== oldForeignKeyName)
501
+ return;
489
502
  // build new constraint name
490
503
  const newForeignKeyName = this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
491
504
  // build queries
@@ -516,7 +529,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
516
529
  const primaryColumns = clonedTable.primaryColumns;
517
530
  // if table already have primary key, me must drop it and recreate again
518
531
  if (primaryColumns.length > 0) {
519
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
532
+ const pkName = primaryColumns[0].primaryKeyConstraintName
533
+ ? primaryColumns[0].primaryKeyConstraintName
534
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
520
535
  const columnNames = primaryColumns
521
536
  .map((column) => `"${column.name}"`)
522
537
  .join(", ");
@@ -524,7 +539,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
524
539
  downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${pkName}" PRIMARY KEY (${columnNames})`));
525
540
  }
526
541
  primaryColumns.push(column);
527
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
542
+ const pkName = primaryColumns[0].primaryKeyConstraintName
543
+ ? primaryColumns[0].primaryKeyConstraintName
544
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
528
545
  const columnNames = primaryColumns
529
546
  .map((column) => `"${column.name}"`)
530
547
  .join(", ");
@@ -632,7 +649,8 @@ export class OracleQueryRunner extends BaseQueryRunner {
632
649
  upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} RENAME COLUMN "${oldColumn.name}" TO "${newColumn.name}"`));
633
650
  downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} RENAME COLUMN "${newColumn.name}" TO "${oldColumn.name}"`));
634
651
  // rename column primary key constraint
635
- if (oldColumn.isPrimary === true) {
652
+ if (oldColumn.isPrimary === true &&
653
+ !oldColumn.primaryKeyConstraintName) {
636
654
  const primaryColumns = clonedTable.primaryColumns;
637
655
  // build old primary constraint name
638
656
  const columnNames = primaryColumns.map((column) => column.name);
@@ -647,6 +665,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
647
665
  }
648
666
  // rename unique constraints
649
667
  clonedTable.findColumnUniques(oldColumn).forEach((unique) => {
668
+ const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(clonedTable, unique.columnNames);
669
+ // Skip renaming if Unique has user defined constraint name
670
+ if (unique.name !== oldUniqueName)
671
+ return;
650
672
  // build new constraint name
651
673
  unique.columnNames.splice(unique.columnNames.indexOf(oldColumn.name), 1);
652
674
  unique.columnNames.push(newColumn.name);
@@ -659,6 +681,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
659
681
  });
660
682
  // rename index constraints
661
683
  clonedTable.findColumnIndices(oldColumn).forEach((index) => {
684
+ const oldIndexName = this.connection.namingStrategy.indexName(clonedTable, index.columnNames, index.where);
685
+ // Skip renaming if Index has user defined constraint name
686
+ if (index.name !== oldIndexName)
687
+ return;
662
688
  // build new constraint name
663
689
  index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);
664
690
  index.columnNames.push(newColumn.name);
@@ -673,6 +699,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
673
699
  clonedTable
674
700
  .findColumnForeignKeys(oldColumn)
675
701
  .forEach((foreignKey) => {
702
+ const foreignKeyName = this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
703
+ // Skip renaming if foreign key has user defined constraint name
704
+ if (foreignKey.name !== foreignKeyName)
705
+ return;
676
706
  // build new constraint name
677
707
  foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);
678
708
  foreignKey.columnNames.push(newColumn.name);
@@ -728,7 +758,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
728
758
  const primaryColumns = clonedTable.primaryColumns;
729
759
  // if primary column state changed, we must always drop existed constraint.
730
760
  if (primaryColumns.length > 0) {
731
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
761
+ const pkName = primaryColumns[0].primaryKeyConstraintName
762
+ ? primaryColumns[0].primaryKeyConstraintName
763
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
732
764
  const columnNames = primaryColumns
733
765
  .map((column) => `"${column.name}"`)
734
766
  .join(", ");
@@ -740,7 +772,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
740
772
  // update column in table
741
773
  const column = clonedTable.columns.find((column) => column.name === newColumn.name);
742
774
  column.isPrimary = true;
743
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
775
+ const pkName = primaryColumns[0].primaryKeyConstraintName
776
+ ? primaryColumns[0].primaryKeyConstraintName
777
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
744
778
  const columnNames = primaryColumns
745
779
  .map((column) => `"${column.name}"`)
746
780
  .join(", ");
@@ -755,7 +789,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
755
789
  column.isPrimary = false;
756
790
  // if we have another primary keys, we must recreate constraint.
757
791
  if (primaryColumns.length > 0) {
758
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
792
+ const pkName = primaryColumns[0]
793
+ .primaryKeyConstraintName
794
+ ? primaryColumns[0].primaryKeyConstraintName
795
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
759
796
  const columnNames = primaryColumns
760
797
  .map((column) => `"${column.name}"`)
761
798
  .join(", ");
@@ -813,7 +850,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
813
850
  const downQueries = [];
814
851
  // drop primary key constraint
815
852
  if (column.isPrimary) {
816
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
853
+ const pkName = column.primaryKeyConstraintName
854
+ ? column.primaryKeyConstraintName
855
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
817
856
  const columnNames = clonedTable.primaryColumns
818
857
  .map((primaryColumn) => `"${primaryColumn.name}"`)
819
858
  .join(", ");
@@ -824,7 +863,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
824
863
  tableColumn.isPrimary = false;
825
864
  // if primary key have multiple columns, we must recreate it without dropped column
826
865
  if (clonedTable.primaryColumns.length > 0) {
827
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
866
+ const pkName = clonedTable.primaryColumns[0]
867
+ .primaryKeyConstraintName
868
+ ? clonedTable.primaryColumns[0].primaryKeyConstraintName
869
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
828
870
  const columnNames = clonedTable.primaryColumns
829
871
  .map((primaryColumn) => `"${primaryColumn.name}"`)
830
872
  .join(", ");
@@ -888,12 +930,12 @@ export class OracleQueryRunner extends BaseQueryRunner {
888
930
  /**
889
931
  * Creates a new primary key.
890
932
  */
891
- async createPrimaryKey(tableOrName, columnNames) {
933
+ async createPrimaryKey(tableOrName, columnNames, constraintName) {
892
934
  const table = InstanceChecker.isTable(tableOrName)
893
935
  ? tableOrName
894
936
  : await this.getCachedTable(tableOrName);
895
937
  const clonedTable = table.clone();
896
- const up = this.createPrimaryKeySql(table, columnNames);
938
+ const up = this.createPrimaryKeySql(table, columnNames, constraintName);
897
939
  // mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.
898
940
  clonedTable.columns.forEach((column) => {
899
941
  if (columnNames.find((columnName) => columnName === column.name))
@@ -917,7 +959,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
917
959
  // if table already have primary columns, we must drop them.
918
960
  const primaryColumns = clonedTable.primaryColumns;
919
961
  if (primaryColumns.length > 0) {
920
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
962
+ const pkName = primaryColumns[0].primaryKeyConstraintName
963
+ ? primaryColumns[0].primaryKeyConstraintName
964
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
921
965
  const columnNamesString = primaryColumns
922
966
  .map((column) => `"${column.name}"`)
923
967
  .join(", ");
@@ -928,7 +972,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
928
972
  clonedTable.columns
929
973
  .filter((column) => columnNames.indexOf(column.name) !== -1)
930
974
  .forEach((column) => (column.isPrimary = true));
931
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
975
+ const pkName = primaryColumns[0].primaryKeyConstraintName
976
+ ? primaryColumns[0].primaryKeyConstraintName
977
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
932
978
  const columnNamesString = columnNames
933
979
  .map((columnName) => `"${columnName}"`)
934
980
  .join(", ");
@@ -940,12 +986,12 @@ export class OracleQueryRunner extends BaseQueryRunner {
940
986
  /**
941
987
  * Drops a primary key.
942
988
  */
943
- async dropPrimaryKey(tableOrName) {
989
+ async dropPrimaryKey(tableOrName, constraintName) {
944
990
  const table = InstanceChecker.isTable(tableOrName)
945
991
  ? tableOrName
946
992
  : await this.getCachedTable(tableOrName);
947
993
  const up = this.dropPrimaryKeySql(table);
948
- const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name));
994
+ const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name), constraintName);
949
995
  await this.executeQueries(up, down);
950
996
  table.primaryColumns.forEach((column) => {
951
997
  column.isPrimary = false;
@@ -1344,7 +1390,6 @@ export class OracleQueryRunner extends BaseQueryRunner {
1344
1390
  dbConstraint["CONSTRAINT_TYPE"] ===
1345
1391
  "U");
1346
1392
  });
1347
- const isPrimary = !!columnConstraints.find((constraint) => constraint["CONSTRAINT_TYPE"] === "P");
1348
1393
  const tableColumn = new TableColumn();
1349
1394
  tableColumn.name = dbColumn["COLUMN_NAME"];
1350
1395
  tableColumn.type =
@@ -1391,12 +1436,35 @@ export class OracleQueryRunner extends BaseQueryRunner {
1391
1436
  ? (tableColumn.default =
1392
1437
  dbColumn["DATA_DEFAULT"].trim())
1393
1438
  : undefined;
1439
+ const primaryConstraint = columnConstraints.find((constraint) => constraint["CONSTRAINT_TYPE"] === "P");
1440
+ if (primaryConstraint) {
1441
+ tableColumn.isPrimary = true;
1442
+ // find another columns involved in primary key constraint
1443
+ const anotherPrimaryConstraints = dbConstraints.filter((constraint) => constraint["OWNER"] ===
1444
+ dbColumn["OWNER"] &&
1445
+ constraint["TABLE_NAME"] ===
1446
+ dbColumn["TABLE_NAME"] &&
1447
+ constraint["COLUMN_NAME"] !==
1448
+ dbColumn["COLUMN_NAME"] &&
1449
+ constraint["CONSTRAINT_TYPE"] ===
1450
+ "P");
1451
+ // collect all column names
1452
+ const columnNames = anotherPrimaryConstraints.map((constraint) => constraint["COLUMN_NAME"]);
1453
+ columnNames.push(dbColumn["COLUMN_NAME"]);
1454
+ // build default primary key constraint name
1455
+ const pkName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
1456
+ // if primary key has user-defined constraint name, write it in table column
1457
+ if (primaryConstraint["CONSTRAINT_NAME"] !==
1458
+ pkName) {
1459
+ tableColumn.primaryKeyConstraintName =
1460
+ primaryConstraint["CONSTRAINT_NAME"];
1461
+ }
1462
+ }
1394
1463
  tableColumn.isNullable =
1395
1464
  dbColumn["NULLABLE"] === "Y";
1396
1465
  tableColumn.isUnique =
1397
1466
  uniqueConstraints.length > 0 &&
1398
1467
  !isConstraintComposite;
1399
- tableColumn.isPrimary = isPrimary;
1400
1468
  tableColumn.isGenerated =
1401
1469
  dbColumn["IDENTITY_COLUMN"] === "YES";
1402
1470
  if (tableColumn.isGenerated) {
@@ -1555,7 +1623,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
1555
1623
  }
1556
1624
  const primaryColumns = table.columns.filter((column) => column.isPrimary);
1557
1625
  if (primaryColumns.length > 0) {
1558
- const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
1626
+ const primaryKeyName = primaryColumns[0].primaryKeyConstraintName
1627
+ ? primaryColumns[0].primaryKeyConstraintName
1628
+ : this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
1559
1629
  const columnNames = primaryColumns
1560
1630
  .map((column) => `"${column.name}"`)
1561
1631
  .join(", ");
@@ -1632,8 +1702,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
1632
1702
  /**
1633
1703
  * Builds create primary key sql.
1634
1704
  */
1635
- createPrimaryKeySql(table, columnNames) {
1636
- const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
1705
+ createPrimaryKeySql(table, columnNames, constraintName) {
1706
+ const primaryKeyName = constraintName
1707
+ ? constraintName
1708
+ : this.connection.namingStrategy.primaryKeyName(table, columnNames);
1637
1709
  const columnNamesString = columnNames
1638
1710
  .map((columnName) => `"${columnName}"`)
1639
1711
  .join(", ");
@@ -1643,8 +1715,13 @@ export class OracleQueryRunner extends BaseQueryRunner {
1643
1715
  * Builds drop primary key sql.
1644
1716
  */
1645
1717
  dropPrimaryKeySql(table) {
1718
+ if (!table.primaryColumns.length)
1719
+ throw new TypeORMError(`Table ${table} has no primary keys.`);
1646
1720
  const columnNames = table.primaryColumns.map((column) => column.name);
1647
- const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
1721
+ const constraintName = table.primaryColumns[0].primaryKeyConstraintName;
1722
+ const primaryKeyName = constraintName
1723
+ ? constraintName
1724
+ : this.connection.namingStrategy.primaryKeyName(table, columnNames);
1648
1725
  return new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${primaryKeyName}"`);
1649
1726
  }
1650
1727
  /**