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
|
@@ -386,7 +386,6 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
386
386
|
type: MetadataTableType.GENERATED_COLUMN,
|
|
387
387
|
name: column.name,
|
|
388
388
|
});
|
|
389
|
-
upQueries.push(deleteQuery);
|
|
390
389
|
upQueries.push(insertQuery);
|
|
391
390
|
downQueries.push(deleteQuery);
|
|
392
391
|
}
|
|
@@ -434,6 +433,30 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
434
433
|
table.foreignKeys.forEach((foreignKey) => upQueries.push(this.dropForeignKeySql(table, foreignKey)));
|
|
435
434
|
upQueries.push(this.dropTableSql(table));
|
|
436
435
|
downQueries.push(this.createTableSql(table, createForeignKeys));
|
|
436
|
+
// if table had columns with generated type, we must remove the expression from the metadata table
|
|
437
|
+
const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
|
|
438
|
+
for (const column of generatedColumns) {
|
|
439
|
+
const tableNameWithSchema = (await this.getTableNameWithSchema(table.name)).split(".");
|
|
440
|
+
const tableName = tableNameWithSchema[1];
|
|
441
|
+
const schema = tableNameWithSchema[0];
|
|
442
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
443
|
+
database: this.driver.database,
|
|
444
|
+
schema,
|
|
445
|
+
table: tableName,
|
|
446
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
447
|
+
name: column.name,
|
|
448
|
+
});
|
|
449
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
450
|
+
database: this.driver.database,
|
|
451
|
+
schema,
|
|
452
|
+
table: tableName,
|
|
453
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
454
|
+
name: column.name,
|
|
455
|
+
value: column.asExpression,
|
|
456
|
+
});
|
|
457
|
+
upQueries.push(deleteQuery);
|
|
458
|
+
downQueries.push(insertQuery);
|
|
459
|
+
}
|
|
437
460
|
await this.executeQueries(upQueries, downQueries);
|
|
438
461
|
}
|
|
439
462
|
/**
|
|
@@ -478,8 +501,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
478
501
|
: newTableName;
|
|
479
502
|
upQueries.push(new Query(`ALTER TABLE ${this.escapePath(oldTable)} RENAME TO "${newTableName}"`));
|
|
480
503
|
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(newTable)} RENAME TO "${oldTableName}"`));
|
|
481
|
-
// rename column primary key constraint
|
|
482
|
-
if (newTable.primaryColumns.length > 0
|
|
504
|
+
// rename column primary key constraint if it has default constraint name
|
|
505
|
+
if (newTable.primaryColumns.length > 0 &&
|
|
506
|
+
!newTable.primaryColumns[0].primaryKeyConstraintName) {
|
|
483
507
|
const columnNames = newTable.primaryColumns.map((column) => column.name);
|
|
484
508
|
const oldPkName = this.connection.namingStrategy.primaryKeyName(oldTable, columnNames);
|
|
485
509
|
const newPkName = this.connection.namingStrategy.primaryKeyName(newTable, columnNames);
|
|
@@ -501,6 +525,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
501
525
|
});
|
|
502
526
|
// rename unique constraints
|
|
503
527
|
newTable.uniques.forEach((unique) => {
|
|
528
|
+
const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(oldTable, unique.columnNames);
|
|
529
|
+
// Skip renaming if Unique has user defined constraint name
|
|
530
|
+
if (unique.name !== oldUniqueName)
|
|
531
|
+
return;
|
|
504
532
|
// build new constraint name
|
|
505
533
|
const newUniqueName = this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames);
|
|
506
534
|
// build queries
|
|
@@ -511,6 +539,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
511
539
|
});
|
|
512
540
|
// rename index constraints
|
|
513
541
|
newTable.indices.forEach((index) => {
|
|
542
|
+
const oldIndexName = this.connection.namingStrategy.indexName(oldTable, index.columnNames, index.where);
|
|
543
|
+
// Skip renaming if Index has user defined constraint name
|
|
544
|
+
if (index.name !== oldIndexName)
|
|
545
|
+
return;
|
|
514
546
|
// build new constraint name
|
|
515
547
|
const { schema } = this.driver.parseTableName(newTable);
|
|
516
548
|
const newIndexName = this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);
|
|
@@ -528,6 +560,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
528
560
|
});
|
|
529
561
|
// rename foreign key constraints
|
|
530
562
|
newTable.foreignKeys.forEach((foreignKey) => {
|
|
563
|
+
const oldForeignKeyName = this.connection.namingStrategy.foreignKeyName(oldTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
564
|
+
// Skip renaming if foreign key has user defined constraint name
|
|
565
|
+
if (foreignKey.name !== oldForeignKeyName)
|
|
566
|
+
return;
|
|
531
567
|
// build new constraint name
|
|
532
568
|
const newForeignKeyName = this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
533
569
|
// build queries
|
|
@@ -572,7 +608,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
572
608
|
const primaryColumns = clonedTable.primaryColumns;
|
|
573
609
|
// if table already have primary key, me must drop it and recreate again
|
|
574
610
|
if (primaryColumns.length > 0) {
|
|
575
|
-
const pkName =
|
|
611
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
612
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
613
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
576
614
|
const columnNames = primaryColumns
|
|
577
615
|
.map((column) => `"${column.name}"`)
|
|
578
616
|
.join(", ");
|
|
@@ -580,7 +618,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
580
618
|
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${pkName}" PRIMARY KEY (${columnNames})`));
|
|
581
619
|
}
|
|
582
620
|
primaryColumns.push(column);
|
|
583
|
-
const pkName =
|
|
621
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
622
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
623
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
584
624
|
const columnNames = primaryColumns
|
|
585
625
|
.map((column) => `"${column.name}"`)
|
|
586
626
|
.join(", ");
|
|
@@ -623,7 +663,6 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
623
663
|
type: MetadataTableType.GENERATED_COLUMN,
|
|
624
664
|
name: column.name,
|
|
625
665
|
});
|
|
626
|
-
upQueries.push(deleteQuery);
|
|
627
666
|
upQueries.push(insertQuery);
|
|
628
667
|
downQueries.push(deleteQuery);
|
|
629
668
|
}
|
|
@@ -708,7 +747,8 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
708
747
|
downQueries.push(new Query(`ALTER TYPE ${this.buildEnumName(table, newColumn)} RENAME TO "${oldEnumType.name}"`));
|
|
709
748
|
}
|
|
710
749
|
// rename column primary key constraint
|
|
711
|
-
if (oldColumn.isPrimary === true
|
|
750
|
+
if (oldColumn.isPrimary === true &&
|
|
751
|
+
!oldColumn.primaryKeyConstraintName) {
|
|
712
752
|
const primaryColumns = clonedTable.primaryColumns;
|
|
713
753
|
// build old primary constraint name
|
|
714
754
|
const columnNames = primaryColumns.map((column) => column.name);
|
|
@@ -735,6 +775,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
735
775
|
}
|
|
736
776
|
// rename unique constraints
|
|
737
777
|
clonedTable.findColumnUniques(oldColumn).forEach((unique) => {
|
|
778
|
+
const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(clonedTable, unique.columnNames);
|
|
779
|
+
// Skip renaming if Unique has user defined constraint name
|
|
780
|
+
if (unique.name !== oldUniqueName)
|
|
781
|
+
return;
|
|
738
782
|
// build new constraint name
|
|
739
783
|
unique.columnNames.splice(unique.columnNames.indexOf(oldColumn.name), 1);
|
|
740
784
|
unique.columnNames.push(newColumn.name);
|
|
@@ -747,6 +791,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
747
791
|
});
|
|
748
792
|
// rename index constraints
|
|
749
793
|
clonedTable.findColumnIndices(oldColumn).forEach((index) => {
|
|
794
|
+
const oldIndexName = this.connection.namingStrategy.indexName(clonedTable, index.columnNames, index.where);
|
|
795
|
+
// Skip renaming if Index has user defined constraint name
|
|
796
|
+
if (index.name !== oldIndexName)
|
|
797
|
+
return;
|
|
750
798
|
// build new constraint name
|
|
751
799
|
index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);
|
|
752
800
|
index.columnNames.push(newColumn.name);
|
|
@@ -768,6 +816,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
768
816
|
clonedTable
|
|
769
817
|
.findColumnForeignKeys(oldColumn)
|
|
770
818
|
.forEach((foreignKey) => {
|
|
819
|
+
const foreignKeyName = this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
820
|
+
// Skip renaming if foreign key has user defined constraint name
|
|
821
|
+
if (foreignKey.name !== foreignKeyName)
|
|
822
|
+
return;
|
|
771
823
|
// build new constraint name
|
|
772
824
|
foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);
|
|
773
825
|
foreignKey.columnNames.push(newColumn.name);
|
|
@@ -853,7 +905,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
853
905
|
const primaryColumns = clonedTable.primaryColumns;
|
|
854
906
|
// if primary column state changed, we must always drop existed constraint.
|
|
855
907
|
if (primaryColumns.length > 0) {
|
|
856
|
-
const pkName =
|
|
908
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
909
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
910
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
857
911
|
const columnNames = primaryColumns
|
|
858
912
|
.map((column) => `"${column.name}"`)
|
|
859
913
|
.join(", ");
|
|
@@ -865,7 +919,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
865
919
|
// update column in table
|
|
866
920
|
const column = clonedTable.columns.find((column) => column.name === newColumn.name);
|
|
867
921
|
column.isPrimary = true;
|
|
868
|
-
const pkName =
|
|
922
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
923
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
924
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
869
925
|
const columnNames = primaryColumns
|
|
870
926
|
.map((column) => `"${column.name}"`)
|
|
871
927
|
.join(", ");
|
|
@@ -880,7 +936,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
880
936
|
column.isPrimary = false;
|
|
881
937
|
// if we have another primary keys, we must recreate constraint.
|
|
882
938
|
if (primaryColumns.length > 0) {
|
|
883
|
-
const pkName =
|
|
939
|
+
const pkName = primaryColumns[0]
|
|
940
|
+
.primaryKeyConstraintName
|
|
941
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
942
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
884
943
|
const columnNames = primaryColumns
|
|
885
944
|
.map((column) => `"${column.name}"`)
|
|
886
945
|
.join(", ");
|
|
@@ -994,15 +1053,6 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
994
1053
|
name: oldColumn.name,
|
|
995
1054
|
}));
|
|
996
1055
|
// However, we can't copy it back on downgrade. It needs to regenerate.
|
|
997
|
-
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP COLUMN "${newColumn.name}"`));
|
|
998
|
-
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD ${this.buildCreateColumnSql(table, oldColumn)}`));
|
|
999
|
-
downQueries.push(this.deleteTypeormMetadataSql({
|
|
1000
|
-
database: this.driver.database,
|
|
1001
|
-
schema,
|
|
1002
|
-
table: tableName,
|
|
1003
|
-
type: MetadataTableType.GENERATED_COLUMN,
|
|
1004
|
-
name: newColumn.name,
|
|
1005
|
-
}));
|
|
1006
1056
|
downQueries.push(this.insertTypeormMetadataSql({
|
|
1007
1057
|
database: this.driver.database,
|
|
1008
1058
|
schema,
|
|
@@ -1011,6 +1061,17 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
1011
1061
|
name: oldColumn.name,
|
|
1012
1062
|
value: oldColumn.asExpression,
|
|
1013
1063
|
}));
|
|
1064
|
+
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD ${this.buildCreateColumnSql(table, oldColumn)}`));
|
|
1065
|
+
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP COLUMN "${newColumn.name}"`));
|
|
1066
|
+
// downQueries.push(
|
|
1067
|
+
// this.deleteTypeormMetadataSql({
|
|
1068
|
+
// database: this.driver.database,
|
|
1069
|
+
// schema,
|
|
1070
|
+
// table: tableName,
|
|
1071
|
+
// type: MetadataTableType.GENERATED_COLUMN,
|
|
1072
|
+
// name: newColumn.name,
|
|
1073
|
+
// }),
|
|
1074
|
+
// )
|
|
1014
1075
|
}
|
|
1015
1076
|
}
|
|
1016
1077
|
}
|
|
@@ -1042,7 +1103,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
1042
1103
|
const downQueries = [];
|
|
1043
1104
|
// drop primary key constraint
|
|
1044
1105
|
if (column.isPrimary) {
|
|
1045
|
-
const pkName =
|
|
1106
|
+
const pkName = column.primaryKeyConstraintName
|
|
1107
|
+
? column.primaryKeyConstraintName
|
|
1108
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
|
|
1046
1109
|
const columnNames = clonedTable.primaryColumns
|
|
1047
1110
|
.map((primaryColumn) => `"${primaryColumn.name}"`)
|
|
1048
1111
|
.join(", ");
|
|
@@ -1053,7 +1116,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
1053
1116
|
tableColumn.isPrimary = false;
|
|
1054
1117
|
// if primary key have multiple columns, we must recreate it without dropped column
|
|
1055
1118
|
if (clonedTable.primaryColumns.length > 0) {
|
|
1056
|
-
const pkName =
|
|
1119
|
+
const pkName = clonedTable.primaryColumns[0]
|
|
1120
|
+
.primaryKeyConstraintName
|
|
1121
|
+
? clonedTable.primaryColumns[0].primaryKeyConstraintName
|
|
1122
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
|
|
1057
1123
|
const columnNames = clonedTable.primaryColumns
|
|
1058
1124
|
.map((primaryColumn) => `"${primaryColumn.name}"`)
|
|
1059
1125
|
.join(", ");
|
|
@@ -1102,14 +1168,14 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
1102
1168
|
const tableNameWithSchema = (await this.getTableNameWithSchema(table.name)).split(".");
|
|
1103
1169
|
const tableName = tableNameWithSchema[1];
|
|
1104
1170
|
const schema = tableNameWithSchema[0];
|
|
1105
|
-
const
|
|
1171
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
1106
1172
|
database: this.driver.database,
|
|
1107
1173
|
schema,
|
|
1108
1174
|
table: tableName,
|
|
1109
1175
|
type: MetadataTableType.GENERATED_COLUMN,
|
|
1110
1176
|
name: column.name,
|
|
1111
1177
|
});
|
|
1112
|
-
const
|
|
1178
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
1113
1179
|
database: this.driver.database,
|
|
1114
1180
|
schema,
|
|
1115
1181
|
table: tableName,
|
|
@@ -1117,8 +1183,8 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
1117
1183
|
name: column.name,
|
|
1118
1184
|
value: column.asExpression,
|
|
1119
1185
|
});
|
|
1120
|
-
upQueries.push(
|
|
1121
|
-
downQueries.push(
|
|
1186
|
+
upQueries.push(deleteQuery);
|
|
1187
|
+
downQueries.push(insertQuery);
|
|
1122
1188
|
}
|
|
1123
1189
|
await this.executeQueries(upQueries, downQueries);
|
|
1124
1190
|
clonedTable.removeColumn(column);
|
|
@@ -1135,12 +1201,12 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
1135
1201
|
/**
|
|
1136
1202
|
* Creates a new primary key.
|
|
1137
1203
|
*/
|
|
1138
|
-
async createPrimaryKey(tableOrName, columnNames) {
|
|
1204
|
+
async createPrimaryKey(tableOrName, columnNames, constraintName) {
|
|
1139
1205
|
const table = InstanceChecker.isTable(tableOrName)
|
|
1140
1206
|
? tableOrName
|
|
1141
1207
|
: await this.getCachedTable(tableOrName);
|
|
1142
1208
|
const clonedTable = table.clone();
|
|
1143
|
-
const up = this.createPrimaryKeySql(table, columnNames);
|
|
1209
|
+
const up = this.createPrimaryKeySql(table, columnNames, constraintName);
|
|
1144
1210
|
// mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.
|
|
1145
1211
|
clonedTable.columns.forEach((column) => {
|
|
1146
1212
|
if (columnNames.find((columnName) => columnName === column.name))
|
|
@@ -1164,7 +1230,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
1164
1230
|
// if table already have primary columns, we must drop them.
|
|
1165
1231
|
const primaryColumns = clonedTable.primaryColumns;
|
|
1166
1232
|
if (primaryColumns.length > 0) {
|
|
1167
|
-
const pkName =
|
|
1233
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
1234
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
1235
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
1168
1236
|
const columnNamesString = primaryColumns
|
|
1169
1237
|
.map((column) => `"${column.name}"`)
|
|
1170
1238
|
.join(", ");
|
|
@@ -1175,7 +1243,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
1175
1243
|
clonedTable.columns
|
|
1176
1244
|
.filter((column) => columnNames.indexOf(column.name) !== -1)
|
|
1177
1245
|
.forEach((column) => (column.isPrimary = true));
|
|
1178
|
-
const pkName =
|
|
1246
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
1247
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
1248
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
|
|
1179
1249
|
const columnNamesString = columnNames
|
|
1180
1250
|
.map((columnName) => `"${columnName}"`)
|
|
1181
1251
|
.join(", ");
|
|
@@ -1187,12 +1257,12 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
1187
1257
|
/**
|
|
1188
1258
|
* Drops a primary key.
|
|
1189
1259
|
*/
|
|
1190
|
-
async dropPrimaryKey(tableOrName) {
|
|
1260
|
+
async dropPrimaryKey(tableOrName, constraintName) {
|
|
1191
1261
|
const table = InstanceChecker.isTable(tableOrName)
|
|
1192
1262
|
? tableOrName
|
|
1193
1263
|
: await this.getCachedTable(tableOrName);
|
|
1194
1264
|
const up = this.dropPrimaryKeySql(table);
|
|
1195
|
-
const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name));
|
|
1265
|
+
const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name), constraintName);
|
|
1196
1266
|
await this.executeQueries(up, down);
|
|
1197
1267
|
table.primaryColumns.forEach((column) => {
|
|
1198
1268
|
column.isPrimary = false;
|
|
@@ -1814,7 +1884,30 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
1814
1884
|
}
|
|
1815
1885
|
tableColumn.isNullable =
|
|
1816
1886
|
dbColumn["is_nullable"] === "YES";
|
|
1817
|
-
|
|
1887
|
+
const primaryConstraint = columnConstraints.find((constraint) => constraint["constraint_type"] === "PRIMARY");
|
|
1888
|
+
if (primaryConstraint) {
|
|
1889
|
+
tableColumn.isPrimary = true;
|
|
1890
|
+
// find another columns involved in primary key constraint
|
|
1891
|
+
const anotherPrimaryConstraints = dbConstraints.filter((constraint) => constraint["table_name"] ===
|
|
1892
|
+
dbColumn["table_name"] &&
|
|
1893
|
+
constraint["table_schema"] ===
|
|
1894
|
+
dbColumn["table_schema"] &&
|
|
1895
|
+
constraint["column_name"] !==
|
|
1896
|
+
dbColumn["column_name"] &&
|
|
1897
|
+
constraint["constraint_type"] ===
|
|
1898
|
+
"PRIMARY");
|
|
1899
|
+
// collect all column names
|
|
1900
|
+
const columnNames = anotherPrimaryConstraints.map((constraint) => constraint["column_name"]);
|
|
1901
|
+
columnNames.push(dbColumn["column_name"]);
|
|
1902
|
+
// build default primary key constraint name
|
|
1903
|
+
const pkName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
1904
|
+
// if primary key has user-defined constraint name, write it in table column
|
|
1905
|
+
if (primaryConstraint["constraint_name"] !==
|
|
1906
|
+
pkName) {
|
|
1907
|
+
tableColumn.primaryKeyConstraintName =
|
|
1908
|
+
primaryConstraint["constraint_name"];
|
|
1909
|
+
}
|
|
1910
|
+
}
|
|
1818
1911
|
const uniqueConstraints = columnConstraints.filter((constraint) => constraint["constraint_type"] === "UNIQUE");
|
|
1819
1912
|
const isConstraintComposite = uniqueConstraints.every((uniqueConstraint) => {
|
|
1820
1913
|
return dbConstraints.some((dbConstraint) => dbConstraint["constraint_type"] ===
|
|
@@ -1867,13 +1960,14 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
1867
1960
|
// In postgres there is no VIRTUAL generated column type
|
|
1868
1961
|
tableColumn.generatedType = "STORED";
|
|
1869
1962
|
// We cannot relay on information_schema.columns.generation_expression, because it is formatted different.
|
|
1870
|
-
const asExpressionQuery =
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
|
|
1875
|
-
|
|
1876
|
-
|
|
1963
|
+
const asExpressionQuery = await this.selectTypeormMetadataSql({
|
|
1964
|
+
database: currentDatabase,
|
|
1965
|
+
schema: dbTable["table_schema"],
|
|
1966
|
+
table: dbTable["table_name"],
|
|
1967
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
1968
|
+
name: tableColumn.name,
|
|
1969
|
+
});
|
|
1970
|
+
const results = await this.query(asExpressionQuery.query, asExpressionQuery.parameters);
|
|
1877
1971
|
if (results[0] && results[0].value) {
|
|
1878
1972
|
tableColumn.asExpression = results[0].value;
|
|
1879
1973
|
}
|
|
@@ -2077,7 +2171,9 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
2077
2171
|
}
|
|
2078
2172
|
const primaryColumns = table.columns.filter((column) => column.isPrimary);
|
|
2079
2173
|
if (primaryColumns.length > 0) {
|
|
2080
|
-
const primaryKeyName =
|
|
2174
|
+
const primaryKeyName = primaryColumns[0].primaryKeyConstraintName
|
|
2175
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
2176
|
+
: this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
|
|
2081
2177
|
const columnNames = primaryColumns
|
|
2082
2178
|
.map((column) => `"${column.name}"`)
|
|
2083
2179
|
.join(", ");
|
|
@@ -2223,8 +2319,10 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
2223
2319
|
/**
|
|
2224
2320
|
* Builds create primary key sql.
|
|
2225
2321
|
*/
|
|
2226
|
-
createPrimaryKeySql(table, columnNames) {
|
|
2227
|
-
const primaryKeyName =
|
|
2322
|
+
createPrimaryKeySql(table, columnNames, constraintName) {
|
|
2323
|
+
const primaryKeyName = constraintName
|
|
2324
|
+
? constraintName
|
|
2325
|
+
: this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
2228
2326
|
const columnNamesString = columnNames
|
|
2229
2327
|
.map((columnName) => `"${columnName}"`)
|
|
2230
2328
|
.join(", ");
|
|
@@ -2234,8 +2332,13 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
2234
2332
|
* Builds drop primary key sql.
|
|
2235
2333
|
*/
|
|
2236
2334
|
dropPrimaryKeySql(table) {
|
|
2335
|
+
if (!table.primaryColumns.length)
|
|
2336
|
+
throw new TypeORMError(`Table ${table} has no primary keys.`);
|
|
2237
2337
|
const columnNames = table.primaryColumns.map((column) => column.name);
|
|
2238
|
-
const
|
|
2338
|
+
const constraintName = table.primaryColumns[0].primaryKeyConstraintName;
|
|
2339
|
+
const primaryKeyName = constraintName
|
|
2340
|
+
? constraintName
|
|
2341
|
+
: this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
2239
2342
|
return new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${primaryKeyName}"`);
|
|
2240
2343
|
}
|
|
2241
2344
|
/**
|
|
@@ -2446,25 +2549,22 @@ export class PostgresQueryRunner extends BaseQueryRunner {
|
|
|
2446
2549
|
else if (!column.isGenerated || column.type === "uuid") {
|
|
2447
2550
|
c += " " + this.connection.driver.createFullType(column);
|
|
2448
2551
|
}
|
|
2449
|
-
//
|
|
2450
|
-
// Also, postgres only supports the stored generated column type
|
|
2552
|
+
// Postgres only supports the stored generated column type
|
|
2451
2553
|
if (column.generatedType === "STORED" && column.asExpression) {
|
|
2452
2554
|
c += ` GENERATED ALWAYS AS (${column.asExpression}) STORED`;
|
|
2453
2555
|
}
|
|
2454
|
-
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
|
|
2461
|
-
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
-
|
|
2465
|
-
|
|
2466
|
-
c += ` DEFAULT ${this.driver.uuidGenerator}`;
|
|
2467
|
-
}
|
|
2556
|
+
if (column.charset)
|
|
2557
|
+
c += ' CHARACTER SET "' + column.charset + '"';
|
|
2558
|
+
if (column.collation)
|
|
2559
|
+
c += ' COLLATE "' + column.collation + '"';
|
|
2560
|
+
if (column.isNullable !== true)
|
|
2561
|
+
c += " NOT NULL";
|
|
2562
|
+
if (column.default !== undefined && column.default !== null)
|
|
2563
|
+
c += " DEFAULT " + column.default;
|
|
2564
|
+
if (column.isGenerated &&
|
|
2565
|
+
column.generationStrategy === "uuid" &&
|
|
2566
|
+
!column.default)
|
|
2567
|
+
c += ` DEFAULT ${this.driver.uuidGenerator}`;
|
|
2468
2568
|
return c;
|
|
2469
2569
|
}
|
|
2470
2570
|
/**
|