typeorm 0.3.6-dev.1197d1d → 0.3.6-dev.7dfb69f

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 (224) hide show
  1. package/README.md +33 -13
  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 +2 -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/driver/DriverFactory.js +4 -0
  17. package/browser/driver/DriverFactory.js.map +1 -1
  18. package/browser/driver/cockroachdb/CockroachDriver.js +4 -1
  19. package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
  20. package/browser/driver/cockroachdb/CockroachQueryRunner.js +133 -11
  21. package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  22. package/browser/driver/mysql/MysqlDriver.d.ts +1 -0
  23. package/browser/driver/mysql/MysqlDriver.js +94 -23
  24. package/browser/driver/mysql/MysqlDriver.js.map +1 -1
  25. package/browser/driver/mysql/MysqlQueryRunner.js +203 -24
  26. package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
  27. package/browser/driver/oracle/OracleDriver.js +79 -15
  28. package/browser/driver/oracle/OracleDriver.js.map +1 -1
  29. package/browser/driver/oracle/OracleQueryRunner.js +118 -21
  30. package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
  31. package/browser/driver/postgres/PostgresDriver.js +95 -18
  32. package/browser/driver/postgres/PostgresDriver.js.map +1 -1
  33. package/browser/driver/postgres/PostgresQueryRunner.js +60 -38
  34. package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
  35. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +17 -0
  36. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js +3 -0
  37. package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -0
  38. package/browser/driver/spanner/SpannerConnectionOptions.d.ts +120 -0
  39. package/browser/driver/spanner/SpannerConnectionOptions.js +3 -0
  40. package/browser/driver/spanner/SpannerConnectionOptions.js.map +1 -0
  41. package/browser/driver/spanner/SpannerDriver.d.ts +241 -0
  42. package/browser/driver/spanner/SpannerDriver.js +604 -0
  43. package/browser/driver/spanner/SpannerDriver.js.map +1 -0
  44. package/browser/driver/spanner/SpannerQueryRunner.d.ts +350 -0
  45. package/browser/driver/spanner/SpannerQueryRunner.js +1445 -0
  46. package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -0
  47. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +21 -16
  48. package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  49. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +165 -20
  50. package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  51. package/browser/driver/sqlserver/SqlServerDriver.d.ts +3 -1
  52. package/browser/driver/sqlserver/SqlServerDriver.js +99 -26
  53. package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
  54. package/browser/driver/sqlserver/SqlServerQueryRunner.js +153 -17
  55. package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  56. package/browser/driver/types/ColumnTypes.d.ts +1 -1
  57. package/browser/driver/types/ColumnTypes.js.map +1 -1
  58. package/browser/driver/types/DatabaseType.d.ts +1 -1
  59. package/browser/driver/types/DatabaseType.js.map +1 -1
  60. package/browser/entity-schema/EntitySchemaColumnOptions.d.ts +2 -2
  61. package/browser/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  62. package/browser/entity-schema/EntitySchemaIndexOptions.d.ts +8 -0
  63. package/browser/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
  64. package/browser/entity-schema/EntitySchemaTransformer.js +1 -0
  65. package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
  66. package/browser/find-options/FindOneOptions.d.ts +1 -1
  67. package/browser/find-options/FindOneOptions.js.map +1 -1
  68. package/browser/find-options/FindOptionsUtils.d.ts +2 -1
  69. package/browser/find-options/FindOptionsUtils.js +2 -1
  70. package/browser/find-options/FindOptionsUtils.js.map +1 -1
  71. package/browser/logger/AdvancedConsoleLogger.d.ts +1 -1
  72. package/browser/logger/AdvancedConsoleLogger.js +1 -1
  73. package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
  74. package/browser/metadata/ColumnMetadata.d.ts +2 -2
  75. package/browser/metadata/ColumnMetadata.js.map +1 -1
  76. package/browser/metadata/IndexMetadata.d.ts +8 -0
  77. package/browser/metadata/IndexMetadata.js +9 -0
  78. package/browser/metadata/IndexMetadata.js.map +1 -1
  79. package/browser/metadata-args/IndexMetadataArgs.d.ts +8 -0
  80. package/browser/metadata-args/IndexMetadataArgs.js.map +1 -1
  81. package/browser/metadata-builder/EntityMetadataBuilder.js +13 -6
  82. package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  83. package/browser/metadata-builder/EntityMetadataValidator.js +8 -0
  84. package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
  85. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +13 -6
  86. package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  87. package/browser/platform/PlatformTools.js +5 -0
  88. package/browser/platform/PlatformTools.js.map +1 -1
  89. package/browser/query-builder/InsertQueryBuilder.js +15 -3
  90. package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
  91. package/browser/query-builder/QueryExpressionMap.d.ts +1 -1
  92. package/browser/query-builder/QueryExpressionMap.js.map +1 -1
  93. package/browser/query-builder/SelectQueryBuilder.d.ts +1 -1
  94. package/browser/query-builder/SelectQueryBuilder.js +25 -4
  95. package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
  96. package/browser/query-builder/UpdateQueryBuilder.js +18 -7
  97. package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
  98. package/browser/query-runner/BaseQueryRunner.d.ts +10 -0
  99. package/browser/query-runner/BaseQueryRunner.js +25 -1
  100. package/browser/query-runner/BaseQueryRunner.js.map +1 -1
  101. package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +6 -2
  102. package/browser/schema-builder/RdbmsSchemaBuilder.js +26 -6
  103. package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  104. package/browser/schema-builder/options/TableColumnOptions.d.ts +2 -2
  105. package/browser/schema-builder/options/TableColumnOptions.js.map +1 -1
  106. package/browser/schema-builder/options/TableIndexOptions.d.ts +8 -0
  107. package/browser/schema-builder/options/TableIndexOptions.js.map +1 -1
  108. package/browser/schema-builder/table/TableColumn.d.ts +2 -2
  109. package/browser/schema-builder/table/TableColumn.js.map +1 -1
  110. package/browser/schema-builder/table/TableIndex.d.ts +8 -0
  111. package/browser/schema-builder/table/TableIndex.js +3 -0
  112. package/browser/schema-builder/table/TableIndex.js.map +1 -1
  113. package/cache/DbQueryResultCache.js +9 -1
  114. package/cache/DbQueryResultCache.js.map +1 -1
  115. package/cache/RedisQueryResultCache.js +3 -0
  116. package/cache/RedisQueryResultCache.js.map +1 -1
  117. package/data-source/DataSourceOptions.d.ts +2 -1
  118. package/data-source/DataSourceOptions.js.map +1 -1
  119. package/decorator/Index.js +1 -0
  120. package/decorator/Index.js.map +1 -1
  121. package/decorator/columns/PrimaryColumn.js +4 -1
  122. package/decorator/columns/PrimaryColumn.js.map +1 -1
  123. package/decorator/options/ColumnOptions.d.ts +2 -2
  124. package/decorator/options/ColumnOptions.js.map +1 -1
  125. package/decorator/options/IndexOptions.d.ts +8 -0
  126. package/decorator/options/IndexOptions.js.map +1 -1
  127. package/driver/DriverFactory.js +4 -0
  128. package/driver/DriverFactory.js.map +1 -1
  129. package/driver/cockroachdb/CockroachDriver.js +4 -1
  130. package/driver/cockroachdb/CockroachDriver.js.map +1 -1
  131. package/driver/cockroachdb/CockroachQueryRunner.js +133 -11
  132. package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
  133. package/driver/mysql/MysqlDriver.d.ts +1 -0
  134. package/driver/mysql/MysqlDriver.js +94 -23
  135. package/driver/mysql/MysqlDriver.js.map +1 -1
  136. package/driver/mysql/MysqlQueryRunner.js +203 -24
  137. package/driver/mysql/MysqlQueryRunner.js.map +1 -1
  138. package/driver/oracle/OracleDriver.js +79 -15
  139. package/driver/oracle/OracleDriver.js.map +1 -1
  140. package/driver/oracle/OracleQueryRunner.js +118 -21
  141. package/driver/oracle/OracleQueryRunner.js.map +1 -1
  142. package/driver/postgres/PostgresDriver.js +95 -18
  143. package/driver/postgres/PostgresDriver.js.map +1 -1
  144. package/driver/postgres/PostgresQueryRunner.js +60 -38
  145. package/driver/postgres/PostgresQueryRunner.js.map +1 -1
  146. package/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +17 -0
  147. package/driver/spanner/SpannerConnectionCredentialsOptions.js +4 -0
  148. package/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -0
  149. package/driver/spanner/SpannerConnectionOptions.d.ts +120 -0
  150. package/driver/spanner/SpannerConnectionOptions.js +4 -0
  151. package/driver/spanner/SpannerConnectionOptions.js.map +1 -0
  152. package/driver/spanner/SpannerDriver.d.ts +241 -0
  153. package/driver/spanner/SpannerDriver.js +608 -0
  154. package/driver/spanner/SpannerDriver.js.map +1 -0
  155. package/driver/spanner/SpannerQueryRunner.d.ts +350 -0
  156. package/driver/spanner/SpannerQueryRunner.js +1449 -0
  157. package/driver/spanner/SpannerQueryRunner.js.map +1 -0
  158. package/driver/sqlite-abstract/AbstractSqliteDriver.js +21 -16
  159. package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
  160. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +165 -20
  161. package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
  162. package/driver/sqlserver/SqlServerDriver.d.ts +3 -1
  163. package/driver/sqlserver/SqlServerDriver.js +99 -26
  164. package/driver/sqlserver/SqlServerDriver.js.map +1 -1
  165. package/driver/sqlserver/SqlServerQueryRunner.js +153 -17
  166. package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
  167. package/driver/types/ColumnTypes.d.ts +1 -1
  168. package/driver/types/ColumnTypes.js.map +1 -1
  169. package/driver/types/DatabaseType.d.ts +1 -1
  170. package/driver/types/DatabaseType.js.map +1 -1
  171. package/entity-schema/EntitySchemaColumnOptions.d.ts +2 -2
  172. package/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
  173. package/entity-schema/EntitySchemaIndexOptions.d.ts +8 -0
  174. package/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
  175. package/entity-schema/EntitySchemaTransformer.js +1 -0
  176. package/entity-schema/EntitySchemaTransformer.js.map +1 -1
  177. package/find-options/FindOneOptions.d.ts +1 -1
  178. package/find-options/FindOneOptions.js.map +1 -1
  179. package/find-options/FindOptionsUtils.d.ts +2 -1
  180. package/find-options/FindOptionsUtils.js +2 -1
  181. package/find-options/FindOptionsUtils.js.map +1 -1
  182. package/logger/AdvancedConsoleLogger.d.ts +1 -1
  183. package/logger/AdvancedConsoleLogger.js +1 -1
  184. package/logger/AdvancedConsoleLogger.js.map +1 -1
  185. package/metadata/ColumnMetadata.d.ts +2 -2
  186. package/metadata/ColumnMetadata.js.map +1 -1
  187. package/metadata/IndexMetadata.d.ts +8 -0
  188. package/metadata/IndexMetadata.js +9 -0
  189. package/metadata/IndexMetadata.js.map +1 -1
  190. package/metadata-args/IndexMetadataArgs.d.ts +8 -0
  191. package/metadata-args/IndexMetadataArgs.js.map +1 -1
  192. package/metadata-builder/EntityMetadataBuilder.js +13 -6
  193. package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
  194. package/metadata-builder/EntityMetadataValidator.js +8 -0
  195. package/metadata-builder/EntityMetadataValidator.js.map +1 -1
  196. package/metadata-builder/JunctionEntityMetadataBuilder.js +13 -6
  197. package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
  198. package/package.json +1 -1
  199. package/platform/PlatformTools.js +5 -0
  200. package/platform/PlatformTools.js.map +1 -1
  201. package/query-builder/InsertQueryBuilder.js +15 -3
  202. package/query-builder/InsertQueryBuilder.js.map +1 -1
  203. package/query-builder/QueryExpressionMap.d.ts +1 -1
  204. package/query-builder/QueryExpressionMap.js.map +1 -1
  205. package/query-builder/SelectQueryBuilder.d.ts +1 -1
  206. package/query-builder/SelectQueryBuilder.js +25 -4
  207. package/query-builder/SelectQueryBuilder.js.map +1 -1
  208. package/query-builder/UpdateQueryBuilder.js +18 -7
  209. package/query-builder/UpdateQueryBuilder.js.map +1 -1
  210. package/query-runner/BaseQueryRunner.d.ts +10 -0
  211. package/query-runner/BaseQueryRunner.js +25 -1
  212. package/query-runner/BaseQueryRunner.js.map +1 -1
  213. package/schema-builder/RdbmsSchemaBuilder.d.ts +6 -2
  214. package/schema-builder/RdbmsSchemaBuilder.js +26 -6
  215. package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
  216. package/schema-builder/options/TableColumnOptions.d.ts +2 -2
  217. package/schema-builder/options/TableColumnOptions.js.map +1 -1
  218. package/schema-builder/options/TableIndexOptions.d.ts +8 -0
  219. package/schema-builder/options/TableIndexOptions.js.map +1 -1
  220. package/schema-builder/table/TableColumn.d.ts +2 -2
  221. package/schema-builder/table/TableColumn.js.map +1 -1
  222. package/schema-builder/table/TableIndex.d.ts +8 -0
  223. package/schema-builder/table/TableIndex.js +3 -0
  224. package/schema-builder/table/TableIndex.js.map +1 -1
@@ -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
  /**
@@ -518,6 +552,21 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
518
552
  upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${uniqueConstraint.name}" UNIQUE ("${column.name}")`));
519
553
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${uniqueConstraint.name}"`));
520
554
  }
555
+ if (column.generatedType && column.asExpression) {
556
+ const insertQuery = this.insertTypeormMetadataSql({
557
+ table: table.name,
558
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
559
+ name: column.name,
560
+ value: column.asExpression,
561
+ });
562
+ const deleteQuery = this.deleteTypeormMetadataSql({
563
+ table: table.name,
564
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
565
+ name: column.name,
566
+ });
567
+ upQueries.push(insertQuery);
568
+ downQueries.push(deleteQuery);
569
+ }
521
570
  await this.executeQueries(upQueries, downQueries);
522
571
  clonedTable.addColumn(column);
523
572
  this.replaceCachedTable(table, clonedTable);
@@ -570,7 +619,9 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
570
619
  if ((newColumn.isGenerated !== oldColumn.isGenerated &&
571
620
  newColumn.generationStrategy !== "uuid") ||
572
621
  oldColumn.type !== newColumn.type ||
573
- oldColumn.length !== newColumn.length) {
622
+ oldColumn.length !== newColumn.length ||
623
+ oldColumn.generatedType !== newColumn.generatedType ||
624
+ oldColumn.asExpression !== newColumn.asExpression) {
574
625
  // Oracle does not support changing of IDENTITY column, so we must drop column and recreate it again.
575
626
  // Also, we recreate column if column type changed
576
627
  await this.dropColumn(table, oldColumn);
@@ -810,6 +861,21 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
810
861
  }
811
862
  upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP COLUMN "${column.name}"`));
812
863
  downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD ${this.buildCreateColumnSql(column)}`));
864
+ if (column.generatedType && column.asExpression) {
865
+ const deleteQuery = this.deleteTypeormMetadataSql({
866
+ table: table.name,
867
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
868
+ name: column.name,
869
+ });
870
+ const insertQuery = this.insertTypeormMetadataSql({
871
+ table: table.name,
872
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
873
+ name: column.name,
874
+ value: column.asExpression,
875
+ });
876
+ upQueries.push(deleteQuery);
877
+ downQueries.push(insertQuery);
878
+ }
813
879
  await this.executeQueries(upQueries, downQueries);
814
880
  clonedTable.removeColumn(column);
815
881
  this.replaceCachedTable(table, clonedTable);
@@ -1246,7 +1312,7 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1246
1312
  this.query(constraintsSql),
1247
1313
  ]);
1248
1314
  // create tables for loaded tables
1249
- return dbTables.map((dbTable) => {
1315
+ return await Promise.all(dbTables.map(async (dbTable) => {
1250
1316
  const table = new Table_1.Table();
1251
1317
  const owner = dbTable["OWNER"] === currentSchema &&
1252
1318
  (!this.driver.options.schema ||
@@ -1257,11 +1323,13 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1257
1323
  table.schema = dbTable["OWNER"];
1258
1324
  table.name = this.driver.buildTableName(dbTable["TABLE_NAME"], owner);
1259
1325
  // create columns from the loaded columns
1260
- table.columns = dbColumns
1326
+ table.columns = await Promise.all(dbColumns
1261
1327
  .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"] &&
1328
+ dbColumn["TABLE_NAME"] ===
1329
+ dbTable["TABLE_NAME"])
1330
+ .map(async (dbColumn) => {
1331
+ const columnConstraints = dbConstraints.filter((dbConstraint) => dbConstraint["OWNER"] ===
1332
+ dbColumn["OWNER"] &&
1265
1333
  dbConstraint["TABLE_NAME"] ===
1266
1334
  dbColumn["TABLE_NAME"] &&
1267
1335
  dbConstraint["COLUMN_NAME"] ===
@@ -1276,12 +1344,14 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1276
1344
  dbColumn["COLUMN_NAME"] &&
1277
1345
  dbConstraint["CONSTRAINT_NAME"] ===
1278
1346
  uniqueConstraint["CONSTRAINT_NAME"] &&
1279
- dbConstraint["CONSTRAINT_TYPE"] === "U");
1347
+ dbConstraint["CONSTRAINT_TYPE"] ===
1348
+ "U");
1280
1349
  });
1281
1350
  const isPrimary = !!columnConstraints.find((constraint) => constraint["CONSTRAINT_TYPE"] === "P");
1282
1351
  const tableColumn = new TableColumn_1.TableColumn();
1283
1352
  tableColumn.name = dbColumn["COLUMN_NAME"];
1284
- tableColumn.type = dbColumn["DATA_TYPE"].toLowerCase();
1353
+ tableColumn.type =
1354
+ dbColumn["DATA_TYPE"].toLowerCase();
1285
1355
  if (tableColumn.type.indexOf("(") !== -1)
1286
1356
  tableColumn.type = tableColumn.type.replace(/\([0-9]*\)/, "");
1287
1357
  // check only columns that have length property
@@ -1299,30 +1369,36 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1299
1369
  tableColumn.type === "float") {
1300
1370
  if (dbColumn["DATA_PRECISION"] !== null &&
1301
1371
  !this.isDefaultColumnPrecision(table, tableColumn, dbColumn["DATA_PRECISION"]))
1302
- tableColumn.precision = dbColumn["DATA_PRECISION"];
1372
+ tableColumn.precision =
1373
+ dbColumn["DATA_PRECISION"];
1303
1374
  if (dbColumn["DATA_SCALE"] !== null &&
1304
1375
  !this.isDefaultColumnScale(table, tableColumn, dbColumn["DATA_SCALE"]))
1305
1376
  tableColumn.scale = dbColumn["DATA_SCALE"];
1306
1377
  }
1307
1378
  else if ((tableColumn.type === "timestamp" ||
1308
- tableColumn.type === "timestamp with time zone" ||
1379
+ tableColumn.type ===
1380
+ "timestamp with time zone" ||
1309
1381
  tableColumn.type ===
1310
1382
  "timestamp with local time zone") &&
1311
1383
  dbColumn["DATA_SCALE"] !== null) {
1312
- tableColumn.precision = !this.isDefaultColumnPrecision(table, tableColumn, dbColumn["DATA_SCALE"])
1313
- ? dbColumn["DATA_SCALE"]
1314
- : undefined;
1384
+ tableColumn.precision =
1385
+ !this.isDefaultColumnPrecision(table, tableColumn, dbColumn["DATA_SCALE"])
1386
+ ? dbColumn["DATA_SCALE"]
1387
+ : undefined;
1315
1388
  }
1316
1389
  tableColumn.default =
1317
1390
  dbColumn["DATA_DEFAULT"] !== null &&
1318
1391
  dbColumn["DATA_DEFAULT"] !== undefined &&
1392
+ dbColumn["VIRTUAL_COLUMN"] === "NO" &&
1319
1393
  dbColumn["DATA_DEFAULT"].trim() !== "NULL"
1320
1394
  ? (tableColumn.default =
1321
1395
  dbColumn["DATA_DEFAULT"].trim())
1322
1396
  : undefined;
1323
- tableColumn.isNullable = dbColumn["NULLABLE"] === "Y";
1397
+ tableColumn.isNullable =
1398
+ dbColumn["NULLABLE"] === "Y";
1324
1399
  tableColumn.isUnique =
1325
- uniqueConstraints.length > 0 && !isConstraintComposite;
1400
+ uniqueConstraints.length > 0 &&
1401
+ !isConstraintComposite;
1326
1402
  tableColumn.isPrimary = isPrimary;
1327
1403
  tableColumn.isGenerated =
1328
1404
  dbColumn["IDENTITY_COLUMN"] === "YES";
@@ -1331,11 +1407,27 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1331
1407
  tableColumn.default = undefined;
1332
1408
  }
1333
1409
  tableColumn.comment = ""; // todo
1410
+ if (dbColumn["VIRTUAL_COLUMN"] === "YES") {
1411
+ tableColumn.generatedType = "VIRTUAL";
1412
+ const asExpressionQuery = await this.selectTypeormMetadataSql({
1413
+ table: dbTable["TABLE_NAME"],
1414
+ type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
1415
+ name: tableColumn.name,
1416
+ });
1417
+ const results = await this.query(asExpressionQuery.query, asExpressionQuery.parameters);
1418
+ if (results[0] && results[0].value) {
1419
+ tableColumn.asExpression = results[0].value;
1420
+ }
1421
+ else {
1422
+ tableColumn.asExpression = "";
1423
+ }
1424
+ }
1334
1425
  return tableColumn;
1335
- });
1426
+ }));
1336
1427
  // find unique constraints of table, group them by constraint name and build TableUnique.
1337
1428
  const tableUniqueConstraints = OrmUtils_1.OrmUtils.uniq(dbConstraints.filter((dbConstraint) => {
1338
- return (dbConstraint["TABLE_NAME"] === dbTable["TABLE_NAME"] &&
1429
+ return (dbConstraint["TABLE_NAME"] ===
1430
+ dbTable["TABLE_NAME"] &&
1339
1431
  dbConstraint["OWNER"] === dbTable["OWNER"] &&
1340
1432
  dbConstraint["CONSTRAINT_TYPE"] === "U");
1341
1433
  }), (dbConstraint) => dbConstraint["CONSTRAINT_NAME"]);
@@ -1349,7 +1441,8 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1349
1441
  });
1350
1442
  // find check constraints of table, group them by constraint name and build TableCheck.
1351
1443
  const tableCheckConstraints = OrmUtils_1.OrmUtils.uniq(dbConstraints.filter((dbConstraint) => {
1352
- return (dbConstraint["TABLE_NAME"] === dbTable["TABLE_NAME"] &&
1444
+ return (dbConstraint["TABLE_NAME"] ===
1445
+ dbTable["TABLE_NAME"] &&
1353
1446
  dbConstraint["OWNER"] === dbTable["OWNER"] &&
1354
1447
  dbConstraint["CONSTRAINT_TYPE"] === "C");
1355
1448
  }), (dbConstraint) => dbConstraint["CONSTRAINT_NAME"]);
@@ -1366,9 +1459,11 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1366
1459
  });
1367
1460
  // find foreign key constraints of table, group them by constraint name and build TableForeignKey.
1368
1461
  const tableForeignKeyConstraints = OrmUtils_1.OrmUtils.uniq(dbForeignKeys.filter((dbForeignKey) => dbForeignKey["OWNER"] === dbTable["OWNER"] &&
1369
- dbForeignKey["TABLE_NAME"] === dbTable["TABLE_NAME"]), (dbForeignKey) => dbForeignKey["CONSTRAINT_NAME"]);
1462
+ dbForeignKey["TABLE_NAME"] ===
1463
+ dbTable["TABLE_NAME"]), (dbForeignKey) => dbForeignKey["CONSTRAINT_NAME"]);
1370
1464
  table.foreignKeys = tableForeignKeyConstraints.map((dbForeignKey) => {
1371
- const foreignKeys = dbForeignKeys.filter((dbFk) => dbFk["TABLE_NAME"] === dbForeignKey["TABLE_NAME"] &&
1465
+ const foreignKeys = dbForeignKeys.filter((dbFk) => dbFk["TABLE_NAME"] ===
1466
+ dbForeignKey["TABLE_NAME"] &&
1372
1467
  dbFk["OWNER"] === dbForeignKey["OWNER"] &&
1373
1468
  dbFk["CONSTRAINT_NAME"] ===
1374
1469
  dbForeignKey["CONSTRAINT_NAME"]);
@@ -1395,7 +1490,7 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1395
1490
  });
1396
1491
  });
1397
1492
  return table;
1398
- });
1493
+ }));
1399
1494
  }
1400
1495
  /**
1401
1496
  * Builds and returns SQL for create table.
@@ -1623,6 +1718,8 @@ class OracleQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
1623
1718
  c += " CHARACTER SET " + column.charset;
1624
1719
  if (column.collation)
1625
1720
  c += " COLLATE " + column.collation;
1721
+ if (column.asExpression)
1722
+ c += ` AS (${column.asExpression}) VIRTUAL`;
1626
1723
  if (column.default !== undefined && column.default !== null)
1627
1724
  // DEFAULT must be placed before NOT NULL
1628
1725
  c += " DEFAULT " + column.default;