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
  */
@@ -459,7 +459,8 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
459
459
  upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(oldTable)} RENAME TO "${newTableName}"`));
460
460
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(newTable)} RENAME TO "${oldTableName}"`));
461
461
  // rename primary key constraint
462
- if (newTable.primaryColumns.length > 0) {
462
+ if (newTable.primaryColumns.length > 0 &&
463
+ !newTable.primaryColumns[0].primaryKeyConstraintName) {
463
464
  const columnNames = newTable.primaryColumns.map((column) => column.name);
464
465
  const oldPkName = this.connection.namingStrategy.primaryKeyName(oldTable, columnNames);
465
466
  const newPkName = this.connection.namingStrategy.primaryKeyName(newTable, columnNames);
@@ -469,6 +470,10 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
469
470
  }
470
471
  // rename unique constraints
471
472
  newTable.uniques.forEach((unique) => {
473
+ const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(oldTable, unique.columnNames);
474
+ // Skip renaming if Unique has user defined constraint name
475
+ if (unique.name !== oldUniqueName)
476
+ return;
472
477
  // build new constraint name
473
478
  const newUniqueName = this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames);
474
479
  // build queries
@@ -479,6 +484,10 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
479
484
  });
480
485
  // rename index constraints
481
486
  newTable.indices.forEach((index) => {
487
+ const oldIndexName = this.connection.namingStrategy.indexName(oldTable, index.columnNames, index.where);
488
+ // Skip renaming if Index has user defined constraint name
489
+ if (index.name !== oldIndexName)
490
+ return;
482
491
  // build new constraint name
483
492
  const newIndexName = this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);
484
493
  // build queries
@@ -489,6 +498,10 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
489
498
  });
490
499
  // rename foreign key constraints
491
500
  newTable.foreignKeys.forEach((foreignKey) => {
501
+ const oldForeignKeyName = this.connection.namingStrategy.foreignKeyName(oldTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
502
+ // Skip renaming if foreign key has user defined constraint name
503
+ if (foreignKey.name !== oldForeignKeyName)
504
+ return;
492
505
  // build new constraint name
493
506
  const newForeignKeyName = this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
494
507
  // build queries
@@ -519,7 +532,9 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
519
532
  const primaryColumns = clonedTable.primaryColumns;
520
533
  // if table already have primary key, me must drop it and recreate again
521
534
  if (primaryColumns.length > 0) {
522
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
535
+ const pkName = primaryColumns[0].primaryKeyConstraintName
536
+ ? primaryColumns[0].primaryKeyConstraintName
537
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
523
538
  const columnNames = primaryColumns
524
539
  .map((column) => `"${column.name}"`)
525
540
  .join(", ");
@@ -527,7 +542,9 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
527
542
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${pkName}" PRIMARY KEY (${columnNames})`));
528
543
  }
529
544
  primaryColumns.push(column);
530
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
545
+ const pkName = primaryColumns[0].primaryKeyConstraintName
546
+ ? primaryColumns[0].primaryKeyConstraintName
547
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
531
548
  const columnNames = primaryColumns
532
549
  .map((column) => `"${column.name}"`)
533
550
  .join(", ");
@@ -635,7 +652,8 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
635
652
  upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} RENAME COLUMN "${oldColumn.name}" TO "${newColumn.name}"`));
636
653
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} RENAME COLUMN "${newColumn.name}" TO "${oldColumn.name}"`));
637
654
  // rename column primary key constraint
638
- if (oldColumn.isPrimary === true) {
655
+ if (oldColumn.isPrimary === true &&
656
+ !oldColumn.primaryKeyConstraintName) {
639
657
  const primaryColumns = clonedTable.primaryColumns;
640
658
  // build old primary constraint name
641
659
  const columnNames = primaryColumns.map((column) => column.name);
@@ -650,6 +668,10 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
650
668
  }
651
669
  // rename unique constraints
652
670
  clonedTable.findColumnUniques(oldColumn).forEach((unique) => {
671
+ const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(clonedTable, unique.columnNames);
672
+ // Skip renaming if Unique has user defined constraint name
673
+ if (unique.name !== oldUniqueName)
674
+ return;
653
675
  // build new constraint name
654
676
  unique.columnNames.splice(unique.columnNames.indexOf(oldColumn.name), 1);
655
677
  unique.columnNames.push(newColumn.name);
@@ -662,6 +684,10 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
662
684
  });
663
685
  // rename index constraints
664
686
  clonedTable.findColumnIndices(oldColumn).forEach((index) => {
687
+ const oldIndexName = this.connection.namingStrategy.indexName(clonedTable, index.columnNames, index.where);
688
+ // Skip renaming if Index has user defined constraint name
689
+ if (index.name !== oldIndexName)
690
+ return;
665
691
  // build new constraint name
666
692
  index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);
667
693
  index.columnNames.push(newColumn.name);
@@ -676,6 +702,10 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
676
702
  clonedTable
677
703
  .findColumnForeignKeys(oldColumn)
678
704
  .forEach((foreignKey) => {
705
+ const foreignKeyName = this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
706
+ // Skip renaming if foreign key has user defined constraint name
707
+ if (foreignKey.name !== foreignKeyName)
708
+ return;
679
709
  // build new constraint name
680
710
  foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);
681
711
  foreignKey.columnNames.push(newColumn.name);
@@ -731,7 +761,9 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
731
761
  const primaryColumns = clonedTable.primaryColumns;
732
762
  // if primary column state changed, we must always drop existed constraint.
733
763
  if (primaryColumns.length > 0) {
734
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
764
+ const pkName = primaryColumns[0].primaryKeyConstraintName
765
+ ? primaryColumns[0].primaryKeyConstraintName
766
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
735
767
  const columnNames = primaryColumns
736
768
  .map((column) => `"${column.name}"`)
737
769
  .join(", ");
@@ -743,7 +775,9 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
743
775
  // update column in table
744
776
  const column = clonedTable.columns.find((column) => column.name === newColumn.name);
745
777
  column.isPrimary = true;
746
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
778
+ const pkName = primaryColumns[0].primaryKeyConstraintName
779
+ ? primaryColumns[0].primaryKeyConstraintName
780
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
747
781
  const columnNames = primaryColumns
748
782
  .map((column) => `"${column.name}"`)
749
783
  .join(", ");
@@ -758,7 +792,10 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
758
792
  column.isPrimary = false;
759
793
  // if we have another primary keys, we must recreate constraint.
760
794
  if (primaryColumns.length > 0) {
761
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
795
+ const pkName = primaryColumns[0]
796
+ .primaryKeyConstraintName
797
+ ? primaryColumns[0].primaryKeyConstraintName
798
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
762
799
  const columnNames = primaryColumns
763
800
  .map((column) => `"${column.name}"`)
764
801
  .join(", ");
@@ -816,7 +853,9 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
816
853
  const downQueries = [];
817
854
  // drop primary key constraint
818
855
  if (column.isPrimary) {
819
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
856
+ const pkName = column.primaryKeyConstraintName
857
+ ? column.primaryKeyConstraintName
858
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
820
859
  const columnNames = clonedTable.primaryColumns
821
860
  .map((primaryColumn) => `"${primaryColumn.name}"`)
822
861
  .join(", ");
@@ -827,7 +866,10 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
827
866
  tableColumn.isPrimary = false;
828
867
  // if primary key have multiple columns, we must recreate it without dropped column
829
868
  if (clonedTable.primaryColumns.length > 0) {
830
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
869
+ const pkName = clonedTable.primaryColumns[0]
870
+ .primaryKeyConstraintName
871
+ ? clonedTable.primaryColumns[0].primaryKeyConstraintName
872
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
831
873
  const columnNames = clonedTable.primaryColumns
832
874
  .map((primaryColumn) => `"${primaryColumn.name}"`)
833
875
  .join(", ");
@@ -891,12 +933,12 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
891
933
  /**
892
934
  * Creates a new primary key.
893
935
  */
894
- async createPrimaryKey(tableOrName, columnNames) {
936
+ async createPrimaryKey(tableOrName, columnNames, constraintName) {
895
937
  const table = InstanceChecker_1.InstanceChecker.isTable(tableOrName)
896
938
  ? tableOrName
897
939
  : await this.getCachedTable(tableOrName);
898
940
  const clonedTable = table.clone();
899
- const up = this.createPrimaryKeySql(table, columnNames);
941
+ const up = this.createPrimaryKeySql(table, columnNames, constraintName);
900
942
  // mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.
901
943
  clonedTable.columns.forEach((column) => {
902
944
  if (columnNames.find((columnName) => columnName === column.name))
@@ -920,7 +962,9 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
920
962
  // if table already have primary columns, we must drop them.
921
963
  const primaryColumns = clonedTable.primaryColumns;
922
964
  if (primaryColumns.length > 0) {
923
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
965
+ const pkName = primaryColumns[0].primaryKeyConstraintName
966
+ ? primaryColumns[0].primaryKeyConstraintName
967
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
924
968
  const columnNamesString = primaryColumns
925
969
  .map((column) => `"${column.name}"`)
926
970
  .join(", ");
@@ -931,7 +975,9 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
931
975
  clonedTable.columns
932
976
  .filter((column) => columnNames.indexOf(column.name) !== -1)
933
977
  .forEach((column) => (column.isPrimary = true));
934
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
978
+ const pkName = primaryColumns[0].primaryKeyConstraintName
979
+ ? primaryColumns[0].primaryKeyConstraintName
980
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
935
981
  const columnNamesString = columnNames
936
982
  .map((columnName) => `"${columnName}"`)
937
983
  .join(", ");
@@ -943,12 +989,12 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
943
989
  /**
944
990
  * Drops a primary key.
945
991
  */
946
- async dropPrimaryKey(tableOrName) {
992
+ async dropPrimaryKey(tableOrName, constraintName) {
947
993
  const table = InstanceChecker_1.InstanceChecker.isTable(tableOrName)
948
994
  ? tableOrName
949
995
  : await this.getCachedTable(tableOrName);
950
996
  const up = this.dropPrimaryKeySql(table);
951
- const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name));
997
+ const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name), constraintName);
952
998
  await this.executeQueries(up, down);
953
999
  table.primaryColumns.forEach((column) => {
954
1000
  column.isPrimary = false;
@@ -1347,7 +1393,6 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1347
1393
  dbConstraint["CONSTRAINT_TYPE"] ===
1348
1394
  "U");
1349
1395
  });
1350
- const isPrimary = !!columnConstraints.find((constraint) => constraint["CONSTRAINT_TYPE"] === "P");
1351
1396
  const tableColumn = new TableColumn_1.TableColumn();
1352
1397
  tableColumn.name = dbColumn["COLUMN_NAME"];
1353
1398
  tableColumn.type =
@@ -1394,12 +1439,35 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1394
1439
  ? (tableColumn.default =
1395
1440
  dbColumn["DATA_DEFAULT"].trim())
1396
1441
  : undefined;
1442
+ const primaryConstraint = columnConstraints.find((constraint) => constraint["CONSTRAINT_TYPE"] === "P");
1443
+ if (primaryConstraint) {
1444
+ tableColumn.isPrimary = true;
1445
+ // find another columns involved in primary key constraint
1446
+ const anotherPrimaryConstraints = dbConstraints.filter((constraint) => constraint["OWNER"] ===
1447
+ dbColumn["OWNER"] &&
1448
+ constraint["TABLE_NAME"] ===
1449
+ dbColumn["TABLE_NAME"] &&
1450
+ constraint["COLUMN_NAME"] !==
1451
+ dbColumn["COLUMN_NAME"] &&
1452
+ constraint["CONSTRAINT_TYPE"] ===
1453
+ "P");
1454
+ // collect all column names
1455
+ const columnNames = anotherPrimaryConstraints.map((constraint) => constraint["COLUMN_NAME"]);
1456
+ columnNames.push(dbColumn["COLUMN_NAME"]);
1457
+ // build default primary key constraint name
1458
+ const pkName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
1459
+ // if primary key has user-defined constraint name, write it in table column
1460
+ if (primaryConstraint["CONSTRAINT_NAME"] !==
1461
+ pkName) {
1462
+ tableColumn.primaryKeyConstraintName =
1463
+ primaryConstraint["CONSTRAINT_NAME"];
1464
+ }
1465
+ }
1397
1466
  tableColumn.isNullable =
1398
1467
  dbColumn["NULLABLE"] === "Y";
1399
1468
  tableColumn.isUnique =
1400
1469
  uniqueConstraints.length > 0 &&
1401
1470
  !isConstraintComposite;
1402
- tableColumn.isPrimary = isPrimary;
1403
1471
  tableColumn.isGenerated =
1404
1472
  dbColumn["IDENTITY_COLUMN"] === "YES";
1405
1473
  if (tableColumn.isGenerated) {
@@ -1558,7 +1626,9 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1558
1626
  }
1559
1627
  const primaryColumns = table.columns.filter((column) => column.isPrimary);
1560
1628
  if (primaryColumns.length > 0) {
1561
- const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
1629
+ const primaryKeyName = primaryColumns[0].primaryKeyConstraintName
1630
+ ? primaryColumns[0].primaryKeyConstraintName
1631
+ : this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
1562
1632
  const columnNames = primaryColumns
1563
1633
  .map((column) => `"${column.name}"`)
1564
1634
  .join(", ");
@@ -1635,8 +1705,10 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1635
1705
  /**
1636
1706
  * Builds create primary key sql.
1637
1707
  */
1638
- createPrimaryKeySql(table, columnNames) {
1639
- const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
1708
+ createPrimaryKeySql(table, columnNames, constraintName) {
1709
+ const primaryKeyName = constraintName
1710
+ ? constraintName
1711
+ : this.connection.namingStrategy.primaryKeyName(table, columnNames);
1640
1712
  const columnNamesString = columnNames
1641
1713
  .map((columnName) => `"${columnName}"`)
1642
1714
  .join(", ");
@@ -1646,8 +1718,13 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1646
1718
  * Builds drop primary key sql.
1647
1719
  */
1648
1720
  dropPrimaryKeySql(table) {
1721
+ if (!table.primaryColumns.length)
1722
+ throw new error_1.TypeORMError(`Table ${table} has no primary keys.`);
1649
1723
  const columnNames = table.primaryColumns.map((column) => column.name);
1650
- const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
1724
+ const constraintName = table.primaryColumns[0].primaryKeyConstraintName;
1725
+ const primaryKeyName = constraintName
1726
+ ? constraintName
1727
+ : this.connection.namingStrategy.primaryKeyName(table, columnNames);
1651
1728
  return new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${primaryKeyName}"`);
1652
1729
  }
1653
1730
  /**