typeorm 0.3.5 → 0.3.6-dev.2d8afbe
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/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/cache/RedisQueryResultCache.js +3 -0
- package/cache/RedisQueryResultCache.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/commands/InitCommand.js +1 -1
- package/commands/InitCommand.js.map +1 -1
- 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
|
@@ -457,6 +457,31 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
457
457
|
downQueries.push(this.dropIndexSql(table, index));
|
|
458
458
|
});
|
|
459
459
|
}
|
|
460
|
+
// if table have column with generated type, we must add the expression to the metadata table
|
|
461
|
+
const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
|
|
462
|
+
for (const column of generatedColumns) {
|
|
463
|
+
const parsedTableName = this.driver.parseTableName(table);
|
|
464
|
+
if (!parsedTableName.schema) {
|
|
465
|
+
parsedTableName.schema = await this.getCurrentSchema();
|
|
466
|
+
}
|
|
467
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
468
|
+
database: parsedTableName.database,
|
|
469
|
+
schema: parsedTableName.schema,
|
|
470
|
+
table: parsedTableName.tableName,
|
|
471
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
472
|
+
name: column.name,
|
|
473
|
+
value: column.asExpression,
|
|
474
|
+
});
|
|
475
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
476
|
+
database: parsedTableName.database,
|
|
477
|
+
schema: parsedTableName.schema,
|
|
478
|
+
table: parsedTableName.tableName,
|
|
479
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
480
|
+
name: column.name,
|
|
481
|
+
});
|
|
482
|
+
upQueries.push(insertQuery);
|
|
483
|
+
downQueries.push(deleteQuery);
|
|
484
|
+
}
|
|
460
485
|
await this.executeQueries(upQueries, downQueries);
|
|
461
486
|
}
|
|
462
487
|
/**
|
|
@@ -489,6 +514,31 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
489
514
|
table.foreignKeys.forEach((foreignKey) => upQueries.push(this.dropForeignKeySql(table, foreignKey)));
|
|
490
515
|
upQueries.push(this.dropTableSql(table));
|
|
491
516
|
downQueries.push(this.createTableSql(table, createForeignKeys));
|
|
517
|
+
// if table had columns with generated type, we must remove the expression from the metadata table
|
|
518
|
+
const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
|
|
519
|
+
for (const column of generatedColumns) {
|
|
520
|
+
const parsedTableName = this.driver.parseTableName(table);
|
|
521
|
+
if (!parsedTableName.schema) {
|
|
522
|
+
parsedTableName.schema = await this.getCurrentSchema();
|
|
523
|
+
}
|
|
524
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
525
|
+
database: parsedTableName.database,
|
|
526
|
+
schema: parsedTableName.schema,
|
|
527
|
+
table: parsedTableName.tableName,
|
|
528
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
529
|
+
name: column.name,
|
|
530
|
+
});
|
|
531
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
532
|
+
database: parsedTableName.database,
|
|
533
|
+
schema: parsedTableName.schema,
|
|
534
|
+
table: parsedTableName.tableName,
|
|
535
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
536
|
+
name: column.name,
|
|
537
|
+
value: column.asExpression,
|
|
538
|
+
});
|
|
539
|
+
upQueries.push(deleteQuery);
|
|
540
|
+
downQueries.push(insertQuery);
|
|
541
|
+
}
|
|
492
542
|
await this.executeQueries(upQueries, downQueries);
|
|
493
543
|
}
|
|
494
544
|
/**
|
|
@@ -656,6 +706,29 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
656
706
|
const defaultName = this.connection.namingStrategy.defaultConstraintName(table, column.name);
|
|
657
707
|
downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${defaultName}"`));
|
|
658
708
|
}
|
|
709
|
+
if (column.generatedType && column.asExpression) {
|
|
710
|
+
const parsedTableName = this.driver.parseTableName(table);
|
|
711
|
+
if (!parsedTableName.schema) {
|
|
712
|
+
parsedTableName.schema = await this.getCurrentSchema();
|
|
713
|
+
}
|
|
714
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
715
|
+
database: parsedTableName.database,
|
|
716
|
+
schema: parsedTableName.schema,
|
|
717
|
+
table: parsedTableName.tableName,
|
|
718
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
719
|
+
name: column.name,
|
|
720
|
+
value: column.asExpression,
|
|
721
|
+
});
|
|
722
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
723
|
+
database: parsedTableName.database,
|
|
724
|
+
schema: parsedTableName.schema,
|
|
725
|
+
table: parsedTableName.tableName,
|
|
726
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
727
|
+
name: column.name,
|
|
728
|
+
});
|
|
729
|
+
upQueries.push(insertQuery);
|
|
730
|
+
downQueries.push(deleteQuery);
|
|
731
|
+
}
|
|
659
732
|
await this.executeQueries(upQueries, downQueries);
|
|
660
733
|
clonedTable.addColumn(column);
|
|
661
734
|
this.replaceCachedTable(table, clonedTable);
|
|
@@ -708,7 +781,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
708
781
|
if ((newColumn.isGenerated !== oldColumn.isGenerated &&
|
|
709
782
|
newColumn.generationStrategy !== "uuid") ||
|
|
710
783
|
newColumn.type !== oldColumn.type ||
|
|
711
|
-
newColumn.length !== oldColumn.length
|
|
784
|
+
newColumn.length !== oldColumn.length ||
|
|
785
|
+
newColumn.asExpression !== oldColumn.asExpression ||
|
|
786
|
+
newColumn.generatedType !== oldColumn.generatedType) {
|
|
712
787
|
// SQL Server does not support changing of IDENTITY column, so we must drop column and recreate it again.
|
|
713
788
|
// Also, we recreate column if column type changed
|
|
714
789
|
await this.dropColumn(table, oldColumn);
|
|
@@ -982,6 +1057,29 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
982
1057
|
upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${defaultName}"`));
|
|
983
1058
|
downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${defaultName}" DEFAULT ${column.default} FOR "${column.name}"`));
|
|
984
1059
|
}
|
|
1060
|
+
if (column.generatedType && column.asExpression) {
|
|
1061
|
+
const parsedTableName = this.driver.parseTableName(table);
|
|
1062
|
+
if (!parsedTableName.schema) {
|
|
1063
|
+
parsedTableName.schema = await this.getCurrentSchema();
|
|
1064
|
+
}
|
|
1065
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
1066
|
+
database: parsedTableName.database,
|
|
1067
|
+
schema: parsedTableName.schema,
|
|
1068
|
+
table: parsedTableName.tableName,
|
|
1069
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1070
|
+
name: column.name,
|
|
1071
|
+
});
|
|
1072
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
1073
|
+
database: parsedTableName.database,
|
|
1074
|
+
schema: parsedTableName.schema,
|
|
1075
|
+
table: parsedTableName.tableName,
|
|
1076
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1077
|
+
name: column.name,
|
|
1078
|
+
value: column.asExpression,
|
|
1079
|
+
});
|
|
1080
|
+
upQueries.push(deleteQuery);
|
|
1081
|
+
downQueries.push(insertQuery);
|
|
1082
|
+
}
|
|
985
1083
|
upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP COLUMN "${column.name}"`));
|
|
986
1084
|
downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD ${this.buildCreateColumnSql(table, column, false, false)}`));
|
|
987
1085
|
await this.executeQueries(upQueries, downQueries);
|
|
@@ -1430,12 +1528,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1430
1528
|
const currentDatabase = await this.getCurrentDatabase();
|
|
1431
1529
|
const dbTables = [];
|
|
1432
1530
|
if (!tableNames) {
|
|
1433
|
-
const databasesSql = `
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
FROM "master"."dbo"."sysdatabases"
|
|
1437
|
-
WHERE "name" NOT IN ('master', 'model', 'msdb')
|
|
1438
|
-
`;
|
|
1531
|
+
const databasesSql = `SELECT DISTINCT "name" ` +
|
|
1532
|
+
`FROM "master"."dbo"."sysdatabases" ` +
|
|
1533
|
+
`WHERE "name" NOT IN ('master', 'model', 'msdb')`;
|
|
1439
1534
|
const dbDatabases = await this.query(databasesSql);
|
|
1440
1535
|
const tablesSql = dbDatabases
|
|
1441
1536
|
.map(({ name }) => {
|
|
@@ -1500,7 +1595,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1500
1595
|
const condition = tables
|
|
1501
1596
|
.map(({ TABLE_SCHEMA, TABLE_NAME }) => `("TABLE_SCHEMA" = '${TABLE_SCHEMA}' AND "TABLE_NAME" = '${TABLE_NAME}')`)
|
|
1502
1597
|
.join("OR");
|
|
1503
|
-
return `SELECT
|
|
1598
|
+
return (`SELECT "COLUMNS".*, "cc"."is_persisted", "cc"."definition" ` +
|
|
1599
|
+
`FROM "${TABLE_CATALOG}"."INFORMATION_SCHEMA"."COLUMNS" ` +
|
|
1600
|
+
`LEFT JOIN "sys"."computed_columns" "cc" ON COL_NAME("cc"."object_id", "cc"."column_id") = "column_name" ` +
|
|
1601
|
+
`WHERE (${condition})`);
|
|
1504
1602
|
})
|
|
1505
1603
|
.join(" UNION ALL ");
|
|
1506
1604
|
const constraintsSql = Object.entries(dbTablesByCatalog)
|
|
@@ -1600,13 +1698,14 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1600
1698
|
table.name = this.driver.buildTableName(dbTable["TABLE_NAME"], schema, db);
|
|
1601
1699
|
const defaultCollation = dbCollations.find((dbCollation) => dbCollation["NAME"] === dbTable["TABLE_CATALOG"]);
|
|
1602
1700
|
// create columns from the loaded columns
|
|
1603
|
-
table.columns = dbColumns
|
|
1604
|
-
.filter((dbColumn) => dbColumn["TABLE_NAME"] ===
|
|
1701
|
+
table.columns = await Promise.all(dbColumns
|
|
1702
|
+
.filter((dbColumn) => dbColumn["TABLE_NAME"] ===
|
|
1703
|
+
dbTable["TABLE_NAME"] &&
|
|
1605
1704
|
dbColumn["TABLE_SCHEMA"] ===
|
|
1606
1705
|
dbTable["TABLE_SCHEMA"] &&
|
|
1607
1706
|
dbColumn["TABLE_CATALOG"] ===
|
|
1608
1707
|
dbTable["TABLE_CATALOG"])
|
|
1609
|
-
.map((dbColumn) => {
|
|
1708
|
+
.map(async (dbColumn) => {
|
|
1610
1709
|
const columnConstraints = dbConstraints.filter((dbConstraint) => dbConstraint["TABLE_NAME"] ===
|
|
1611
1710
|
dbColumn["TABLE_NAME"] &&
|
|
1612
1711
|
dbConstraint["TABLE_SCHEMA"] ===
|
|
@@ -1628,7 +1727,8 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1628
1727
|
dbConstraint["COLUMN_NAME"] !==
|
|
1629
1728
|
dbColumn["COLUMN_NAME"]);
|
|
1630
1729
|
});
|
|
1631
|
-
const isPrimary = !!columnConstraints.find((constraint) => constraint["CONSTRAINT_TYPE"] ===
|
|
1730
|
+
const isPrimary = !!columnConstraints.find((constraint) => constraint["CONSTRAINT_TYPE"] ===
|
|
1731
|
+
"PRIMARY KEY");
|
|
1632
1732
|
const isGenerated = !!dbIdentityColumns.find((column) => column["TABLE_NAME"] ===
|
|
1633
1733
|
dbColumn["TABLE_NAME"] &&
|
|
1634
1734
|
column["TABLE_SCHEMA"] ===
|
|
@@ -1639,7 +1739,8 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1639
1739
|
dbColumn["COLUMN_NAME"]);
|
|
1640
1740
|
const tableColumn = new TableColumn_1.TableColumn();
|
|
1641
1741
|
tableColumn.name = dbColumn["COLUMN_NAME"];
|
|
1642
|
-
tableColumn.type =
|
|
1742
|
+
tableColumn.type =
|
|
1743
|
+
dbColumn["DATA_TYPE"].toLowerCase();
|
|
1643
1744
|
// check only columns that have length property
|
|
1644
1745
|
if (this.driver.withLengthColumnTypes.indexOf(tableColumn.type) !== -1 &&
|
|
1645
1746
|
dbColumn["CHARACTER_MAXIMUM_LENGTH"]) {
|
|
@@ -1662,7 +1763,8 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1662
1763
|
dbColumn["NUMERIC_PRECISION"];
|
|
1663
1764
|
if (dbColumn["NUMERIC_SCALE"] !== null &&
|
|
1664
1765
|
!this.isDefaultColumnScale(table, tableColumn, dbColumn["NUMERIC_SCALE"]))
|
|
1665
|
-
tableColumn.scale =
|
|
1766
|
+
tableColumn.scale =
|
|
1767
|
+
dbColumn["NUMERIC_SCALE"];
|
|
1666
1768
|
}
|
|
1667
1769
|
if (tableColumn.type === "nvarchar") {
|
|
1668
1770
|
// Check if this is an enum
|
|
@@ -1722,8 +1824,31 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1722
1824
|
? dbColumn["DATETIME_PRECISION"]
|
|
1723
1825
|
: undefined;
|
|
1724
1826
|
}
|
|
1827
|
+
if (dbColumn["is_persisted"] !== null &&
|
|
1828
|
+
dbColumn["is_persisted"] !== undefined &&
|
|
1829
|
+
dbColumn["definition"]) {
|
|
1830
|
+
tableColumn.generatedType =
|
|
1831
|
+
dbColumn["is_persisted"] === true
|
|
1832
|
+
? "STORED"
|
|
1833
|
+
: "VIRTUAL";
|
|
1834
|
+
// We cannot relay on information_schema.columns.generation_expression, because it is formatted different.
|
|
1835
|
+
const asExpressionQuery = await this.selectTypeormMetadataSql({
|
|
1836
|
+
database: dbTable["TABLE_CATALOG"],
|
|
1837
|
+
schema: dbTable["TABLE_SCHEMA"],
|
|
1838
|
+
table: dbTable["TABLE_NAME"],
|
|
1839
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1840
|
+
name: tableColumn.name,
|
|
1841
|
+
});
|
|
1842
|
+
const results = await this.query(asExpressionQuery.query, asExpressionQuery.parameters);
|
|
1843
|
+
if (results[0] && results[0].value) {
|
|
1844
|
+
tableColumn.asExpression = results[0].value;
|
|
1845
|
+
}
|
|
1846
|
+
else {
|
|
1847
|
+
tableColumn.asExpression = "";
|
|
1848
|
+
}
|
|
1849
|
+
}
|
|
1725
1850
|
return tableColumn;
|
|
1726
|
-
});
|
|
1851
|
+
}));
|
|
1727
1852
|
// find unique constraints of table, group them by constraint name and build TableUnique.
|
|
1728
1853
|
const tableUniqueConstraints = OrmUtils_1.OrmUtils.uniq(dbConstraints.filter((dbConstraint) => dbConstraint["TABLE_NAME"] ===
|
|
1729
1854
|
dbTable["TABLE_NAME"] &&
|
|
@@ -2100,8 +2225,19 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
2100
2225
|
}
|
|
2101
2226
|
if (column.collation)
|
|
2102
2227
|
c += " COLLATE " + column.collation;
|
|
2103
|
-
if (column.
|
|
2104
|
-
c +=
|
|
2228
|
+
if (column.asExpression) {
|
|
2229
|
+
c += ` AS (${column.asExpression})`;
|
|
2230
|
+
if (column.generatedType === "STORED") {
|
|
2231
|
+
c += ` PERSISTED`;
|
|
2232
|
+
// NOT NULL can be specified for computed columns only if PERSISTED is also specified
|
|
2233
|
+
if (column.isNullable !== true)
|
|
2234
|
+
c += " NOT NULL";
|
|
2235
|
+
}
|
|
2236
|
+
}
|
|
2237
|
+
else {
|
|
2238
|
+
if (column.isNullable !== true)
|
|
2239
|
+
c += " NOT NULL";
|
|
2240
|
+
}
|
|
2105
2241
|
if (column.isGenerated === true &&
|
|
2106
2242
|
column.generationStrategy === "increment" &&
|
|
2107
2243
|
!skipIdentity)
|