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
@@ -457,6 +457,31 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
457
457
  downQueries.push(this.dropIndexSql(table, index));
458
458
  });
459
459
  }
460
+ // if table have column with generated type, we must add the expression to the metadata table
461
+ const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
462
+ for (const column of generatedColumns) {
463
+ const parsedTableName = this.driver.parseTableName(table);
464
+ if (!parsedTableName.schema) {
465
+ parsedTableName.schema = await this.getCurrentSchema();
466
+ }
467
+ const insertQuery = this.insertTypeormMetadataSql({
468
+ database: parsedTableName.database,
469
+ schema: parsedTableName.schema,
470
+ table: parsedTableName.tableName,
471
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
472
+ name: column.name,
473
+ value: column.asExpression,
474
+ });
475
+ const deleteQuery = this.deleteTypeormMetadataSql({
476
+ database: parsedTableName.database,
477
+ schema: parsedTableName.schema,
478
+ table: parsedTableName.tableName,
479
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
480
+ name: column.name,
481
+ });
482
+ upQueries.push(insertQuery);
483
+ downQueries.push(deleteQuery);
484
+ }
460
485
  await this.executeQueries(upQueries, downQueries);
461
486
  }
462
487
  /**
@@ -489,6 +514,31 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
489
514
  table.foreignKeys.forEach((foreignKey) => upQueries.push(this.dropForeignKeySql(table, foreignKey)));
490
515
  upQueries.push(this.dropTableSql(table));
491
516
  downQueries.push(this.createTableSql(table, createForeignKeys));
517
+ // if table had columns with generated type, we must remove the expression from the metadata table
518
+ const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
519
+ for (const column of generatedColumns) {
520
+ const parsedTableName = this.driver.parseTableName(table);
521
+ if (!parsedTableName.schema) {
522
+ parsedTableName.schema = await this.getCurrentSchema();
523
+ }
524
+ const deleteQuery = this.deleteTypeormMetadataSql({
525
+ database: parsedTableName.database,
526
+ schema: parsedTableName.schema,
527
+ table: parsedTableName.tableName,
528
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
529
+ name: column.name,
530
+ });
531
+ const insertQuery = this.insertTypeormMetadataSql({
532
+ database: parsedTableName.database,
533
+ schema: parsedTableName.schema,
534
+ table: parsedTableName.tableName,
535
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
536
+ name: column.name,
537
+ value: column.asExpression,
538
+ });
539
+ upQueries.push(deleteQuery);
540
+ downQueries.push(insertQuery);
541
+ }
492
542
  await this.executeQueries(upQueries, downQueries);
493
543
  }
494
544
  /**
@@ -554,7 +604,8 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
554
604
  upQueries.push(new Query_1.Query(`EXEC sp_rename "${this.getTablePath(oldTable)}", "${newTableName}"`));
555
605
  downQueries.push(new Query_1.Query(`EXEC sp_rename "${this.getTablePath(newTable)}", "${oldTableName}"`));
556
606
  // rename primary key constraint
557
- if (newTable.primaryColumns.length > 0) {
607
+ if (newTable.primaryColumns.length > 0 &&
608
+ !newTable.primaryColumns[0].primaryKeyConstraintName) {
558
609
  const columnNames = newTable.primaryColumns.map((column) => column.name);
559
610
  const oldPkName = this.connection.namingStrategy.primaryKeyName(oldTable, columnNames);
560
611
  const newPkName = this.connection.namingStrategy.primaryKeyName(newTable, columnNames);
@@ -564,6 +615,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
564
615
  }
565
616
  // rename unique constraints
566
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;
567
622
  // build new constraint name
568
623
  const newUniqueName = this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames);
569
624
  // build queries
@@ -574,6 +629,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
574
629
  });
575
630
  // rename index constraints
576
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;
577
636
  // build new constraint name
578
637
  const newIndexName = this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);
579
638
  // build queries
@@ -584,6 +643,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
584
643
  });
585
644
  // rename foreign key constraints
586
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;
587
650
  // build new constraint name
588
651
  const newForeignKeyName = this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
589
652
  // build queries
@@ -619,7 +682,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
619
682
  const primaryColumns = clonedTable.primaryColumns;
620
683
  // if table already have primary key, me must drop it and recreate again
621
684
  if (primaryColumns.length > 0) {
622
- 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));
623
688
  const columnNames = primaryColumns
624
689
  .map((column) => `"${column.name}"`)
625
690
  .join(", ");
@@ -627,7 +692,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
627
692
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${pkName}" PRIMARY KEY (${columnNames})`));
628
693
  }
629
694
  primaryColumns.push(column);
630
- 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));
631
698
  const columnNames = primaryColumns
632
699
  .map((column) => `"${column.name}"`)
633
700
  .join(", ");
@@ -656,6 +723,29 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
656
723
  const defaultName = this.connection.namingStrategy.defaultConstraintName(table, column.name);
657
724
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${defaultName}"`));
658
725
  }
726
+ if (column.generatedType && column.asExpression) {
727
+ const parsedTableName = this.driver.parseTableName(table);
728
+ if (!parsedTableName.schema) {
729
+ parsedTableName.schema = await this.getCurrentSchema();
730
+ }
731
+ const insertQuery = this.insertTypeormMetadataSql({
732
+ database: parsedTableName.database,
733
+ schema: parsedTableName.schema,
734
+ table: parsedTableName.tableName,
735
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
736
+ name: column.name,
737
+ value: column.asExpression,
738
+ });
739
+ const deleteQuery = this.deleteTypeormMetadataSql({
740
+ database: parsedTableName.database,
741
+ schema: parsedTableName.schema,
742
+ table: parsedTableName.tableName,
743
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
744
+ name: column.name,
745
+ });
746
+ upQueries.push(insertQuery);
747
+ downQueries.push(deleteQuery);
748
+ }
659
749
  await this.executeQueries(upQueries, downQueries);
660
750
  clonedTable.addColumn(column);
661
751
  this.replaceCachedTable(table, clonedTable);
@@ -708,7 +798,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
708
798
  if ((newColumn.isGenerated !== oldColumn.isGenerated &&
709
799
  newColumn.generationStrategy !== "uuid") ||
710
800
  newColumn.type !== oldColumn.type ||
711
- newColumn.length !== oldColumn.length) {
801
+ newColumn.length !== oldColumn.length ||
802
+ newColumn.asExpression !== oldColumn.asExpression ||
803
+ newColumn.generatedType !== oldColumn.generatedType) {
712
804
  // SQL Server does not support changing of IDENTITY column, so we must drop column and recreate it again.
713
805
  // Also, we recreate column if column type changed
714
806
  await this.dropColumn(table, oldColumn);
@@ -740,7 +832,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
740
832
  // rename the column
741
833
  upQueries.push(new Query_1.Query(`EXEC sp_rename "${this.getTablePath(table)}.${oldColumn.name}", "${newColumn.name}"`));
742
834
  downQueries.push(new Query_1.Query(`EXEC sp_rename "${this.getTablePath(table)}.${newColumn.name}", "${oldColumn.name}"`));
743
- if (oldColumn.isPrimary === true) {
835
+ // rename column primary key constraint
836
+ if (oldColumn.isPrimary === true &&
837
+ !oldColumn.primaryKeyConstraintName) {
744
838
  const primaryColumns = clonedTable.primaryColumns;
745
839
  // build old primary constraint name
746
840
  const columnNames = primaryColumns.map((column) => column.name);
@@ -756,6 +850,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
756
850
  }
757
851
  // rename index constraints
758
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;
759
857
  // build new constraint name
760
858
  index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);
761
859
  index.columnNames.push(newColumn.name);
@@ -770,6 +868,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
770
868
  clonedTable
771
869
  .findColumnForeignKeys(oldColumn)
772
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;
773
875
  // build new constraint name
774
876
  foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);
775
877
  foreignKey.columnNames.push(newColumn.name);
@@ -794,6 +896,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
794
896
  });
795
897
  // rename unique constraints
796
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;
797
903
  // build new constraint name
798
904
  unique.columnNames.splice(unique.columnNames.indexOf(oldColumn.name), 1);
799
905
  unique.columnNames.push(newColumn.name);
@@ -832,7 +938,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
832
938
  const primaryColumns = clonedTable.primaryColumns;
833
939
  // if primary column state changed, we must always drop existed constraint.
834
940
  if (primaryColumns.length > 0) {
835
- 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));
836
944
  const columnNames = primaryColumns
837
945
  .map((column) => `"${column.name}"`)
838
946
  .join(", ");
@@ -844,7 +952,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
844
952
  // update column in table
845
953
  const column = clonedTable.columns.find((column) => column.name === newColumn.name);
846
954
  column.isPrimary = true;
847
- 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));
848
958
  const columnNames = primaryColumns
849
959
  .map((column) => `"${column.name}"`)
850
960
  .join(", ");
@@ -859,7 +969,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
859
969
  column.isPrimary = false;
860
970
  // if we have another primary keys, we must recreate constraint.
861
971
  if (primaryColumns.length > 0) {
862
- 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));
863
976
  const columnNames = primaryColumns
864
977
  .map((column) => `"${column.name}"`)
865
978
  .join(", ");
@@ -932,7 +1045,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
932
1045
  const downQueries = [];
933
1046
  // drop primary key constraint
934
1047
  if (column.isPrimary) {
935
- 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));
936
1051
  const columnNames = clonedTable.primaryColumns
937
1052
  .map((primaryColumn) => `"${primaryColumn.name}"`)
938
1053
  .join(", ");
@@ -943,7 +1058,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
943
1058
  tableColumn.isPrimary = false;
944
1059
  // if primary key have multiple columns, we must recreate it without dropped column
945
1060
  if (clonedTable.primaryColumns.length > 0) {
946
- 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));
947
1065
  const columnNames = clonedTable.primaryColumns
948
1066
  .map((primaryColumn) => `"${primaryColumn.name}"`)
949
1067
  .join(", ");
@@ -982,6 +1100,29 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
982
1100
  upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${defaultName}"`));
983
1101
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${defaultName}" DEFAULT ${column.default} FOR "${column.name}"`));
984
1102
  }
1103
+ if (column.generatedType && column.asExpression) {
1104
+ const parsedTableName = this.driver.parseTableName(table);
1105
+ if (!parsedTableName.schema) {
1106
+ parsedTableName.schema = await this.getCurrentSchema();
1107
+ }
1108
+ const deleteQuery = this.deleteTypeormMetadataSql({
1109
+ database: parsedTableName.database,
1110
+ schema: parsedTableName.schema,
1111
+ table: parsedTableName.tableName,
1112
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
1113
+ name: column.name,
1114
+ });
1115
+ const insertQuery = this.insertTypeormMetadataSql({
1116
+ database: parsedTableName.database,
1117
+ schema: parsedTableName.schema,
1118
+ table: parsedTableName.tableName,
1119
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
1120
+ name: column.name,
1121
+ value: column.asExpression,
1122
+ });
1123
+ upQueries.push(deleteQuery);
1124
+ downQueries.push(insertQuery);
1125
+ }
985
1126
  upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP COLUMN "${column.name}"`));
986
1127
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD ${this.buildCreateColumnSql(table, column, false, false)}`));
987
1128
  await this.executeQueries(upQueries, downQueries);
@@ -999,12 +1140,12 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
999
1140
  /**
1000
1141
  * Creates a new primary key.
1001
1142
  */
1002
- async createPrimaryKey(tableOrName, columnNames) {
1143
+ async createPrimaryKey(tableOrName, columnNames, constraintName) {
1003
1144
  const table = InstanceChecker_1.InstanceChecker.isTable(tableOrName)
1004
1145
  ? tableOrName
1005
1146
  : await this.getCachedTable(tableOrName);
1006
1147
  const clonedTable = table.clone();
1007
- const up = this.createPrimaryKeySql(table, columnNames);
1148
+ const up = this.createPrimaryKeySql(table, columnNames, constraintName);
1008
1149
  // mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.
1009
1150
  clonedTable.columns.forEach((column) => {
1010
1151
  if (columnNames.find((columnName) => columnName === column.name))
@@ -1028,7 +1169,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1028
1169
  // if table already have primary columns, we must drop them.
1029
1170
  const primaryColumns = clonedTable.primaryColumns;
1030
1171
  if (primaryColumns.length > 0) {
1031
- 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));
1032
1175
  const columnNamesString = primaryColumns
1033
1176
  .map((column) => `"${column.name}"`)
1034
1177
  .join(", ");
@@ -1039,7 +1182,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1039
1182
  clonedTable.columns
1040
1183
  .filter((column) => columnNames.indexOf(column.name) !== -1)
1041
1184
  .forEach((column) => (column.isPrimary = true));
1042
- 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);
1043
1188
  const columnNamesString = columnNames
1044
1189
  .map((columnName) => `"${columnName}"`)
1045
1190
  .join(", ");
@@ -1051,12 +1196,12 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1051
1196
  /**
1052
1197
  * Drops a primary key.
1053
1198
  */
1054
- async dropPrimaryKey(tableOrName) {
1199
+ async dropPrimaryKey(tableOrName, constraintName) {
1055
1200
  const table = InstanceChecker_1.InstanceChecker.isTable(tableOrName)
1056
1201
  ? tableOrName
1057
1202
  : await this.getCachedTable(tableOrName);
1058
1203
  const up = this.dropPrimaryKeySql(table);
1059
- const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name));
1204
+ const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name), constraintName);
1060
1205
  await this.executeQueries(up, down);
1061
1206
  table.primaryColumns.forEach((column) => {
1062
1207
  column.isPrimary = false;
@@ -1430,12 +1575,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1430
1575
  const currentDatabase = await this.getCurrentDatabase();
1431
1576
  const dbTables = [];
1432
1577
  if (!tableNames) {
1433
- const databasesSql = `
1434
- SELECT DISTINCT
1435
- "name"
1436
- FROM "master"."dbo"."sysdatabases"
1437
- WHERE "name" NOT IN ('master', 'model', 'msdb')
1438
- `;
1578
+ const databasesSql = `SELECT DISTINCT "name" ` +
1579
+ `FROM "master"."dbo"."sysdatabases" ` +
1580
+ `WHERE "name" NOT IN ('master', 'model', 'msdb')`;
1439
1581
  const dbDatabases = await this.query(databasesSql);
1440
1582
  const tablesSql = dbDatabases
1441
1583
  .map(({ name }) => {
@@ -1500,7 +1642,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1500
1642
  const condition = tables
1501
1643
  .map(({ TABLE_SCHEMA, TABLE_NAME }) => `("TABLE_SCHEMA" = '${TABLE_SCHEMA}' AND "TABLE_NAME" = '${TABLE_NAME}')`)
1502
1644
  .join("OR");
1503
- return `SELECT * FROM "${TABLE_CATALOG}"."INFORMATION_SCHEMA"."COLUMNS" WHERE (${condition})`;
1645
+ return (`SELECT "COLUMNS".*, "cc"."is_persisted", "cc"."definition" ` +
1646
+ `FROM "${TABLE_CATALOG}"."INFORMATION_SCHEMA"."COLUMNS" ` +
1647
+ `LEFT JOIN "sys"."computed_columns" "cc" ON COL_NAME("cc"."object_id", "cc"."column_id") = "column_name" ` +
1648
+ `WHERE (${condition})`);
1504
1649
  })
1505
1650
  .join(" UNION ALL ");
1506
1651
  const constraintsSql = Object.entries(dbTablesByCatalog)
@@ -1600,13 +1745,14 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1600
1745
  table.name = this.driver.buildTableName(dbTable["TABLE_NAME"], schema, db);
1601
1746
  const defaultCollation = dbCollations.find((dbCollation) => dbCollation["NAME"] === dbTable["TABLE_CATALOG"]);
1602
1747
  // create columns from the loaded columns
1603
- table.columns = dbColumns
1604
- .filter((dbColumn) => dbColumn["TABLE_NAME"] === dbTable["TABLE_NAME"] &&
1748
+ table.columns = await Promise.all(dbColumns
1749
+ .filter((dbColumn) => dbColumn["TABLE_NAME"] ===
1750
+ dbTable["TABLE_NAME"] &&
1605
1751
  dbColumn["TABLE_SCHEMA"] ===
1606
1752
  dbTable["TABLE_SCHEMA"] &&
1607
1753
  dbColumn["TABLE_CATALOG"] ===
1608
1754
  dbTable["TABLE_CATALOG"])
1609
- .map((dbColumn) => {
1755
+ .map(async (dbColumn) => {
1610
1756
  const columnConstraints = dbConstraints.filter((dbConstraint) => dbConstraint["TABLE_NAME"] ===
1611
1757
  dbColumn["TABLE_NAME"] &&
1612
1758
  dbConstraint["TABLE_SCHEMA"] ===
@@ -1628,7 +1774,6 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1628
1774
  dbConstraint["COLUMN_NAME"] !==
1629
1775
  dbColumn["COLUMN_NAME"]);
1630
1776
  });
1631
- const isPrimary = !!columnConstraints.find((constraint) => constraint["CONSTRAINT_TYPE"] === "PRIMARY KEY");
1632
1777
  const isGenerated = !!dbIdentityColumns.find((column) => column["TABLE_NAME"] ===
1633
1778
  dbColumn["TABLE_NAME"] &&
1634
1779
  column["TABLE_SCHEMA"] ===
@@ -1639,7 +1784,8 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1639
1784
  dbColumn["COLUMN_NAME"]);
1640
1785
  const tableColumn = new TableColumn_1.TableColumn();
1641
1786
  tableColumn.name = dbColumn["COLUMN_NAME"];
1642
- tableColumn.type = dbColumn["DATA_TYPE"].toLowerCase();
1787
+ tableColumn.type =
1788
+ dbColumn["DATA_TYPE"].toLowerCase();
1643
1789
  // check only columns that have length property
1644
1790
  if (this.driver.withLengthColumnTypes.indexOf(tableColumn.type) !== -1 &&
1645
1791
  dbColumn["CHARACTER_MAXIMUM_LENGTH"]) {
@@ -1662,7 +1808,8 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1662
1808
  dbColumn["NUMERIC_PRECISION"];
1663
1809
  if (dbColumn["NUMERIC_SCALE"] !== null &&
1664
1810
  !this.isDefaultColumnScale(table, tableColumn, dbColumn["NUMERIC_SCALE"]))
1665
- tableColumn.scale = dbColumn["NUMERIC_SCALE"];
1811
+ tableColumn.scale =
1812
+ dbColumn["NUMERIC_SCALE"];
1666
1813
  }
1667
1814
  if (tableColumn.type === "nvarchar") {
1668
1815
  // Check if this is an enum
@@ -1687,6 +1834,33 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1687
1834
  }
1688
1835
  }
1689
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
+ }
1690
1864
  tableColumn.default =
1691
1865
  dbColumn["COLUMN_DEFAULT"] !== null &&
1692
1866
  dbColumn["COLUMN_DEFAULT"] !== undefined
@@ -1694,7 +1868,6 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1694
1868
  : undefined;
1695
1869
  tableColumn.isNullable =
1696
1870
  dbColumn["IS_NULLABLE"] === "YES";
1697
- tableColumn.isPrimary = isPrimary;
1698
1871
  tableColumn.isUnique =
1699
1872
  uniqueConstraints.length > 0 &&
1700
1873
  !isConstraintComposite;
@@ -1722,8 +1895,31 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1722
1895
  ? dbColumn["DATETIME_PRECISION"]
1723
1896
  : undefined;
1724
1897
  }
1898
+ if (dbColumn["is_persisted"] !== null &&
1899
+ dbColumn["is_persisted"] !== undefined &&
1900
+ dbColumn["definition"]) {
1901
+ tableColumn.generatedType =
1902
+ dbColumn["is_persisted"] === true
1903
+ ? "STORED"
1904
+ : "VIRTUAL";
1905
+ // We cannot relay on information_schema.columns.generation_expression, because it is formatted different.
1906
+ const asExpressionQuery = await this.selectTypeormMetadataSql({
1907
+ database: dbTable["TABLE_CATALOG"],
1908
+ schema: dbTable["TABLE_SCHEMA"],
1909
+ table: dbTable["TABLE_NAME"],
1910
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
1911
+ name: tableColumn.name,
1912
+ });
1913
+ const results = await this.query(asExpressionQuery.query, asExpressionQuery.parameters);
1914
+ if (results[0] && results[0].value) {
1915
+ tableColumn.asExpression = results[0].value;
1916
+ }
1917
+ else {
1918
+ tableColumn.asExpression = "";
1919
+ }
1920
+ }
1725
1921
  return tableColumn;
1726
- });
1922
+ }));
1727
1923
  // find unique constraints of table, group them by constraint name and build TableUnique.
1728
1924
  const tableUniqueConstraints = OrmUtils_1.OrmUtils.uniq(dbConstraints.filter((dbConstraint) => dbConstraint["TABLE_NAME"] ===
1729
1925
  dbTable["TABLE_NAME"] &&
@@ -1878,7 +2074,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1878
2074
  }
1879
2075
  const primaryColumns = table.columns.filter((column) => column.isPrimary);
1880
2076
  if (primaryColumns.length > 0) {
1881
- 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));
1882
2080
  const columnNames = primaryColumns
1883
2081
  .map((column) => `"${column.name}"`)
1884
2082
  .join(", ");
@@ -1969,8 +2167,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1969
2167
  /**
1970
2168
  * Builds create primary key sql.
1971
2169
  */
1972
- createPrimaryKeySql(table, columnNames) {
1973
- 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);
1974
2174
  const columnNamesString = columnNames
1975
2175
  .map((columnName) => `"${columnName}"`)
1976
2176
  .join(", ");
@@ -1981,7 +2181,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1981
2181
  */
1982
2182
  dropPrimaryKeySql(table) {
1983
2183
  const columnNames = table.primaryColumns.map((column) => column.name);
1984
- 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);
1985
2188
  return new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${primaryKeyName}"`);
1986
2189
  }
1987
2190
  /**
@@ -2100,8 +2303,19 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
2100
2303
  }
2101
2304
  if (column.collation)
2102
2305
  c += " COLLATE " + column.collation;
2103
- if (column.isNullable !== true)
2104
- c += " NOT NULL";
2306
+ if (column.asExpression) {
2307
+ c += ` AS (${column.asExpression})`;
2308
+ if (column.generatedType === "STORED") {
2309
+ c += ` PERSISTED`;
2310
+ // NOT NULL can be specified for computed columns only if PERSISTED is also specified
2311
+ if (column.isNullable !== true)
2312
+ c += " NOT NULL";
2313
+ }
2314
+ }
2315
+ else {
2316
+ if (column.isNullable !== true)
2317
+ c += " NOT NULL";
2318
+ }
2105
2319
  if (column.isGenerated === true &&
2106
2320
  column.generationStrategy === "increment" &&
2107
2321
  !skipIdentity)