typeorm 0.3.6-dev.9d331b1 → 0.3.6-dev.bbdc20f

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 (370) hide show
  1. package/README.md +34 -14
  2. package/browser/cache/DbQueryResultCache.js +9 -1
  3. package/browser/cache/DbQueryResultCache.js.map +1 -1
  4. package/browser/cache/RedisQueryResultCache.js +3 -0
  5. package/browser/cache/RedisQueryResultCache.js.map +1 -1
  6. package/browser/data-source/DataSourceOptions.d.ts +2 -1
  7. package/browser/data-source/DataSourceOptions.js.map +1 -1
  8. package/browser/decorator/Index.js +1 -0
  9. package/browser/decorator/Index.js.map +1 -1
  10. package/browser/decorator/columns/PrimaryColumn.js +4 -1
  11. package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
  12. package/browser/decorator/options/ColumnOptions.d.ts +10 -2
  13. package/browser/decorator/options/ColumnOptions.js.map +1 -1
  14. package/browser/decorator/options/IndexOptions.d.ts +8 -0
  15. package/browser/decorator/options/IndexOptions.js.map +1 -1
  16. package/browser/decorator/options/JoinColumnOptions.d.ts +4 -0
  17. package/browser/decorator/options/JoinColumnOptions.js.map +1 -1
  18. package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +4 -0
  19. package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
  20. package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +4 -0
  21. package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
  22. package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.d.ts +4 -0
  23. package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
  24. package/browser/decorator/relations/JoinColumn.js +1 -0
  25. package/browser/decorator/relations/JoinColumn.js.map +1 -1
  26. package/browser/driver/DriverFactory.js +4 -0
  27. package/browser/driver/DriverFactory.js.map +1 -1
  28. package/browser/driver/aurora-mysql/AuroraMysqlDriver.d.ts +1 -1
  29. package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  30. package/browser/driver/cockroachdb/CockroachDriver.js +4 -1
  31. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  32. package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +3 -3
  33. package/browser/driver/cockroachdb/CockroachQueryRunner.js +233 -33
  34. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  35. package/browser/driver/mongodb/typings.d.ts +5 -5
  36. package/browser/driver/mongodb/typings.js.map +1 -1
  37. package/browser/driver/mysql/MysqlDriver.d.ts +1 -0
  38. package/browser/driver/mysql/MysqlDriver.js +94 -23
  39. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  40. package/browser/driver/mysql/MysqlQueryRunner.js +219 -24
  41. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  42. package/browser/driver/oracle/OracleDriver.js +79 -15
  43. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  44. package/browser/driver/oracle/OracleQueryRunner.d.ts +3 -3
  45. package/browser/driver/oracle/OracleQueryRunner.js +216 -42
  46. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  47. package/browser/driver/postgres/PostgresDriver.js +95 -18
  48. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  49. package/browser/driver/postgres/PostgresQueryRunner.d.ts +3 -3
  50. package/browser/driver/postgres/PostgresQueryRunner.js +159 -59
  51. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  52. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +17 -0
  53. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js +3 -0
  54. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -0
  55. package/browser/driver/spanner/SpannerConnectionOptions.d.ts +120 -0
  56. package/browser/driver/spanner/SpannerConnectionOptions.js +3 -0
  57. package/browser/driver/spanner/SpannerConnectionOptions.js.map +1 -0
  58. package/browser/driver/spanner/SpannerDriver.d.ts +241 -0
  59. package/browser/driver/spanner/SpannerDriver.js +604 -0
  60. package/browser/driver/spanner/SpannerDriver.js.map +1 -0
  61. package/browser/driver/spanner/SpannerQueryRunner.d.ts +350 -0
  62. package/browser/driver/spanner/SpannerQueryRunner.js +1445 -0
  63. package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -0
  64. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +65 -16
  65. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  66. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +218 -32
  67. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  68. package/browser/driver/sqlserver/SqlServerDriver.d.ts +3 -1
  69. package/browser/driver/sqlserver/SqlServerDriver.js +99 -26
  70. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  71. package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +3 -3
  72. package/browser/driver/sqlserver/SqlServerQueryRunner.js +251 -37
  73. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  74. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.d.ts +1 -1
  75. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
  76. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.d.ts +2 -2
  77. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
  78. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.d.ts +2 -2
  79. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
  80. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.d.ts +2 -2
  81. package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
  82. package/browser/driver/types/ColumnTypes.d.ts +1 -1
  83. package/browser/driver/types/ColumnTypes.js.map +1 -1
  84. package/browser/driver/types/DatabaseType.d.ts +1 -1
  85. package/browser/driver/types/DatabaseType.js.map +1 -1
  86. package/browser/entity-manager/EntityManager.js +1 -1
  87. package/browser/entity-manager/EntityManager.js.map +1 -1
  88. package/browser/entity-schema/EntitySchemaColumnOptions.d.ts +6 -2
  89. package/browser/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  90. package/browser/entity-schema/EntitySchemaIndexOptions.d.ts +8 -0
  91. package/browser/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
  92. package/browser/entity-schema/EntitySchemaTransformer.js +3 -0
  93. package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
  94. package/browser/find-options/FindOneOptions.d.ts +1 -1
  95. package/browser/find-options/FindOneOptions.js.map +1 -1
  96. package/browser/find-options/FindOptionsUtils.d.ts +2 -1
  97. package/browser/find-options/FindOptionsUtils.js +2 -1
  98. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  99. package/browser/logger/AdvancedConsoleLogger.d.ts +1 -1
  100. package/browser/logger/AdvancedConsoleLogger.js +1 -1
  101. package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
  102. package/browser/metadata/ColumnMetadata.d.ts +10 -2
  103. package/browser/metadata/ColumnMetadata.js +8 -0
  104. package/browser/metadata/ColumnMetadata.js.map +1 -1
  105. package/browser/metadata/EntityMetadata.js +1 -1
  106. package/browser/metadata/EntityMetadata.js.map +1 -1
  107. package/browser/metadata/ForeignKeyMetadata.d.ts +7 -0
  108. package/browser/metadata/ForeignKeyMetadata.js +4 -1
  109. package/browser/metadata/ForeignKeyMetadata.js.map +1 -1
  110. package/browser/metadata/IndexMetadata.d.ts +8 -0
  111. package/browser/metadata/IndexMetadata.js +9 -0
  112. package/browser/metadata/IndexMetadata.js.map +1 -1
  113. package/browser/metadata-args/IndexMetadataArgs.d.ts +8 -0
  114. package/browser/metadata-args/IndexMetadataArgs.js.map +1 -1
  115. package/browser/metadata-args/JoinColumnMetadataArgs.d.ts +4 -0
  116. package/browser/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
  117. package/browser/metadata-builder/EntityMetadataBuilder.js +13 -6
  118. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  119. package/browser/metadata-builder/EntityMetadataValidator.js +17 -0
  120. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  121. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +18 -6
  122. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  123. package/browser/metadata-builder/RelationJoinColumnBuilder.js +2 -0
  124. package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  125. package/browser/migration/MigrationExecutor.js +1 -1
  126. package/browser/migration/MigrationExecutor.js.map +1 -1
  127. package/browser/persistence/SubjectDatabaseEntityLoader.d.ts +1 -1
  128. package/browser/persistence/SubjectDatabaseEntityLoader.js +1 -1
  129. package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  130. package/browser/persistence/SubjectExecutor.js +1 -1
  131. package/browser/persistence/SubjectExecutor.js.map +1 -1
  132. package/browser/persistence/subject-builder/CascadesSubjectBuilder.d.ts +1 -1
  133. package/browser/persistence/subject-builder/CascadesSubjectBuilder.js +1 -1
  134. package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  135. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js +1 -1
  136. package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  137. package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +1 -1
  138. package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  139. package/browser/platform/PlatformTools.js +5 -0
  140. package/browser/platform/PlatformTools.js.map +1 -1
  141. package/browser/query-builder/InsertQueryBuilder.js +15 -3
  142. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  143. package/browser/query-builder/QueryBuilder.d.ts +1 -1
  144. package/browser/query-builder/QueryBuilder.js +15 -15
  145. package/browser/query-builder/QueryBuilder.js.map +1 -1
  146. package/browser/query-builder/QueryExpressionMap.d.ts +2 -2
  147. package/browser/query-builder/QueryExpressionMap.js +1 -1
  148. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  149. package/browser/query-builder/ReturningResultsEntityUpdator.js +2 -2
  150. package/browser/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  151. package/browser/query-builder/SelectQueryBuilder.d.ts +1 -1
  152. package/browser/query-builder/SelectQueryBuilder.js +25 -4
  153. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  154. package/browser/query-builder/UpdateQueryBuilder.js +18 -7
  155. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  156. package/browser/query-runner/BaseQueryRunner.d.ts +10 -0
  157. package/browser/query-runner/BaseQueryRunner.js +25 -1
  158. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  159. package/browser/query-runner/QueryRunner.d.ts +2 -2
  160. package/browser/query-runner/QueryRunner.js.map +1 -1
  161. package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +6 -2
  162. package/browser/schema-builder/RdbmsSchemaBuilder.js +26 -6
  163. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  164. package/browser/schema-builder/options/TableColumnOptions.d.ts +10 -2
  165. package/browser/schema-builder/options/TableColumnOptions.js.map +1 -1
  166. package/browser/schema-builder/options/TableForeignKeyOptions.d.ts +1 -1
  167. package/browser/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
  168. package/browser/schema-builder/options/TableIndexOptions.d.ts +8 -0
  169. package/browser/schema-builder/options/TableIndexOptions.js.map +1 -1
  170. package/browser/schema-builder/table/TableColumn.d.ts +6 -2
  171. package/browser/schema-builder/table/TableColumn.js +2 -0
  172. package/browser/schema-builder/table/TableColumn.js.map +1 -1
  173. package/browser/schema-builder/table/TableIndex.d.ts +8 -0
  174. package/browser/schema-builder/table/TableIndex.js +3 -0
  175. package/browser/schema-builder/table/TableIndex.js.map +1 -1
  176. package/browser/schema-builder/util/TableUtils.js +1 -0
  177. package/browser/schema-builder/util/TableUtils.js.map +1 -1
  178. package/browser/util/OrmUtils.d.ts +1 -1
  179. package/browser/util/OrmUtils.js +4 -4
  180. package/browser/util/OrmUtils.js.map +1 -1
  181. package/browser/util/escapeRegExp.d.ts +1 -0
  182. package/browser/util/escapeRegExp.js +6 -0
  183. package/browser/util/escapeRegExp.js.map +1 -0
  184. package/cache/DbQueryResultCache.js +9 -1
  185. package/cache/DbQueryResultCache.js.map +1 -1
  186. package/cache/RedisQueryResultCache.js +3 -0
  187. package/cache/RedisQueryResultCache.js.map +1 -1
  188. package/commands/InitCommand.js +1 -1
  189. package/commands/InitCommand.js.map +1 -1
  190. package/commands/MigrationGenerateCommand.js +3 -2
  191. package/commands/MigrationGenerateCommand.js.map +1 -1
  192. package/data-source/DataSourceOptions.d.ts +2 -1
  193. package/data-source/DataSourceOptions.js.map +1 -1
  194. package/decorator/Index.js +1 -0
  195. package/decorator/Index.js.map +1 -1
  196. package/decorator/columns/PrimaryColumn.js +4 -1
  197. package/decorator/columns/PrimaryColumn.js.map +1 -1
  198. package/decorator/options/ColumnOptions.d.ts +10 -2
  199. package/decorator/options/ColumnOptions.js.map +1 -1
  200. package/decorator/options/IndexOptions.d.ts +8 -0
  201. package/decorator/options/IndexOptions.js.map +1 -1
  202. package/decorator/options/JoinColumnOptions.d.ts +4 -0
  203. package/decorator/options/JoinColumnOptions.js.map +1 -1
  204. package/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +4 -0
  205. package/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
  206. package/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +4 -0
  207. package/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
  208. package/decorator/options/PrimaryGeneratedColumnUUIDOptions.d.ts +4 -0
  209. package/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
  210. package/decorator/relations/JoinColumn.js +1 -0
  211. package/decorator/relations/JoinColumn.js.map +1 -1
  212. package/driver/DriverFactory.js +4 -0
  213. package/driver/DriverFactory.js.map +1 -1
  214. package/driver/aurora-mysql/AuroraMysqlDriver.d.ts +1 -1
  215. package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
  216. package/driver/cockroachdb/CockroachDriver.js +4 -1
  217. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  218. package/driver/cockroachdb/CockroachQueryRunner.d.ts +3 -3
  219. package/driver/cockroachdb/CockroachQueryRunner.js +233 -33
  220. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  221. package/driver/mongodb/typings.d.ts +5 -5
  222. package/driver/mongodb/typings.js.map +1 -1
  223. package/driver/mysql/MysqlDriver.d.ts +1 -0
  224. package/driver/mysql/MysqlDriver.js +94 -23
  225. package/driver/mysql/MysqlDriver.js.map +1 -1
  226. package/driver/mysql/MysqlQueryRunner.js +219 -24
  227. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  228. package/driver/oracle/OracleDriver.js +79 -15
  229. package/driver/oracle/OracleDriver.js.map +1 -1
  230. package/driver/oracle/OracleQueryRunner.d.ts +3 -3
  231. package/driver/oracle/OracleQueryRunner.js +216 -42
  232. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  233. package/driver/postgres/PostgresDriver.js +95 -18
  234. package/driver/postgres/PostgresDriver.js.map +1 -1
  235. package/driver/postgres/PostgresQueryRunner.d.ts +3 -3
  236. package/driver/postgres/PostgresQueryRunner.js +159 -59
  237. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  238. package/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +17 -0
  239. package/driver/spanner/SpannerConnectionCredentialsOptions.js +4 -0
  240. package/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -0
  241. package/driver/spanner/SpannerConnectionOptions.d.ts +120 -0
  242. package/driver/spanner/SpannerConnectionOptions.js +4 -0
  243. package/driver/spanner/SpannerConnectionOptions.js.map +1 -0
  244. package/driver/spanner/SpannerDriver.d.ts +241 -0
  245. package/driver/spanner/SpannerDriver.js +608 -0
  246. package/driver/spanner/SpannerDriver.js.map +1 -0
  247. package/driver/spanner/SpannerQueryRunner.d.ts +350 -0
  248. package/driver/spanner/SpannerQueryRunner.js +1449 -0
  249. package/driver/spanner/SpannerQueryRunner.js.map +1 -0
  250. package/driver/sqlite-abstract/AbstractSqliteDriver.js +65 -16
  251. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  252. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +218 -32
  253. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  254. package/driver/sqlserver/SqlServerDriver.d.ts +3 -1
  255. package/driver/sqlserver/SqlServerDriver.js +99 -26
  256. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  257. package/driver/sqlserver/SqlServerQueryRunner.d.ts +3 -3
  258. package/driver/sqlserver/SqlServerQueryRunner.js +251 -37
  259. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  260. package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.d.ts +1 -1
  261. package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
  262. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.d.ts +2 -2
  263. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
  264. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.d.ts +2 -2
  265. package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
  266. package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.d.ts +2 -2
  267. package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
  268. package/driver/types/ColumnTypes.d.ts +1 -1
  269. package/driver/types/ColumnTypes.js.map +1 -1
  270. package/driver/types/DatabaseType.d.ts +1 -1
  271. package/driver/types/DatabaseType.js.map +1 -1
  272. package/entity-manager/EntityManager.js +1 -1
  273. package/entity-manager/EntityManager.js.map +1 -1
  274. package/entity-schema/EntitySchemaColumnOptions.d.ts +6 -2
  275. package/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  276. package/entity-schema/EntitySchemaIndexOptions.d.ts +8 -0
  277. package/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
  278. package/entity-schema/EntitySchemaTransformer.js +3 -0
  279. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  280. package/find-options/FindOneOptions.d.ts +1 -1
  281. package/find-options/FindOneOptions.js.map +1 -1
  282. package/find-options/FindOptionsUtils.d.ts +2 -1
  283. package/find-options/FindOptionsUtils.js +2 -1
  284. package/find-options/FindOptionsUtils.js.map +1 -1
  285. package/logger/AdvancedConsoleLogger.d.ts +1 -1
  286. package/logger/AdvancedConsoleLogger.js +1 -1
  287. package/logger/AdvancedConsoleLogger.js.map +1 -1
  288. package/metadata/ColumnMetadata.d.ts +10 -2
  289. package/metadata/ColumnMetadata.js +8 -0
  290. package/metadata/ColumnMetadata.js.map +1 -1
  291. package/metadata/EntityMetadata.js +1 -1
  292. package/metadata/EntityMetadata.js.map +1 -1
  293. package/metadata/ForeignKeyMetadata.d.ts +7 -0
  294. package/metadata/ForeignKeyMetadata.js +4 -1
  295. package/metadata/ForeignKeyMetadata.js.map +1 -1
  296. package/metadata/IndexMetadata.d.ts +8 -0
  297. package/metadata/IndexMetadata.js +9 -0
  298. package/metadata/IndexMetadata.js.map +1 -1
  299. package/metadata-args/IndexMetadataArgs.d.ts +8 -0
  300. package/metadata-args/IndexMetadataArgs.js.map +1 -1
  301. package/metadata-args/JoinColumnMetadataArgs.d.ts +4 -0
  302. package/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
  303. package/metadata-builder/EntityMetadataBuilder.js +13 -6
  304. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  305. package/metadata-builder/EntityMetadataValidator.js +17 -0
  306. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  307. package/metadata-builder/JunctionEntityMetadataBuilder.js +18 -6
  308. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  309. package/metadata-builder/RelationJoinColumnBuilder.js +2 -0
  310. package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
  311. package/migration/MigrationExecutor.js +1 -1
  312. package/migration/MigrationExecutor.js.map +1 -1
  313. package/package.json +1 -1
  314. package/persistence/SubjectDatabaseEntityLoader.d.ts +1 -1
  315. package/persistence/SubjectDatabaseEntityLoader.js +1 -1
  316. package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
  317. package/persistence/SubjectExecutor.js +1 -1
  318. package/persistence/SubjectExecutor.js.map +1 -1
  319. package/persistence/subject-builder/CascadesSubjectBuilder.d.ts +1 -1
  320. package/persistence/subject-builder/CascadesSubjectBuilder.js +1 -1
  321. package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
  322. package/persistence/subject-builder/ManyToManySubjectBuilder.js +1 -1
  323. package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
  324. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +1 -1
  325. package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
  326. package/platform/PlatformTools.js +5 -0
  327. package/platform/PlatformTools.js.map +1 -1
  328. package/query-builder/InsertQueryBuilder.js +15 -3
  329. package/query-builder/InsertQueryBuilder.js.map +1 -1
  330. package/query-builder/QueryBuilder.d.ts +1 -1
  331. package/query-builder/QueryBuilder.js +15 -15
  332. package/query-builder/QueryBuilder.js.map +1 -1
  333. package/query-builder/QueryExpressionMap.d.ts +2 -2
  334. package/query-builder/QueryExpressionMap.js +1 -1
  335. package/query-builder/QueryExpressionMap.js.map +1 -1
  336. package/query-builder/ReturningResultsEntityUpdator.js +2 -2
  337. package/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
  338. package/query-builder/SelectQueryBuilder.d.ts +1 -1
  339. package/query-builder/SelectQueryBuilder.js +25 -4
  340. package/query-builder/SelectQueryBuilder.js.map +1 -1
  341. package/query-builder/UpdateQueryBuilder.js +18 -7
  342. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  343. package/query-runner/BaseQueryRunner.d.ts +10 -0
  344. package/query-runner/BaseQueryRunner.js +25 -1
  345. package/query-runner/BaseQueryRunner.js.map +1 -1
  346. package/query-runner/QueryRunner.d.ts +2 -2
  347. package/query-runner/QueryRunner.js.map +1 -1
  348. package/schema-builder/RdbmsSchemaBuilder.d.ts +6 -2
  349. package/schema-builder/RdbmsSchemaBuilder.js +26 -6
  350. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  351. package/schema-builder/options/TableColumnOptions.d.ts +10 -2
  352. package/schema-builder/options/TableColumnOptions.js.map +1 -1
  353. package/schema-builder/options/TableForeignKeyOptions.d.ts +1 -1
  354. package/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
  355. package/schema-builder/options/TableIndexOptions.d.ts +8 -0
  356. package/schema-builder/options/TableIndexOptions.js.map +1 -1
  357. package/schema-builder/table/TableColumn.d.ts +6 -2
  358. package/schema-builder/table/TableColumn.js +2 -0
  359. package/schema-builder/table/TableColumn.js.map +1 -1
  360. package/schema-builder/table/TableIndex.d.ts +8 -0
  361. package/schema-builder/table/TableIndex.js +3 -0
  362. package/schema-builder/table/TableIndex.js.map +1 -1
  363. package/schema-builder/util/TableUtils.js +1 -0
  364. package/schema-builder/util/TableUtils.js.map +1 -1
  365. package/util/OrmUtils.d.ts +1 -1
  366. package/util/OrmUtils.js +4 -4
  367. package/util/OrmUtils.js.map +1 -1
  368. package/util/escapeRegExp.d.ts +1 -0
  369. package/util/escapeRegExp.js +10 -0
  370. package/util/escapeRegExp.js.map +1 -0
@@ -386,7 +386,6 @@ export class PostgresQueryRunner extends BaseQueryRunner {
386
386
  type: MetadataTableType.GENERATED_COLUMN,
387
387
  name: column.name,
388
388
  });
389
- upQueries.push(deleteQuery);
390
389
  upQueries.push(insertQuery);
391
390
  downQueries.push(deleteQuery);
392
391
  }
@@ -434,6 +433,30 @@ export class PostgresQueryRunner extends BaseQueryRunner {
434
433
  table.foreignKeys.forEach((foreignKey) => upQueries.push(this.dropForeignKeySql(table, foreignKey)));
435
434
  upQueries.push(this.dropTableSql(table));
436
435
  downQueries.push(this.createTableSql(table, createForeignKeys));
436
+ // if table had columns with generated type, we must remove the expression from the metadata table
437
+ const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
438
+ for (const column of generatedColumns) {
439
+ const tableNameWithSchema = (await this.getTableNameWithSchema(table.name)).split(".");
440
+ const tableName = tableNameWithSchema[1];
441
+ const schema = tableNameWithSchema[0];
442
+ const deleteQuery = this.deleteTypeormMetadataSql({
443
+ database: this.driver.database,
444
+ schema,
445
+ table: tableName,
446
+ type: MetadataTableType.GENERATED_COLUMN,
447
+ name: column.name,
448
+ });
449
+ const insertQuery = this.insertTypeormMetadataSql({
450
+ database: this.driver.database,
451
+ schema,
452
+ table: tableName,
453
+ type: MetadataTableType.GENERATED_COLUMN,
454
+ name: column.name,
455
+ value: column.asExpression,
456
+ });
457
+ upQueries.push(deleteQuery);
458
+ downQueries.push(insertQuery);
459
+ }
437
460
  await this.executeQueries(upQueries, downQueries);
438
461
  }
439
462
  /**
@@ -478,8 +501,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
478
501
  : newTableName;
479
502
  upQueries.push(new Query(`ALTER TABLE ${this.escapePath(oldTable)} RENAME TO "${newTableName}"`));
480
503
  downQueries.push(new Query(`ALTER TABLE ${this.escapePath(newTable)} RENAME TO "${oldTableName}"`));
481
- // rename column primary key constraint
482
- if (newTable.primaryColumns.length > 0) {
504
+ // rename column primary key constraint if it has default constraint name
505
+ if (newTable.primaryColumns.length > 0 &&
506
+ !newTable.primaryColumns[0].primaryKeyConstraintName) {
483
507
  const columnNames = newTable.primaryColumns.map((column) => column.name);
484
508
  const oldPkName = this.connection.namingStrategy.primaryKeyName(oldTable, columnNames);
485
509
  const newPkName = this.connection.namingStrategy.primaryKeyName(newTable, columnNames);
@@ -501,6 +525,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
501
525
  });
502
526
  // rename unique constraints
503
527
  newTable.uniques.forEach((unique) => {
528
+ const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(oldTable, unique.columnNames);
529
+ // Skip renaming if Unique has user defined constraint name
530
+ if (unique.name !== oldUniqueName)
531
+ return;
504
532
  // build new constraint name
505
533
  const newUniqueName = this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames);
506
534
  // build queries
@@ -511,6 +539,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
511
539
  });
512
540
  // rename index constraints
513
541
  newTable.indices.forEach((index) => {
542
+ const oldIndexName = this.connection.namingStrategy.indexName(oldTable, index.columnNames, index.where);
543
+ // Skip renaming if Index has user defined constraint name
544
+ if (index.name !== oldIndexName)
545
+ return;
514
546
  // build new constraint name
515
547
  const { schema } = this.driver.parseTableName(newTable);
516
548
  const newIndexName = this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);
@@ -528,6 +560,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
528
560
  });
529
561
  // rename foreign key constraints
530
562
  newTable.foreignKeys.forEach((foreignKey) => {
563
+ const oldForeignKeyName = this.connection.namingStrategy.foreignKeyName(oldTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
564
+ // Skip renaming if foreign key has user defined constraint name
565
+ if (foreignKey.name !== oldForeignKeyName)
566
+ return;
531
567
  // build new constraint name
532
568
  const newForeignKeyName = this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
533
569
  // build queries
@@ -572,7 +608,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
572
608
  const primaryColumns = clonedTable.primaryColumns;
573
609
  // if table already have primary key, me must drop it and recreate again
574
610
  if (primaryColumns.length > 0) {
575
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
611
+ const pkName = primaryColumns[0].primaryKeyConstraintName
612
+ ? primaryColumns[0].primaryKeyConstraintName
613
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
576
614
  const columnNames = primaryColumns
577
615
  .map((column) => `"${column.name}"`)
578
616
  .join(", ");
@@ -580,7 +618,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
580
618
  downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${pkName}" PRIMARY KEY (${columnNames})`));
581
619
  }
582
620
  primaryColumns.push(column);
583
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
621
+ const pkName = primaryColumns[0].primaryKeyConstraintName
622
+ ? primaryColumns[0].primaryKeyConstraintName
623
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
584
624
  const columnNames = primaryColumns
585
625
  .map((column) => `"${column.name}"`)
586
626
  .join(", ");
@@ -623,7 +663,6 @@ export class PostgresQueryRunner extends BaseQueryRunner {
623
663
  type: MetadataTableType.GENERATED_COLUMN,
624
664
  name: column.name,
625
665
  });
626
- upQueries.push(deleteQuery);
627
666
  upQueries.push(insertQuery);
628
667
  downQueries.push(deleteQuery);
629
668
  }
@@ -708,7 +747,8 @@ export class PostgresQueryRunner extends BaseQueryRunner {
708
747
  downQueries.push(new Query(`ALTER TYPE ${this.buildEnumName(table, newColumn)} RENAME TO "${oldEnumType.name}"`));
709
748
  }
710
749
  // rename column primary key constraint
711
- if (oldColumn.isPrimary === true) {
750
+ if (oldColumn.isPrimary === true &&
751
+ !oldColumn.primaryKeyConstraintName) {
712
752
  const primaryColumns = clonedTable.primaryColumns;
713
753
  // build old primary constraint name
714
754
  const columnNames = primaryColumns.map((column) => column.name);
@@ -735,6 +775,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
735
775
  }
736
776
  // rename unique constraints
737
777
  clonedTable.findColumnUniques(oldColumn).forEach((unique) => {
778
+ const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(clonedTable, unique.columnNames);
779
+ // Skip renaming if Unique has user defined constraint name
780
+ if (unique.name !== oldUniqueName)
781
+ return;
738
782
  // build new constraint name
739
783
  unique.columnNames.splice(unique.columnNames.indexOf(oldColumn.name), 1);
740
784
  unique.columnNames.push(newColumn.name);
@@ -747,6 +791,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
747
791
  });
748
792
  // rename index constraints
749
793
  clonedTable.findColumnIndices(oldColumn).forEach((index) => {
794
+ const oldIndexName = this.connection.namingStrategy.indexName(clonedTable, index.columnNames, index.where);
795
+ // Skip renaming if Index has user defined constraint name
796
+ if (index.name !== oldIndexName)
797
+ return;
750
798
  // build new constraint name
751
799
  index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);
752
800
  index.columnNames.push(newColumn.name);
@@ -768,6 +816,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
768
816
  clonedTable
769
817
  .findColumnForeignKeys(oldColumn)
770
818
  .forEach((foreignKey) => {
819
+ const foreignKeyName = this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
820
+ // Skip renaming if foreign key has user defined constraint name
821
+ if (foreignKey.name !== foreignKeyName)
822
+ return;
771
823
  // build new constraint name
772
824
  foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);
773
825
  foreignKey.columnNames.push(newColumn.name);
@@ -853,7 +905,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
853
905
  const primaryColumns = clonedTable.primaryColumns;
854
906
  // if primary column state changed, we must always drop existed constraint.
855
907
  if (primaryColumns.length > 0) {
856
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
908
+ const pkName = primaryColumns[0].primaryKeyConstraintName
909
+ ? primaryColumns[0].primaryKeyConstraintName
910
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
857
911
  const columnNames = primaryColumns
858
912
  .map((column) => `"${column.name}"`)
859
913
  .join(", ");
@@ -865,7 +919,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
865
919
  // update column in table
866
920
  const column = clonedTable.columns.find((column) => column.name === newColumn.name);
867
921
  column.isPrimary = true;
868
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
922
+ const pkName = primaryColumns[0].primaryKeyConstraintName
923
+ ? primaryColumns[0].primaryKeyConstraintName
924
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
869
925
  const columnNames = primaryColumns
870
926
  .map((column) => `"${column.name}"`)
871
927
  .join(", ");
@@ -880,7 +936,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
880
936
  column.isPrimary = false;
881
937
  // if we have another primary keys, we must recreate constraint.
882
938
  if (primaryColumns.length > 0) {
883
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
939
+ const pkName = primaryColumns[0]
940
+ .primaryKeyConstraintName
941
+ ? primaryColumns[0].primaryKeyConstraintName
942
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
884
943
  const columnNames = primaryColumns
885
944
  .map((column) => `"${column.name}"`)
886
945
  .join(", ");
@@ -994,15 +1053,6 @@ export class PostgresQueryRunner extends BaseQueryRunner {
994
1053
  name: oldColumn.name,
995
1054
  }));
996
1055
  // However, we can't copy it back on downgrade. It needs to regenerate.
997
- downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP COLUMN "${newColumn.name}"`));
998
- downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD ${this.buildCreateColumnSql(table, oldColumn)}`));
999
- downQueries.push(this.deleteTypeormMetadataSql({
1000
- database: this.driver.database,
1001
- schema,
1002
- table: tableName,
1003
- type: MetadataTableType.GENERATED_COLUMN,
1004
- name: newColumn.name,
1005
- }));
1006
1056
  downQueries.push(this.insertTypeormMetadataSql({
1007
1057
  database: this.driver.database,
1008
1058
  schema,
@@ -1011,6 +1061,17 @@ export class PostgresQueryRunner extends BaseQueryRunner {
1011
1061
  name: oldColumn.name,
1012
1062
  value: oldColumn.asExpression,
1013
1063
  }));
1064
+ downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD ${this.buildCreateColumnSql(table, oldColumn)}`));
1065
+ downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP COLUMN "${newColumn.name}"`));
1066
+ // downQueries.push(
1067
+ // this.deleteTypeormMetadataSql({
1068
+ // database: this.driver.database,
1069
+ // schema,
1070
+ // table: tableName,
1071
+ // type: MetadataTableType.GENERATED_COLUMN,
1072
+ // name: newColumn.name,
1073
+ // }),
1074
+ // )
1014
1075
  }
1015
1076
  }
1016
1077
  }
@@ -1042,7 +1103,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
1042
1103
  const downQueries = [];
1043
1104
  // drop primary key constraint
1044
1105
  if (column.isPrimary) {
1045
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
1106
+ const pkName = column.primaryKeyConstraintName
1107
+ ? column.primaryKeyConstraintName
1108
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
1046
1109
  const columnNames = clonedTable.primaryColumns
1047
1110
  .map((primaryColumn) => `"${primaryColumn.name}"`)
1048
1111
  .join(", ");
@@ -1053,7 +1116,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
1053
1116
  tableColumn.isPrimary = false;
1054
1117
  // if primary key have multiple columns, we must recreate it without dropped column
1055
1118
  if (clonedTable.primaryColumns.length > 0) {
1056
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
1119
+ const pkName = clonedTable.primaryColumns[0]
1120
+ .primaryKeyConstraintName
1121
+ ? clonedTable.primaryColumns[0].primaryKeyConstraintName
1122
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
1057
1123
  const columnNames = clonedTable.primaryColumns
1058
1124
  .map((primaryColumn) => `"${primaryColumn.name}"`)
1059
1125
  .join(", ");
@@ -1102,14 +1168,14 @@ export class PostgresQueryRunner extends BaseQueryRunner {
1102
1168
  const tableNameWithSchema = (await this.getTableNameWithSchema(table.name)).split(".");
1103
1169
  const tableName = tableNameWithSchema[1];
1104
1170
  const schema = tableNameWithSchema[0];
1105
- const insertQuery = this.deleteTypeormMetadataSql({
1171
+ const deleteQuery = this.deleteTypeormMetadataSql({
1106
1172
  database: this.driver.database,
1107
1173
  schema,
1108
1174
  table: tableName,
1109
1175
  type: MetadataTableType.GENERATED_COLUMN,
1110
1176
  name: column.name,
1111
1177
  });
1112
- const deleteQuery = this.insertTypeormMetadataSql({
1178
+ const insertQuery = this.insertTypeormMetadataSql({
1113
1179
  database: this.driver.database,
1114
1180
  schema,
1115
1181
  table: tableName,
@@ -1117,8 +1183,8 @@ export class PostgresQueryRunner extends BaseQueryRunner {
1117
1183
  name: column.name,
1118
1184
  value: column.asExpression,
1119
1185
  });
1120
- upQueries.push(insertQuery);
1121
- downQueries.push(deleteQuery);
1186
+ upQueries.push(deleteQuery);
1187
+ downQueries.push(insertQuery);
1122
1188
  }
1123
1189
  await this.executeQueries(upQueries, downQueries);
1124
1190
  clonedTable.removeColumn(column);
@@ -1135,12 +1201,12 @@ export class PostgresQueryRunner extends BaseQueryRunner {
1135
1201
  /**
1136
1202
  * Creates a new primary key.
1137
1203
  */
1138
- async createPrimaryKey(tableOrName, columnNames) {
1204
+ async createPrimaryKey(tableOrName, columnNames, constraintName) {
1139
1205
  const table = InstanceChecker.isTable(tableOrName)
1140
1206
  ? tableOrName
1141
1207
  : await this.getCachedTable(tableOrName);
1142
1208
  const clonedTable = table.clone();
1143
- const up = this.createPrimaryKeySql(table, columnNames);
1209
+ const up = this.createPrimaryKeySql(table, columnNames, constraintName);
1144
1210
  // mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.
1145
1211
  clonedTable.columns.forEach((column) => {
1146
1212
  if (columnNames.find((columnName) => columnName === column.name))
@@ -1164,7 +1230,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
1164
1230
  // if table already have primary columns, we must drop them.
1165
1231
  const primaryColumns = clonedTable.primaryColumns;
1166
1232
  if (primaryColumns.length > 0) {
1167
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
1233
+ const pkName = primaryColumns[0].primaryKeyConstraintName
1234
+ ? primaryColumns[0].primaryKeyConstraintName
1235
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
1168
1236
  const columnNamesString = primaryColumns
1169
1237
  .map((column) => `"${column.name}"`)
1170
1238
  .join(", ");
@@ -1175,7 +1243,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
1175
1243
  clonedTable.columns
1176
1244
  .filter((column) => columnNames.indexOf(column.name) !== -1)
1177
1245
  .forEach((column) => (column.isPrimary = true));
1178
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
1246
+ const pkName = primaryColumns[0].primaryKeyConstraintName
1247
+ ? primaryColumns[0].primaryKeyConstraintName
1248
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
1179
1249
  const columnNamesString = columnNames
1180
1250
  .map((columnName) => `"${columnName}"`)
1181
1251
  .join(", ");
@@ -1187,12 +1257,12 @@ export class PostgresQueryRunner extends BaseQueryRunner {
1187
1257
  /**
1188
1258
  * Drops a primary key.
1189
1259
  */
1190
- async dropPrimaryKey(tableOrName) {
1260
+ async dropPrimaryKey(tableOrName, constraintName) {
1191
1261
  const table = InstanceChecker.isTable(tableOrName)
1192
1262
  ? tableOrName
1193
1263
  : await this.getCachedTable(tableOrName);
1194
1264
  const up = this.dropPrimaryKeySql(table);
1195
- const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name));
1265
+ const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name), constraintName);
1196
1266
  await this.executeQueries(up, down);
1197
1267
  table.primaryColumns.forEach((column) => {
1198
1268
  column.isPrimary = false;
@@ -1814,7 +1884,30 @@ export class PostgresQueryRunner extends BaseQueryRunner {
1814
1884
  }
1815
1885
  tableColumn.isNullable =
1816
1886
  dbColumn["is_nullable"] === "YES";
1817
- tableColumn.isPrimary = !!columnConstraints.find((constraint) => constraint["constraint_type"] === "PRIMARY");
1887
+ const primaryConstraint = columnConstraints.find((constraint) => constraint["constraint_type"] === "PRIMARY");
1888
+ if (primaryConstraint) {
1889
+ tableColumn.isPrimary = true;
1890
+ // find another columns involved in primary key constraint
1891
+ const anotherPrimaryConstraints = dbConstraints.filter((constraint) => constraint["table_name"] ===
1892
+ dbColumn["table_name"] &&
1893
+ constraint["table_schema"] ===
1894
+ dbColumn["table_schema"] &&
1895
+ constraint["column_name"] !==
1896
+ dbColumn["column_name"] &&
1897
+ constraint["constraint_type"] ===
1898
+ "PRIMARY");
1899
+ // collect all column names
1900
+ const columnNames = anotherPrimaryConstraints.map((constraint) => constraint["column_name"]);
1901
+ columnNames.push(dbColumn["column_name"]);
1902
+ // build default primary key constraint name
1903
+ const pkName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
1904
+ // if primary key has user-defined constraint name, write it in table column
1905
+ if (primaryConstraint["constraint_name"] !==
1906
+ pkName) {
1907
+ tableColumn.primaryKeyConstraintName =
1908
+ primaryConstraint["constraint_name"];
1909
+ }
1910
+ }
1818
1911
  const uniqueConstraints = columnConstraints.filter((constraint) => constraint["constraint_type"] === "UNIQUE");
1819
1912
  const isConstraintComposite = uniqueConstraints.every((uniqueConstraint) => {
1820
1913
  return dbConstraints.some((dbConstraint) => dbConstraint["constraint_type"] ===
@@ -1867,13 +1960,14 @@ export class PostgresQueryRunner extends BaseQueryRunner {
1867
1960
  // In postgres there is no VIRTUAL generated column type
1868
1961
  tableColumn.generatedType = "STORED";
1869
1962
  // We cannot relay on information_schema.columns.generation_expression, because it is formatted different.
1870
- const asExpressionQuery = `SELECT * FROM "${this.connection.metadataTableName}" ` +
1871
- ` WHERE "table" = '${dbTable["table_name"]}'` +
1872
- ` AND "name" = '${tableColumn.name}'` +
1873
- ` AND "schema" = '${dbTable["table_schema"]}'` +
1874
- ` AND "database" = '${this.driver.database}'` +
1875
- ` AND "type" = '${MetadataTableType.GENERATED_COLUMN}'`;
1876
- const results = await this.query(asExpressionQuery);
1963
+ const asExpressionQuery = await this.selectTypeormMetadataSql({
1964
+ database: currentDatabase,
1965
+ schema: dbTable["table_schema"],
1966
+ table: dbTable["table_name"],
1967
+ type: MetadataTableType.GENERATED_COLUMN,
1968
+ name: tableColumn.name,
1969
+ });
1970
+ const results = await this.query(asExpressionQuery.query, asExpressionQuery.parameters);
1877
1971
  if (results[0] && results[0].value) {
1878
1972
  tableColumn.asExpression = results[0].value;
1879
1973
  }
@@ -2077,7 +2171,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
2077
2171
  }
2078
2172
  const primaryColumns = table.columns.filter((column) => column.isPrimary);
2079
2173
  if (primaryColumns.length > 0) {
2080
- const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
2174
+ const primaryKeyName = primaryColumns[0].primaryKeyConstraintName
2175
+ ? primaryColumns[0].primaryKeyConstraintName
2176
+ : this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
2081
2177
  const columnNames = primaryColumns
2082
2178
  .map((column) => `"${column.name}"`)
2083
2179
  .join(", ");
@@ -2223,8 +2319,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
2223
2319
  /**
2224
2320
  * Builds create primary key sql.
2225
2321
  */
2226
- createPrimaryKeySql(table, columnNames) {
2227
- const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
2322
+ createPrimaryKeySql(table, columnNames, constraintName) {
2323
+ const primaryKeyName = constraintName
2324
+ ? constraintName
2325
+ : this.connection.namingStrategy.primaryKeyName(table, columnNames);
2228
2326
  const columnNamesString = columnNames
2229
2327
  .map((columnName) => `"${columnName}"`)
2230
2328
  .join(", ");
@@ -2234,8 +2332,13 @@ export class PostgresQueryRunner extends BaseQueryRunner {
2234
2332
  * Builds drop primary key sql.
2235
2333
  */
2236
2334
  dropPrimaryKeySql(table) {
2335
+ if (!table.primaryColumns.length)
2336
+ throw new TypeORMError(`Table ${table} has no primary keys.`);
2237
2337
  const columnNames = table.primaryColumns.map((column) => column.name);
2238
- const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
2338
+ const constraintName = table.primaryColumns[0].primaryKeyConstraintName;
2339
+ const primaryKeyName = constraintName
2340
+ ? constraintName
2341
+ : this.connection.namingStrategy.primaryKeyName(table, columnNames);
2239
2342
  return new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${primaryKeyName}"`);
2240
2343
  }
2241
2344
  /**
@@ -2446,25 +2549,22 @@ export class PostgresQueryRunner extends BaseQueryRunner {
2446
2549
  else if (!column.isGenerated || column.type === "uuid") {
2447
2550
  c += " " + this.connection.driver.createFullType(column);
2448
2551
  }
2449
- // CHARACTER SET, COLLATE, NOT NULL and DEFAULT do not exist on generated (virtual) columns
2450
- // Also, postgres only supports the stored generated column type
2552
+ // Postgres only supports the stored generated column type
2451
2553
  if (column.generatedType === "STORED" && column.asExpression) {
2452
2554
  c += ` GENERATED ALWAYS AS (${column.asExpression}) STORED`;
2453
2555
  }
2454
- else {
2455
- if (column.charset)
2456
- c += ' CHARACTER SET "' + column.charset + '"';
2457
- if (column.collation)
2458
- c += ' COLLATE "' + column.collation + '"';
2459
- if (column.isNullable !== true)
2460
- c += " NOT NULL";
2461
- if (column.default !== undefined && column.default !== null)
2462
- c += " DEFAULT " + column.default;
2463
- if (column.isGenerated &&
2464
- column.generationStrategy === "uuid" &&
2465
- !column.default)
2466
- c += ` DEFAULT ${this.driver.uuidGenerator}`;
2467
- }
2556
+ if (column.charset)
2557
+ c += ' CHARACTER SET "' + column.charset + '"';
2558
+ if (column.collation)
2559
+ c += ' COLLATE "' + column.collation + '"';
2560
+ if (column.isNullable !== true)
2561
+ c += " NOT NULL";
2562
+ if (column.default !== undefined && column.default !== null)
2563
+ c += " DEFAULT " + column.default;
2564
+ if (column.isGenerated &&
2565
+ column.generationStrategy === "uuid" &&
2566
+ !column.default)
2567
+ c += ` DEFAULT ${this.driver.uuidGenerator}`;
2468
2568
  return c;
2469
2569
  }
2470
2570
  /**