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 SqlServerQueryRunner extends BaseQueryRunner implements Que
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 SqlServerQueryRunner extends BaseQueryRunner implements Que
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 SqlServerQueryRunner extends BaseQueryRunner implements Que
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
  */
@@ -604,7 +604,8 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
604
604
  upQueries.push(new Query_1.Query(`EXEC sp_rename "${this.getTablePath(oldTable)}", "${newTableName}"`));
605
605
  downQueries.push(new Query_1.Query(`EXEC sp_rename "${this.getTablePath(newTable)}", "${oldTableName}"`));
606
606
  // rename primary key constraint
607
- if (newTable.primaryColumns.length > 0) {
607
+ if (newTable.primaryColumns.length > 0 &&
608
+ !newTable.primaryColumns[0].primaryKeyConstraintName) {
608
609
  const columnNames = newTable.primaryColumns.map((column) => column.name);
609
610
  const oldPkName = this.connection.namingStrategy.primaryKeyName(oldTable, columnNames);
610
611
  const newPkName = this.connection.namingStrategy.primaryKeyName(newTable, columnNames);
@@ -614,6 +615,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
614
615
  }
615
616
  // rename unique constraints
616
617
  newTable.uniques.forEach((unique) => {
618
+ const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(oldTable, unique.columnNames);
619
+ // Skip renaming if Unique has user defined constraint name
620
+ if (unique.name !== oldUniqueName)
621
+ return;
617
622
  // build new constraint name
618
623
  const newUniqueName = this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames);
619
624
  // build queries
@@ -624,6 +629,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
624
629
  });
625
630
  // rename index constraints
626
631
  newTable.indices.forEach((index) => {
632
+ const oldIndexName = this.connection.namingStrategy.indexName(oldTable, index.columnNames, index.where);
633
+ // Skip renaming if Index has user defined constraint name
634
+ if (index.name !== oldIndexName)
635
+ return;
627
636
  // build new constraint name
628
637
  const newIndexName = this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);
629
638
  // build queries
@@ -634,6 +643,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
634
643
  });
635
644
  // rename foreign key constraints
636
645
  newTable.foreignKeys.forEach((foreignKey) => {
646
+ const oldForeignKeyName = this.connection.namingStrategy.foreignKeyName(oldTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
647
+ // Skip renaming if foreign key has user defined constraint name
648
+ if (foreignKey.name !== oldForeignKeyName)
649
+ return;
637
650
  // build new constraint name
638
651
  const newForeignKeyName = this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
639
652
  // build queries
@@ -669,7 +682,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
669
682
  const primaryColumns = clonedTable.primaryColumns;
670
683
  // if table already have primary key, me must drop it and recreate again
671
684
  if (primaryColumns.length > 0) {
672
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
685
+ const pkName = primaryColumns[0].primaryKeyConstraintName
686
+ ? primaryColumns[0].primaryKeyConstraintName
687
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
673
688
  const columnNames = primaryColumns
674
689
  .map((column) => `"${column.name}"`)
675
690
  .join(", ");
@@ -677,7 +692,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
677
692
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${pkName}" PRIMARY KEY (${columnNames})`));
678
693
  }
679
694
  primaryColumns.push(column);
680
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
695
+ const pkName = primaryColumns[0].primaryKeyConstraintName
696
+ ? primaryColumns[0].primaryKeyConstraintName
697
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
681
698
  const columnNames = primaryColumns
682
699
  .map((column) => `"${column.name}"`)
683
700
  .join(", ");
@@ -815,7 +832,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
815
832
  // rename the column
816
833
  upQueries.push(new Query_1.Query(`EXEC sp_rename "${this.getTablePath(table)}.${oldColumn.name}", "${newColumn.name}"`));
817
834
  downQueries.push(new Query_1.Query(`EXEC sp_rename "${this.getTablePath(table)}.${newColumn.name}", "${oldColumn.name}"`));
818
- if (oldColumn.isPrimary === true) {
835
+ // rename column primary key constraint
836
+ if (oldColumn.isPrimary === true &&
837
+ !oldColumn.primaryKeyConstraintName) {
819
838
  const primaryColumns = clonedTable.primaryColumns;
820
839
  // build old primary constraint name
821
840
  const columnNames = primaryColumns.map((column) => column.name);
@@ -831,6 +850,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
831
850
  }
832
851
  // rename index constraints
833
852
  clonedTable.findColumnIndices(oldColumn).forEach((index) => {
853
+ const oldIndexName = this.connection.namingStrategy.indexName(clonedTable, index.columnNames, index.where);
854
+ // Skip renaming if Index has user defined constraint name
855
+ if (index.name !== oldIndexName)
856
+ return;
834
857
  // build new constraint name
835
858
  index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);
836
859
  index.columnNames.push(newColumn.name);
@@ -845,6 +868,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
845
868
  clonedTable
846
869
  .findColumnForeignKeys(oldColumn)
847
870
  .forEach((foreignKey) => {
871
+ const foreignKeyName = this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
872
+ // Skip renaming if foreign key has user defined constraint name
873
+ if (foreignKey.name !== foreignKeyName)
874
+ return;
848
875
  // build new constraint name
849
876
  foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);
850
877
  foreignKey.columnNames.push(newColumn.name);
@@ -869,6 +896,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
869
896
  });
870
897
  // rename unique constraints
871
898
  clonedTable.findColumnUniques(oldColumn).forEach((unique) => {
899
+ const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(clonedTable, unique.columnNames);
900
+ // Skip renaming if Unique has user defined constraint name
901
+ if (unique.name !== oldUniqueName)
902
+ return;
872
903
  // build new constraint name
873
904
  unique.columnNames.splice(unique.columnNames.indexOf(oldColumn.name), 1);
874
905
  unique.columnNames.push(newColumn.name);
@@ -907,7 +938,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
907
938
  const primaryColumns = clonedTable.primaryColumns;
908
939
  // if primary column state changed, we must always drop existed constraint.
909
940
  if (primaryColumns.length > 0) {
910
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
941
+ const pkName = primaryColumns[0].primaryKeyConstraintName
942
+ ? primaryColumns[0].primaryKeyConstraintName
943
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
911
944
  const columnNames = primaryColumns
912
945
  .map((column) => `"${column.name}"`)
913
946
  .join(", ");
@@ -919,7 +952,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
919
952
  // update column in table
920
953
  const column = clonedTable.columns.find((column) => column.name === newColumn.name);
921
954
  column.isPrimary = true;
922
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
955
+ const pkName = primaryColumns[0].primaryKeyConstraintName
956
+ ? primaryColumns[0].primaryKeyConstraintName
957
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
923
958
  const columnNames = primaryColumns
924
959
  .map((column) => `"${column.name}"`)
925
960
  .join(", ");
@@ -934,7 +969,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
934
969
  column.isPrimary = false;
935
970
  // if we have another primary keys, we must recreate constraint.
936
971
  if (primaryColumns.length > 0) {
937
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
972
+ const pkName = primaryColumns[0]
973
+ .primaryKeyConstraintName
974
+ ? primaryColumns[0].primaryKeyConstraintName
975
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
938
976
  const columnNames = primaryColumns
939
977
  .map((column) => `"${column.name}"`)
940
978
  .join(", ");
@@ -1007,7 +1045,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1007
1045
  const downQueries = [];
1008
1046
  // drop primary key constraint
1009
1047
  if (column.isPrimary) {
1010
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
1048
+ const pkName = column.primaryKeyConstraintName
1049
+ ? column.primaryKeyConstraintName
1050
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
1011
1051
  const columnNames = clonedTable.primaryColumns
1012
1052
  .map((primaryColumn) => `"${primaryColumn.name}"`)
1013
1053
  .join(", ");
@@ -1018,7 +1058,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1018
1058
  tableColumn.isPrimary = false;
1019
1059
  // if primary key have multiple columns, we must recreate it without dropped column
1020
1060
  if (clonedTable.primaryColumns.length > 0) {
1021
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
1061
+ const pkName = clonedTable.primaryColumns[0]
1062
+ .primaryKeyConstraintName
1063
+ ? clonedTable.primaryColumns[0].primaryKeyConstraintName
1064
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
1022
1065
  const columnNames = clonedTable.primaryColumns
1023
1066
  .map((primaryColumn) => `"${primaryColumn.name}"`)
1024
1067
  .join(", ");
@@ -1097,12 +1140,12 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1097
1140
  /**
1098
1141
  * Creates a new primary key.
1099
1142
  */
1100
- async createPrimaryKey(tableOrName, columnNames) {
1143
+ async createPrimaryKey(tableOrName, columnNames, constraintName) {
1101
1144
  const table = InstanceChecker_1.InstanceChecker.isTable(tableOrName)
1102
1145
  ? tableOrName
1103
1146
  : await this.getCachedTable(tableOrName);
1104
1147
  const clonedTable = table.clone();
1105
- const up = this.createPrimaryKeySql(table, columnNames);
1148
+ const up = this.createPrimaryKeySql(table, columnNames, constraintName);
1106
1149
  // mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.
1107
1150
  clonedTable.columns.forEach((column) => {
1108
1151
  if (columnNames.find((columnName) => columnName === column.name))
@@ -1126,7 +1169,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1126
1169
  // if table already have primary columns, we must drop them.
1127
1170
  const primaryColumns = clonedTable.primaryColumns;
1128
1171
  if (primaryColumns.length > 0) {
1129
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
1172
+ const pkName = primaryColumns[0].primaryKeyConstraintName
1173
+ ? primaryColumns[0].primaryKeyConstraintName
1174
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
1130
1175
  const columnNamesString = primaryColumns
1131
1176
  .map((column) => `"${column.name}"`)
1132
1177
  .join(", ");
@@ -1137,7 +1182,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1137
1182
  clonedTable.columns
1138
1183
  .filter((column) => columnNames.indexOf(column.name) !== -1)
1139
1184
  .forEach((column) => (column.isPrimary = true));
1140
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
1185
+ const pkName = primaryColumns[0].primaryKeyConstraintName
1186
+ ? primaryColumns[0].primaryKeyConstraintName
1187
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
1141
1188
  const columnNamesString = columnNames
1142
1189
  .map((columnName) => `"${columnName}"`)
1143
1190
  .join(", ");
@@ -1149,12 +1196,12 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1149
1196
  /**
1150
1197
  * Drops a primary key.
1151
1198
  */
1152
- async dropPrimaryKey(tableOrName) {
1199
+ async dropPrimaryKey(tableOrName, constraintName) {
1153
1200
  const table = InstanceChecker_1.InstanceChecker.isTable(tableOrName)
1154
1201
  ? tableOrName
1155
1202
  : await this.getCachedTable(tableOrName);
1156
1203
  const up = this.dropPrimaryKeySql(table);
1157
- const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name));
1204
+ const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name), constraintName);
1158
1205
  await this.executeQueries(up, down);
1159
1206
  table.primaryColumns.forEach((column) => {
1160
1207
  column.isPrimary = false;
@@ -1727,8 +1774,6 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1727
1774
  dbConstraint["COLUMN_NAME"] !==
1728
1775
  dbColumn["COLUMN_NAME"]);
1729
1776
  });
1730
- const isPrimary = !!columnConstraints.find((constraint) => constraint["CONSTRAINT_TYPE"] ===
1731
- "PRIMARY KEY");
1732
1777
  const isGenerated = !!dbIdentityColumns.find((column) => column["TABLE_NAME"] ===
1733
1778
  dbColumn["TABLE_NAME"] &&
1734
1779
  column["TABLE_SCHEMA"] ===
@@ -1789,6 +1834,33 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1789
1834
  }
1790
1835
  }
1791
1836
  }
1837
+ const primaryConstraint = columnConstraints.find((constraint) => constraint["CONSTRAINT_TYPE"] ===
1838
+ "PRIMARY KEY");
1839
+ if (primaryConstraint) {
1840
+ tableColumn.isPrimary = true;
1841
+ // find another columns involved in primary key constraint
1842
+ const anotherPrimaryConstraints = dbConstraints.filter((constraint) => constraint["TABLE_NAME"] ===
1843
+ dbColumn["TABLE_NAME"] &&
1844
+ constraint["TABLE_SCHEMA"] ===
1845
+ dbColumn["TABLE_SCHEMA"] &&
1846
+ constraint["TABLE_CATALOG"] ===
1847
+ dbColumn["TABLE_CATALOG"] &&
1848
+ constraint["COLUMN_NAME"] !==
1849
+ dbColumn["COLUMN_NAME"] &&
1850
+ constraint["CONSTRAINT_TYPE"] ===
1851
+ "PRIMARY KEY");
1852
+ // collect all column names
1853
+ const columnNames = anotherPrimaryConstraints.map((constraint) => constraint["COLUMN_NAME"]);
1854
+ columnNames.push(dbColumn["COLUMN_NAME"]);
1855
+ // build default primary key constraint name
1856
+ const pkName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
1857
+ // if primary key has user-defined constraint name, write it in table column
1858
+ if (primaryConstraint["CONSTRAINT_NAME"] !==
1859
+ pkName) {
1860
+ tableColumn.primaryKeyConstraintName =
1861
+ primaryConstraint["CONSTRAINT_NAME"];
1862
+ }
1863
+ }
1792
1864
  tableColumn.default =
1793
1865
  dbColumn["COLUMN_DEFAULT"] !== null &&
1794
1866
  dbColumn["COLUMN_DEFAULT"] !== undefined
@@ -1796,7 +1868,6 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1796
1868
  : undefined;
1797
1869
  tableColumn.isNullable =
1798
1870
  dbColumn["IS_NULLABLE"] === "YES";
1799
- tableColumn.isPrimary = isPrimary;
1800
1871
  tableColumn.isUnique =
1801
1872
  uniqueConstraints.length > 0 &&
1802
1873
  !isConstraintComposite;
@@ -2003,7 +2074,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
2003
2074
  }
2004
2075
  const primaryColumns = table.columns.filter((column) => column.isPrimary);
2005
2076
  if (primaryColumns.length > 0) {
2006
- const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
2077
+ const primaryKeyName = primaryColumns[0].primaryKeyConstraintName
2078
+ ? primaryColumns[0].primaryKeyConstraintName
2079
+ : this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
2007
2080
  const columnNames = primaryColumns
2008
2081
  .map((column) => `"${column.name}"`)
2009
2082
  .join(", ");
@@ -2094,8 +2167,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
2094
2167
  /**
2095
2168
  * Builds create primary key sql.
2096
2169
  */
2097
- createPrimaryKeySql(table, columnNames) {
2098
- const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
2170
+ createPrimaryKeySql(table, columnNames, constraintName) {
2171
+ const primaryKeyName = constraintName
2172
+ ? constraintName
2173
+ : this.connection.namingStrategy.primaryKeyName(table, columnNames);
2099
2174
  const columnNamesString = columnNames
2100
2175
  .map((columnName) => `"${columnName}"`)
2101
2176
  .join(", ");
@@ -2106,7 +2181,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
2106
2181
  */
2107
2182
  dropPrimaryKeySql(table) {
2108
2183
  const columnNames = table.primaryColumns.map((column) => column.name);
2109
- const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
2184
+ const constraintName = table.primaryColumns[0].primaryKeyConstraintName;
2185
+ const primaryKeyName = constraintName
2186
+ ? constraintName
2187
+ : this.connection.namingStrategy.primaryKeyName(table, columnNames);
2110
2188
  return new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${primaryKeyName}"`);
2111
2189
  }
2112
2190
  /**