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.
- package/README.md +33 -13
- package/browser/cache/DbQueryResultCache.js +9 -1
- package/browser/cache/DbQueryResultCache.js.map +1 -1
- package/browser/cache/RedisQueryResultCache.js +3 -0
- package/browser/cache/RedisQueryResultCache.js.map +1 -1
- package/browser/data-source/DataSourceOptions.d.ts +2 -1
- package/browser/data-source/DataSourceOptions.js.map +1 -1
- package/browser/decorator/Index.js +1 -0
- package/browser/decorator/Index.js.map +1 -1
- package/browser/decorator/columns/PrimaryColumn.js +4 -1
- package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
- package/browser/decorator/options/ColumnOptions.d.ts +2 -2
- package/browser/decorator/options/ColumnOptions.js.map +1 -1
- package/browser/decorator/options/IndexOptions.d.ts +8 -0
- package/browser/decorator/options/IndexOptions.js.map +1 -1
- package/browser/driver/DriverFactory.js +4 -0
- package/browser/driver/DriverFactory.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachDriver.js +4 -1
- package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +133 -11
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/mysql/MysqlDriver.d.ts +1 -0
- package/browser/driver/mysql/MysqlDriver.js +94 -23
- package/browser/driver/mysql/MysqlDriver.js.map +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.js +203 -24
- package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/browser/driver/oracle/OracleDriver.js +79 -15
- package/browser/driver/oracle/OracleDriver.js.map +1 -1
- package/browser/driver/oracle/OracleQueryRunner.js +118 -21
- package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/browser/driver/postgres/PostgresDriver.js +95 -18
- package/browser/driver/postgres/PostgresDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.js +60 -38
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +17 -0
- package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js +3 -0
- package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -0
- package/browser/driver/spanner/SpannerConnectionOptions.d.ts +120 -0
- package/browser/driver/spanner/SpannerConnectionOptions.js +3 -0
- package/browser/driver/spanner/SpannerConnectionOptions.js.map +1 -0
- package/browser/driver/spanner/SpannerDriver.d.ts +241 -0
- package/browser/driver/spanner/SpannerDriver.js +604 -0
- package/browser/driver/spanner/SpannerDriver.js.map +1 -0
- package/browser/driver/spanner/SpannerQueryRunner.d.ts +350 -0
- package/browser/driver/spanner/SpannerQueryRunner.js +1445 -0
- package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -0
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +21 -16
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +165 -20
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.d.ts +3 -1
- package/browser/driver/sqlserver/SqlServerDriver.js +99 -26
- package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.js +153 -17
- package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/browser/driver/types/ColumnTypes.d.ts +1 -1
- package/browser/driver/types/ColumnTypes.js.map +1 -1
- package/browser/driver/types/DatabaseType.d.ts +1 -1
- package/browser/driver/types/DatabaseType.js.map +1 -1
- package/browser/entity-schema/EntitySchemaColumnOptions.d.ts +2 -2
- package/browser/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaIndexOptions.d.ts +8 -0
- package/browser/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaTransformer.js +1 -0
- package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/browser/find-options/FindOneOptions.d.ts +1 -1
- package/browser/find-options/FindOneOptions.js.map +1 -1
- package/browser/find-options/FindOptionsUtils.d.ts +2 -1
- package/browser/find-options/FindOptionsUtils.js +2 -1
- package/browser/find-options/FindOptionsUtils.js.map +1 -1
- package/browser/logger/AdvancedConsoleLogger.d.ts +1 -1
- package/browser/logger/AdvancedConsoleLogger.js +1 -1
- package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
- package/browser/metadata/ColumnMetadata.d.ts +2 -2
- package/browser/metadata/ColumnMetadata.js.map +1 -1
- package/browser/metadata/IndexMetadata.d.ts +8 -0
- package/browser/metadata/IndexMetadata.js +9 -0
- package/browser/metadata/IndexMetadata.js.map +1 -1
- package/browser/metadata-args/IndexMetadataArgs.d.ts +8 -0
- package/browser/metadata-args/IndexMetadataArgs.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataBuilder.js +13 -6
- package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataValidator.js +8 -0
- package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +13 -6
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/browser/platform/PlatformTools.js +5 -0
- package/browser/platform/PlatformTools.js.map +1 -1
- package/browser/query-builder/InsertQueryBuilder.js +15 -3
- package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
- package/browser/query-builder/QueryExpressionMap.d.ts +1 -1
- package/browser/query-builder/QueryExpressionMap.js.map +1 -1
- package/browser/query-builder/SelectQueryBuilder.d.ts +1 -1
- package/browser/query-builder/SelectQueryBuilder.js +25 -4
- package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
- package/browser/query-builder/UpdateQueryBuilder.js +18 -7
- package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/browser/query-runner/BaseQueryRunner.d.ts +10 -0
- package/browser/query-runner/BaseQueryRunner.js +25 -1
- package/browser/query-runner/BaseQueryRunner.js.map +1 -1
- package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +6 -2
- package/browser/schema-builder/RdbmsSchemaBuilder.js +26 -6
- package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/browser/schema-builder/options/TableColumnOptions.d.ts +2 -2
- package/browser/schema-builder/options/TableColumnOptions.js.map +1 -1
- package/browser/schema-builder/options/TableIndexOptions.d.ts +8 -0
- package/browser/schema-builder/options/TableIndexOptions.js.map +1 -1
- package/browser/schema-builder/table/TableColumn.d.ts +2 -2
- package/browser/schema-builder/table/TableColumn.js.map +1 -1
- package/browser/schema-builder/table/TableIndex.d.ts +8 -0
- package/browser/schema-builder/table/TableIndex.js +3 -0
- package/browser/schema-builder/table/TableIndex.js.map +1 -1
- package/cache/DbQueryResultCache.js +9 -1
- package/cache/DbQueryResultCache.js.map +1 -1
- package/cache/RedisQueryResultCache.js +3 -0
- package/cache/RedisQueryResultCache.js.map +1 -1
- package/data-source/DataSourceOptions.d.ts +2 -1
- package/data-source/DataSourceOptions.js.map +1 -1
- package/decorator/Index.js +1 -0
- package/decorator/Index.js.map +1 -1
- package/decorator/columns/PrimaryColumn.js +4 -1
- package/decorator/columns/PrimaryColumn.js.map +1 -1
- package/decorator/options/ColumnOptions.d.ts +2 -2
- package/decorator/options/ColumnOptions.js.map +1 -1
- package/decorator/options/IndexOptions.d.ts +8 -0
- package/decorator/options/IndexOptions.js.map +1 -1
- package/driver/DriverFactory.js +4 -0
- package/driver/DriverFactory.js.map +1 -1
- package/driver/cockroachdb/CockroachDriver.js +4 -1
- package/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.js +133 -11
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/mysql/MysqlDriver.d.ts +1 -0
- package/driver/mysql/MysqlDriver.js +94 -23
- package/driver/mysql/MysqlDriver.js.map +1 -1
- package/driver/mysql/MysqlQueryRunner.js +203 -24
- package/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/driver/oracle/OracleDriver.js +79 -15
- package/driver/oracle/OracleDriver.js.map +1 -1
- package/driver/oracle/OracleQueryRunner.js +118 -21
- package/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/driver/postgres/PostgresDriver.js +95 -18
- package/driver/postgres/PostgresDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.js +60 -38
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +17 -0
- package/driver/spanner/SpannerConnectionCredentialsOptions.js +4 -0
- package/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -0
- package/driver/spanner/SpannerConnectionOptions.d.ts +120 -0
- package/driver/spanner/SpannerConnectionOptions.js +4 -0
- package/driver/spanner/SpannerConnectionOptions.js.map +1 -0
- package/driver/spanner/SpannerDriver.d.ts +241 -0
- package/driver/spanner/SpannerDriver.js +608 -0
- package/driver/spanner/SpannerDriver.js.map +1 -0
- package/driver/spanner/SpannerQueryRunner.d.ts +350 -0
- package/driver/spanner/SpannerQueryRunner.js +1449 -0
- package/driver/spanner/SpannerQueryRunner.js.map +1 -0
- package/driver/sqlite-abstract/AbstractSqliteDriver.js +21 -16
- package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +165 -20
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/driver/sqlserver/SqlServerDriver.d.ts +3 -1
- package/driver/sqlserver/SqlServerDriver.js +99 -26
- package/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/driver/sqlserver/SqlServerQueryRunner.js +153 -17
- package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/driver/types/ColumnTypes.d.ts +1 -1
- package/driver/types/ColumnTypes.js.map +1 -1
- package/driver/types/DatabaseType.d.ts +1 -1
- package/driver/types/DatabaseType.js.map +1 -1
- package/entity-schema/EntitySchemaColumnOptions.d.ts +2 -2
- package/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
- package/entity-schema/EntitySchemaIndexOptions.d.ts +8 -0
- package/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
- package/entity-schema/EntitySchemaTransformer.js +1 -0
- package/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/find-options/FindOneOptions.d.ts +1 -1
- package/find-options/FindOneOptions.js.map +1 -1
- package/find-options/FindOptionsUtils.d.ts +2 -1
- package/find-options/FindOptionsUtils.js +2 -1
- package/find-options/FindOptionsUtils.js.map +1 -1
- package/logger/AdvancedConsoleLogger.d.ts +1 -1
- package/logger/AdvancedConsoleLogger.js +1 -1
- package/logger/AdvancedConsoleLogger.js.map +1 -1
- package/metadata/ColumnMetadata.d.ts +2 -2
- package/metadata/ColumnMetadata.js.map +1 -1
- package/metadata/IndexMetadata.d.ts +8 -0
- package/metadata/IndexMetadata.js +9 -0
- package/metadata/IndexMetadata.js.map +1 -1
- package/metadata-args/IndexMetadataArgs.d.ts +8 -0
- package/metadata-args/IndexMetadataArgs.js.map +1 -1
- package/metadata-builder/EntityMetadataBuilder.js +13 -6
- package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/EntityMetadataValidator.js +8 -0
- package/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/metadata-builder/JunctionEntityMetadataBuilder.js +13 -6
- package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/package.json +1 -1
- package/platform/PlatformTools.js +5 -0
- package/platform/PlatformTools.js.map +1 -1
- package/query-builder/InsertQueryBuilder.js +15 -3
- package/query-builder/InsertQueryBuilder.js.map +1 -1
- package/query-builder/QueryExpressionMap.d.ts +1 -1
- package/query-builder/QueryExpressionMap.js.map +1 -1
- package/query-builder/SelectQueryBuilder.d.ts +1 -1
- package/query-builder/SelectQueryBuilder.js +25 -4
- package/query-builder/SelectQueryBuilder.js.map +1 -1
- package/query-builder/UpdateQueryBuilder.js +18 -7
- package/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/query-runner/BaseQueryRunner.d.ts +10 -0
- package/query-runner/BaseQueryRunner.js +25 -1
- package/query-runner/BaseQueryRunner.js.map +1 -1
- package/schema-builder/RdbmsSchemaBuilder.d.ts +6 -2
- package/schema-builder/RdbmsSchemaBuilder.js +26 -6
- package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/schema-builder/options/TableColumnOptions.d.ts +2 -2
- package/schema-builder/options/TableColumnOptions.js.map +1 -1
- package/schema-builder/options/TableIndexOptions.d.ts +8 -0
- package/schema-builder/options/TableIndexOptions.js.map +1 -1
- package/schema-builder/table/TableColumn.d.ts +2 -2
- package/schema-builder/table/TableColumn.js.map +1 -1
- package/schema-builder/table/TableIndex.d.ts +8 -0
- package/schema-builder/table/TableIndex.js +3 -0
- 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"] ===
|
|
1263
|
-
|
|
1264
|
-
|
|
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"] ===
|
|
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 =
|
|
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 =
|
|
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 ===
|
|
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 =
|
|
1313
|
-
|
|
1314
|
-
|
|
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 =
|
|
1397
|
+
tableColumn.isNullable =
|
|
1398
|
+
dbColumn["NULLABLE"] === "Y";
|
|
1324
1399
|
tableColumn.isUnique =
|
|
1325
|
-
uniqueConstraints.length > 0 &&
|
|
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"] ===
|
|
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"] ===
|
|
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"] ===
|
|
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"] ===
|
|
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;
|