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
@@ -349,6 +349,23 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
349
349
  downQueries.push(this.dropIndexSql(index));
350
350
  });
351
351
  }
352
+ // if table have column with generated type, we must add the expression to the metadata table
353
+ const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
354
+ for (const column of generatedColumns) {
355
+ const insertQuery = this.insertTypeormMetadataSql({
356
+ table: table.name,
357
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
358
+ name: column.name,
359
+ value: column.asExpression,
360
+ });
361
+ const deleteQuery = this.deleteTypeormMetadataSql({
362
+ table: table.name,
363
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
364
+ name: column.name,
365
+ });
366
+ upQueries.push(insertQuery);
367
+ downQueries.push(deleteQuery);
368
+ }
352
369
  await this.executeQueries(upQueries, downQueries);
353
370
  }
354
371
  /**
@@ -381,6 +398,23 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
381
398
  table.foreignKeys.forEach((foreignKey) => upQueries.push(this.dropForeignKeySql(table, foreignKey)));
382
399
  upQueries.push(this.dropTableSql(table));
383
400
  downQueries.push(this.createTableSql(table, createForeignKeys));
401
+ // if table had columns with generated type, we must remove the expression from the metadata table
402
+ const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
403
+ for (const column of generatedColumns) {
404
+ const deleteQuery = this.deleteTypeormMetadataSql({
405
+ table: table.name,
406
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
407
+ name: column.name,
408
+ });
409
+ const insertQuery = this.insertTypeormMetadataSql({
410
+ table: table.name,
411
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
412
+ name: column.name,
413
+ value: column.asExpression,
414
+ });
415
+ upQueries.push(deleteQuery);
416
+ downQueries.push(insertQuery);
417
+ }
384
418
  await this.executeQueries(upQueries, downQueries);
385
419
  }
386
420
  /**
@@ -425,7 +459,8 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
425
459
  upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(oldTable)} RENAME TO "${newTableName}"`));
426
460
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(newTable)} RENAME TO "${oldTableName}"`));
427
461
  // rename primary key constraint
428
- if (newTable.primaryColumns.length > 0) {
462
+ if (newTable.primaryColumns.length > 0 &&
463
+ !newTable.primaryColumns[0].primaryKeyConstraintName) {
429
464
  const columnNames = newTable.primaryColumns.map((column) => column.name);
430
465
  const oldPkName = this.connection.namingStrategy.primaryKeyName(oldTable, columnNames);
431
466
  const newPkName = this.connection.namingStrategy.primaryKeyName(newTable, columnNames);
@@ -435,6 +470,10 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
435
470
  }
436
471
  // rename unique constraints
437
472
  newTable.uniques.forEach((unique) => {
473
+ const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(oldTable, unique.columnNames);
474
+ // Skip renaming if Unique has user defined constraint name
475
+ if (unique.name !== oldUniqueName)
476
+ return;
438
477
  // build new constraint name
439
478
  const newUniqueName = this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames);
440
479
  // build queries
@@ -445,6 +484,10 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
445
484
  });
446
485
  // rename index constraints
447
486
  newTable.indices.forEach((index) => {
487
+ const oldIndexName = this.connection.namingStrategy.indexName(oldTable, index.columnNames, index.where);
488
+ // Skip renaming if Index has user defined constraint name
489
+ if (index.name !== oldIndexName)
490
+ return;
448
491
  // build new constraint name
449
492
  const newIndexName = this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);
450
493
  // build queries
@@ -455,6 +498,10 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
455
498
  });
456
499
  // rename foreign key constraints
457
500
  newTable.foreignKeys.forEach((foreignKey) => {
501
+ const oldForeignKeyName = this.connection.namingStrategy.foreignKeyName(oldTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
502
+ // Skip renaming if foreign key has user defined constraint name
503
+ if (foreignKey.name !== oldForeignKeyName)
504
+ return;
458
505
  // build new constraint name
459
506
  const newForeignKeyName = this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
460
507
  // build queries
@@ -485,7 +532,9 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
485
532
  const primaryColumns = clonedTable.primaryColumns;
486
533
  // if table already have primary key, me must drop it and recreate again
487
534
  if (primaryColumns.length > 0) {
488
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
535
+ const pkName = primaryColumns[0].primaryKeyConstraintName
536
+ ? primaryColumns[0].primaryKeyConstraintName
537
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
489
538
  const columnNames = primaryColumns
490
539
  .map((column) => `"${column.name}"`)
491
540
  .join(", ");
@@ -493,7 +542,9 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
493
542
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${pkName}" PRIMARY KEY (${columnNames})`));
494
543
  }
495
544
  primaryColumns.push(column);
496
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
545
+ const pkName = primaryColumns[0].primaryKeyConstraintName
546
+ ? primaryColumns[0].primaryKeyConstraintName
547
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
497
548
  const columnNames = primaryColumns
498
549
  .map((column) => `"${column.name}"`)
499
550
  .join(", ");
@@ -518,6 +569,21 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
518
569
  upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${uniqueConstraint.name}" UNIQUE ("${column.name}")`));
519
570
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${uniqueConstraint.name}"`));
520
571
  }
572
+ if (column.generatedType && column.asExpression) {
573
+ const insertQuery = this.insertTypeormMetadataSql({
574
+ table: table.name,
575
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
576
+ name: column.name,
577
+ value: column.asExpression,
578
+ });
579
+ const deleteQuery = this.deleteTypeormMetadataSql({
580
+ table: table.name,
581
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
582
+ name: column.name,
583
+ });
584
+ upQueries.push(insertQuery);
585
+ downQueries.push(deleteQuery);
586
+ }
521
587
  await this.executeQueries(upQueries, downQueries);
522
588
  clonedTable.addColumn(column);
523
589
  this.replaceCachedTable(table, clonedTable);
@@ -570,7 +636,9 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
570
636
  if ((newColumn.isGenerated !== oldColumn.isGenerated &&
571
637
  newColumn.generationStrategy !== "uuid") ||
572
638
  oldColumn.type !== newColumn.type ||
573
- oldColumn.length !== newColumn.length) {
639
+ oldColumn.length !== newColumn.length ||
640
+ oldColumn.generatedType !== newColumn.generatedType ||
641
+ oldColumn.asExpression !== newColumn.asExpression) {
574
642
  // Oracle does not support changing of IDENTITY column, so we must drop column and recreate it again.
575
643
  // Also, we recreate column if column type changed
576
644
  await this.dropColumn(table, oldColumn);
@@ -584,7 +652,8 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
584
652
  upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} RENAME COLUMN "${oldColumn.name}" TO "${newColumn.name}"`));
585
653
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} RENAME COLUMN "${newColumn.name}" TO "${oldColumn.name}"`));
586
654
  // rename column primary key constraint
587
- if (oldColumn.isPrimary === true) {
655
+ if (oldColumn.isPrimary === true &&
656
+ !oldColumn.primaryKeyConstraintName) {
588
657
  const primaryColumns = clonedTable.primaryColumns;
589
658
  // build old primary constraint name
590
659
  const columnNames = primaryColumns.map((column) => column.name);
@@ -599,6 +668,10 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
599
668
  }
600
669
  // rename unique constraints
601
670
  clonedTable.findColumnUniques(oldColumn).forEach((unique) => {
671
+ const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(clonedTable, unique.columnNames);
672
+ // Skip renaming if Unique has user defined constraint name
673
+ if (unique.name !== oldUniqueName)
674
+ return;
602
675
  // build new constraint name
603
676
  unique.columnNames.splice(unique.columnNames.indexOf(oldColumn.name), 1);
604
677
  unique.columnNames.push(newColumn.name);
@@ -611,6 +684,10 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
611
684
  });
612
685
  // rename index constraints
613
686
  clonedTable.findColumnIndices(oldColumn).forEach((index) => {
687
+ const oldIndexName = this.connection.namingStrategy.indexName(clonedTable, index.columnNames, index.where);
688
+ // Skip renaming if Index has user defined constraint name
689
+ if (index.name !== oldIndexName)
690
+ return;
614
691
  // build new constraint name
615
692
  index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);
616
693
  index.columnNames.push(newColumn.name);
@@ -625,6 +702,10 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
625
702
  clonedTable
626
703
  .findColumnForeignKeys(oldColumn)
627
704
  .forEach((foreignKey) => {
705
+ const foreignKeyName = this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
706
+ // Skip renaming if foreign key has user defined constraint name
707
+ if (foreignKey.name !== foreignKeyName)
708
+ return;
628
709
  // build new constraint name
629
710
  foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);
630
711
  foreignKey.columnNames.push(newColumn.name);
@@ -680,7 +761,9 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
680
761
  const primaryColumns = clonedTable.primaryColumns;
681
762
  // if primary column state changed, we must always drop existed constraint.
682
763
  if (primaryColumns.length > 0) {
683
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
764
+ const pkName = primaryColumns[0].primaryKeyConstraintName
765
+ ? primaryColumns[0].primaryKeyConstraintName
766
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
684
767
  const columnNames = primaryColumns
685
768
  .map((column) => `"${column.name}"`)
686
769
  .join(", ");
@@ -692,7 +775,9 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
692
775
  // update column in table
693
776
  const column = clonedTable.columns.find((column) => column.name === newColumn.name);
694
777
  column.isPrimary = true;
695
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
778
+ const pkName = primaryColumns[0].primaryKeyConstraintName
779
+ ? primaryColumns[0].primaryKeyConstraintName
780
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
696
781
  const columnNames = primaryColumns
697
782
  .map((column) => `"${column.name}"`)
698
783
  .join(", ");
@@ -707,7 +792,10 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
707
792
  column.isPrimary = false;
708
793
  // if we have another primary keys, we must recreate constraint.
709
794
  if (primaryColumns.length > 0) {
710
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
795
+ const pkName = primaryColumns[0]
796
+ .primaryKeyConstraintName
797
+ ? primaryColumns[0].primaryKeyConstraintName
798
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
711
799
  const columnNames = primaryColumns
712
800
  .map((column) => `"${column.name}"`)
713
801
  .join(", ");
@@ -765,7 +853,9 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
765
853
  const downQueries = [];
766
854
  // drop primary key constraint
767
855
  if (column.isPrimary) {
768
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
856
+ const pkName = column.primaryKeyConstraintName
857
+ ? column.primaryKeyConstraintName
858
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
769
859
  const columnNames = clonedTable.primaryColumns
770
860
  .map((primaryColumn) => `"${primaryColumn.name}"`)
771
861
  .join(", ");
@@ -776,7 +866,10 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
776
866
  tableColumn.isPrimary = false;
777
867
  // if primary key have multiple columns, we must recreate it without dropped column
778
868
  if (clonedTable.primaryColumns.length > 0) {
779
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
869
+ const pkName = clonedTable.primaryColumns[0]
870
+ .primaryKeyConstraintName
871
+ ? clonedTable.primaryColumns[0].primaryKeyConstraintName
872
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
780
873
  const columnNames = clonedTable.primaryColumns
781
874
  .map((primaryColumn) => `"${primaryColumn.name}"`)
782
875
  .join(", ");
@@ -810,6 +903,21 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
810
903
  }
811
904
  upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP COLUMN "${column.name}"`));
812
905
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD ${this.buildCreateColumnSql(column)}`));
906
+ if (column.generatedType && column.asExpression) {
907
+ const deleteQuery = this.deleteTypeormMetadataSql({
908
+ table: table.name,
909
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
910
+ name: column.name,
911
+ });
912
+ const insertQuery = this.insertTypeormMetadataSql({
913
+ table: table.name,
914
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
915
+ name: column.name,
916
+ value: column.asExpression,
917
+ });
918
+ upQueries.push(deleteQuery);
919
+ downQueries.push(insertQuery);
920
+ }
813
921
  await this.executeQueries(upQueries, downQueries);
814
922
  clonedTable.removeColumn(column);
815
923
  this.replaceCachedTable(table, clonedTable);
@@ -825,12 +933,12 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
825
933
  /**
826
934
  * Creates a new primary key.
827
935
  */
828
- async createPrimaryKey(tableOrName, columnNames) {
936
+ async createPrimaryKey(tableOrName, columnNames, constraintName) {
829
937
  const table = InstanceChecker_1.InstanceChecker.isTable(tableOrName)
830
938
  ? tableOrName
831
939
  : await this.getCachedTable(tableOrName);
832
940
  const clonedTable = table.clone();
833
- const up = this.createPrimaryKeySql(table, columnNames);
941
+ const up = this.createPrimaryKeySql(table, columnNames, constraintName);
834
942
  // mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.
835
943
  clonedTable.columns.forEach((column) => {
836
944
  if (columnNames.find((columnName) => columnName === column.name))
@@ -854,7 +962,9 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
854
962
  // if table already have primary columns, we must drop them.
855
963
  const primaryColumns = clonedTable.primaryColumns;
856
964
  if (primaryColumns.length > 0) {
857
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
965
+ const pkName = primaryColumns[0].primaryKeyConstraintName
966
+ ? primaryColumns[0].primaryKeyConstraintName
967
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
858
968
  const columnNamesString = primaryColumns
859
969
  .map((column) => `"${column.name}"`)
860
970
  .join(", ");
@@ -865,7 +975,9 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
865
975
  clonedTable.columns
866
976
  .filter((column) => columnNames.indexOf(column.name) !== -1)
867
977
  .forEach((column) => (column.isPrimary = true));
868
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
978
+ const pkName = primaryColumns[0].primaryKeyConstraintName
979
+ ? primaryColumns[0].primaryKeyConstraintName
980
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
869
981
  const columnNamesString = columnNames
870
982
  .map((columnName) => `"${columnName}"`)
871
983
  .join(", ");
@@ -877,12 +989,12 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
877
989
  /**
878
990
  * Drops a primary key.
879
991
  */
880
- async dropPrimaryKey(tableOrName) {
992
+ async dropPrimaryKey(tableOrName, constraintName) {
881
993
  const table = InstanceChecker_1.InstanceChecker.isTable(tableOrName)
882
994
  ? tableOrName
883
995
  : await this.getCachedTable(tableOrName);
884
996
  const up = this.dropPrimaryKeySql(table);
885
- const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name));
997
+ const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name), constraintName);
886
998
  await this.executeQueries(up, down);
887
999
  table.primaryColumns.forEach((column) => {
888
1000
  column.isPrimary = false;
@@ -1246,7 +1358,7 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1246
1358
  this.query(constraintsSql),
1247
1359
  ]);
1248
1360
  // create tables for loaded tables
1249
- return dbTables.map((dbTable) => {
1361
+ return await Promise.all(dbTables.map(async (dbTable) => {
1250
1362
  const table = new Table_1.Table();
1251
1363
  const owner = dbTable["OWNER"] === currentSchema &&
1252
1364
  (!this.driver.options.schema ||
@@ -1257,11 +1369,13 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1257
1369
  table.schema = dbTable["OWNER"];
1258
1370
  table.name = this.driver.buildTableName(dbTable["TABLE_NAME"], owner);
1259
1371
  // create columns from the loaded columns
1260
- table.columns = dbColumns
1372
+ table.columns = await Promise.all(dbColumns
1261
1373
  .filter((dbColumn) => dbColumn["OWNER"] === dbTable["OWNER"] &&
1262
- dbColumn["TABLE_NAME"] === dbTable["TABLE_NAME"])
1263
- .map((dbColumn) => {
1264
- const columnConstraints = dbConstraints.filter((dbConstraint) => dbConstraint["OWNER"] === dbColumn["OWNER"] &&
1374
+ dbColumn["TABLE_NAME"] ===
1375
+ dbTable["TABLE_NAME"])
1376
+ .map(async (dbColumn) => {
1377
+ const columnConstraints = dbConstraints.filter((dbConstraint) => dbConstraint["OWNER"] ===
1378
+ dbColumn["OWNER"] &&
1265
1379
  dbConstraint["TABLE_NAME"] ===
1266
1380
  dbColumn["TABLE_NAME"] &&
1267
1381
  dbConstraint["COLUMN_NAME"] ===
@@ -1276,12 +1390,13 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1276
1390
  dbColumn["COLUMN_NAME"] &&
1277
1391
  dbConstraint["CONSTRAINT_NAME"] ===
1278
1392
  uniqueConstraint["CONSTRAINT_NAME"] &&
1279
- dbConstraint["CONSTRAINT_TYPE"] === "U");
1393
+ dbConstraint["CONSTRAINT_TYPE"] ===
1394
+ "U");
1280
1395
  });
1281
- const isPrimary = !!columnConstraints.find((constraint) => constraint["CONSTRAINT_TYPE"] === "P");
1282
1396
  const tableColumn = new TableColumn_1.TableColumn();
1283
1397
  tableColumn.name = dbColumn["COLUMN_NAME"];
1284
- tableColumn.type = dbColumn["DATA_TYPE"].toLowerCase();
1398
+ tableColumn.type =
1399
+ dbColumn["DATA_TYPE"].toLowerCase();
1285
1400
  if (tableColumn.type.indexOf("(") !== -1)
1286
1401
  tableColumn.type = tableColumn.type.replace(/\([0-9]*\)/, "");
1287
1402
  // check only columns that have length property
@@ -1299,31 +1414,60 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1299
1414
  tableColumn.type === "float") {
1300
1415
  if (dbColumn["DATA_PRECISION"] !== null &&
1301
1416
  !this.isDefaultColumnPrecision(table, tableColumn, dbColumn["DATA_PRECISION"]))
1302
- tableColumn.precision = dbColumn["DATA_PRECISION"];
1417
+ tableColumn.precision =
1418
+ dbColumn["DATA_PRECISION"];
1303
1419
  if (dbColumn["DATA_SCALE"] !== null &&
1304
1420
  !this.isDefaultColumnScale(table, tableColumn, dbColumn["DATA_SCALE"]))
1305
1421
  tableColumn.scale = dbColumn["DATA_SCALE"];
1306
1422
  }
1307
1423
  else if ((tableColumn.type === "timestamp" ||
1308
- tableColumn.type === "timestamp with time zone" ||
1424
+ tableColumn.type ===
1425
+ "timestamp with time zone" ||
1309
1426
  tableColumn.type ===
1310
1427
  "timestamp with local time zone") &&
1311
1428
  dbColumn["DATA_SCALE"] !== null) {
1312
- tableColumn.precision = !this.isDefaultColumnPrecision(table, tableColumn, dbColumn["DATA_SCALE"])
1313
- ? dbColumn["DATA_SCALE"]
1314
- : undefined;
1429
+ tableColumn.precision =
1430
+ !this.isDefaultColumnPrecision(table, tableColumn, dbColumn["DATA_SCALE"])
1431
+ ? dbColumn["DATA_SCALE"]
1432
+ : undefined;
1315
1433
  }
1316
1434
  tableColumn.default =
1317
1435
  dbColumn["DATA_DEFAULT"] !== null &&
1318
1436
  dbColumn["DATA_DEFAULT"] !== undefined &&
1437
+ dbColumn["VIRTUAL_COLUMN"] === "NO" &&
1319
1438
  dbColumn["DATA_DEFAULT"].trim() !== "NULL"
1320
1439
  ? (tableColumn.default =
1321
1440
  dbColumn["DATA_DEFAULT"].trim())
1322
1441
  : undefined;
1323
- tableColumn.isNullable = dbColumn["NULLABLE"] === "Y";
1442
+ const primaryConstraint = columnConstraints.find((constraint) => constraint["CONSTRAINT_TYPE"] === "P");
1443
+ if (primaryConstraint) {
1444
+ tableColumn.isPrimary = true;
1445
+ // find another columns involved in primary key constraint
1446
+ const anotherPrimaryConstraints = dbConstraints.filter((constraint) => constraint["OWNER"] ===
1447
+ dbColumn["OWNER"] &&
1448
+ constraint["TABLE_NAME"] ===
1449
+ dbColumn["TABLE_NAME"] &&
1450
+ constraint["COLUMN_NAME"] !==
1451
+ dbColumn["COLUMN_NAME"] &&
1452
+ constraint["CONSTRAINT_TYPE"] ===
1453
+ "P");
1454
+ // collect all column names
1455
+ const columnNames = anotherPrimaryConstraints.map((constraint) => constraint["COLUMN_NAME"]);
1456
+ columnNames.push(dbColumn["COLUMN_NAME"]);
1457
+ // build default primary key constraint name
1458
+ const pkName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
1459
+ // if primary key has user-defined constraint name, write it in table column
1460
+ if (primaryConstraint["CONSTRAINT_NAME"] !==
1461
+ pkName) {
1462
+ tableColumn.primaryKeyConstraintName =
1463
+ primaryConstraint["CONSTRAINT_NAME"];
1464
+ }
1465
+ }
1466
+ tableColumn.isNullable =
1467
+ dbColumn["NULLABLE"] === "Y";
1324
1468
  tableColumn.isUnique =
1325
- uniqueConstraints.length > 0 && !isConstraintComposite;
1326
- tableColumn.isPrimary = isPrimary;
1469
+ uniqueConstraints.length > 0 &&
1470
+ !isConstraintComposite;
1327
1471
  tableColumn.isGenerated =
1328
1472
  dbColumn["IDENTITY_COLUMN"] === "YES";
1329
1473
  if (tableColumn.isGenerated) {
@@ -1331,11 +1475,27 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1331
1475
  tableColumn.default = undefined;
1332
1476
  }
1333
1477
  tableColumn.comment = ""; // todo
1478
+ if (dbColumn["VIRTUAL_COLUMN"] === "YES") {
1479
+ tableColumn.generatedType = "VIRTUAL";
1480
+ const asExpressionQuery = await this.selectTypeormMetadataSql({
1481
+ table: dbTable["TABLE_NAME"],
1482
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
1483
+ name: tableColumn.name,
1484
+ });
1485
+ const results = await this.query(asExpressionQuery.query, asExpressionQuery.parameters);
1486
+ if (results[0] && results[0].value) {
1487
+ tableColumn.asExpression = results[0].value;
1488
+ }
1489
+ else {
1490
+ tableColumn.asExpression = "";
1491
+ }
1492
+ }
1334
1493
  return tableColumn;
1335
- });
1494
+ }));
1336
1495
  // find unique constraints of table, group them by constraint name and build TableUnique.
1337
1496
  const tableUniqueConstraints = OrmUtils_1.OrmUtils.uniq(dbConstraints.filter((dbConstraint) => {
1338
- return (dbConstraint["TABLE_NAME"] === dbTable["TABLE_NAME"] &&
1497
+ return (dbConstraint["TABLE_NAME"] ===
1498
+ dbTable["TABLE_NAME"] &&
1339
1499
  dbConstraint["OWNER"] === dbTable["OWNER"] &&
1340
1500
  dbConstraint["CONSTRAINT_TYPE"] === "U");
1341
1501
  }), (dbConstraint) => dbConstraint["CONSTRAINT_NAME"]);
@@ -1349,7 +1509,8 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1349
1509
  });
1350
1510
  // find check constraints of table, group them by constraint name and build TableCheck.
1351
1511
  const tableCheckConstraints = OrmUtils_1.OrmUtils.uniq(dbConstraints.filter((dbConstraint) => {
1352
- return (dbConstraint["TABLE_NAME"] === dbTable["TABLE_NAME"] &&
1512
+ return (dbConstraint["TABLE_NAME"] ===
1513
+ dbTable["TABLE_NAME"] &&
1353
1514
  dbConstraint["OWNER"] === dbTable["OWNER"] &&
1354
1515
  dbConstraint["CONSTRAINT_TYPE"] === "C");
1355
1516
  }), (dbConstraint) => dbConstraint["CONSTRAINT_NAME"]);
@@ -1366,9 +1527,11 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1366
1527
  });
1367
1528
  // find foreign key constraints of table, group them by constraint name and build TableForeignKey.
1368
1529
  const tableForeignKeyConstraints = OrmUtils_1.OrmUtils.uniq(dbForeignKeys.filter((dbForeignKey) => dbForeignKey["OWNER"] === dbTable["OWNER"] &&
1369
- dbForeignKey["TABLE_NAME"] === dbTable["TABLE_NAME"]), (dbForeignKey) => dbForeignKey["CONSTRAINT_NAME"]);
1530
+ dbForeignKey["TABLE_NAME"] ===
1531
+ dbTable["TABLE_NAME"]), (dbForeignKey) => dbForeignKey["CONSTRAINT_NAME"]);
1370
1532
  table.foreignKeys = tableForeignKeyConstraints.map((dbForeignKey) => {
1371
- const foreignKeys = dbForeignKeys.filter((dbFk) => dbFk["TABLE_NAME"] === dbForeignKey["TABLE_NAME"] &&
1533
+ const foreignKeys = dbForeignKeys.filter((dbFk) => dbFk["TABLE_NAME"] ===
1534
+ dbForeignKey["TABLE_NAME"] &&
1372
1535
  dbFk["OWNER"] === dbForeignKey["OWNER"] &&
1373
1536
  dbFk["CONSTRAINT_NAME"] ===
1374
1537
  dbForeignKey["CONSTRAINT_NAME"]);
@@ -1395,7 +1558,7 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1395
1558
  });
1396
1559
  });
1397
1560
  return table;
1398
- });
1561
+ }));
1399
1562
  }
1400
1563
  /**
1401
1564
  * Builds and returns SQL for create table.
@@ -1463,7 +1626,9 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1463
1626
  }
1464
1627
  const primaryColumns = table.columns.filter((column) => column.isPrimary);
1465
1628
  if (primaryColumns.length > 0) {
1466
- const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
1629
+ const primaryKeyName = primaryColumns[0].primaryKeyConstraintName
1630
+ ? primaryColumns[0].primaryKeyConstraintName
1631
+ : this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
1467
1632
  const columnNames = primaryColumns
1468
1633
  .map((column) => `"${column.name}"`)
1469
1634
  .join(", ");
@@ -1540,8 +1705,10 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1540
1705
  /**
1541
1706
  * Builds create primary key sql.
1542
1707
  */
1543
- createPrimaryKeySql(table, columnNames) {
1544
- const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
1708
+ createPrimaryKeySql(table, columnNames, constraintName) {
1709
+ const primaryKeyName = constraintName
1710
+ ? constraintName
1711
+ : this.connection.namingStrategy.primaryKeyName(table, columnNames);
1545
1712
  const columnNamesString = columnNames
1546
1713
  .map((columnName) => `"${columnName}"`)
1547
1714
  .join(", ");
@@ -1551,8 +1718,13 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1551
1718
  * Builds drop primary key sql.
1552
1719
  */
1553
1720
  dropPrimaryKeySql(table) {
1721
+ if (!table.primaryColumns.length)
1722
+ throw new error_1.TypeORMError(`Table ${table} has no primary keys.`);
1554
1723
  const columnNames = table.primaryColumns.map((column) => column.name);
1555
- const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
1724
+ const constraintName = table.primaryColumns[0].primaryKeyConstraintName;
1725
+ const primaryKeyName = constraintName
1726
+ ? constraintName
1727
+ : this.connection.namingStrategy.primaryKeyName(table, columnNames);
1556
1728
  return new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${primaryKeyName}"`);
1557
1729
  }
1558
1730
  /**
@@ -1623,6 +1795,8 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1623
1795
  c += " CHARACTER SET " + column.charset;
1624
1796
  if (column.collation)
1625
1797
  c += " COLLATE " + column.collation;
1798
+ if (column.asExpression)
1799
+ c += ` AS (${column.asExpression}) VIRTUAL`;
1626
1800
  if (column.default !== undefined && column.default !== null)
1627
1801
  // DEFAULT must be placed before NOT NULL
1628
1802
  c += " DEFAULT " + column.default;