typeorm 0.3.5 → 0.3.6-dev.0418ebc
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/cli-ts-node-commonjs.js +0 -0
- package/browser/cli-ts-node-esm.js +0 -0
- package/browser/data-source/BaseDataSourceOptions.d.ts +1 -2
- package/browser/data-source/BaseDataSourceOptions.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 +3 -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/cli-ts-node-commonjs.js +0 -0
- package/cli-ts-node-esm.js +0 -0
- package/cli.js +0 -0
- package/data-source/BaseDataSourceOptions.d.ts +1 -2
- package/data-source/BaseDataSourceOptions.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 +3 -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 -261
- 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
|
@@ -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
|
/**
|
|
@@ -515,6 +549,21 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
515
549
|
upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${uniqueConstraint.name}" UNIQUE ("${column.name}")`));
|
|
516
550
|
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${uniqueConstraint.name}"`));
|
|
517
551
|
}
|
|
552
|
+
if (column.generatedType && column.asExpression) {
|
|
553
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
554
|
+
table: table.name,
|
|
555
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
556
|
+
name: column.name,
|
|
557
|
+
value: column.asExpression,
|
|
558
|
+
});
|
|
559
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
560
|
+
table: table.name,
|
|
561
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
562
|
+
name: column.name,
|
|
563
|
+
});
|
|
564
|
+
upQueries.push(insertQuery);
|
|
565
|
+
downQueries.push(deleteQuery);
|
|
566
|
+
}
|
|
518
567
|
await this.executeQueries(upQueries, downQueries);
|
|
519
568
|
clonedTable.addColumn(column);
|
|
520
569
|
this.replaceCachedTable(table, clonedTable);
|
|
@@ -567,7 +616,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
567
616
|
if ((newColumn.isGenerated !== oldColumn.isGenerated &&
|
|
568
617
|
newColumn.generationStrategy !== "uuid") ||
|
|
569
618
|
oldColumn.type !== newColumn.type ||
|
|
570
|
-
oldColumn.length !== newColumn.length
|
|
619
|
+
oldColumn.length !== newColumn.length ||
|
|
620
|
+
oldColumn.generatedType !== newColumn.generatedType ||
|
|
621
|
+
oldColumn.asExpression !== newColumn.asExpression) {
|
|
571
622
|
// Oracle does not support changing of IDENTITY column, so we must drop column and recreate it again.
|
|
572
623
|
// Also, we recreate column if column type changed
|
|
573
624
|
await this.dropColumn(table, oldColumn);
|
|
@@ -807,6 +858,21 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
807
858
|
}
|
|
808
859
|
upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP COLUMN "${column.name}"`));
|
|
809
860
|
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD ${this.buildCreateColumnSql(column)}`));
|
|
861
|
+
if (column.generatedType && column.asExpression) {
|
|
862
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
863
|
+
table: table.name,
|
|
864
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
865
|
+
name: column.name,
|
|
866
|
+
});
|
|
867
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
868
|
+
table: table.name,
|
|
869
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
870
|
+
name: column.name,
|
|
871
|
+
value: column.asExpression,
|
|
872
|
+
});
|
|
873
|
+
upQueries.push(deleteQuery);
|
|
874
|
+
downQueries.push(insertQuery);
|
|
875
|
+
}
|
|
810
876
|
await this.executeQueries(upQueries, downQueries);
|
|
811
877
|
clonedTable.removeColumn(column);
|
|
812
878
|
this.replaceCachedTable(table, clonedTable);
|
|
@@ -1243,7 +1309,7 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
1243
1309
|
this.query(constraintsSql),
|
|
1244
1310
|
]);
|
|
1245
1311
|
// create tables for loaded tables
|
|
1246
|
-
return dbTables.map((dbTable) => {
|
|
1312
|
+
return await Promise.all(dbTables.map(async (dbTable) => {
|
|
1247
1313
|
const table = new Table();
|
|
1248
1314
|
const owner = dbTable["OWNER"] === currentSchema &&
|
|
1249
1315
|
(!this.driver.options.schema ||
|
|
@@ -1254,11 +1320,13 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
1254
1320
|
table.schema = dbTable["OWNER"];
|
|
1255
1321
|
table.name = this.driver.buildTableName(dbTable["TABLE_NAME"], owner);
|
|
1256
1322
|
// create columns from the loaded columns
|
|
1257
|
-
table.columns = dbColumns
|
|
1323
|
+
table.columns = await Promise.all(dbColumns
|
|
1258
1324
|
.filter((dbColumn) => dbColumn["OWNER"] === dbTable["OWNER"] &&
|
|
1259
|
-
dbColumn["TABLE_NAME"] ===
|
|
1260
|
-
|
|
1261
|
-
|
|
1325
|
+
dbColumn["TABLE_NAME"] ===
|
|
1326
|
+
dbTable["TABLE_NAME"])
|
|
1327
|
+
.map(async (dbColumn) => {
|
|
1328
|
+
const columnConstraints = dbConstraints.filter((dbConstraint) => dbConstraint["OWNER"] ===
|
|
1329
|
+
dbColumn["OWNER"] &&
|
|
1262
1330
|
dbConstraint["TABLE_NAME"] ===
|
|
1263
1331
|
dbColumn["TABLE_NAME"] &&
|
|
1264
1332
|
dbConstraint["COLUMN_NAME"] ===
|
|
@@ -1273,12 +1341,14 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
1273
1341
|
dbColumn["COLUMN_NAME"] &&
|
|
1274
1342
|
dbConstraint["CONSTRAINT_NAME"] ===
|
|
1275
1343
|
uniqueConstraint["CONSTRAINT_NAME"] &&
|
|
1276
|
-
dbConstraint["CONSTRAINT_TYPE"] ===
|
|
1344
|
+
dbConstraint["CONSTRAINT_TYPE"] ===
|
|
1345
|
+
"U");
|
|
1277
1346
|
});
|
|
1278
1347
|
const isPrimary = !!columnConstraints.find((constraint) => constraint["CONSTRAINT_TYPE"] === "P");
|
|
1279
1348
|
const tableColumn = new TableColumn();
|
|
1280
1349
|
tableColumn.name = dbColumn["COLUMN_NAME"];
|
|
1281
|
-
tableColumn.type =
|
|
1350
|
+
tableColumn.type =
|
|
1351
|
+
dbColumn["DATA_TYPE"].toLowerCase();
|
|
1282
1352
|
if (tableColumn.type.indexOf("(") !== -1)
|
|
1283
1353
|
tableColumn.type = tableColumn.type.replace(/\([0-9]*\)/, "");
|
|
1284
1354
|
// check only columns that have length property
|
|
@@ -1296,30 +1366,36 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
1296
1366
|
tableColumn.type === "float") {
|
|
1297
1367
|
if (dbColumn["DATA_PRECISION"] !== null &&
|
|
1298
1368
|
!this.isDefaultColumnPrecision(table, tableColumn, dbColumn["DATA_PRECISION"]))
|
|
1299
|
-
tableColumn.precision =
|
|
1369
|
+
tableColumn.precision =
|
|
1370
|
+
dbColumn["DATA_PRECISION"];
|
|
1300
1371
|
if (dbColumn["DATA_SCALE"] !== null &&
|
|
1301
1372
|
!this.isDefaultColumnScale(table, tableColumn, dbColumn["DATA_SCALE"]))
|
|
1302
1373
|
tableColumn.scale = dbColumn["DATA_SCALE"];
|
|
1303
1374
|
}
|
|
1304
1375
|
else if ((tableColumn.type === "timestamp" ||
|
|
1305
|
-
tableColumn.type ===
|
|
1376
|
+
tableColumn.type ===
|
|
1377
|
+
"timestamp with time zone" ||
|
|
1306
1378
|
tableColumn.type ===
|
|
1307
1379
|
"timestamp with local time zone") &&
|
|
1308
1380
|
dbColumn["DATA_SCALE"] !== null) {
|
|
1309
|
-
tableColumn.precision =
|
|
1310
|
-
|
|
1311
|
-
|
|
1381
|
+
tableColumn.precision =
|
|
1382
|
+
!this.isDefaultColumnPrecision(table, tableColumn, dbColumn["DATA_SCALE"])
|
|
1383
|
+
? dbColumn["DATA_SCALE"]
|
|
1384
|
+
: undefined;
|
|
1312
1385
|
}
|
|
1313
1386
|
tableColumn.default =
|
|
1314
1387
|
dbColumn["DATA_DEFAULT"] !== null &&
|
|
1315
1388
|
dbColumn["DATA_DEFAULT"] !== undefined &&
|
|
1389
|
+
dbColumn["VIRTUAL_COLUMN"] === "NO" &&
|
|
1316
1390
|
dbColumn["DATA_DEFAULT"].trim() !== "NULL"
|
|
1317
1391
|
? (tableColumn.default =
|
|
1318
1392
|
dbColumn["DATA_DEFAULT"].trim())
|
|
1319
1393
|
: undefined;
|
|
1320
|
-
tableColumn.isNullable =
|
|
1394
|
+
tableColumn.isNullable =
|
|
1395
|
+
dbColumn["NULLABLE"] === "Y";
|
|
1321
1396
|
tableColumn.isUnique =
|
|
1322
|
-
uniqueConstraints.length > 0 &&
|
|
1397
|
+
uniqueConstraints.length > 0 &&
|
|
1398
|
+
!isConstraintComposite;
|
|
1323
1399
|
tableColumn.isPrimary = isPrimary;
|
|
1324
1400
|
tableColumn.isGenerated =
|
|
1325
1401
|
dbColumn["IDENTITY_COLUMN"] === "YES";
|
|
@@ -1328,11 +1404,27 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
1328
1404
|
tableColumn.default = undefined;
|
|
1329
1405
|
}
|
|
1330
1406
|
tableColumn.comment = ""; // todo
|
|
1407
|
+
if (dbColumn["VIRTUAL_COLUMN"] === "YES") {
|
|
1408
|
+
tableColumn.generatedType = "VIRTUAL";
|
|
1409
|
+
const asExpressionQuery = await this.selectTypeormMetadataSql({
|
|
1410
|
+
table: dbTable["TABLE_NAME"],
|
|
1411
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
1412
|
+
name: tableColumn.name,
|
|
1413
|
+
});
|
|
1414
|
+
const results = await this.query(asExpressionQuery.query, asExpressionQuery.parameters);
|
|
1415
|
+
if (results[0] && results[0].value) {
|
|
1416
|
+
tableColumn.asExpression = results[0].value;
|
|
1417
|
+
}
|
|
1418
|
+
else {
|
|
1419
|
+
tableColumn.asExpression = "";
|
|
1420
|
+
}
|
|
1421
|
+
}
|
|
1331
1422
|
return tableColumn;
|
|
1332
|
-
});
|
|
1423
|
+
}));
|
|
1333
1424
|
// find unique constraints of table, group them by constraint name and build TableUnique.
|
|
1334
1425
|
const tableUniqueConstraints = OrmUtils.uniq(dbConstraints.filter((dbConstraint) => {
|
|
1335
|
-
return (dbConstraint["TABLE_NAME"] ===
|
|
1426
|
+
return (dbConstraint["TABLE_NAME"] ===
|
|
1427
|
+
dbTable["TABLE_NAME"] &&
|
|
1336
1428
|
dbConstraint["OWNER"] === dbTable["OWNER"] &&
|
|
1337
1429
|
dbConstraint["CONSTRAINT_TYPE"] === "U");
|
|
1338
1430
|
}), (dbConstraint) => dbConstraint["CONSTRAINT_NAME"]);
|
|
@@ -1346,7 +1438,8 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
1346
1438
|
});
|
|
1347
1439
|
// find check constraints of table, group them by constraint name and build TableCheck.
|
|
1348
1440
|
const tableCheckConstraints = OrmUtils.uniq(dbConstraints.filter((dbConstraint) => {
|
|
1349
|
-
return (dbConstraint["TABLE_NAME"] ===
|
|
1441
|
+
return (dbConstraint["TABLE_NAME"] ===
|
|
1442
|
+
dbTable["TABLE_NAME"] &&
|
|
1350
1443
|
dbConstraint["OWNER"] === dbTable["OWNER"] &&
|
|
1351
1444
|
dbConstraint["CONSTRAINT_TYPE"] === "C");
|
|
1352
1445
|
}), (dbConstraint) => dbConstraint["CONSTRAINT_NAME"]);
|
|
@@ -1363,9 +1456,11 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
1363
1456
|
});
|
|
1364
1457
|
// find foreign key constraints of table, group them by constraint name and build TableForeignKey.
|
|
1365
1458
|
const tableForeignKeyConstraints = OrmUtils.uniq(dbForeignKeys.filter((dbForeignKey) => dbForeignKey["OWNER"] === dbTable["OWNER"] &&
|
|
1366
|
-
dbForeignKey["TABLE_NAME"] ===
|
|
1459
|
+
dbForeignKey["TABLE_NAME"] ===
|
|
1460
|
+
dbTable["TABLE_NAME"]), (dbForeignKey) => dbForeignKey["CONSTRAINT_NAME"]);
|
|
1367
1461
|
table.foreignKeys = tableForeignKeyConstraints.map((dbForeignKey) => {
|
|
1368
|
-
const foreignKeys = dbForeignKeys.filter((dbFk) => dbFk["TABLE_NAME"] ===
|
|
1462
|
+
const foreignKeys = dbForeignKeys.filter((dbFk) => dbFk["TABLE_NAME"] ===
|
|
1463
|
+
dbForeignKey["TABLE_NAME"] &&
|
|
1369
1464
|
dbFk["OWNER"] === dbForeignKey["OWNER"] &&
|
|
1370
1465
|
dbFk["CONSTRAINT_NAME"] ===
|
|
1371
1466
|
dbForeignKey["CONSTRAINT_NAME"]);
|
|
@@ -1392,7 +1487,7 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
1392
1487
|
});
|
|
1393
1488
|
});
|
|
1394
1489
|
return table;
|
|
1395
|
-
});
|
|
1490
|
+
}));
|
|
1396
1491
|
}
|
|
1397
1492
|
/**
|
|
1398
1493
|
* Builds and returns SQL for create table.
|
|
@@ -1620,6 +1715,8 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
1620
1715
|
c += " CHARACTER SET " + column.charset;
|
|
1621
1716
|
if (column.collation)
|
|
1622
1717
|
c += " COLLATE " + column.collation;
|
|
1718
|
+
if (column.asExpression)
|
|
1719
|
+
c += ` AS (${column.asExpression}) VIRTUAL`;
|
|
1623
1720
|
if (column.default !== undefined && column.default !== null)
|
|
1624
1721
|
// DEFAULT must be placed before NOT NULL
|
|
1625
1722
|
c += " DEFAULT " + column.default;
|