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
|
@@ -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
|
/**
|
|
@@ -422,7 +456,8 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
422
456
|
upQueries.push(new Query(`ALTER TABLE ${this.escapePath(oldTable)} RENAME TO "${newTableName}"`));
|
|
423
457
|
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(newTable)} RENAME TO "${oldTableName}"`));
|
|
424
458
|
// rename primary key constraint
|
|
425
|
-
if (newTable.primaryColumns.length > 0
|
|
459
|
+
if (newTable.primaryColumns.length > 0 &&
|
|
460
|
+
!newTable.primaryColumns[0].primaryKeyConstraintName) {
|
|
426
461
|
const columnNames = newTable.primaryColumns.map((column) => column.name);
|
|
427
462
|
const oldPkName = this.connection.namingStrategy.primaryKeyName(oldTable, columnNames);
|
|
428
463
|
const newPkName = this.connection.namingStrategy.primaryKeyName(newTable, columnNames);
|
|
@@ -432,6 +467,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
432
467
|
}
|
|
433
468
|
// rename unique constraints
|
|
434
469
|
newTable.uniques.forEach((unique) => {
|
|
470
|
+
const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(oldTable, unique.columnNames);
|
|
471
|
+
// Skip renaming if Unique has user defined constraint name
|
|
472
|
+
if (unique.name !== oldUniqueName)
|
|
473
|
+
return;
|
|
435
474
|
// build new constraint name
|
|
436
475
|
const newUniqueName = this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames);
|
|
437
476
|
// build queries
|
|
@@ -442,6 +481,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
442
481
|
});
|
|
443
482
|
// rename index constraints
|
|
444
483
|
newTable.indices.forEach((index) => {
|
|
484
|
+
const oldIndexName = this.connection.namingStrategy.indexName(oldTable, index.columnNames, index.where);
|
|
485
|
+
// Skip renaming if Index has user defined constraint name
|
|
486
|
+
if (index.name !== oldIndexName)
|
|
487
|
+
return;
|
|
445
488
|
// build new constraint name
|
|
446
489
|
const newIndexName = this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);
|
|
447
490
|
// build queries
|
|
@@ -452,6 +495,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
452
495
|
});
|
|
453
496
|
// rename foreign key constraints
|
|
454
497
|
newTable.foreignKeys.forEach((foreignKey) => {
|
|
498
|
+
const oldForeignKeyName = this.connection.namingStrategy.foreignKeyName(oldTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
499
|
+
// Skip renaming if foreign key has user defined constraint name
|
|
500
|
+
if (foreignKey.name !== oldForeignKeyName)
|
|
501
|
+
return;
|
|
455
502
|
// build new constraint name
|
|
456
503
|
const newForeignKeyName = this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
457
504
|
// build queries
|
|
@@ -482,7 +529,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
482
529
|
const primaryColumns = clonedTable.primaryColumns;
|
|
483
530
|
// if table already have primary key, me must drop it and recreate again
|
|
484
531
|
if (primaryColumns.length > 0) {
|
|
485
|
-
const pkName =
|
|
532
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
533
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
534
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
486
535
|
const columnNames = primaryColumns
|
|
487
536
|
.map((column) => `"${column.name}"`)
|
|
488
537
|
.join(", ");
|
|
@@ -490,7 +539,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
490
539
|
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${pkName}" PRIMARY KEY (${columnNames})`));
|
|
491
540
|
}
|
|
492
541
|
primaryColumns.push(column);
|
|
493
|
-
const pkName =
|
|
542
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
543
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
544
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
494
545
|
const columnNames = primaryColumns
|
|
495
546
|
.map((column) => `"${column.name}"`)
|
|
496
547
|
.join(", ");
|
|
@@ -515,6 +566,21 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
515
566
|
upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${uniqueConstraint.name}" UNIQUE ("${column.name}")`));
|
|
516
567
|
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${uniqueConstraint.name}"`));
|
|
517
568
|
}
|
|
569
|
+
if (column.generatedType && column.asExpression) {
|
|
570
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
571
|
+
table: table.name,
|
|
572
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
573
|
+
name: column.name,
|
|
574
|
+
value: column.asExpression,
|
|
575
|
+
});
|
|
576
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
577
|
+
table: table.name,
|
|
578
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
579
|
+
name: column.name,
|
|
580
|
+
});
|
|
581
|
+
upQueries.push(insertQuery);
|
|
582
|
+
downQueries.push(deleteQuery);
|
|
583
|
+
}
|
|
518
584
|
await this.executeQueries(upQueries, downQueries);
|
|
519
585
|
clonedTable.addColumn(column);
|
|
520
586
|
this.replaceCachedTable(table, clonedTable);
|
|
@@ -567,7 +633,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
567
633
|
if ((newColumn.isGenerated !== oldColumn.isGenerated &&
|
|
568
634
|
newColumn.generationStrategy !== "uuid") ||
|
|
569
635
|
oldColumn.type !== newColumn.type ||
|
|
570
|
-
oldColumn.length !== newColumn.length
|
|
636
|
+
oldColumn.length !== newColumn.length ||
|
|
637
|
+
oldColumn.generatedType !== newColumn.generatedType ||
|
|
638
|
+
oldColumn.asExpression !== newColumn.asExpression) {
|
|
571
639
|
// Oracle does not support changing of IDENTITY column, so we must drop column and recreate it again.
|
|
572
640
|
// Also, we recreate column if column type changed
|
|
573
641
|
await this.dropColumn(table, oldColumn);
|
|
@@ -581,7 +649,8 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
581
649
|
upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} RENAME COLUMN "${oldColumn.name}" TO "${newColumn.name}"`));
|
|
582
650
|
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} RENAME COLUMN "${newColumn.name}" TO "${oldColumn.name}"`));
|
|
583
651
|
// rename column primary key constraint
|
|
584
|
-
if (oldColumn.isPrimary === true
|
|
652
|
+
if (oldColumn.isPrimary === true &&
|
|
653
|
+
!oldColumn.primaryKeyConstraintName) {
|
|
585
654
|
const primaryColumns = clonedTable.primaryColumns;
|
|
586
655
|
// build old primary constraint name
|
|
587
656
|
const columnNames = primaryColumns.map((column) => column.name);
|
|
@@ -596,6 +665,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
596
665
|
}
|
|
597
666
|
// rename unique constraints
|
|
598
667
|
clonedTable.findColumnUniques(oldColumn).forEach((unique) => {
|
|
668
|
+
const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(clonedTable, unique.columnNames);
|
|
669
|
+
// Skip renaming if Unique has user defined constraint name
|
|
670
|
+
if (unique.name !== oldUniqueName)
|
|
671
|
+
return;
|
|
599
672
|
// build new constraint name
|
|
600
673
|
unique.columnNames.splice(unique.columnNames.indexOf(oldColumn.name), 1);
|
|
601
674
|
unique.columnNames.push(newColumn.name);
|
|
@@ -608,6 +681,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
608
681
|
});
|
|
609
682
|
// rename index constraints
|
|
610
683
|
clonedTable.findColumnIndices(oldColumn).forEach((index) => {
|
|
684
|
+
const oldIndexName = this.connection.namingStrategy.indexName(clonedTable, index.columnNames, index.where);
|
|
685
|
+
// Skip renaming if Index has user defined constraint name
|
|
686
|
+
if (index.name !== oldIndexName)
|
|
687
|
+
return;
|
|
611
688
|
// build new constraint name
|
|
612
689
|
index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);
|
|
613
690
|
index.columnNames.push(newColumn.name);
|
|
@@ -622,6 +699,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
622
699
|
clonedTable
|
|
623
700
|
.findColumnForeignKeys(oldColumn)
|
|
624
701
|
.forEach((foreignKey) => {
|
|
702
|
+
const foreignKeyName = this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
703
|
+
// Skip renaming if foreign key has user defined constraint name
|
|
704
|
+
if (foreignKey.name !== foreignKeyName)
|
|
705
|
+
return;
|
|
625
706
|
// build new constraint name
|
|
626
707
|
foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);
|
|
627
708
|
foreignKey.columnNames.push(newColumn.name);
|
|
@@ -677,7 +758,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
677
758
|
const primaryColumns = clonedTable.primaryColumns;
|
|
678
759
|
// if primary column state changed, we must always drop existed constraint.
|
|
679
760
|
if (primaryColumns.length > 0) {
|
|
680
|
-
const pkName =
|
|
761
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
762
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
763
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
681
764
|
const columnNames = primaryColumns
|
|
682
765
|
.map((column) => `"${column.name}"`)
|
|
683
766
|
.join(", ");
|
|
@@ -689,7 +772,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
689
772
|
// update column in table
|
|
690
773
|
const column = clonedTable.columns.find((column) => column.name === newColumn.name);
|
|
691
774
|
column.isPrimary = true;
|
|
692
|
-
const pkName =
|
|
775
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
776
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
777
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
693
778
|
const columnNames = primaryColumns
|
|
694
779
|
.map((column) => `"${column.name}"`)
|
|
695
780
|
.join(", ");
|
|
@@ -704,7 +789,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
704
789
|
column.isPrimary = false;
|
|
705
790
|
// if we have another primary keys, we must recreate constraint.
|
|
706
791
|
if (primaryColumns.length > 0) {
|
|
707
|
-
const pkName =
|
|
792
|
+
const pkName = primaryColumns[0]
|
|
793
|
+
.primaryKeyConstraintName
|
|
794
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
795
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
708
796
|
const columnNames = primaryColumns
|
|
709
797
|
.map((column) => `"${column.name}"`)
|
|
710
798
|
.join(", ");
|
|
@@ -762,7 +850,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
762
850
|
const downQueries = [];
|
|
763
851
|
// drop primary key constraint
|
|
764
852
|
if (column.isPrimary) {
|
|
765
|
-
const pkName =
|
|
853
|
+
const pkName = column.primaryKeyConstraintName
|
|
854
|
+
? column.primaryKeyConstraintName
|
|
855
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
|
|
766
856
|
const columnNames = clonedTable.primaryColumns
|
|
767
857
|
.map((primaryColumn) => `"${primaryColumn.name}"`)
|
|
768
858
|
.join(", ");
|
|
@@ -773,7 +863,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
773
863
|
tableColumn.isPrimary = false;
|
|
774
864
|
// if primary key have multiple columns, we must recreate it without dropped column
|
|
775
865
|
if (clonedTable.primaryColumns.length > 0) {
|
|
776
|
-
const pkName =
|
|
866
|
+
const pkName = clonedTable.primaryColumns[0]
|
|
867
|
+
.primaryKeyConstraintName
|
|
868
|
+
? clonedTable.primaryColumns[0].primaryKeyConstraintName
|
|
869
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
|
|
777
870
|
const columnNames = clonedTable.primaryColumns
|
|
778
871
|
.map((primaryColumn) => `"${primaryColumn.name}"`)
|
|
779
872
|
.join(", ");
|
|
@@ -807,6 +900,21 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
807
900
|
}
|
|
808
901
|
upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP COLUMN "${column.name}"`));
|
|
809
902
|
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD ${this.buildCreateColumnSql(column)}`));
|
|
903
|
+
if (column.generatedType && column.asExpression) {
|
|
904
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
905
|
+
table: table.name,
|
|
906
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
907
|
+
name: column.name,
|
|
908
|
+
});
|
|
909
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
910
|
+
table: table.name,
|
|
911
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
912
|
+
name: column.name,
|
|
913
|
+
value: column.asExpression,
|
|
914
|
+
});
|
|
915
|
+
upQueries.push(deleteQuery);
|
|
916
|
+
downQueries.push(insertQuery);
|
|
917
|
+
}
|
|
810
918
|
await this.executeQueries(upQueries, downQueries);
|
|
811
919
|
clonedTable.removeColumn(column);
|
|
812
920
|
this.replaceCachedTable(table, clonedTable);
|
|
@@ -822,12 +930,12 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
822
930
|
/**
|
|
823
931
|
* Creates a new primary key.
|
|
824
932
|
*/
|
|
825
|
-
async createPrimaryKey(tableOrName, columnNames) {
|
|
933
|
+
async createPrimaryKey(tableOrName, columnNames, constraintName) {
|
|
826
934
|
const table = InstanceChecker.isTable(tableOrName)
|
|
827
935
|
? tableOrName
|
|
828
936
|
: await this.getCachedTable(tableOrName);
|
|
829
937
|
const clonedTable = table.clone();
|
|
830
|
-
const up = this.createPrimaryKeySql(table, columnNames);
|
|
938
|
+
const up = this.createPrimaryKeySql(table, columnNames, constraintName);
|
|
831
939
|
// mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.
|
|
832
940
|
clonedTable.columns.forEach((column) => {
|
|
833
941
|
if (columnNames.find((columnName) => columnName === column.name))
|
|
@@ -851,7 +959,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
851
959
|
// if table already have primary columns, we must drop them.
|
|
852
960
|
const primaryColumns = clonedTable.primaryColumns;
|
|
853
961
|
if (primaryColumns.length > 0) {
|
|
854
|
-
const pkName =
|
|
962
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
963
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
964
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
855
965
|
const columnNamesString = primaryColumns
|
|
856
966
|
.map((column) => `"${column.name}"`)
|
|
857
967
|
.join(", ");
|
|
@@ -862,7 +972,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
862
972
|
clonedTable.columns
|
|
863
973
|
.filter((column) => columnNames.indexOf(column.name) !== -1)
|
|
864
974
|
.forEach((column) => (column.isPrimary = true));
|
|
865
|
-
const pkName =
|
|
975
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
976
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
977
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
|
|
866
978
|
const columnNamesString = columnNames
|
|
867
979
|
.map((columnName) => `"${columnName}"`)
|
|
868
980
|
.join(", ");
|
|
@@ -874,12 +986,12 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
874
986
|
/**
|
|
875
987
|
* Drops a primary key.
|
|
876
988
|
*/
|
|
877
|
-
async dropPrimaryKey(tableOrName) {
|
|
989
|
+
async dropPrimaryKey(tableOrName, constraintName) {
|
|
878
990
|
const table = InstanceChecker.isTable(tableOrName)
|
|
879
991
|
? tableOrName
|
|
880
992
|
: await this.getCachedTable(tableOrName);
|
|
881
993
|
const up = this.dropPrimaryKeySql(table);
|
|
882
|
-
const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name));
|
|
994
|
+
const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name), constraintName);
|
|
883
995
|
await this.executeQueries(up, down);
|
|
884
996
|
table.primaryColumns.forEach((column) => {
|
|
885
997
|
column.isPrimary = false;
|
|
@@ -1243,7 +1355,7 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
1243
1355
|
this.query(constraintsSql),
|
|
1244
1356
|
]);
|
|
1245
1357
|
// create tables for loaded tables
|
|
1246
|
-
return dbTables.map((dbTable) => {
|
|
1358
|
+
return await Promise.all(dbTables.map(async (dbTable) => {
|
|
1247
1359
|
const table = new Table();
|
|
1248
1360
|
const owner = dbTable["OWNER"] === currentSchema &&
|
|
1249
1361
|
(!this.driver.options.schema ||
|
|
@@ -1254,11 +1366,13 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
1254
1366
|
table.schema = dbTable["OWNER"];
|
|
1255
1367
|
table.name = this.driver.buildTableName(dbTable["TABLE_NAME"], owner);
|
|
1256
1368
|
// create columns from the loaded columns
|
|
1257
|
-
table.columns = dbColumns
|
|
1369
|
+
table.columns = await Promise.all(dbColumns
|
|
1258
1370
|
.filter((dbColumn) => dbColumn["OWNER"] === dbTable["OWNER"] &&
|
|
1259
|
-
dbColumn["TABLE_NAME"] ===
|
|
1260
|
-
|
|
1261
|
-
|
|
1371
|
+
dbColumn["TABLE_NAME"] ===
|
|
1372
|
+
dbTable["TABLE_NAME"])
|
|
1373
|
+
.map(async (dbColumn) => {
|
|
1374
|
+
const columnConstraints = dbConstraints.filter((dbConstraint) => dbConstraint["OWNER"] ===
|
|
1375
|
+
dbColumn["OWNER"] &&
|
|
1262
1376
|
dbConstraint["TABLE_NAME"] ===
|
|
1263
1377
|
dbColumn["TABLE_NAME"] &&
|
|
1264
1378
|
dbConstraint["COLUMN_NAME"] ===
|
|
@@ -1273,12 +1387,13 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
1273
1387
|
dbColumn["COLUMN_NAME"] &&
|
|
1274
1388
|
dbConstraint["CONSTRAINT_NAME"] ===
|
|
1275
1389
|
uniqueConstraint["CONSTRAINT_NAME"] &&
|
|
1276
|
-
dbConstraint["CONSTRAINT_TYPE"] ===
|
|
1390
|
+
dbConstraint["CONSTRAINT_TYPE"] ===
|
|
1391
|
+
"U");
|
|
1277
1392
|
});
|
|
1278
|
-
const isPrimary = !!columnConstraints.find((constraint) => constraint["CONSTRAINT_TYPE"] === "P");
|
|
1279
1393
|
const tableColumn = new TableColumn();
|
|
1280
1394
|
tableColumn.name = dbColumn["COLUMN_NAME"];
|
|
1281
|
-
tableColumn.type =
|
|
1395
|
+
tableColumn.type =
|
|
1396
|
+
dbColumn["DATA_TYPE"].toLowerCase();
|
|
1282
1397
|
if (tableColumn.type.indexOf("(") !== -1)
|
|
1283
1398
|
tableColumn.type = tableColumn.type.replace(/\([0-9]*\)/, "");
|
|
1284
1399
|
// check only columns that have length property
|
|
@@ -1296,31 +1411,60 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
1296
1411
|
tableColumn.type === "float") {
|
|
1297
1412
|
if (dbColumn["DATA_PRECISION"] !== null &&
|
|
1298
1413
|
!this.isDefaultColumnPrecision(table, tableColumn, dbColumn["DATA_PRECISION"]))
|
|
1299
|
-
tableColumn.precision =
|
|
1414
|
+
tableColumn.precision =
|
|
1415
|
+
dbColumn["DATA_PRECISION"];
|
|
1300
1416
|
if (dbColumn["DATA_SCALE"] !== null &&
|
|
1301
1417
|
!this.isDefaultColumnScale(table, tableColumn, dbColumn["DATA_SCALE"]))
|
|
1302
1418
|
tableColumn.scale = dbColumn["DATA_SCALE"];
|
|
1303
1419
|
}
|
|
1304
1420
|
else if ((tableColumn.type === "timestamp" ||
|
|
1305
|
-
tableColumn.type ===
|
|
1421
|
+
tableColumn.type ===
|
|
1422
|
+
"timestamp with time zone" ||
|
|
1306
1423
|
tableColumn.type ===
|
|
1307
1424
|
"timestamp with local time zone") &&
|
|
1308
1425
|
dbColumn["DATA_SCALE"] !== null) {
|
|
1309
|
-
tableColumn.precision =
|
|
1310
|
-
|
|
1311
|
-
|
|
1426
|
+
tableColumn.precision =
|
|
1427
|
+
!this.isDefaultColumnPrecision(table, tableColumn, dbColumn["DATA_SCALE"])
|
|
1428
|
+
? dbColumn["DATA_SCALE"]
|
|
1429
|
+
: undefined;
|
|
1312
1430
|
}
|
|
1313
1431
|
tableColumn.default =
|
|
1314
1432
|
dbColumn["DATA_DEFAULT"] !== null &&
|
|
1315
1433
|
dbColumn["DATA_DEFAULT"] !== undefined &&
|
|
1434
|
+
dbColumn["VIRTUAL_COLUMN"] === "NO" &&
|
|
1316
1435
|
dbColumn["DATA_DEFAULT"].trim() !== "NULL"
|
|
1317
1436
|
? (tableColumn.default =
|
|
1318
1437
|
dbColumn["DATA_DEFAULT"].trim())
|
|
1319
1438
|
: undefined;
|
|
1320
|
-
|
|
1439
|
+
const primaryConstraint = columnConstraints.find((constraint) => constraint["CONSTRAINT_TYPE"] === "P");
|
|
1440
|
+
if (primaryConstraint) {
|
|
1441
|
+
tableColumn.isPrimary = true;
|
|
1442
|
+
// find another columns involved in primary key constraint
|
|
1443
|
+
const anotherPrimaryConstraints = dbConstraints.filter((constraint) => constraint["OWNER"] ===
|
|
1444
|
+
dbColumn["OWNER"] &&
|
|
1445
|
+
constraint["TABLE_NAME"] ===
|
|
1446
|
+
dbColumn["TABLE_NAME"] &&
|
|
1447
|
+
constraint["COLUMN_NAME"] !==
|
|
1448
|
+
dbColumn["COLUMN_NAME"] &&
|
|
1449
|
+
constraint["CONSTRAINT_TYPE"] ===
|
|
1450
|
+
"P");
|
|
1451
|
+
// collect all column names
|
|
1452
|
+
const columnNames = anotherPrimaryConstraints.map((constraint) => constraint["COLUMN_NAME"]);
|
|
1453
|
+
columnNames.push(dbColumn["COLUMN_NAME"]);
|
|
1454
|
+
// build default primary key constraint name
|
|
1455
|
+
const pkName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
1456
|
+
// if primary key has user-defined constraint name, write it in table column
|
|
1457
|
+
if (primaryConstraint["CONSTRAINT_NAME"] !==
|
|
1458
|
+
pkName) {
|
|
1459
|
+
tableColumn.primaryKeyConstraintName =
|
|
1460
|
+
primaryConstraint["CONSTRAINT_NAME"];
|
|
1461
|
+
}
|
|
1462
|
+
}
|
|
1463
|
+
tableColumn.isNullable =
|
|
1464
|
+
dbColumn["NULLABLE"] === "Y";
|
|
1321
1465
|
tableColumn.isUnique =
|
|
1322
|
-
uniqueConstraints.length > 0 &&
|
|
1323
|
-
|
|
1466
|
+
uniqueConstraints.length > 0 &&
|
|
1467
|
+
!isConstraintComposite;
|
|
1324
1468
|
tableColumn.isGenerated =
|
|
1325
1469
|
dbColumn["IDENTITY_COLUMN"] === "YES";
|
|
1326
1470
|
if (tableColumn.isGenerated) {
|
|
@@ -1328,11 +1472,27 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
1328
1472
|
tableColumn.default = undefined;
|
|
1329
1473
|
}
|
|
1330
1474
|
tableColumn.comment = ""; // todo
|
|
1475
|
+
if (dbColumn["VIRTUAL_COLUMN"] === "YES") {
|
|
1476
|
+
tableColumn.generatedType = "VIRTUAL";
|
|
1477
|
+
const asExpressionQuery = await this.selectTypeormMetadataSql({
|
|
1478
|
+
table: dbTable["TABLE_NAME"],
|
|
1479
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
1480
|
+
name: tableColumn.name,
|
|
1481
|
+
});
|
|
1482
|
+
const results = await this.query(asExpressionQuery.query, asExpressionQuery.parameters);
|
|
1483
|
+
if (results[0] && results[0].value) {
|
|
1484
|
+
tableColumn.asExpression = results[0].value;
|
|
1485
|
+
}
|
|
1486
|
+
else {
|
|
1487
|
+
tableColumn.asExpression = "";
|
|
1488
|
+
}
|
|
1489
|
+
}
|
|
1331
1490
|
return tableColumn;
|
|
1332
|
-
});
|
|
1491
|
+
}));
|
|
1333
1492
|
// find unique constraints of table, group them by constraint name and build TableUnique.
|
|
1334
1493
|
const tableUniqueConstraints = OrmUtils.uniq(dbConstraints.filter((dbConstraint) => {
|
|
1335
|
-
return (dbConstraint["TABLE_NAME"] ===
|
|
1494
|
+
return (dbConstraint["TABLE_NAME"] ===
|
|
1495
|
+
dbTable["TABLE_NAME"] &&
|
|
1336
1496
|
dbConstraint["OWNER"] === dbTable["OWNER"] &&
|
|
1337
1497
|
dbConstraint["CONSTRAINT_TYPE"] === "U");
|
|
1338
1498
|
}), (dbConstraint) => dbConstraint["CONSTRAINT_NAME"]);
|
|
@@ -1346,7 +1506,8 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
1346
1506
|
});
|
|
1347
1507
|
// find check constraints of table, group them by constraint name and build TableCheck.
|
|
1348
1508
|
const tableCheckConstraints = OrmUtils.uniq(dbConstraints.filter((dbConstraint) => {
|
|
1349
|
-
return (dbConstraint["TABLE_NAME"] ===
|
|
1509
|
+
return (dbConstraint["TABLE_NAME"] ===
|
|
1510
|
+
dbTable["TABLE_NAME"] &&
|
|
1350
1511
|
dbConstraint["OWNER"] === dbTable["OWNER"] &&
|
|
1351
1512
|
dbConstraint["CONSTRAINT_TYPE"] === "C");
|
|
1352
1513
|
}), (dbConstraint) => dbConstraint["CONSTRAINT_NAME"]);
|
|
@@ -1363,9 +1524,11 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
1363
1524
|
});
|
|
1364
1525
|
// find foreign key constraints of table, group them by constraint name and build TableForeignKey.
|
|
1365
1526
|
const tableForeignKeyConstraints = OrmUtils.uniq(dbForeignKeys.filter((dbForeignKey) => dbForeignKey["OWNER"] === dbTable["OWNER"] &&
|
|
1366
|
-
dbForeignKey["TABLE_NAME"] ===
|
|
1527
|
+
dbForeignKey["TABLE_NAME"] ===
|
|
1528
|
+
dbTable["TABLE_NAME"]), (dbForeignKey) => dbForeignKey["CONSTRAINT_NAME"]);
|
|
1367
1529
|
table.foreignKeys = tableForeignKeyConstraints.map((dbForeignKey) => {
|
|
1368
|
-
const foreignKeys = dbForeignKeys.filter((dbFk) => dbFk["TABLE_NAME"] ===
|
|
1530
|
+
const foreignKeys = dbForeignKeys.filter((dbFk) => dbFk["TABLE_NAME"] ===
|
|
1531
|
+
dbForeignKey["TABLE_NAME"] &&
|
|
1369
1532
|
dbFk["OWNER"] === dbForeignKey["OWNER"] &&
|
|
1370
1533
|
dbFk["CONSTRAINT_NAME"] ===
|
|
1371
1534
|
dbForeignKey["CONSTRAINT_NAME"]);
|
|
@@ -1392,7 +1555,7 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
1392
1555
|
});
|
|
1393
1556
|
});
|
|
1394
1557
|
return table;
|
|
1395
|
-
});
|
|
1558
|
+
}));
|
|
1396
1559
|
}
|
|
1397
1560
|
/**
|
|
1398
1561
|
* Builds and returns SQL for create table.
|
|
@@ -1460,7 +1623,9 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
1460
1623
|
}
|
|
1461
1624
|
const primaryColumns = table.columns.filter((column) => column.isPrimary);
|
|
1462
1625
|
if (primaryColumns.length > 0) {
|
|
1463
|
-
const primaryKeyName =
|
|
1626
|
+
const primaryKeyName = primaryColumns[0].primaryKeyConstraintName
|
|
1627
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
1628
|
+
: this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
|
|
1464
1629
|
const columnNames = primaryColumns
|
|
1465
1630
|
.map((column) => `"${column.name}"`)
|
|
1466
1631
|
.join(", ");
|
|
@@ -1537,8 +1702,10 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
1537
1702
|
/**
|
|
1538
1703
|
* Builds create primary key sql.
|
|
1539
1704
|
*/
|
|
1540
|
-
createPrimaryKeySql(table, columnNames) {
|
|
1541
|
-
const primaryKeyName =
|
|
1705
|
+
createPrimaryKeySql(table, columnNames, constraintName) {
|
|
1706
|
+
const primaryKeyName = constraintName
|
|
1707
|
+
? constraintName
|
|
1708
|
+
: this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
1542
1709
|
const columnNamesString = columnNames
|
|
1543
1710
|
.map((columnName) => `"${columnName}"`)
|
|
1544
1711
|
.join(", ");
|
|
@@ -1548,8 +1715,13 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
1548
1715
|
* Builds drop primary key sql.
|
|
1549
1716
|
*/
|
|
1550
1717
|
dropPrimaryKeySql(table) {
|
|
1718
|
+
if (!table.primaryColumns.length)
|
|
1719
|
+
throw new TypeORMError(`Table ${table} has no primary keys.`);
|
|
1551
1720
|
const columnNames = table.primaryColumns.map((column) => column.name);
|
|
1552
|
-
const
|
|
1721
|
+
const constraintName = table.primaryColumns[0].primaryKeyConstraintName;
|
|
1722
|
+
const primaryKeyName = constraintName
|
|
1723
|
+
? constraintName
|
|
1724
|
+
: this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
1553
1725
|
return new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${primaryKeyName}"`);
|
|
1554
1726
|
}
|
|
1555
1727
|
/**
|
|
@@ -1620,6 +1792,8 @@ export class OracleQueryRunner extends BaseQueryRunner {
|
|
|
1620
1792
|
c += " CHARACTER SET " + column.charset;
|
|
1621
1793
|
if (column.collation)
|
|
1622
1794
|
c += " COLLATE " + column.collation;
|
|
1795
|
+
if (column.asExpression)
|
|
1796
|
+
c += ` AS (${column.asExpression}) VIRTUAL`;
|
|
1623
1797
|
if (column.default !== undefined && column.default !== null)
|
|
1624
1798
|
// DEFAULT must be placed before NOT NULL
|
|
1625
1799
|
c += " DEFAULT " + column.default;
|