typeorm 0.3.6-dev.9d331b1 → 0.3.6-dev.bbdc20f
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -14
- 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 +10 -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/decorator/options/JoinColumnOptions.d.ts +4 -0
- package/browser/decorator/options/JoinColumnOptions.js.map +1 -1
- package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +4 -0
- package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
- package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +4 -0
- package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
- package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.d.ts +4 -0
- package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
- package/browser/decorator/relations/JoinColumn.js +1 -0
- package/browser/decorator/relations/JoinColumn.js.map +1 -1
- package/browser/driver/DriverFactory.js +4 -0
- package/browser/driver/DriverFactory.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.d.ts +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.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.d.ts +3 -3
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +233 -33
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/mongodb/typings.d.ts +5 -5
- package/browser/driver/mongodb/typings.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 +219 -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.d.ts +3 -3
- package/browser/driver/oracle/OracleQueryRunner.js +216 -42
- 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.d.ts +3 -3
- package/browser/driver/postgres/PostgresQueryRunner.js +159 -59
- 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 +65 -16
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +218 -32
- 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.d.ts +3 -3
- package/browser/driver/sqlserver/SqlServerQueryRunner.js +251 -37
- package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.d.ts +1 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.d.ts +2 -2
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.d.ts +2 -2
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.d.ts +2 -2
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.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-manager/EntityManager.js +1 -1
- package/browser/entity-manager/EntityManager.js.map +1 -1
- package/browser/entity-schema/EntitySchemaColumnOptions.d.ts +6 -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 +3 -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 +10 -2
- package/browser/metadata/ColumnMetadata.js +8 -0
- package/browser/metadata/ColumnMetadata.js.map +1 -1
- package/browser/metadata/EntityMetadata.js +1 -1
- package/browser/metadata/EntityMetadata.js.map +1 -1
- package/browser/metadata/ForeignKeyMetadata.d.ts +7 -0
- package/browser/metadata/ForeignKeyMetadata.js +4 -1
- package/browser/metadata/ForeignKeyMetadata.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-args/JoinColumnMetadataArgs.d.ts +4 -0
- package/browser/metadata-args/JoinColumnMetadataArgs.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 +17 -0
- package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +18 -6
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/RelationJoinColumnBuilder.js +2 -0
- package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/browser/migration/MigrationExecutor.js +1 -1
- package/browser/migration/MigrationExecutor.js.map +1 -1
- package/browser/persistence/SubjectDatabaseEntityLoader.d.ts +1 -1
- package/browser/persistence/SubjectDatabaseEntityLoader.js +1 -1
- package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/browser/persistence/SubjectExecutor.js +1 -1
- package/browser/persistence/SubjectExecutor.js.map +1 -1
- package/browser/persistence/subject-builder/CascadesSubjectBuilder.d.ts +1 -1
- package/browser/persistence/subject-builder/CascadesSubjectBuilder.js +1 -1
- package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
- package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js +1 -1
- package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
- package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +1 -1
- package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.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/QueryBuilder.d.ts +1 -1
- package/browser/query-builder/QueryBuilder.js +15 -15
- package/browser/query-builder/QueryBuilder.js.map +1 -1
- package/browser/query-builder/QueryExpressionMap.d.ts +2 -2
- package/browser/query-builder/QueryExpressionMap.js +1 -1
- package/browser/query-builder/QueryExpressionMap.js.map +1 -1
- package/browser/query-builder/ReturningResultsEntityUpdator.js +2 -2
- package/browser/query-builder/ReturningResultsEntityUpdator.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/query-runner/QueryRunner.d.ts +2 -2
- package/browser/query-runner/QueryRunner.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 +10 -2
- package/browser/schema-builder/options/TableColumnOptions.js.map +1 -1
- package/browser/schema-builder/options/TableForeignKeyOptions.d.ts +1 -1
- package/browser/schema-builder/options/TableForeignKeyOptions.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 +6 -2
- package/browser/schema-builder/table/TableColumn.js +2 -0
- 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/browser/schema-builder/util/TableUtils.js +1 -0
- package/browser/schema-builder/util/TableUtils.js.map +1 -1
- package/browser/util/OrmUtils.d.ts +1 -1
- package/browser/util/OrmUtils.js +4 -4
- package/browser/util/OrmUtils.js.map +1 -1
- package/browser/util/escapeRegExp.d.ts +1 -0
- package/browser/util/escapeRegExp.js +6 -0
- package/browser/util/escapeRegExp.js.map +1 -0
- 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/commands/InitCommand.js +1 -1
- package/commands/InitCommand.js.map +1 -1
- package/commands/MigrationGenerateCommand.js +3 -2
- package/commands/MigrationGenerateCommand.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 +10 -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/decorator/options/JoinColumnOptions.d.ts +4 -0
- package/decorator/options/JoinColumnOptions.js.map +1 -1
- package/decorator/options/PrimaryGeneratedColumnIdentityOptions.d.ts +4 -0
- package/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
- package/decorator/options/PrimaryGeneratedColumnNumericOptions.d.ts +4 -0
- package/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
- package/decorator/options/PrimaryGeneratedColumnUUIDOptions.d.ts +4 -0
- package/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
- package/decorator/relations/JoinColumn.js +1 -0
- package/decorator/relations/JoinColumn.js.map +1 -1
- package/driver/DriverFactory.js +4 -0
- package/driver/DriverFactory.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlDriver.d.ts +1 -1
- package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachDriver.js +4 -1
- package/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.d.ts +3 -3
- package/driver/cockroachdb/CockroachQueryRunner.js +233 -33
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/mongodb/typings.d.ts +5 -5
- package/driver/mongodb/typings.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 +219 -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.d.ts +3 -3
- package/driver/oracle/OracleQueryRunner.js +216 -42
- 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.d.ts +3 -3
- package/driver/postgres/PostgresQueryRunner.js +159 -59
- 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 +65 -16
- package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +218 -32
- 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.d.ts +3 -3
- package/driver/sqlserver/SqlServerQueryRunner.js +251 -37
- package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.d.ts +1 -1
- package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.d.ts +2 -2
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.d.ts +2 -2
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
- package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.d.ts +2 -2
- package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.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-manager/EntityManager.js +1 -1
- package/entity-manager/EntityManager.js.map +1 -1
- package/entity-schema/EntitySchemaColumnOptions.d.ts +6 -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 +3 -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 +10 -2
- package/metadata/ColumnMetadata.js +8 -0
- package/metadata/ColumnMetadata.js.map +1 -1
- package/metadata/EntityMetadata.js +1 -1
- package/metadata/EntityMetadata.js.map +1 -1
- package/metadata/ForeignKeyMetadata.d.ts +7 -0
- package/metadata/ForeignKeyMetadata.js +4 -1
- package/metadata/ForeignKeyMetadata.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-args/JoinColumnMetadataArgs.d.ts +4 -0
- package/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
- package/metadata-builder/EntityMetadataBuilder.js +13 -6
- package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/EntityMetadataValidator.js +17 -0
- package/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/metadata-builder/JunctionEntityMetadataBuilder.js +18 -6
- package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/RelationJoinColumnBuilder.js +2 -0
- package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/migration/MigrationExecutor.js +1 -1
- package/migration/MigrationExecutor.js.map +1 -1
- package/package.json +1 -1
- package/persistence/SubjectDatabaseEntityLoader.d.ts +1 -1
- package/persistence/SubjectDatabaseEntityLoader.js +1 -1
- package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/persistence/SubjectExecutor.js +1 -1
- package/persistence/SubjectExecutor.js.map +1 -1
- package/persistence/subject-builder/CascadesSubjectBuilder.d.ts +1 -1
- package/persistence/subject-builder/CascadesSubjectBuilder.js +1 -1
- package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
- package/persistence/subject-builder/ManyToManySubjectBuilder.js +1 -1
- package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
- package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +1 -1
- package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +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/QueryBuilder.d.ts +1 -1
- package/query-builder/QueryBuilder.js +15 -15
- package/query-builder/QueryBuilder.js.map +1 -1
- package/query-builder/QueryExpressionMap.d.ts +2 -2
- package/query-builder/QueryExpressionMap.js +1 -1
- package/query-builder/QueryExpressionMap.js.map +1 -1
- package/query-builder/ReturningResultsEntityUpdator.js +2 -2
- package/query-builder/ReturningResultsEntityUpdator.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/query-runner/QueryRunner.d.ts +2 -2
- package/query-runner/QueryRunner.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 +10 -2
- package/schema-builder/options/TableColumnOptions.js.map +1 -1
- package/schema-builder/options/TableForeignKeyOptions.d.ts +1 -1
- package/schema-builder/options/TableForeignKeyOptions.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 +6 -2
- package/schema-builder/table/TableColumn.js +2 -0
- 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
- package/schema-builder/util/TableUtils.js +1 -0
- package/schema-builder/util/TableUtils.js.map +1 -1
- package/util/OrmUtils.d.ts +1 -1
- package/util/OrmUtils.js +4 -4
- package/util/OrmUtils.js.map +1 -1
- package/util/escapeRegExp.d.ts +1 -0
- package/util/escapeRegExp.js +10 -0
- package/util/escapeRegExp.js.map +1 -0
|
@@ -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
|
/**
|
|
@@ -554,7 +604,8 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
554
604
|
upQueries.push(new Query_1.Query(`EXEC sp_rename "${this.getTablePath(oldTable)}", "${newTableName}"`));
|
|
555
605
|
downQueries.push(new Query_1.Query(`EXEC sp_rename "${this.getTablePath(newTable)}", "${oldTableName}"`));
|
|
556
606
|
// rename primary key constraint
|
|
557
|
-
if (newTable.primaryColumns.length > 0
|
|
607
|
+
if (newTable.primaryColumns.length > 0 &&
|
|
608
|
+
!newTable.primaryColumns[0].primaryKeyConstraintName) {
|
|
558
609
|
const columnNames = newTable.primaryColumns.map((column) => column.name);
|
|
559
610
|
const oldPkName = this.connection.namingStrategy.primaryKeyName(oldTable, columnNames);
|
|
560
611
|
const newPkName = this.connection.namingStrategy.primaryKeyName(newTable, columnNames);
|
|
@@ -564,6 +615,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
564
615
|
}
|
|
565
616
|
// rename unique constraints
|
|
566
617
|
newTable.uniques.forEach((unique) => {
|
|
618
|
+
const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(oldTable, unique.columnNames);
|
|
619
|
+
// Skip renaming if Unique has user defined constraint name
|
|
620
|
+
if (unique.name !== oldUniqueName)
|
|
621
|
+
return;
|
|
567
622
|
// build new constraint name
|
|
568
623
|
const newUniqueName = this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames);
|
|
569
624
|
// build queries
|
|
@@ -574,6 +629,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
574
629
|
});
|
|
575
630
|
// rename index constraints
|
|
576
631
|
newTable.indices.forEach((index) => {
|
|
632
|
+
const oldIndexName = this.connection.namingStrategy.indexName(oldTable, index.columnNames, index.where);
|
|
633
|
+
// Skip renaming if Index has user defined constraint name
|
|
634
|
+
if (index.name !== oldIndexName)
|
|
635
|
+
return;
|
|
577
636
|
// build new constraint name
|
|
578
637
|
const newIndexName = this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);
|
|
579
638
|
// build queries
|
|
@@ -584,6 +643,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
584
643
|
});
|
|
585
644
|
// rename foreign key constraints
|
|
586
645
|
newTable.foreignKeys.forEach((foreignKey) => {
|
|
646
|
+
const oldForeignKeyName = this.connection.namingStrategy.foreignKeyName(oldTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
647
|
+
// Skip renaming if foreign key has user defined constraint name
|
|
648
|
+
if (foreignKey.name !== oldForeignKeyName)
|
|
649
|
+
return;
|
|
587
650
|
// build new constraint name
|
|
588
651
|
const newForeignKeyName = this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
589
652
|
// build queries
|
|
@@ -619,7 +682,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
619
682
|
const primaryColumns = clonedTable.primaryColumns;
|
|
620
683
|
// if table already have primary key, me must drop it and recreate again
|
|
621
684
|
if (primaryColumns.length > 0) {
|
|
622
|
-
const pkName =
|
|
685
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
686
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
687
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
623
688
|
const columnNames = primaryColumns
|
|
624
689
|
.map((column) => `"${column.name}"`)
|
|
625
690
|
.join(", ");
|
|
@@ -627,7 +692,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
627
692
|
downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${pkName}" PRIMARY KEY (${columnNames})`));
|
|
628
693
|
}
|
|
629
694
|
primaryColumns.push(column);
|
|
630
|
-
const pkName =
|
|
695
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
696
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
697
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
631
698
|
const columnNames = primaryColumns
|
|
632
699
|
.map((column) => `"${column.name}"`)
|
|
633
700
|
.join(", ");
|
|
@@ -656,6 +723,29 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
656
723
|
const defaultName = this.connection.namingStrategy.defaultConstraintName(table, column.name);
|
|
657
724
|
downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${defaultName}"`));
|
|
658
725
|
}
|
|
726
|
+
if (column.generatedType && column.asExpression) {
|
|
727
|
+
const parsedTableName = this.driver.parseTableName(table);
|
|
728
|
+
if (!parsedTableName.schema) {
|
|
729
|
+
parsedTableName.schema = await this.getCurrentSchema();
|
|
730
|
+
}
|
|
731
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
732
|
+
database: parsedTableName.database,
|
|
733
|
+
schema: parsedTableName.schema,
|
|
734
|
+
table: parsedTableName.tableName,
|
|
735
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
736
|
+
name: column.name,
|
|
737
|
+
value: column.asExpression,
|
|
738
|
+
});
|
|
739
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
740
|
+
database: parsedTableName.database,
|
|
741
|
+
schema: parsedTableName.schema,
|
|
742
|
+
table: parsedTableName.tableName,
|
|
743
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
744
|
+
name: column.name,
|
|
745
|
+
});
|
|
746
|
+
upQueries.push(insertQuery);
|
|
747
|
+
downQueries.push(deleteQuery);
|
|
748
|
+
}
|
|
659
749
|
await this.executeQueries(upQueries, downQueries);
|
|
660
750
|
clonedTable.addColumn(column);
|
|
661
751
|
this.replaceCachedTable(table, clonedTable);
|
|
@@ -708,7 +798,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
708
798
|
if ((newColumn.isGenerated !== oldColumn.isGenerated &&
|
|
709
799
|
newColumn.generationStrategy !== "uuid") ||
|
|
710
800
|
newColumn.type !== oldColumn.type ||
|
|
711
|
-
newColumn.length !== oldColumn.length
|
|
801
|
+
newColumn.length !== oldColumn.length ||
|
|
802
|
+
newColumn.asExpression !== oldColumn.asExpression ||
|
|
803
|
+
newColumn.generatedType !== oldColumn.generatedType) {
|
|
712
804
|
// SQL Server does not support changing of IDENTITY column, so we must drop column and recreate it again.
|
|
713
805
|
// Also, we recreate column if column type changed
|
|
714
806
|
await this.dropColumn(table, oldColumn);
|
|
@@ -740,7 +832,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
740
832
|
// rename the column
|
|
741
833
|
upQueries.push(new Query_1.Query(`EXEC sp_rename "${this.getTablePath(table)}.${oldColumn.name}", "${newColumn.name}"`));
|
|
742
834
|
downQueries.push(new Query_1.Query(`EXEC sp_rename "${this.getTablePath(table)}.${newColumn.name}", "${oldColumn.name}"`));
|
|
743
|
-
|
|
835
|
+
// rename column primary key constraint
|
|
836
|
+
if (oldColumn.isPrimary === true &&
|
|
837
|
+
!oldColumn.primaryKeyConstraintName) {
|
|
744
838
|
const primaryColumns = clonedTable.primaryColumns;
|
|
745
839
|
// build old primary constraint name
|
|
746
840
|
const columnNames = primaryColumns.map((column) => column.name);
|
|
@@ -756,6 +850,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
756
850
|
}
|
|
757
851
|
// rename index constraints
|
|
758
852
|
clonedTable.findColumnIndices(oldColumn).forEach((index) => {
|
|
853
|
+
const oldIndexName = this.connection.namingStrategy.indexName(clonedTable, index.columnNames, index.where);
|
|
854
|
+
// Skip renaming if Index has user defined constraint name
|
|
855
|
+
if (index.name !== oldIndexName)
|
|
856
|
+
return;
|
|
759
857
|
// build new constraint name
|
|
760
858
|
index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);
|
|
761
859
|
index.columnNames.push(newColumn.name);
|
|
@@ -770,6 +868,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
770
868
|
clonedTable
|
|
771
869
|
.findColumnForeignKeys(oldColumn)
|
|
772
870
|
.forEach((foreignKey) => {
|
|
871
|
+
const foreignKeyName = this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
872
|
+
// Skip renaming if foreign key has user defined constraint name
|
|
873
|
+
if (foreignKey.name !== foreignKeyName)
|
|
874
|
+
return;
|
|
773
875
|
// build new constraint name
|
|
774
876
|
foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);
|
|
775
877
|
foreignKey.columnNames.push(newColumn.name);
|
|
@@ -794,6 +896,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
794
896
|
});
|
|
795
897
|
// rename unique constraints
|
|
796
898
|
clonedTable.findColumnUniques(oldColumn).forEach((unique) => {
|
|
899
|
+
const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(clonedTable, unique.columnNames);
|
|
900
|
+
// Skip renaming if Unique has user defined constraint name
|
|
901
|
+
if (unique.name !== oldUniqueName)
|
|
902
|
+
return;
|
|
797
903
|
// build new constraint name
|
|
798
904
|
unique.columnNames.splice(unique.columnNames.indexOf(oldColumn.name), 1);
|
|
799
905
|
unique.columnNames.push(newColumn.name);
|
|
@@ -832,7 +938,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
832
938
|
const primaryColumns = clonedTable.primaryColumns;
|
|
833
939
|
// if primary column state changed, we must always drop existed constraint.
|
|
834
940
|
if (primaryColumns.length > 0) {
|
|
835
|
-
const pkName =
|
|
941
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
942
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
943
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
836
944
|
const columnNames = primaryColumns
|
|
837
945
|
.map((column) => `"${column.name}"`)
|
|
838
946
|
.join(", ");
|
|
@@ -844,7 +952,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
844
952
|
// update column in table
|
|
845
953
|
const column = clonedTable.columns.find((column) => column.name === newColumn.name);
|
|
846
954
|
column.isPrimary = true;
|
|
847
|
-
const pkName =
|
|
955
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
956
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
957
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
848
958
|
const columnNames = primaryColumns
|
|
849
959
|
.map((column) => `"${column.name}"`)
|
|
850
960
|
.join(", ");
|
|
@@ -859,7 +969,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
859
969
|
column.isPrimary = false;
|
|
860
970
|
// if we have another primary keys, we must recreate constraint.
|
|
861
971
|
if (primaryColumns.length > 0) {
|
|
862
|
-
const pkName =
|
|
972
|
+
const pkName = primaryColumns[0]
|
|
973
|
+
.primaryKeyConstraintName
|
|
974
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
975
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
863
976
|
const columnNames = primaryColumns
|
|
864
977
|
.map((column) => `"${column.name}"`)
|
|
865
978
|
.join(", ");
|
|
@@ -932,7 +1045,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
932
1045
|
const downQueries = [];
|
|
933
1046
|
// drop primary key constraint
|
|
934
1047
|
if (column.isPrimary) {
|
|
935
|
-
const pkName =
|
|
1048
|
+
const pkName = column.primaryKeyConstraintName
|
|
1049
|
+
? column.primaryKeyConstraintName
|
|
1050
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
|
|
936
1051
|
const columnNames = clonedTable.primaryColumns
|
|
937
1052
|
.map((primaryColumn) => `"${primaryColumn.name}"`)
|
|
938
1053
|
.join(", ");
|
|
@@ -943,7 +1058,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
943
1058
|
tableColumn.isPrimary = false;
|
|
944
1059
|
// if primary key have multiple columns, we must recreate it without dropped column
|
|
945
1060
|
if (clonedTable.primaryColumns.length > 0) {
|
|
946
|
-
const pkName =
|
|
1061
|
+
const pkName = clonedTable.primaryColumns[0]
|
|
1062
|
+
.primaryKeyConstraintName
|
|
1063
|
+
? clonedTable.primaryColumns[0].primaryKeyConstraintName
|
|
1064
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
|
|
947
1065
|
const columnNames = clonedTable.primaryColumns
|
|
948
1066
|
.map((primaryColumn) => `"${primaryColumn.name}"`)
|
|
949
1067
|
.join(", ");
|
|
@@ -982,6 +1100,29 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
982
1100
|
upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${defaultName}"`));
|
|
983
1101
|
downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${defaultName}" DEFAULT ${column.default} FOR "${column.name}"`));
|
|
984
1102
|
}
|
|
1103
|
+
if (column.generatedType && column.asExpression) {
|
|
1104
|
+
const parsedTableName = this.driver.parseTableName(table);
|
|
1105
|
+
if (!parsedTableName.schema) {
|
|
1106
|
+
parsedTableName.schema = await this.getCurrentSchema();
|
|
1107
|
+
}
|
|
1108
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
1109
|
+
database: parsedTableName.database,
|
|
1110
|
+
schema: parsedTableName.schema,
|
|
1111
|
+
table: parsedTableName.tableName,
|
|
1112
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1113
|
+
name: column.name,
|
|
1114
|
+
});
|
|
1115
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
1116
|
+
database: parsedTableName.database,
|
|
1117
|
+
schema: parsedTableName.schema,
|
|
1118
|
+
table: parsedTableName.tableName,
|
|
1119
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1120
|
+
name: column.name,
|
|
1121
|
+
value: column.asExpression,
|
|
1122
|
+
});
|
|
1123
|
+
upQueries.push(deleteQuery);
|
|
1124
|
+
downQueries.push(insertQuery);
|
|
1125
|
+
}
|
|
985
1126
|
upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP COLUMN "${column.name}"`));
|
|
986
1127
|
downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD ${this.buildCreateColumnSql(table, column, false, false)}`));
|
|
987
1128
|
await this.executeQueries(upQueries, downQueries);
|
|
@@ -999,12 +1140,12 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
999
1140
|
/**
|
|
1000
1141
|
* Creates a new primary key.
|
|
1001
1142
|
*/
|
|
1002
|
-
async createPrimaryKey(tableOrName, columnNames) {
|
|
1143
|
+
async createPrimaryKey(tableOrName, columnNames, constraintName) {
|
|
1003
1144
|
const table = InstanceChecker_1.InstanceChecker.isTable(tableOrName)
|
|
1004
1145
|
? tableOrName
|
|
1005
1146
|
: await this.getCachedTable(tableOrName);
|
|
1006
1147
|
const clonedTable = table.clone();
|
|
1007
|
-
const up = this.createPrimaryKeySql(table, columnNames);
|
|
1148
|
+
const up = this.createPrimaryKeySql(table, columnNames, constraintName);
|
|
1008
1149
|
// mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.
|
|
1009
1150
|
clonedTable.columns.forEach((column) => {
|
|
1010
1151
|
if (columnNames.find((columnName) => columnName === column.name))
|
|
@@ -1028,7 +1169,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1028
1169
|
// if table already have primary columns, we must drop them.
|
|
1029
1170
|
const primaryColumns = clonedTable.primaryColumns;
|
|
1030
1171
|
if (primaryColumns.length > 0) {
|
|
1031
|
-
const pkName =
|
|
1172
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
1173
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
1174
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
1032
1175
|
const columnNamesString = primaryColumns
|
|
1033
1176
|
.map((column) => `"${column.name}"`)
|
|
1034
1177
|
.join(", ");
|
|
@@ -1039,7 +1182,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1039
1182
|
clonedTable.columns
|
|
1040
1183
|
.filter((column) => columnNames.indexOf(column.name) !== -1)
|
|
1041
1184
|
.forEach((column) => (column.isPrimary = true));
|
|
1042
|
-
const pkName =
|
|
1185
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
1186
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
1187
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
|
|
1043
1188
|
const columnNamesString = columnNames
|
|
1044
1189
|
.map((columnName) => `"${columnName}"`)
|
|
1045
1190
|
.join(", ");
|
|
@@ -1051,12 +1196,12 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1051
1196
|
/**
|
|
1052
1197
|
* Drops a primary key.
|
|
1053
1198
|
*/
|
|
1054
|
-
async dropPrimaryKey(tableOrName) {
|
|
1199
|
+
async dropPrimaryKey(tableOrName, constraintName) {
|
|
1055
1200
|
const table = InstanceChecker_1.InstanceChecker.isTable(tableOrName)
|
|
1056
1201
|
? tableOrName
|
|
1057
1202
|
: await this.getCachedTable(tableOrName);
|
|
1058
1203
|
const up = this.dropPrimaryKeySql(table);
|
|
1059
|
-
const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name));
|
|
1204
|
+
const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name), constraintName);
|
|
1060
1205
|
await this.executeQueries(up, down);
|
|
1061
1206
|
table.primaryColumns.forEach((column) => {
|
|
1062
1207
|
column.isPrimary = false;
|
|
@@ -1430,12 +1575,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1430
1575
|
const currentDatabase = await this.getCurrentDatabase();
|
|
1431
1576
|
const dbTables = [];
|
|
1432
1577
|
if (!tableNames) {
|
|
1433
|
-
const databasesSql = `
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
FROM "master"."dbo"."sysdatabases"
|
|
1437
|
-
WHERE "name" NOT IN ('master', 'model', 'msdb')
|
|
1438
|
-
`;
|
|
1578
|
+
const databasesSql = `SELECT DISTINCT "name" ` +
|
|
1579
|
+
`FROM "master"."dbo"."sysdatabases" ` +
|
|
1580
|
+
`WHERE "name" NOT IN ('master', 'model', 'msdb')`;
|
|
1439
1581
|
const dbDatabases = await this.query(databasesSql);
|
|
1440
1582
|
const tablesSql = dbDatabases
|
|
1441
1583
|
.map(({ name }) => {
|
|
@@ -1500,7 +1642,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1500
1642
|
const condition = tables
|
|
1501
1643
|
.map(({ TABLE_SCHEMA, TABLE_NAME }) => `("TABLE_SCHEMA" = '${TABLE_SCHEMA}' AND "TABLE_NAME" = '${TABLE_NAME}')`)
|
|
1502
1644
|
.join("OR");
|
|
1503
|
-
return `SELECT
|
|
1645
|
+
return (`SELECT "COLUMNS".*, "cc"."is_persisted", "cc"."definition" ` +
|
|
1646
|
+
`FROM "${TABLE_CATALOG}"."INFORMATION_SCHEMA"."COLUMNS" ` +
|
|
1647
|
+
`LEFT JOIN "sys"."computed_columns" "cc" ON COL_NAME("cc"."object_id", "cc"."column_id") = "column_name" ` +
|
|
1648
|
+
`WHERE (${condition})`);
|
|
1504
1649
|
})
|
|
1505
1650
|
.join(" UNION ALL ");
|
|
1506
1651
|
const constraintsSql = Object.entries(dbTablesByCatalog)
|
|
@@ -1600,13 +1745,14 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1600
1745
|
table.name = this.driver.buildTableName(dbTable["TABLE_NAME"], schema, db);
|
|
1601
1746
|
const defaultCollation = dbCollations.find((dbCollation) => dbCollation["NAME"] === dbTable["TABLE_CATALOG"]);
|
|
1602
1747
|
// create columns from the loaded columns
|
|
1603
|
-
table.columns = dbColumns
|
|
1604
|
-
.filter((dbColumn) => dbColumn["TABLE_NAME"] ===
|
|
1748
|
+
table.columns = await Promise.all(dbColumns
|
|
1749
|
+
.filter((dbColumn) => dbColumn["TABLE_NAME"] ===
|
|
1750
|
+
dbTable["TABLE_NAME"] &&
|
|
1605
1751
|
dbColumn["TABLE_SCHEMA"] ===
|
|
1606
1752
|
dbTable["TABLE_SCHEMA"] &&
|
|
1607
1753
|
dbColumn["TABLE_CATALOG"] ===
|
|
1608
1754
|
dbTable["TABLE_CATALOG"])
|
|
1609
|
-
.map((dbColumn) => {
|
|
1755
|
+
.map(async (dbColumn) => {
|
|
1610
1756
|
const columnConstraints = dbConstraints.filter((dbConstraint) => dbConstraint["TABLE_NAME"] ===
|
|
1611
1757
|
dbColumn["TABLE_NAME"] &&
|
|
1612
1758
|
dbConstraint["TABLE_SCHEMA"] ===
|
|
@@ -1628,7 +1774,6 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1628
1774
|
dbConstraint["COLUMN_NAME"] !==
|
|
1629
1775
|
dbColumn["COLUMN_NAME"]);
|
|
1630
1776
|
});
|
|
1631
|
-
const isPrimary = !!columnConstraints.find((constraint) => constraint["CONSTRAINT_TYPE"] === "PRIMARY KEY");
|
|
1632
1777
|
const isGenerated = !!dbIdentityColumns.find((column) => column["TABLE_NAME"] ===
|
|
1633
1778
|
dbColumn["TABLE_NAME"] &&
|
|
1634
1779
|
column["TABLE_SCHEMA"] ===
|
|
@@ -1639,7 +1784,8 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1639
1784
|
dbColumn["COLUMN_NAME"]);
|
|
1640
1785
|
const tableColumn = new TableColumn_1.TableColumn();
|
|
1641
1786
|
tableColumn.name = dbColumn["COLUMN_NAME"];
|
|
1642
|
-
tableColumn.type =
|
|
1787
|
+
tableColumn.type =
|
|
1788
|
+
dbColumn["DATA_TYPE"].toLowerCase();
|
|
1643
1789
|
// check only columns that have length property
|
|
1644
1790
|
if (this.driver.withLengthColumnTypes.indexOf(tableColumn.type) !== -1 &&
|
|
1645
1791
|
dbColumn["CHARACTER_MAXIMUM_LENGTH"]) {
|
|
@@ -1662,7 +1808,8 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1662
1808
|
dbColumn["NUMERIC_PRECISION"];
|
|
1663
1809
|
if (dbColumn["NUMERIC_SCALE"] !== null &&
|
|
1664
1810
|
!this.isDefaultColumnScale(table, tableColumn, dbColumn["NUMERIC_SCALE"]))
|
|
1665
|
-
tableColumn.scale =
|
|
1811
|
+
tableColumn.scale =
|
|
1812
|
+
dbColumn["NUMERIC_SCALE"];
|
|
1666
1813
|
}
|
|
1667
1814
|
if (tableColumn.type === "nvarchar") {
|
|
1668
1815
|
// Check if this is an enum
|
|
@@ -1687,6 +1834,33 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1687
1834
|
}
|
|
1688
1835
|
}
|
|
1689
1836
|
}
|
|
1837
|
+
const primaryConstraint = columnConstraints.find((constraint) => constraint["CONSTRAINT_TYPE"] ===
|
|
1838
|
+
"PRIMARY KEY");
|
|
1839
|
+
if (primaryConstraint) {
|
|
1840
|
+
tableColumn.isPrimary = true;
|
|
1841
|
+
// find another columns involved in primary key constraint
|
|
1842
|
+
const anotherPrimaryConstraints = dbConstraints.filter((constraint) => constraint["TABLE_NAME"] ===
|
|
1843
|
+
dbColumn["TABLE_NAME"] &&
|
|
1844
|
+
constraint["TABLE_SCHEMA"] ===
|
|
1845
|
+
dbColumn["TABLE_SCHEMA"] &&
|
|
1846
|
+
constraint["TABLE_CATALOG"] ===
|
|
1847
|
+
dbColumn["TABLE_CATALOG"] &&
|
|
1848
|
+
constraint["COLUMN_NAME"] !==
|
|
1849
|
+
dbColumn["COLUMN_NAME"] &&
|
|
1850
|
+
constraint["CONSTRAINT_TYPE"] ===
|
|
1851
|
+
"PRIMARY KEY");
|
|
1852
|
+
// collect all column names
|
|
1853
|
+
const columnNames = anotherPrimaryConstraints.map((constraint) => constraint["COLUMN_NAME"]);
|
|
1854
|
+
columnNames.push(dbColumn["COLUMN_NAME"]);
|
|
1855
|
+
// build default primary key constraint name
|
|
1856
|
+
const pkName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
1857
|
+
// if primary key has user-defined constraint name, write it in table column
|
|
1858
|
+
if (primaryConstraint["CONSTRAINT_NAME"] !==
|
|
1859
|
+
pkName) {
|
|
1860
|
+
tableColumn.primaryKeyConstraintName =
|
|
1861
|
+
primaryConstraint["CONSTRAINT_NAME"];
|
|
1862
|
+
}
|
|
1863
|
+
}
|
|
1690
1864
|
tableColumn.default =
|
|
1691
1865
|
dbColumn["COLUMN_DEFAULT"] !== null &&
|
|
1692
1866
|
dbColumn["COLUMN_DEFAULT"] !== undefined
|
|
@@ -1694,7 +1868,6 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1694
1868
|
: undefined;
|
|
1695
1869
|
tableColumn.isNullable =
|
|
1696
1870
|
dbColumn["IS_NULLABLE"] === "YES";
|
|
1697
|
-
tableColumn.isPrimary = isPrimary;
|
|
1698
1871
|
tableColumn.isUnique =
|
|
1699
1872
|
uniqueConstraints.length > 0 &&
|
|
1700
1873
|
!isConstraintComposite;
|
|
@@ -1722,8 +1895,31 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1722
1895
|
? dbColumn["DATETIME_PRECISION"]
|
|
1723
1896
|
: undefined;
|
|
1724
1897
|
}
|
|
1898
|
+
if (dbColumn["is_persisted"] !== null &&
|
|
1899
|
+
dbColumn["is_persisted"] !== undefined &&
|
|
1900
|
+
dbColumn["definition"]) {
|
|
1901
|
+
tableColumn.generatedType =
|
|
1902
|
+
dbColumn["is_persisted"] === true
|
|
1903
|
+
? "STORED"
|
|
1904
|
+
: "VIRTUAL";
|
|
1905
|
+
// We cannot relay on information_schema.columns.generation_expression, because it is formatted different.
|
|
1906
|
+
const asExpressionQuery = await this.selectTypeormMetadataSql({
|
|
1907
|
+
database: dbTable["TABLE_CATALOG"],
|
|
1908
|
+
schema: dbTable["TABLE_SCHEMA"],
|
|
1909
|
+
table: dbTable["TABLE_NAME"],
|
|
1910
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1911
|
+
name: tableColumn.name,
|
|
1912
|
+
});
|
|
1913
|
+
const results = await this.query(asExpressionQuery.query, asExpressionQuery.parameters);
|
|
1914
|
+
if (results[0] && results[0].value) {
|
|
1915
|
+
tableColumn.asExpression = results[0].value;
|
|
1916
|
+
}
|
|
1917
|
+
else {
|
|
1918
|
+
tableColumn.asExpression = "";
|
|
1919
|
+
}
|
|
1920
|
+
}
|
|
1725
1921
|
return tableColumn;
|
|
1726
|
-
});
|
|
1922
|
+
}));
|
|
1727
1923
|
// find unique constraints of table, group them by constraint name and build TableUnique.
|
|
1728
1924
|
const tableUniqueConstraints = OrmUtils_1.OrmUtils.uniq(dbConstraints.filter((dbConstraint) => dbConstraint["TABLE_NAME"] ===
|
|
1729
1925
|
dbTable["TABLE_NAME"] &&
|
|
@@ -1878,7 +2074,9 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1878
2074
|
}
|
|
1879
2075
|
const primaryColumns = table.columns.filter((column) => column.isPrimary);
|
|
1880
2076
|
if (primaryColumns.length > 0) {
|
|
1881
|
-
const primaryKeyName =
|
|
2077
|
+
const primaryKeyName = primaryColumns[0].primaryKeyConstraintName
|
|
2078
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
2079
|
+
: this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
|
|
1882
2080
|
const columnNames = primaryColumns
|
|
1883
2081
|
.map((column) => `"${column.name}"`)
|
|
1884
2082
|
.join(", ");
|
|
@@ -1969,8 +2167,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1969
2167
|
/**
|
|
1970
2168
|
* Builds create primary key sql.
|
|
1971
2169
|
*/
|
|
1972
|
-
createPrimaryKeySql(table, columnNames) {
|
|
1973
|
-
const primaryKeyName =
|
|
2170
|
+
createPrimaryKeySql(table, columnNames, constraintName) {
|
|
2171
|
+
const primaryKeyName = constraintName
|
|
2172
|
+
? constraintName
|
|
2173
|
+
: this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
1974
2174
|
const columnNamesString = columnNames
|
|
1975
2175
|
.map((columnName) => `"${columnName}"`)
|
|
1976
2176
|
.join(", ");
|
|
@@ -1981,7 +2181,10 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1981
2181
|
*/
|
|
1982
2182
|
dropPrimaryKeySql(table) {
|
|
1983
2183
|
const columnNames = table.primaryColumns.map((column) => column.name);
|
|
1984
|
-
const
|
|
2184
|
+
const constraintName = table.primaryColumns[0].primaryKeyConstraintName;
|
|
2185
|
+
const primaryKeyName = constraintName
|
|
2186
|
+
? constraintName
|
|
2187
|
+
: this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
1985
2188
|
return new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${primaryKeyName}"`);
|
|
1986
2189
|
}
|
|
1987
2190
|
/**
|
|
@@ -2100,8 +2303,19 @@ class SqlServerQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
2100
2303
|
}
|
|
2101
2304
|
if (column.collation)
|
|
2102
2305
|
c += " COLLATE " + column.collation;
|
|
2103
|
-
if (column.
|
|
2104
|
-
c +=
|
|
2306
|
+
if (column.asExpression) {
|
|
2307
|
+
c += ` AS (${column.asExpression})`;
|
|
2308
|
+
if (column.generatedType === "STORED") {
|
|
2309
|
+
c += ` PERSISTED`;
|
|
2310
|
+
// NOT NULL can be specified for computed columns only if PERSISTED is also specified
|
|
2311
|
+
if (column.isNullable !== true)
|
|
2312
|
+
c += " NOT NULL";
|
|
2313
|
+
}
|
|
2314
|
+
}
|
|
2315
|
+
else {
|
|
2316
|
+
if (column.isNullable !== true)
|
|
2317
|
+
c += " NOT NULL";
|
|
2318
|
+
}
|
|
2105
2319
|
if (column.isGenerated === true &&
|
|
2106
2320
|
column.generationStrategy === "increment" &&
|
|
2107
2321
|
!skipIdentity)
|