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
@@ -346,6 +346,23 @@ export class OracleQueryRunner extends BaseQueryRunner {
346
346
  downQueries.push(this.dropIndexSql(index));
347
347
  });
348
348
  }
349
+ // if table have column with generated type, we must add the expression to the metadata table
350
+ const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
351
+ for (const column of generatedColumns) {
352
+ const insertQuery = this.insertTypeormMetadataSql({
353
+ table: table.name,
354
+ type: MetadataTableType.GENERATED_COLUMN,
355
+ name: column.name,
356
+ value: column.asExpression,
357
+ });
358
+ const deleteQuery = this.deleteTypeormMetadataSql({
359
+ table: table.name,
360
+ type: MetadataTableType.GENERATED_COLUMN,
361
+ name: column.name,
362
+ });
363
+ upQueries.push(insertQuery);
364
+ downQueries.push(deleteQuery);
365
+ }
349
366
  await this.executeQueries(upQueries, downQueries);
350
367
  }
351
368
  /**
@@ -378,6 +395,23 @@ export class OracleQueryRunner extends BaseQueryRunner {
378
395
  table.foreignKeys.forEach((foreignKey) => upQueries.push(this.dropForeignKeySql(table, foreignKey)));
379
396
  upQueries.push(this.dropTableSql(table));
380
397
  downQueries.push(this.createTableSql(table, createForeignKeys));
398
+ // if table had columns with generated type, we must remove the expression from the metadata table
399
+ const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
400
+ for (const column of generatedColumns) {
401
+ const deleteQuery = this.deleteTypeormMetadataSql({
402
+ table: table.name,
403
+ type: MetadataTableType.GENERATED_COLUMN,
404
+ name: column.name,
405
+ });
406
+ const insertQuery = this.insertTypeormMetadataSql({
407
+ table: table.name,
408
+ type: MetadataTableType.GENERATED_COLUMN,
409
+ name: column.name,
410
+ value: column.asExpression,
411
+ });
412
+ upQueries.push(deleteQuery);
413
+ downQueries.push(insertQuery);
414
+ }
381
415
  await this.executeQueries(upQueries, downQueries);
382
416
  }
383
417
  /**
@@ -422,7 +456,8 @@ export class OracleQueryRunner extends BaseQueryRunner {
422
456
  upQueries.push(new Query(`ALTER TABLE ${this.escapePath(oldTable)} RENAME TO "${newTableName}"`));
423
457
  downQueries.push(new Query(`ALTER TABLE ${this.escapePath(newTable)} RENAME TO "${oldTableName}"`));
424
458
  // rename primary key constraint
425
- if (newTable.primaryColumns.length > 0) {
459
+ if (newTable.primaryColumns.length > 0 &&
460
+ !newTable.primaryColumns[0].primaryKeyConstraintName) {
426
461
  const columnNames = newTable.primaryColumns.map((column) => column.name);
427
462
  const oldPkName = this.connection.namingStrategy.primaryKeyName(oldTable, columnNames);
428
463
  const newPkName = this.connection.namingStrategy.primaryKeyName(newTable, columnNames);
@@ -432,6 +467,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
432
467
  }
433
468
  // rename unique constraints
434
469
  newTable.uniques.forEach((unique) => {
470
+ const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(oldTable, unique.columnNames);
471
+ // Skip renaming if Unique has user defined constraint name
472
+ if (unique.name !== oldUniqueName)
473
+ return;
435
474
  // build new constraint name
436
475
  const newUniqueName = this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames);
437
476
  // build queries
@@ -442,6 +481,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
442
481
  });
443
482
  // rename index constraints
444
483
  newTable.indices.forEach((index) => {
484
+ const oldIndexName = this.connection.namingStrategy.indexName(oldTable, index.columnNames, index.where);
485
+ // Skip renaming if Index has user defined constraint name
486
+ if (index.name !== oldIndexName)
487
+ return;
445
488
  // build new constraint name
446
489
  const newIndexName = this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);
447
490
  // build queries
@@ -452,6 +495,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
452
495
  });
453
496
  // rename foreign key constraints
454
497
  newTable.foreignKeys.forEach((foreignKey) => {
498
+ const oldForeignKeyName = this.connection.namingStrategy.foreignKeyName(oldTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
499
+ // Skip renaming if foreign key has user defined constraint name
500
+ if (foreignKey.name !== oldForeignKeyName)
501
+ return;
455
502
  // build new constraint name
456
503
  const newForeignKeyName = this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
457
504
  // build queries
@@ -482,7 +529,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
482
529
  const primaryColumns = clonedTable.primaryColumns;
483
530
  // if table already have primary key, me must drop it and recreate again
484
531
  if (primaryColumns.length > 0) {
485
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
532
+ const pkName = primaryColumns[0].primaryKeyConstraintName
533
+ ? primaryColumns[0].primaryKeyConstraintName
534
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
486
535
  const columnNames = primaryColumns
487
536
  .map((column) => `"${column.name}"`)
488
537
  .join(", ");
@@ -490,7 +539,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
490
539
  downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${pkName}" PRIMARY KEY (${columnNames})`));
491
540
  }
492
541
  primaryColumns.push(column);
493
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
542
+ const pkName = primaryColumns[0].primaryKeyConstraintName
543
+ ? primaryColumns[0].primaryKeyConstraintName
544
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
494
545
  const columnNames = primaryColumns
495
546
  .map((column) => `"${column.name}"`)
496
547
  .join(", ");
@@ -515,6 +566,21 @@ export class OracleQueryRunner extends BaseQueryRunner {
515
566
  upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${uniqueConstraint.name}" UNIQUE ("${column.name}")`));
516
567
  downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${uniqueConstraint.name}"`));
517
568
  }
569
+ if (column.generatedType && column.asExpression) {
570
+ const insertQuery = this.insertTypeormMetadataSql({
571
+ table: table.name,
572
+ type: MetadataTableType.GENERATED_COLUMN,
573
+ name: column.name,
574
+ value: column.asExpression,
575
+ });
576
+ const deleteQuery = this.deleteTypeormMetadataSql({
577
+ table: table.name,
578
+ type: MetadataTableType.GENERATED_COLUMN,
579
+ name: column.name,
580
+ });
581
+ upQueries.push(insertQuery);
582
+ downQueries.push(deleteQuery);
583
+ }
518
584
  await this.executeQueries(upQueries, downQueries);
519
585
  clonedTable.addColumn(column);
520
586
  this.replaceCachedTable(table, clonedTable);
@@ -567,7 +633,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
567
633
  if ((newColumn.isGenerated !== oldColumn.isGenerated &&
568
634
  newColumn.generationStrategy !== "uuid") ||
569
635
  oldColumn.type !== newColumn.type ||
570
- oldColumn.length !== newColumn.length) {
636
+ oldColumn.length !== newColumn.length ||
637
+ oldColumn.generatedType !== newColumn.generatedType ||
638
+ oldColumn.asExpression !== newColumn.asExpression) {
571
639
  // Oracle does not support changing of IDENTITY column, so we must drop column and recreate it again.
572
640
  // Also, we recreate column if column type changed
573
641
  await this.dropColumn(table, oldColumn);
@@ -581,7 +649,8 @@ export class OracleQueryRunner extends BaseQueryRunner {
581
649
  upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} RENAME COLUMN "${oldColumn.name}" TO "${newColumn.name}"`));
582
650
  downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} RENAME COLUMN "${newColumn.name}" TO "${oldColumn.name}"`));
583
651
  // rename column primary key constraint
584
- if (oldColumn.isPrimary === true) {
652
+ if (oldColumn.isPrimary === true &&
653
+ !oldColumn.primaryKeyConstraintName) {
585
654
  const primaryColumns = clonedTable.primaryColumns;
586
655
  // build old primary constraint name
587
656
  const columnNames = primaryColumns.map((column) => column.name);
@@ -596,6 +665,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
596
665
  }
597
666
  // rename unique constraints
598
667
  clonedTable.findColumnUniques(oldColumn).forEach((unique) => {
668
+ const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(clonedTable, unique.columnNames);
669
+ // Skip renaming if Unique has user defined constraint name
670
+ if (unique.name !== oldUniqueName)
671
+ return;
599
672
  // build new constraint name
600
673
  unique.columnNames.splice(unique.columnNames.indexOf(oldColumn.name), 1);
601
674
  unique.columnNames.push(newColumn.name);
@@ -608,6 +681,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
608
681
  });
609
682
  // rename index constraints
610
683
  clonedTable.findColumnIndices(oldColumn).forEach((index) => {
684
+ const oldIndexName = this.connection.namingStrategy.indexName(clonedTable, index.columnNames, index.where);
685
+ // Skip renaming if Index has user defined constraint name
686
+ if (index.name !== oldIndexName)
687
+ return;
611
688
  // build new constraint name
612
689
  index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);
613
690
  index.columnNames.push(newColumn.name);
@@ -622,6 +699,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
622
699
  clonedTable
623
700
  .findColumnForeignKeys(oldColumn)
624
701
  .forEach((foreignKey) => {
702
+ const foreignKeyName = this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
703
+ // Skip renaming if foreign key has user defined constraint name
704
+ if (foreignKey.name !== foreignKeyName)
705
+ return;
625
706
  // build new constraint name
626
707
  foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);
627
708
  foreignKey.columnNames.push(newColumn.name);
@@ -677,7 +758,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
677
758
  const primaryColumns = clonedTable.primaryColumns;
678
759
  // if primary column state changed, we must always drop existed constraint.
679
760
  if (primaryColumns.length > 0) {
680
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
761
+ const pkName = primaryColumns[0].primaryKeyConstraintName
762
+ ? primaryColumns[0].primaryKeyConstraintName
763
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
681
764
  const columnNames = primaryColumns
682
765
  .map((column) => `"${column.name}"`)
683
766
  .join(", ");
@@ -689,7 +772,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
689
772
  // update column in table
690
773
  const column = clonedTable.columns.find((column) => column.name === newColumn.name);
691
774
  column.isPrimary = true;
692
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
775
+ const pkName = primaryColumns[0].primaryKeyConstraintName
776
+ ? primaryColumns[0].primaryKeyConstraintName
777
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
693
778
  const columnNames = primaryColumns
694
779
  .map((column) => `"${column.name}"`)
695
780
  .join(", ");
@@ -704,7 +789,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
704
789
  column.isPrimary = false;
705
790
  // if we have another primary keys, we must recreate constraint.
706
791
  if (primaryColumns.length > 0) {
707
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
792
+ const pkName = primaryColumns[0]
793
+ .primaryKeyConstraintName
794
+ ? primaryColumns[0].primaryKeyConstraintName
795
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
708
796
  const columnNames = primaryColumns
709
797
  .map((column) => `"${column.name}"`)
710
798
  .join(", ");
@@ -762,7 +850,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
762
850
  const downQueries = [];
763
851
  // drop primary key constraint
764
852
  if (column.isPrimary) {
765
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
853
+ const pkName = column.primaryKeyConstraintName
854
+ ? column.primaryKeyConstraintName
855
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
766
856
  const columnNames = clonedTable.primaryColumns
767
857
  .map((primaryColumn) => `"${primaryColumn.name}"`)
768
858
  .join(", ");
@@ -773,7 +863,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
773
863
  tableColumn.isPrimary = false;
774
864
  // if primary key have multiple columns, we must recreate it without dropped column
775
865
  if (clonedTable.primaryColumns.length > 0) {
776
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
866
+ const pkName = clonedTable.primaryColumns[0]
867
+ .primaryKeyConstraintName
868
+ ? clonedTable.primaryColumns[0].primaryKeyConstraintName
869
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
777
870
  const columnNames = clonedTable.primaryColumns
778
871
  .map((primaryColumn) => `"${primaryColumn.name}"`)
779
872
  .join(", ");
@@ -807,6 +900,21 @@ export class OracleQueryRunner extends BaseQueryRunner {
807
900
  }
808
901
  upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP COLUMN "${column.name}"`));
809
902
  downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD ${this.buildCreateColumnSql(column)}`));
903
+ if (column.generatedType && column.asExpression) {
904
+ const deleteQuery = this.deleteTypeormMetadataSql({
905
+ table: table.name,
906
+ type: MetadataTableType.GENERATED_COLUMN,
907
+ name: column.name,
908
+ });
909
+ const insertQuery = this.insertTypeormMetadataSql({
910
+ table: table.name,
911
+ type: MetadataTableType.GENERATED_COLUMN,
912
+ name: column.name,
913
+ value: column.asExpression,
914
+ });
915
+ upQueries.push(deleteQuery);
916
+ downQueries.push(insertQuery);
917
+ }
810
918
  await this.executeQueries(upQueries, downQueries);
811
919
  clonedTable.removeColumn(column);
812
920
  this.replaceCachedTable(table, clonedTable);
@@ -822,12 +930,12 @@ export class OracleQueryRunner extends BaseQueryRunner {
822
930
  /**
823
931
  * Creates a new primary key.
824
932
  */
825
- async createPrimaryKey(tableOrName, columnNames) {
933
+ async createPrimaryKey(tableOrName, columnNames, constraintName) {
826
934
  const table = InstanceChecker.isTable(tableOrName)
827
935
  ? tableOrName
828
936
  : await this.getCachedTable(tableOrName);
829
937
  const clonedTable = table.clone();
830
- const up = this.createPrimaryKeySql(table, columnNames);
938
+ const up = this.createPrimaryKeySql(table, columnNames, constraintName);
831
939
  // mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.
832
940
  clonedTable.columns.forEach((column) => {
833
941
  if (columnNames.find((columnName) => columnName === column.name))
@@ -851,7 +959,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
851
959
  // if table already have primary columns, we must drop them.
852
960
  const primaryColumns = clonedTable.primaryColumns;
853
961
  if (primaryColumns.length > 0) {
854
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
962
+ const pkName = primaryColumns[0].primaryKeyConstraintName
963
+ ? primaryColumns[0].primaryKeyConstraintName
964
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
855
965
  const columnNamesString = primaryColumns
856
966
  .map((column) => `"${column.name}"`)
857
967
  .join(", ");
@@ -862,7 +972,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
862
972
  clonedTable.columns
863
973
  .filter((column) => columnNames.indexOf(column.name) !== -1)
864
974
  .forEach((column) => (column.isPrimary = true));
865
- const pkName = this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
975
+ const pkName = primaryColumns[0].primaryKeyConstraintName
976
+ ? primaryColumns[0].primaryKeyConstraintName
977
+ : this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
866
978
  const columnNamesString = columnNames
867
979
  .map((columnName) => `"${columnName}"`)
868
980
  .join(", ");
@@ -874,12 +986,12 @@ export class OracleQueryRunner extends BaseQueryRunner {
874
986
  /**
875
987
  * Drops a primary key.
876
988
  */
877
- async dropPrimaryKey(tableOrName) {
989
+ async dropPrimaryKey(tableOrName, constraintName) {
878
990
  const table = InstanceChecker.isTable(tableOrName)
879
991
  ? tableOrName
880
992
  : await this.getCachedTable(tableOrName);
881
993
  const up = this.dropPrimaryKeySql(table);
882
- const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name));
994
+ const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name), constraintName);
883
995
  await this.executeQueries(up, down);
884
996
  table.primaryColumns.forEach((column) => {
885
997
  column.isPrimary = false;
@@ -1243,7 +1355,7 @@ export class OracleQueryRunner extends BaseQueryRunner {
1243
1355
  this.query(constraintsSql),
1244
1356
  ]);
1245
1357
  // create tables for loaded tables
1246
- return dbTables.map((dbTable) => {
1358
+ return await Promise.all(dbTables.map(async (dbTable) => {
1247
1359
  const table = new Table();
1248
1360
  const owner = dbTable["OWNER"] === currentSchema &&
1249
1361
  (!this.driver.options.schema ||
@@ -1254,11 +1366,13 @@ export class OracleQueryRunner extends BaseQueryRunner {
1254
1366
  table.schema = dbTable["OWNER"];
1255
1367
  table.name = this.driver.buildTableName(dbTable["TABLE_NAME"], owner);
1256
1368
  // create columns from the loaded columns
1257
- table.columns = dbColumns
1369
+ table.columns = await Promise.all(dbColumns
1258
1370
  .filter((dbColumn) => dbColumn["OWNER"] === dbTable["OWNER"] &&
1259
- dbColumn["TABLE_NAME"] === dbTable["TABLE_NAME"])
1260
- .map((dbColumn) => {
1261
- const columnConstraints = dbConstraints.filter((dbConstraint) => dbConstraint["OWNER"] === dbColumn["OWNER"] &&
1371
+ dbColumn["TABLE_NAME"] ===
1372
+ dbTable["TABLE_NAME"])
1373
+ .map(async (dbColumn) => {
1374
+ const columnConstraints = dbConstraints.filter((dbConstraint) => dbConstraint["OWNER"] ===
1375
+ dbColumn["OWNER"] &&
1262
1376
  dbConstraint["TABLE_NAME"] ===
1263
1377
  dbColumn["TABLE_NAME"] &&
1264
1378
  dbConstraint["COLUMN_NAME"] ===
@@ -1273,12 +1387,13 @@ export class OracleQueryRunner extends BaseQueryRunner {
1273
1387
  dbColumn["COLUMN_NAME"] &&
1274
1388
  dbConstraint["CONSTRAINT_NAME"] ===
1275
1389
  uniqueConstraint["CONSTRAINT_NAME"] &&
1276
- dbConstraint["CONSTRAINT_TYPE"] === "U");
1390
+ dbConstraint["CONSTRAINT_TYPE"] ===
1391
+ "U");
1277
1392
  });
1278
- const isPrimary = !!columnConstraints.find((constraint) => constraint["CONSTRAINT_TYPE"] === "P");
1279
1393
  const tableColumn = new TableColumn();
1280
1394
  tableColumn.name = dbColumn["COLUMN_NAME"];
1281
- tableColumn.type = dbColumn["DATA_TYPE"].toLowerCase();
1395
+ tableColumn.type =
1396
+ dbColumn["DATA_TYPE"].toLowerCase();
1282
1397
  if (tableColumn.type.indexOf("(") !== -1)
1283
1398
  tableColumn.type = tableColumn.type.replace(/\([0-9]*\)/, "");
1284
1399
  // check only columns that have length property
@@ -1296,31 +1411,60 @@ export class OracleQueryRunner extends BaseQueryRunner {
1296
1411
  tableColumn.type === "float") {
1297
1412
  if (dbColumn["DATA_PRECISION"] !== null &&
1298
1413
  !this.isDefaultColumnPrecision(table, tableColumn, dbColumn["DATA_PRECISION"]))
1299
- tableColumn.precision = dbColumn["DATA_PRECISION"];
1414
+ tableColumn.precision =
1415
+ dbColumn["DATA_PRECISION"];
1300
1416
  if (dbColumn["DATA_SCALE"] !== null &&
1301
1417
  !this.isDefaultColumnScale(table, tableColumn, dbColumn["DATA_SCALE"]))
1302
1418
  tableColumn.scale = dbColumn["DATA_SCALE"];
1303
1419
  }
1304
1420
  else if ((tableColumn.type === "timestamp" ||
1305
- tableColumn.type === "timestamp with time zone" ||
1421
+ tableColumn.type ===
1422
+ "timestamp with time zone" ||
1306
1423
  tableColumn.type ===
1307
1424
  "timestamp with local time zone") &&
1308
1425
  dbColumn["DATA_SCALE"] !== null) {
1309
- tableColumn.precision = !this.isDefaultColumnPrecision(table, tableColumn, dbColumn["DATA_SCALE"])
1310
- ? dbColumn["DATA_SCALE"]
1311
- : undefined;
1426
+ tableColumn.precision =
1427
+ !this.isDefaultColumnPrecision(table, tableColumn, dbColumn["DATA_SCALE"])
1428
+ ? dbColumn["DATA_SCALE"]
1429
+ : undefined;
1312
1430
  }
1313
1431
  tableColumn.default =
1314
1432
  dbColumn["DATA_DEFAULT"] !== null &&
1315
1433
  dbColumn["DATA_DEFAULT"] !== undefined &&
1434
+ dbColumn["VIRTUAL_COLUMN"] === "NO" &&
1316
1435
  dbColumn["DATA_DEFAULT"].trim() !== "NULL"
1317
1436
  ? (tableColumn.default =
1318
1437
  dbColumn["DATA_DEFAULT"].trim())
1319
1438
  : undefined;
1320
- tableColumn.isNullable = dbColumn["NULLABLE"] === "Y";
1439
+ const primaryConstraint = columnConstraints.find((constraint) => constraint["CONSTRAINT_TYPE"] === "P");
1440
+ if (primaryConstraint) {
1441
+ tableColumn.isPrimary = true;
1442
+ // find another columns involved in primary key constraint
1443
+ const anotherPrimaryConstraints = dbConstraints.filter((constraint) => constraint["OWNER"] ===
1444
+ dbColumn["OWNER"] &&
1445
+ constraint["TABLE_NAME"] ===
1446
+ dbColumn["TABLE_NAME"] &&
1447
+ constraint["COLUMN_NAME"] !==
1448
+ dbColumn["COLUMN_NAME"] &&
1449
+ constraint["CONSTRAINT_TYPE"] ===
1450
+ "P");
1451
+ // collect all column names
1452
+ const columnNames = anotherPrimaryConstraints.map((constraint) => constraint["COLUMN_NAME"]);
1453
+ columnNames.push(dbColumn["COLUMN_NAME"]);
1454
+ // build default primary key constraint name
1455
+ const pkName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
1456
+ // if primary key has user-defined constraint name, write it in table column
1457
+ if (primaryConstraint["CONSTRAINT_NAME"] !==
1458
+ pkName) {
1459
+ tableColumn.primaryKeyConstraintName =
1460
+ primaryConstraint["CONSTRAINT_NAME"];
1461
+ }
1462
+ }
1463
+ tableColumn.isNullable =
1464
+ dbColumn["NULLABLE"] === "Y";
1321
1465
  tableColumn.isUnique =
1322
- uniqueConstraints.length > 0 && !isConstraintComposite;
1323
- tableColumn.isPrimary = isPrimary;
1466
+ uniqueConstraints.length > 0 &&
1467
+ !isConstraintComposite;
1324
1468
  tableColumn.isGenerated =
1325
1469
  dbColumn["IDENTITY_COLUMN"] === "YES";
1326
1470
  if (tableColumn.isGenerated) {
@@ -1328,11 +1472,27 @@ export class OracleQueryRunner extends BaseQueryRunner {
1328
1472
  tableColumn.default = undefined;
1329
1473
  }
1330
1474
  tableColumn.comment = ""; // todo
1475
+ if (dbColumn["VIRTUAL_COLUMN"] === "YES") {
1476
+ tableColumn.generatedType = "VIRTUAL";
1477
+ const asExpressionQuery = await this.selectTypeormMetadataSql({
1478
+ table: dbTable["TABLE_NAME"],
1479
+ type: MetadataTableType.GENERATED_COLUMN,
1480
+ name: tableColumn.name,
1481
+ });
1482
+ const results = await this.query(asExpressionQuery.query, asExpressionQuery.parameters);
1483
+ if (results[0] && results[0].value) {
1484
+ tableColumn.asExpression = results[0].value;
1485
+ }
1486
+ else {
1487
+ tableColumn.asExpression = "";
1488
+ }
1489
+ }
1331
1490
  return tableColumn;
1332
- });
1491
+ }));
1333
1492
  // find unique constraints of table, group them by constraint name and build TableUnique.
1334
1493
  const tableUniqueConstraints = OrmUtils.uniq(dbConstraints.filter((dbConstraint) => {
1335
- return (dbConstraint["TABLE_NAME"] === dbTable["TABLE_NAME"] &&
1494
+ return (dbConstraint["TABLE_NAME"] ===
1495
+ dbTable["TABLE_NAME"] &&
1336
1496
  dbConstraint["OWNER"] === dbTable["OWNER"] &&
1337
1497
  dbConstraint["CONSTRAINT_TYPE"] === "U");
1338
1498
  }), (dbConstraint) => dbConstraint["CONSTRAINT_NAME"]);
@@ -1346,7 +1506,8 @@ export class OracleQueryRunner extends BaseQueryRunner {
1346
1506
  });
1347
1507
  // find check constraints of table, group them by constraint name and build TableCheck.
1348
1508
  const tableCheckConstraints = OrmUtils.uniq(dbConstraints.filter((dbConstraint) => {
1349
- return (dbConstraint["TABLE_NAME"] === dbTable["TABLE_NAME"] &&
1509
+ return (dbConstraint["TABLE_NAME"] ===
1510
+ dbTable["TABLE_NAME"] &&
1350
1511
  dbConstraint["OWNER"] === dbTable["OWNER"] &&
1351
1512
  dbConstraint["CONSTRAINT_TYPE"] === "C");
1352
1513
  }), (dbConstraint) => dbConstraint["CONSTRAINT_NAME"]);
@@ -1363,9 +1524,11 @@ export class OracleQueryRunner extends BaseQueryRunner {
1363
1524
  });
1364
1525
  // find foreign key constraints of table, group them by constraint name and build TableForeignKey.
1365
1526
  const tableForeignKeyConstraints = OrmUtils.uniq(dbForeignKeys.filter((dbForeignKey) => dbForeignKey["OWNER"] === dbTable["OWNER"] &&
1366
- dbForeignKey["TABLE_NAME"] === dbTable["TABLE_NAME"]), (dbForeignKey) => dbForeignKey["CONSTRAINT_NAME"]);
1527
+ dbForeignKey["TABLE_NAME"] ===
1528
+ dbTable["TABLE_NAME"]), (dbForeignKey) => dbForeignKey["CONSTRAINT_NAME"]);
1367
1529
  table.foreignKeys = tableForeignKeyConstraints.map((dbForeignKey) => {
1368
- const foreignKeys = dbForeignKeys.filter((dbFk) => dbFk["TABLE_NAME"] === dbForeignKey["TABLE_NAME"] &&
1530
+ const foreignKeys = dbForeignKeys.filter((dbFk) => dbFk["TABLE_NAME"] ===
1531
+ dbForeignKey["TABLE_NAME"] &&
1369
1532
  dbFk["OWNER"] === dbForeignKey["OWNER"] &&
1370
1533
  dbFk["CONSTRAINT_NAME"] ===
1371
1534
  dbForeignKey["CONSTRAINT_NAME"]);
@@ -1392,7 +1555,7 @@ export class OracleQueryRunner extends BaseQueryRunner {
1392
1555
  });
1393
1556
  });
1394
1557
  return table;
1395
- });
1558
+ }));
1396
1559
  }
1397
1560
  /**
1398
1561
  * Builds and returns SQL for create table.
@@ -1460,7 +1623,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
1460
1623
  }
1461
1624
  const primaryColumns = table.columns.filter((column) => column.isPrimary);
1462
1625
  if (primaryColumns.length > 0) {
1463
- const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
1626
+ const primaryKeyName = primaryColumns[0].primaryKeyConstraintName
1627
+ ? primaryColumns[0].primaryKeyConstraintName
1628
+ : this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
1464
1629
  const columnNames = primaryColumns
1465
1630
  .map((column) => `"${column.name}"`)
1466
1631
  .join(", ");
@@ -1537,8 +1702,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
1537
1702
  /**
1538
1703
  * Builds create primary key sql.
1539
1704
  */
1540
- createPrimaryKeySql(table, columnNames) {
1541
- const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
1705
+ createPrimaryKeySql(table, columnNames, constraintName) {
1706
+ const primaryKeyName = constraintName
1707
+ ? constraintName
1708
+ : this.connection.namingStrategy.primaryKeyName(table, columnNames);
1542
1709
  const columnNamesString = columnNames
1543
1710
  .map((columnName) => `"${columnName}"`)
1544
1711
  .join(", ");
@@ -1548,8 +1715,13 @@ export class OracleQueryRunner extends BaseQueryRunner {
1548
1715
  * Builds drop primary key sql.
1549
1716
  */
1550
1717
  dropPrimaryKeySql(table) {
1718
+ if (!table.primaryColumns.length)
1719
+ throw new TypeORMError(`Table ${table} has no primary keys.`);
1551
1720
  const columnNames = table.primaryColumns.map((column) => column.name);
1552
- const primaryKeyName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
1721
+ const constraintName = table.primaryColumns[0].primaryKeyConstraintName;
1722
+ const primaryKeyName = constraintName
1723
+ ? constraintName
1724
+ : this.connection.namingStrategy.primaryKeyName(table, columnNames);
1553
1725
  return new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${primaryKeyName}"`);
1554
1726
  }
1555
1727
  /**
@@ -1620,6 +1792,8 @@ export class OracleQueryRunner extends BaseQueryRunner {
1620
1792
  c += " CHARACTER SET " + column.charset;
1621
1793
  if (column.collation)
1622
1794
  c += " COLLATE " + column.collation;
1795
+ if (column.asExpression)
1796
+ c += ` AS (${column.asExpression}) VIRTUAL`;
1623
1797
  if (column.default !== undefined && column.default !== null)
1624
1798
  // DEFAULT must be placed before NOT NULL
1625
1799
  c += " DEFAULT " + column.default;