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
|
@@ -380,6 +380,30 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
380
380
|
downQueries.push(this.dropIndexSql(table, index));
|
|
381
381
|
});
|
|
382
382
|
}
|
|
383
|
+
// if table have column with generated type, we must add the expression to the metadata table
|
|
384
|
+
const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
|
|
385
|
+
for (const column of generatedColumns) {
|
|
386
|
+
const currentSchema = await this.getCurrentSchema();
|
|
387
|
+
let { schema } = this.driver.parseTableName(table);
|
|
388
|
+
if (!schema) {
|
|
389
|
+
schema = currentSchema;
|
|
390
|
+
}
|
|
391
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
392
|
+
schema: schema,
|
|
393
|
+
table: table.name,
|
|
394
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
395
|
+
name: column.name,
|
|
396
|
+
value: column.asExpression,
|
|
397
|
+
});
|
|
398
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
399
|
+
schema: schema,
|
|
400
|
+
table: table.name,
|
|
401
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
402
|
+
name: column.name,
|
|
403
|
+
});
|
|
404
|
+
upQueries.push(insertQuery);
|
|
405
|
+
downQueries.push(deleteQuery);
|
|
406
|
+
}
|
|
383
407
|
await this.executeQueries(upQueries, downQueries);
|
|
384
408
|
}
|
|
385
409
|
/**
|
|
@@ -417,6 +441,30 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
417
441
|
upQueries.push(new Query(`DROP SEQUENCE ${this.escapePath(this.buildSequencePath(table, column))}`));
|
|
418
442
|
downQueries.push(new Query(`CREATE SEQUENCE ${this.escapePath(this.buildSequencePath(table, column))}`));
|
|
419
443
|
});
|
|
444
|
+
// if table had columns with generated type, we must remove the expression from the metadata table
|
|
445
|
+
const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
|
|
446
|
+
for (const column of generatedColumns) {
|
|
447
|
+
const currentSchema = await this.getCurrentSchema();
|
|
448
|
+
let { schema } = this.driver.parseTableName(table);
|
|
449
|
+
if (!schema) {
|
|
450
|
+
schema = currentSchema;
|
|
451
|
+
}
|
|
452
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
453
|
+
schema: schema,
|
|
454
|
+
table: table.name,
|
|
455
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
456
|
+
name: column.name,
|
|
457
|
+
});
|
|
458
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
459
|
+
schema: schema,
|
|
460
|
+
table: table.name,
|
|
461
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
462
|
+
name: column.name,
|
|
463
|
+
value: column.asExpression,
|
|
464
|
+
});
|
|
465
|
+
upQueries.push(deleteQuery);
|
|
466
|
+
downQueries.push(insertQuery);
|
|
467
|
+
}
|
|
420
468
|
await this.executeQueries(upQueries, downQueries);
|
|
421
469
|
}
|
|
422
470
|
/**
|
|
@@ -462,7 +510,8 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
462
510
|
upQueries.push(new Query(`ALTER TABLE ${this.escapePath(oldTable)} RENAME TO "${newTableName}"`));
|
|
463
511
|
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(newTable)} RENAME TO "${oldTableName}"`));
|
|
464
512
|
// rename column primary key constraint
|
|
465
|
-
if (newTable.primaryColumns.length > 0
|
|
513
|
+
if (newTable.primaryColumns.length > 0 &&
|
|
514
|
+
!newTable.primaryColumns[0].primaryKeyConstraintName) {
|
|
466
515
|
const columnNames = newTable.primaryColumns.map((column) => column.name);
|
|
467
516
|
const oldPkName = this.connection.namingStrategy.primaryKeyName(oldTable, columnNames);
|
|
468
517
|
const newPkName = this.connection.namingStrategy.primaryKeyName(newTable, columnNames);
|
|
@@ -471,6 +520,10 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
471
520
|
}
|
|
472
521
|
// rename unique constraints
|
|
473
522
|
newTable.uniques.forEach((unique) => {
|
|
523
|
+
const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(oldTable, unique.columnNames);
|
|
524
|
+
// Skip renaming if Unique has user defined constraint name
|
|
525
|
+
if (unique.name !== oldUniqueName)
|
|
526
|
+
return;
|
|
474
527
|
// build new constraint name
|
|
475
528
|
const newUniqueName = this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames);
|
|
476
529
|
// build queries
|
|
@@ -481,6 +534,10 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
481
534
|
});
|
|
482
535
|
// rename index constraints
|
|
483
536
|
newTable.indices.forEach((index) => {
|
|
537
|
+
const oldIndexName = this.connection.namingStrategy.indexName(oldTable, index.columnNames, index.where);
|
|
538
|
+
// Skip renaming if Index has user defined constraint name
|
|
539
|
+
if (index.name !== oldIndexName)
|
|
540
|
+
return;
|
|
484
541
|
// build new constraint name
|
|
485
542
|
const { schema } = this.driver.parseTableName(newTable);
|
|
486
543
|
const newIndexName = this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);
|
|
@@ -498,6 +555,10 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
498
555
|
});
|
|
499
556
|
// rename foreign key constraints
|
|
500
557
|
newTable.foreignKeys.forEach((foreignKey) => {
|
|
558
|
+
const oldForeignKeyName = this.connection.namingStrategy.foreignKeyName(oldTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
559
|
+
// Skip renaming if foreign key has user defined constraint name
|
|
560
|
+
if (foreignKey.name !== oldForeignKeyName)
|
|
561
|
+
return;
|
|
501
562
|
// build new constraint name
|
|
502
563
|
const newForeignKeyName = this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
503
564
|
// build queries
|
|
@@ -527,9 +588,11 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
527
588
|
if (column.isPrimary) {
|
|
528
589
|
const primaryColumns = clonedTable.primaryColumns;
|
|
529
590
|
// if table already have primary key, me must drop it and recreate again
|
|
530
|
-
// todo:
|
|
591
|
+
// todo: https://go.crdb.dev/issue-v/48026/v21.1
|
|
531
592
|
if (primaryColumns.length > 0) {
|
|
532
|
-
const pkName =
|
|
593
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
594
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
595
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
533
596
|
const columnNames = primaryColumns
|
|
534
597
|
.map((column) => `"${column.name}"`)
|
|
535
598
|
.join(", ");
|
|
@@ -537,13 +600,37 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
537
600
|
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${pkName}" PRIMARY KEY (${columnNames})`));
|
|
538
601
|
}
|
|
539
602
|
primaryColumns.push(column);
|
|
540
|
-
const pkName =
|
|
603
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
604
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
605
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
541
606
|
const columnNames = primaryColumns
|
|
542
607
|
.map((column) => `"${column.name}"`)
|
|
543
608
|
.join(", ");
|
|
544
609
|
upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${pkName}" PRIMARY KEY (${columnNames})`));
|
|
545
610
|
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${pkName}"`));
|
|
546
611
|
}
|
|
612
|
+
if (column.generatedType && column.asExpression) {
|
|
613
|
+
const currentSchema = await this.getCurrentSchema();
|
|
614
|
+
let { schema } = this.driver.parseTableName(table);
|
|
615
|
+
if (!schema) {
|
|
616
|
+
schema = currentSchema;
|
|
617
|
+
}
|
|
618
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
619
|
+
schema: schema,
|
|
620
|
+
table: table.name,
|
|
621
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
622
|
+
name: column.name,
|
|
623
|
+
value: column.asExpression,
|
|
624
|
+
});
|
|
625
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
626
|
+
schema: schema,
|
|
627
|
+
table: table.name,
|
|
628
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
629
|
+
name: column.name,
|
|
630
|
+
});
|
|
631
|
+
upQueries.push(insertQuery);
|
|
632
|
+
downQueries.push(deleteQuery);
|
|
633
|
+
}
|
|
547
634
|
// create column index
|
|
548
635
|
const columnIndex = clonedTable.indices.find((index) => index.columnNames.length === 1 &&
|
|
549
636
|
index.columnNames[0] === column.name);
|
|
@@ -628,7 +715,9 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
628
715
|
if (!oldColumn)
|
|
629
716
|
throw new TypeORMError(`Column "${oldTableColumnOrName}" was not found in the "${table.name}" table.`);
|
|
630
717
|
if (oldColumn.type !== newColumn.type ||
|
|
631
|
-
oldColumn.length !== newColumn.length
|
|
718
|
+
oldColumn.length !== newColumn.length ||
|
|
719
|
+
oldColumn.generatedType !== newColumn.generatedType ||
|
|
720
|
+
oldColumn.asExpression !== newColumn.asExpression) {
|
|
632
721
|
// To avoid data conversion, we just recreate column
|
|
633
722
|
await this.dropColumn(table, oldColumn);
|
|
634
723
|
await this.addColumn(table, newColumn);
|
|
@@ -641,7 +730,8 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
641
730
|
upQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} RENAME COLUMN "${oldColumn.name}" TO "${newColumn.name}"`));
|
|
642
731
|
downQueries.push(new Query(`ALTER TABLE ${this.escapePath(table)} RENAME COLUMN "${newColumn.name}" TO "${oldColumn.name}"`));
|
|
643
732
|
// rename column primary key constraint
|
|
644
|
-
if (oldColumn.isPrimary === true
|
|
733
|
+
if (oldColumn.isPrimary === true &&
|
|
734
|
+
!oldColumn.primaryKeyConstraintName) {
|
|
645
735
|
const primaryColumns = clonedTable.primaryColumns;
|
|
646
736
|
// build old primary constraint name
|
|
647
737
|
const columnNames = primaryColumns.map((column) => column.name);
|
|
@@ -656,6 +746,10 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
656
746
|
}
|
|
657
747
|
// rename unique constraints
|
|
658
748
|
clonedTable.findColumnUniques(oldColumn).forEach((unique) => {
|
|
749
|
+
const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(clonedTable, unique.columnNames);
|
|
750
|
+
// Skip renaming if Unique has user defined constraint name
|
|
751
|
+
if (unique.name !== oldUniqueName)
|
|
752
|
+
return;
|
|
659
753
|
// build new constraint name
|
|
660
754
|
unique.columnNames.splice(unique.columnNames.indexOf(oldColumn.name), 1);
|
|
661
755
|
unique.columnNames.push(newColumn.name);
|
|
@@ -668,6 +762,10 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
668
762
|
});
|
|
669
763
|
// rename index constraints
|
|
670
764
|
clonedTable.findColumnIndices(oldColumn).forEach((index) => {
|
|
765
|
+
const oldIndexName = this.connection.namingStrategy.indexName(clonedTable, index.columnNames, index.where);
|
|
766
|
+
// Skip renaming if Index has user defined constraint name
|
|
767
|
+
if (index.name !== oldIndexName)
|
|
768
|
+
return;
|
|
671
769
|
// build new constraint name
|
|
672
770
|
index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);
|
|
673
771
|
index.columnNames.push(newColumn.name);
|
|
@@ -689,6 +787,10 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
689
787
|
clonedTable
|
|
690
788
|
.findColumnForeignKeys(oldColumn)
|
|
691
789
|
.forEach((foreignKey) => {
|
|
790
|
+
const foreignKeyName = this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
791
|
+
// Skip renaming if foreign key has user defined constraint name
|
|
792
|
+
if (foreignKey.name !== foreignKeyName)
|
|
793
|
+
return;
|
|
692
794
|
// build new constraint name
|
|
693
795
|
foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);
|
|
694
796
|
foreignKey.columnNames.push(newColumn.name);
|
|
@@ -727,7 +829,9 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
727
829
|
const primaryColumns = clonedTable.primaryColumns;
|
|
728
830
|
// if primary column state changed, we must always drop existed constraint.
|
|
729
831
|
if (primaryColumns.length > 0) {
|
|
730
|
-
const pkName =
|
|
832
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
833
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
834
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
731
835
|
const columnNames = primaryColumns
|
|
732
836
|
.map((column) => `"${column.name}"`)
|
|
733
837
|
.join(", ");
|
|
@@ -739,7 +843,9 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
739
843
|
// update column in table
|
|
740
844
|
const column = clonedTable.columns.find((column) => column.name === newColumn.name);
|
|
741
845
|
column.isPrimary = true;
|
|
742
|
-
const pkName =
|
|
846
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
847
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
848
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
743
849
|
const columnNames = primaryColumns
|
|
744
850
|
.map((column) => `"${column.name}"`)
|
|
745
851
|
.join(", ");
|
|
@@ -754,7 +860,10 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
754
860
|
column.isPrimary = false;
|
|
755
861
|
// if we have another primary keys, we must recreate constraint.
|
|
756
862
|
if (primaryColumns.length > 0) {
|
|
757
|
-
const pkName =
|
|
863
|
+
const pkName = primaryColumns[0]
|
|
864
|
+
.primaryKeyConstraintName
|
|
865
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
866
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
758
867
|
const columnNames = primaryColumns
|
|
759
868
|
.map((column) => `"${column.name}"`)
|
|
760
869
|
.join(", ");
|
|
@@ -849,9 +958,11 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
849
958
|
const upQueries = [];
|
|
850
959
|
const downQueries = [];
|
|
851
960
|
// drop primary key constraint
|
|
852
|
-
// todo:
|
|
961
|
+
// todo: https://go.crdb.dev/issue-v/48026/v21.1
|
|
853
962
|
if (column.isPrimary) {
|
|
854
|
-
const pkName =
|
|
963
|
+
const pkName = column.primaryKeyConstraintName
|
|
964
|
+
? column.primaryKeyConstraintName
|
|
965
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
|
|
855
966
|
const columnNames = clonedTable.primaryColumns
|
|
856
967
|
.map((primaryColumn) => `"${primaryColumn.name}"`)
|
|
857
968
|
.join(", ");
|
|
@@ -862,7 +973,10 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
862
973
|
tableColumn.isPrimary = false;
|
|
863
974
|
// if primary key have multiple columns, we must recreate it without dropped column
|
|
864
975
|
if (clonedTable.primaryColumns.length > 0) {
|
|
865
|
-
const pkName =
|
|
976
|
+
const pkName = clonedTable.primaryColumns[0]
|
|
977
|
+
.primaryKeyConstraintName
|
|
978
|
+
? clonedTable.primaryColumns[0].primaryKeyConstraintName
|
|
979
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
|
|
866
980
|
const columnNames = clonedTable.primaryColumns
|
|
867
981
|
.map((primaryColumn) => `"${primaryColumn.name}"`)
|
|
868
982
|
.join(", ");
|
|
@@ -901,6 +1015,28 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
901
1015
|
upQueries.push(new Query(`DROP SEQUENCE ${this.escapePath(this.buildSequencePath(table, column))}`));
|
|
902
1016
|
downQueries.push(new Query(`CREATE SEQUENCE ${this.escapePath(this.buildSequencePath(table, column))}`));
|
|
903
1017
|
}
|
|
1018
|
+
if (column.generatedType && column.asExpression) {
|
|
1019
|
+
const currentSchema = await this.getCurrentSchema();
|
|
1020
|
+
let { schema } = this.driver.parseTableName(table);
|
|
1021
|
+
if (!schema) {
|
|
1022
|
+
schema = currentSchema;
|
|
1023
|
+
}
|
|
1024
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
1025
|
+
schema: schema,
|
|
1026
|
+
table: table.name,
|
|
1027
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
1028
|
+
name: column.name,
|
|
1029
|
+
});
|
|
1030
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
1031
|
+
schema: schema,
|
|
1032
|
+
table: table.name,
|
|
1033
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
1034
|
+
name: column.name,
|
|
1035
|
+
value: column.asExpression,
|
|
1036
|
+
});
|
|
1037
|
+
upQueries.push(deleteQuery);
|
|
1038
|
+
downQueries.push(insertQuery);
|
|
1039
|
+
}
|
|
904
1040
|
await this.executeQueries(upQueries, downQueries);
|
|
905
1041
|
clonedTable.removeColumn(column);
|
|
906
1042
|
this.replaceCachedTable(table, clonedTable);
|
|
@@ -916,12 +1052,12 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
916
1052
|
/**
|
|
917
1053
|
* Creates a new primary key.
|
|
918
1054
|
*/
|
|
919
|
-
async createPrimaryKey(tableOrName, columnNames) {
|
|
1055
|
+
async createPrimaryKey(tableOrName, columnNames, constraintName) {
|
|
920
1056
|
const table = InstanceChecker.isTable(tableOrName)
|
|
921
1057
|
? tableOrName
|
|
922
1058
|
: await this.getCachedTable(tableOrName);
|
|
923
1059
|
const clonedTable = table.clone();
|
|
924
|
-
const up = this.createPrimaryKeySql(table, columnNames);
|
|
1060
|
+
const up = this.createPrimaryKeySql(table, columnNames, constraintName);
|
|
925
1061
|
// mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.
|
|
926
1062
|
clonedTable.columns.forEach((column) => {
|
|
927
1063
|
if (columnNames.find((columnName) => columnName === column.name))
|
|
@@ -945,7 +1081,9 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
945
1081
|
// if table already have primary columns, we must drop them.
|
|
946
1082
|
const primaryColumns = clonedTable.primaryColumns;
|
|
947
1083
|
if (primaryColumns.length > 0) {
|
|
948
|
-
const pkName =
|
|
1084
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
1085
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
1086
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
949
1087
|
const columnNamesString = primaryColumns
|
|
950
1088
|
.map((column) => `"${column.name}"`)
|
|
951
1089
|
.join(", ");
|
|
@@ -956,7 +1094,9 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
956
1094
|
clonedTable.columns
|
|
957
1095
|
.filter((column) => columnNames.indexOf(column.name) !== -1)
|
|
958
1096
|
.forEach((column) => (column.isPrimary = true));
|
|
959
|
-
const pkName =
|
|
1097
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
1098
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
1099
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
|
|
960
1100
|
const columnNamesString = columnNames
|
|
961
1101
|
.map((columnName) => `"${columnName}"`)
|
|
962
1102
|
.join(", ");
|
|
@@ -968,12 +1108,12 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
968
1108
|
/**
|
|
969
1109
|
* Drops a primary key.
|
|
970
1110
|
*/
|
|
971
|
-
async dropPrimaryKey(tableOrName) {
|
|
1111
|
+
async dropPrimaryKey(tableOrName, constraintName) {
|
|
972
1112
|
const table = InstanceChecker.isTable(tableOrName)
|
|
973
1113
|
? tableOrName
|
|
974
1114
|
: await this.getCachedTable(tableOrName);
|
|
975
1115
|
const up = this.dropPrimaryKeySql(table);
|
|
976
|
-
const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name));
|
|
1116
|
+
const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name), constraintName);
|
|
977
1117
|
await this.executeQueries(up, down);
|
|
978
1118
|
table.primaryColumns.forEach((column) => {
|
|
979
1119
|
column.isPrimary = false;
|
|
@@ -1335,12 +1475,14 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
1335
1475
|
return `("table_schema" = '${table_schema}' AND "table_name" = '${table_name}')`;
|
|
1336
1476
|
})
|
|
1337
1477
|
.join(" OR ");
|
|
1338
|
-
const columnsSql = `
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1478
|
+
const columnsSql = `SELECT "columns".*, "attr"."attgenerated" as "generated_type", ` +
|
|
1479
|
+
`pg_catalog.col_description(('"' || table_catalog || '"."' || table_schema || '"."' || table_name || '"')::regclass::oid, ordinal_position) as description ` +
|
|
1480
|
+
`FROM "information_schema"."columns" ` +
|
|
1481
|
+
`LEFT JOIN "pg_class" AS "cls" ON "cls"."relname" = "table_name" ` +
|
|
1482
|
+
`LEFT JOIN "pg_namespace" AS "ns" ON "ns"."oid" = "cls"."relnamespace" AND "ns"."nspname" = "table_schema" ` +
|
|
1483
|
+
`LEFT JOIN "pg_attribute" AS "attr" ON "attr"."attrelid" = "cls"."oid" AND "attr"."attname" = "column_name" AND "attr"."attnum" = "ordinal_position" ` +
|
|
1484
|
+
`WHERE "is_hidden" = 'NO' AND ` +
|
|
1485
|
+
columnsCondiiton;
|
|
1344
1486
|
const constraintsCondition = dbTables
|
|
1345
1487
|
.map(({ table_name, table_schema }) => {
|
|
1346
1488
|
return `("ns"."nspname" = '${table_schema}' AND "t"."relname" = '${table_name}')`;
|
|
@@ -1474,7 +1616,30 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
1474
1616
|
}
|
|
1475
1617
|
tableColumn.isNullable =
|
|
1476
1618
|
dbColumn["is_nullable"] === "YES";
|
|
1477
|
-
|
|
1619
|
+
const primaryConstraint = columnConstraints.find((constraint) => constraint["constraint_type"] === "PRIMARY");
|
|
1620
|
+
if (primaryConstraint) {
|
|
1621
|
+
tableColumn.isPrimary = true;
|
|
1622
|
+
// find another columns involved in primary key constraint
|
|
1623
|
+
const anotherPrimaryConstraints = dbConstraints.filter((constraint) => constraint["table_name"] ===
|
|
1624
|
+
dbColumn["table_name"] &&
|
|
1625
|
+
constraint["table_schema"] ===
|
|
1626
|
+
dbColumn["table_schema"] &&
|
|
1627
|
+
constraint["column_name"] !==
|
|
1628
|
+
dbColumn["column_name"] &&
|
|
1629
|
+
constraint["constraint_type"] ===
|
|
1630
|
+
"PRIMARY");
|
|
1631
|
+
// collect all column names
|
|
1632
|
+
const columnNames = anotherPrimaryConstraints.map((constraint) => constraint["column_name"]);
|
|
1633
|
+
columnNames.push(dbColumn["column_name"]);
|
|
1634
|
+
// build default primary key constraint name
|
|
1635
|
+
const pkName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
1636
|
+
// if primary key has user-defined constraint name, write it in table column
|
|
1637
|
+
if (primaryConstraint["constraint_name"] !==
|
|
1638
|
+
pkName) {
|
|
1639
|
+
tableColumn.primaryKeyConstraintName =
|
|
1640
|
+
primaryConstraint["constraint_name"];
|
|
1641
|
+
}
|
|
1642
|
+
}
|
|
1478
1643
|
const uniqueConstraints = columnConstraints.filter((constraint) => constraint["constraint_type"] === "UNIQUE");
|
|
1479
1644
|
const isConstraintComposite = uniqueConstraints.every((uniqueConstraint) => {
|
|
1480
1645
|
return dbConstraints.some((dbConstraint) => dbConstraint["constraint_type"] ===
|
|
@@ -1509,6 +1674,27 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
1509
1674
|
tableColumn.default.replace(/^(-?[\d\.]+)$/, "($1)");
|
|
1510
1675
|
}
|
|
1511
1676
|
}
|
|
1677
|
+
if (dbColumn["is_generated"] === "YES" &&
|
|
1678
|
+
dbColumn["generation_expression"]) {
|
|
1679
|
+
tableColumn.generatedType =
|
|
1680
|
+
dbColumn["generated_type"] === "s"
|
|
1681
|
+
? "STORED"
|
|
1682
|
+
: "VIRTUAL";
|
|
1683
|
+
// We cannot relay on information_schema.columns.generation_expression, because it is formatted different.
|
|
1684
|
+
const asExpressionQuery = await this.selectTypeormMetadataSql({
|
|
1685
|
+
schema: dbTable["table_schema"],
|
|
1686
|
+
table: dbTable["table_name"],
|
|
1687
|
+
type: MetadataTableType.GENERATED_COLUMN,
|
|
1688
|
+
name: tableColumn.name,
|
|
1689
|
+
});
|
|
1690
|
+
const results = await this.query(asExpressionQuery.query, asExpressionQuery.parameters);
|
|
1691
|
+
if (results[0] && results[0].value) {
|
|
1692
|
+
tableColumn.asExpression = results[0].value;
|
|
1693
|
+
}
|
|
1694
|
+
else {
|
|
1695
|
+
tableColumn.asExpression = "";
|
|
1696
|
+
}
|
|
1697
|
+
}
|
|
1512
1698
|
tableColumn.comment =
|
|
1513
1699
|
dbColumn["description"] == null
|
|
1514
1700
|
? undefined
|
|
@@ -1684,7 +1870,9 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
1684
1870
|
}
|
|
1685
1871
|
const primaryColumns = table.columns.filter((column) => column.isPrimary);
|
|
1686
1872
|
if (primaryColumns.length > 0) {
|
|
1687
|
-
const primaryKeyName =
|
|
1873
|
+
const primaryKeyName = primaryColumns[0].primaryKeyConstraintName
|
|
1874
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
1875
|
+
: this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
|
|
1688
1876
|
const columnNames = primaryColumns
|
|
1689
1877
|
.map((column) => `"${column.name}"`)
|
|
1690
1878
|
.join(", ");
|
|
@@ -1772,8 +1960,10 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
1772
1960
|
/**
|
|
1773
1961
|
* Builds create primary key sql.
|
|
1774
1962
|
*/
|
|
1775
|
-
createPrimaryKeySql(table, columnNames) {
|
|
1776
|
-
const primaryKeyName =
|
|
1963
|
+
createPrimaryKeySql(table, columnNames, constraintName) {
|
|
1964
|
+
const primaryKeyName = constraintName
|
|
1965
|
+
? constraintName
|
|
1966
|
+
: this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
1777
1967
|
const columnNamesString = columnNames
|
|
1778
1968
|
.map((columnName) => `"${columnName}"`)
|
|
1779
1969
|
.join(", ");
|
|
@@ -1783,8 +1973,13 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
1783
1973
|
* Builds drop primary key sql.
|
|
1784
1974
|
*/
|
|
1785
1975
|
dropPrimaryKeySql(table) {
|
|
1976
|
+
if (!table.primaryColumns.length)
|
|
1977
|
+
throw new TypeORMError(`Table ${table} has no primary keys.`);
|
|
1786
1978
|
const columnNames = table.primaryColumns.map((column) => column.name);
|
|
1787
|
-
const
|
|
1979
|
+
const constraintName = table.primaryColumns[0].primaryKeyConstraintName;
|
|
1980
|
+
const primaryKeyName = constraintName
|
|
1981
|
+
? constraintName
|
|
1982
|
+
: this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
1788
1983
|
return new Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${primaryKeyName}"`);
|
|
1789
1984
|
}
|
|
1790
1985
|
/**
|
|
@@ -1901,10 +2096,15 @@ export class CockroachQueryRunner extends BaseQueryRunner {
|
|
|
1901
2096
|
}
|
|
1902
2097
|
if (!column.isGenerated)
|
|
1903
2098
|
c += " " + this.connection.driver.createFullType(column);
|
|
1904
|
-
if (column.
|
|
1905
|
-
c +=
|
|
1906
|
-
|
|
1907
|
-
|
|
2099
|
+
if (column.asExpression) {
|
|
2100
|
+
c += ` AS (${column.asExpression}) ${column.generatedType ? column.generatedType : "VIRTUAL"}`;
|
|
2101
|
+
}
|
|
2102
|
+
else {
|
|
2103
|
+
if (column.charset)
|
|
2104
|
+
c += ' CHARACTER SET "' + column.charset + '"';
|
|
2105
|
+
if (column.collation)
|
|
2106
|
+
c += ' COLLATE "' + column.collation + '"';
|
|
2107
|
+
}
|
|
1908
2108
|
if (!column.isNullable)
|
|
1909
2109
|
c += " NOT NULL";
|
|
1910
2110
|
if (!column.isGenerated &&
|