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
|
@@ -383,6 +383,30 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
383
383
|
downQueries.push(this.dropIndexSql(table, index));
|
|
384
384
|
});
|
|
385
385
|
}
|
|
386
|
+
// if table have column with generated type, we must add the expression to the metadata table
|
|
387
|
+
const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
|
|
388
|
+
for (const column of generatedColumns) {
|
|
389
|
+
const currentSchema = await this.getCurrentSchema();
|
|
390
|
+
let { schema } = this.driver.parseTableName(table);
|
|
391
|
+
if (!schema) {
|
|
392
|
+
schema = currentSchema;
|
|
393
|
+
}
|
|
394
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
395
|
+
schema: schema,
|
|
396
|
+
table: table.name,
|
|
397
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
398
|
+
name: column.name,
|
|
399
|
+
value: column.asExpression,
|
|
400
|
+
});
|
|
401
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
402
|
+
schema: schema,
|
|
403
|
+
table: table.name,
|
|
404
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
405
|
+
name: column.name,
|
|
406
|
+
});
|
|
407
|
+
upQueries.push(insertQuery);
|
|
408
|
+
downQueries.push(deleteQuery);
|
|
409
|
+
}
|
|
386
410
|
await this.executeQueries(upQueries, downQueries);
|
|
387
411
|
}
|
|
388
412
|
/**
|
|
@@ -420,6 +444,30 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
420
444
|
upQueries.push(new Query_1.Query(`DROP SEQUENCE ${this.escapePath(this.buildSequencePath(table, column))}`));
|
|
421
445
|
downQueries.push(new Query_1.Query(`CREATE SEQUENCE ${this.escapePath(this.buildSequencePath(table, column))}`));
|
|
422
446
|
});
|
|
447
|
+
// if table had columns with generated type, we must remove the expression from the metadata table
|
|
448
|
+
const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
|
|
449
|
+
for (const column of generatedColumns) {
|
|
450
|
+
const currentSchema = await this.getCurrentSchema();
|
|
451
|
+
let { schema } = this.driver.parseTableName(table);
|
|
452
|
+
if (!schema) {
|
|
453
|
+
schema = currentSchema;
|
|
454
|
+
}
|
|
455
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
456
|
+
schema: schema,
|
|
457
|
+
table: table.name,
|
|
458
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
459
|
+
name: column.name,
|
|
460
|
+
});
|
|
461
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
462
|
+
schema: schema,
|
|
463
|
+
table: table.name,
|
|
464
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
465
|
+
name: column.name,
|
|
466
|
+
value: column.asExpression,
|
|
467
|
+
});
|
|
468
|
+
upQueries.push(deleteQuery);
|
|
469
|
+
downQueries.push(insertQuery);
|
|
470
|
+
}
|
|
423
471
|
await this.executeQueries(upQueries, downQueries);
|
|
424
472
|
}
|
|
425
473
|
/**
|
|
@@ -465,7 +513,8 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
465
513
|
upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(oldTable)} RENAME TO "${newTableName}"`));
|
|
466
514
|
downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(newTable)} RENAME TO "${oldTableName}"`));
|
|
467
515
|
// rename column primary key constraint
|
|
468
|
-
if (newTable.primaryColumns.length > 0
|
|
516
|
+
if (newTable.primaryColumns.length > 0 &&
|
|
517
|
+
!newTable.primaryColumns[0].primaryKeyConstraintName) {
|
|
469
518
|
const columnNames = newTable.primaryColumns.map((column) => column.name);
|
|
470
519
|
const oldPkName = this.connection.namingStrategy.primaryKeyName(oldTable, columnNames);
|
|
471
520
|
const newPkName = this.connection.namingStrategy.primaryKeyName(newTable, columnNames);
|
|
@@ -474,6 +523,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
474
523
|
}
|
|
475
524
|
// rename unique constraints
|
|
476
525
|
newTable.uniques.forEach((unique) => {
|
|
526
|
+
const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(oldTable, unique.columnNames);
|
|
527
|
+
// Skip renaming if Unique has user defined constraint name
|
|
528
|
+
if (unique.name !== oldUniqueName)
|
|
529
|
+
return;
|
|
477
530
|
// build new constraint name
|
|
478
531
|
const newUniqueName = this.connection.namingStrategy.uniqueConstraintName(newTable, unique.columnNames);
|
|
479
532
|
// build queries
|
|
@@ -484,6 +537,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
484
537
|
});
|
|
485
538
|
// rename index constraints
|
|
486
539
|
newTable.indices.forEach((index) => {
|
|
540
|
+
const oldIndexName = this.connection.namingStrategy.indexName(oldTable, index.columnNames, index.where);
|
|
541
|
+
// Skip renaming if Index has user defined constraint name
|
|
542
|
+
if (index.name !== oldIndexName)
|
|
543
|
+
return;
|
|
487
544
|
// build new constraint name
|
|
488
545
|
const { schema } = this.driver.parseTableName(newTable);
|
|
489
546
|
const newIndexName = this.connection.namingStrategy.indexName(newTable, index.columnNames, index.where);
|
|
@@ -501,6 +558,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
501
558
|
});
|
|
502
559
|
// rename foreign key constraints
|
|
503
560
|
newTable.foreignKeys.forEach((foreignKey) => {
|
|
561
|
+
const oldForeignKeyName = this.connection.namingStrategy.foreignKeyName(oldTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
562
|
+
// Skip renaming if foreign key has user defined constraint name
|
|
563
|
+
if (foreignKey.name !== oldForeignKeyName)
|
|
564
|
+
return;
|
|
504
565
|
// build new constraint name
|
|
505
566
|
const newForeignKeyName = this.connection.namingStrategy.foreignKeyName(newTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
506
567
|
// build queries
|
|
@@ -530,9 +591,11 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
530
591
|
if (column.isPrimary) {
|
|
531
592
|
const primaryColumns = clonedTable.primaryColumns;
|
|
532
593
|
// if table already have primary key, me must drop it and recreate again
|
|
533
|
-
// todo:
|
|
594
|
+
// todo: https://go.crdb.dev/issue-v/48026/v21.1
|
|
534
595
|
if (primaryColumns.length > 0) {
|
|
535
|
-
const pkName =
|
|
596
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
597
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
598
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
536
599
|
const columnNames = primaryColumns
|
|
537
600
|
.map((column) => `"${column.name}"`)
|
|
538
601
|
.join(", ");
|
|
@@ -540,13 +603,37 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
540
603
|
downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${pkName}" PRIMARY KEY (${columnNames})`));
|
|
541
604
|
}
|
|
542
605
|
primaryColumns.push(column);
|
|
543
|
-
const pkName =
|
|
606
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
607
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
608
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
544
609
|
const columnNames = primaryColumns
|
|
545
610
|
.map((column) => `"${column.name}"`)
|
|
546
611
|
.join(", ");
|
|
547
612
|
upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT "${pkName}" PRIMARY KEY (${columnNames})`));
|
|
548
613
|
downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${pkName}"`));
|
|
549
614
|
}
|
|
615
|
+
if (column.generatedType && column.asExpression) {
|
|
616
|
+
const currentSchema = await this.getCurrentSchema();
|
|
617
|
+
let { schema } = this.driver.parseTableName(table);
|
|
618
|
+
if (!schema) {
|
|
619
|
+
schema = currentSchema;
|
|
620
|
+
}
|
|
621
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
622
|
+
schema: schema,
|
|
623
|
+
table: table.name,
|
|
624
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
625
|
+
name: column.name,
|
|
626
|
+
value: column.asExpression,
|
|
627
|
+
});
|
|
628
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
629
|
+
schema: schema,
|
|
630
|
+
table: table.name,
|
|
631
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
632
|
+
name: column.name,
|
|
633
|
+
});
|
|
634
|
+
upQueries.push(insertQuery);
|
|
635
|
+
downQueries.push(deleteQuery);
|
|
636
|
+
}
|
|
550
637
|
// create column index
|
|
551
638
|
const columnIndex = clonedTable.indices.find((index) => index.columnNames.length === 1 &&
|
|
552
639
|
index.columnNames[0] === column.name);
|
|
@@ -631,7 +718,9 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
631
718
|
if (!oldColumn)
|
|
632
719
|
throw new error_1.TypeORMError(`Column "${oldTableColumnOrName}" was not found in the "${table.name}" table.`);
|
|
633
720
|
if (oldColumn.type !== newColumn.type ||
|
|
634
|
-
oldColumn.length !== newColumn.length
|
|
721
|
+
oldColumn.length !== newColumn.length ||
|
|
722
|
+
oldColumn.generatedType !== newColumn.generatedType ||
|
|
723
|
+
oldColumn.asExpression !== newColumn.asExpression) {
|
|
635
724
|
// To avoid data conversion, we just recreate column
|
|
636
725
|
await this.dropColumn(table, oldColumn);
|
|
637
726
|
await this.addColumn(table, newColumn);
|
|
@@ -644,7 +733,8 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
644
733
|
upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} RENAME COLUMN "${oldColumn.name}" TO "${newColumn.name}"`));
|
|
645
734
|
downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} RENAME COLUMN "${newColumn.name}" TO "${oldColumn.name}"`));
|
|
646
735
|
// rename column primary key constraint
|
|
647
|
-
if (oldColumn.isPrimary === true
|
|
736
|
+
if (oldColumn.isPrimary === true &&
|
|
737
|
+
!oldColumn.primaryKeyConstraintName) {
|
|
648
738
|
const primaryColumns = clonedTable.primaryColumns;
|
|
649
739
|
// build old primary constraint name
|
|
650
740
|
const columnNames = primaryColumns.map((column) => column.name);
|
|
@@ -659,6 +749,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
659
749
|
}
|
|
660
750
|
// rename unique constraints
|
|
661
751
|
clonedTable.findColumnUniques(oldColumn).forEach((unique) => {
|
|
752
|
+
const oldUniqueName = this.connection.namingStrategy.uniqueConstraintName(clonedTable, unique.columnNames);
|
|
753
|
+
// Skip renaming if Unique has user defined constraint name
|
|
754
|
+
if (unique.name !== oldUniqueName)
|
|
755
|
+
return;
|
|
662
756
|
// build new constraint name
|
|
663
757
|
unique.columnNames.splice(unique.columnNames.indexOf(oldColumn.name), 1);
|
|
664
758
|
unique.columnNames.push(newColumn.name);
|
|
@@ -671,6 +765,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
671
765
|
});
|
|
672
766
|
// rename index constraints
|
|
673
767
|
clonedTable.findColumnIndices(oldColumn).forEach((index) => {
|
|
768
|
+
const oldIndexName = this.connection.namingStrategy.indexName(clonedTable, index.columnNames, index.where);
|
|
769
|
+
// Skip renaming if Index has user defined constraint name
|
|
770
|
+
if (index.name !== oldIndexName)
|
|
771
|
+
return;
|
|
674
772
|
// build new constraint name
|
|
675
773
|
index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);
|
|
676
774
|
index.columnNames.push(newColumn.name);
|
|
@@ -692,6 +790,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
692
790
|
clonedTable
|
|
693
791
|
.findColumnForeignKeys(oldColumn)
|
|
694
792
|
.forEach((foreignKey) => {
|
|
793
|
+
const foreignKeyName = this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
794
|
+
// Skip renaming if foreign key has user defined constraint name
|
|
795
|
+
if (foreignKey.name !== foreignKeyName)
|
|
796
|
+
return;
|
|
695
797
|
// build new constraint name
|
|
696
798
|
foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);
|
|
697
799
|
foreignKey.columnNames.push(newColumn.name);
|
|
@@ -730,7 +832,9 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
730
832
|
const primaryColumns = clonedTable.primaryColumns;
|
|
731
833
|
// if primary column state changed, we must always drop existed constraint.
|
|
732
834
|
if (primaryColumns.length > 0) {
|
|
733
|
-
const pkName =
|
|
835
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
836
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
837
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
734
838
|
const columnNames = primaryColumns
|
|
735
839
|
.map((column) => `"${column.name}"`)
|
|
736
840
|
.join(", ");
|
|
@@ -742,7 +846,9 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
742
846
|
// update column in table
|
|
743
847
|
const column = clonedTable.columns.find((column) => column.name === newColumn.name);
|
|
744
848
|
column.isPrimary = true;
|
|
745
|
-
const pkName =
|
|
849
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
850
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
851
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
746
852
|
const columnNames = primaryColumns
|
|
747
853
|
.map((column) => `"${column.name}"`)
|
|
748
854
|
.join(", ");
|
|
@@ -757,7 +863,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
757
863
|
column.isPrimary = false;
|
|
758
864
|
// if we have another primary keys, we must recreate constraint.
|
|
759
865
|
if (primaryColumns.length > 0) {
|
|
760
|
-
const pkName =
|
|
866
|
+
const pkName = primaryColumns[0]
|
|
867
|
+
.primaryKeyConstraintName
|
|
868
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
869
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
761
870
|
const columnNames = primaryColumns
|
|
762
871
|
.map((column) => `"${column.name}"`)
|
|
763
872
|
.join(", ");
|
|
@@ -852,9 +961,11 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
852
961
|
const upQueries = [];
|
|
853
962
|
const downQueries = [];
|
|
854
963
|
// drop primary key constraint
|
|
855
|
-
// todo:
|
|
964
|
+
// todo: https://go.crdb.dev/issue-v/48026/v21.1
|
|
856
965
|
if (column.isPrimary) {
|
|
857
|
-
const pkName =
|
|
966
|
+
const pkName = column.primaryKeyConstraintName
|
|
967
|
+
? column.primaryKeyConstraintName
|
|
968
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
|
|
858
969
|
const columnNames = clonedTable.primaryColumns
|
|
859
970
|
.map((primaryColumn) => `"${primaryColumn.name}"`)
|
|
860
971
|
.join(", ");
|
|
@@ -865,7 +976,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
865
976
|
tableColumn.isPrimary = false;
|
|
866
977
|
// if primary key have multiple columns, we must recreate it without dropped column
|
|
867
978
|
if (clonedTable.primaryColumns.length > 0) {
|
|
868
|
-
const pkName =
|
|
979
|
+
const pkName = clonedTable.primaryColumns[0]
|
|
980
|
+
.primaryKeyConstraintName
|
|
981
|
+
? clonedTable.primaryColumns[0].primaryKeyConstraintName
|
|
982
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, clonedTable.primaryColumns.map((column) => column.name));
|
|
869
983
|
const columnNames = clonedTable.primaryColumns
|
|
870
984
|
.map((primaryColumn) => `"${primaryColumn.name}"`)
|
|
871
985
|
.join(", ");
|
|
@@ -904,6 +1018,28 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
904
1018
|
upQueries.push(new Query_1.Query(`DROP SEQUENCE ${this.escapePath(this.buildSequencePath(table, column))}`));
|
|
905
1019
|
downQueries.push(new Query_1.Query(`CREATE SEQUENCE ${this.escapePath(this.buildSequencePath(table, column))}`));
|
|
906
1020
|
}
|
|
1021
|
+
if (column.generatedType && column.asExpression) {
|
|
1022
|
+
const currentSchema = await this.getCurrentSchema();
|
|
1023
|
+
let { schema } = this.driver.parseTableName(table);
|
|
1024
|
+
if (!schema) {
|
|
1025
|
+
schema = currentSchema;
|
|
1026
|
+
}
|
|
1027
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
1028
|
+
schema: schema,
|
|
1029
|
+
table: table.name,
|
|
1030
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1031
|
+
name: column.name,
|
|
1032
|
+
});
|
|
1033
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
1034
|
+
schema: schema,
|
|
1035
|
+
table: table.name,
|
|
1036
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1037
|
+
name: column.name,
|
|
1038
|
+
value: column.asExpression,
|
|
1039
|
+
});
|
|
1040
|
+
upQueries.push(deleteQuery);
|
|
1041
|
+
downQueries.push(insertQuery);
|
|
1042
|
+
}
|
|
907
1043
|
await this.executeQueries(upQueries, downQueries);
|
|
908
1044
|
clonedTable.removeColumn(column);
|
|
909
1045
|
this.replaceCachedTable(table, clonedTable);
|
|
@@ -919,12 +1055,12 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
919
1055
|
/**
|
|
920
1056
|
* Creates a new primary key.
|
|
921
1057
|
*/
|
|
922
|
-
async createPrimaryKey(tableOrName, columnNames) {
|
|
1058
|
+
async createPrimaryKey(tableOrName, columnNames, constraintName) {
|
|
923
1059
|
const table = InstanceChecker_1.InstanceChecker.isTable(tableOrName)
|
|
924
1060
|
? tableOrName
|
|
925
1061
|
: await this.getCachedTable(tableOrName);
|
|
926
1062
|
const clonedTable = table.clone();
|
|
927
|
-
const up = this.createPrimaryKeySql(table, columnNames);
|
|
1063
|
+
const up = this.createPrimaryKeySql(table, columnNames, constraintName);
|
|
928
1064
|
// mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.
|
|
929
1065
|
clonedTable.columns.forEach((column) => {
|
|
930
1066
|
if (columnNames.find((columnName) => columnName === column.name))
|
|
@@ -948,7 +1084,9 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
948
1084
|
// if table already have primary columns, we must drop them.
|
|
949
1085
|
const primaryColumns = clonedTable.primaryColumns;
|
|
950
1086
|
if (primaryColumns.length > 0) {
|
|
951
|
-
const pkName =
|
|
1087
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
1088
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
1089
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, primaryColumns.map((column) => column.name));
|
|
952
1090
|
const columnNamesString = primaryColumns
|
|
953
1091
|
.map((column) => `"${column.name}"`)
|
|
954
1092
|
.join(", ");
|
|
@@ -959,7 +1097,9 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
959
1097
|
clonedTable.columns
|
|
960
1098
|
.filter((column) => columnNames.indexOf(column.name) !== -1)
|
|
961
1099
|
.forEach((column) => (column.isPrimary = true));
|
|
962
|
-
const pkName =
|
|
1100
|
+
const pkName = primaryColumns[0].primaryKeyConstraintName
|
|
1101
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
1102
|
+
: this.connection.namingStrategy.primaryKeyName(clonedTable, columnNames);
|
|
963
1103
|
const columnNamesString = columnNames
|
|
964
1104
|
.map((columnName) => `"${columnName}"`)
|
|
965
1105
|
.join(", ");
|
|
@@ -971,12 +1111,12 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
971
1111
|
/**
|
|
972
1112
|
* Drops a primary key.
|
|
973
1113
|
*/
|
|
974
|
-
async dropPrimaryKey(tableOrName) {
|
|
1114
|
+
async dropPrimaryKey(tableOrName, constraintName) {
|
|
975
1115
|
const table = InstanceChecker_1.InstanceChecker.isTable(tableOrName)
|
|
976
1116
|
? tableOrName
|
|
977
1117
|
: await this.getCachedTable(tableOrName);
|
|
978
1118
|
const up = this.dropPrimaryKeySql(table);
|
|
979
|
-
const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name));
|
|
1119
|
+
const down = this.createPrimaryKeySql(table, table.primaryColumns.map((column) => column.name), constraintName);
|
|
980
1120
|
await this.executeQueries(up, down);
|
|
981
1121
|
table.primaryColumns.forEach((column) => {
|
|
982
1122
|
column.isPrimary = false;
|
|
@@ -1338,12 +1478,14 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1338
1478
|
return `("table_schema" = '${table_schema}' AND "table_name" = '${table_name}')`;
|
|
1339
1479
|
})
|
|
1340
1480
|
.join(" OR ");
|
|
1341
|
-
const columnsSql = `
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1481
|
+
const columnsSql = `SELECT "columns".*, "attr"."attgenerated" as "generated_type", ` +
|
|
1482
|
+
`pg_catalog.col_description(('"' || table_catalog || '"."' || table_schema || '"."' || table_name || '"')::regclass::oid, ordinal_position) as description ` +
|
|
1483
|
+
`FROM "information_schema"."columns" ` +
|
|
1484
|
+
`LEFT JOIN "pg_class" AS "cls" ON "cls"."relname" = "table_name" ` +
|
|
1485
|
+
`LEFT JOIN "pg_namespace" AS "ns" ON "ns"."oid" = "cls"."relnamespace" AND "ns"."nspname" = "table_schema" ` +
|
|
1486
|
+
`LEFT JOIN "pg_attribute" AS "attr" ON "attr"."attrelid" = "cls"."oid" AND "attr"."attname" = "column_name" AND "attr"."attnum" = "ordinal_position" ` +
|
|
1487
|
+
`WHERE "is_hidden" = 'NO' AND ` +
|
|
1488
|
+
columnsCondiiton;
|
|
1347
1489
|
const constraintsCondition = dbTables
|
|
1348
1490
|
.map(({ table_name, table_schema }) => {
|
|
1349
1491
|
return `("ns"."nspname" = '${table_schema}' AND "t"."relname" = '${table_name}')`;
|
|
@@ -1477,7 +1619,30 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1477
1619
|
}
|
|
1478
1620
|
tableColumn.isNullable =
|
|
1479
1621
|
dbColumn["is_nullable"] === "YES";
|
|
1480
|
-
|
|
1622
|
+
const primaryConstraint = columnConstraints.find((constraint) => constraint["constraint_type"] === "PRIMARY");
|
|
1623
|
+
if (primaryConstraint) {
|
|
1624
|
+
tableColumn.isPrimary = true;
|
|
1625
|
+
// find another columns involved in primary key constraint
|
|
1626
|
+
const anotherPrimaryConstraints = dbConstraints.filter((constraint) => constraint["table_name"] ===
|
|
1627
|
+
dbColumn["table_name"] &&
|
|
1628
|
+
constraint["table_schema"] ===
|
|
1629
|
+
dbColumn["table_schema"] &&
|
|
1630
|
+
constraint["column_name"] !==
|
|
1631
|
+
dbColumn["column_name"] &&
|
|
1632
|
+
constraint["constraint_type"] ===
|
|
1633
|
+
"PRIMARY");
|
|
1634
|
+
// collect all column names
|
|
1635
|
+
const columnNames = anotherPrimaryConstraints.map((constraint) => constraint["column_name"]);
|
|
1636
|
+
columnNames.push(dbColumn["column_name"]);
|
|
1637
|
+
// build default primary key constraint name
|
|
1638
|
+
const pkName = this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
1639
|
+
// if primary key has user-defined constraint name, write it in table column
|
|
1640
|
+
if (primaryConstraint["constraint_name"] !==
|
|
1641
|
+
pkName) {
|
|
1642
|
+
tableColumn.primaryKeyConstraintName =
|
|
1643
|
+
primaryConstraint["constraint_name"];
|
|
1644
|
+
}
|
|
1645
|
+
}
|
|
1481
1646
|
const uniqueConstraints = columnConstraints.filter((constraint) => constraint["constraint_type"] === "UNIQUE");
|
|
1482
1647
|
const isConstraintComposite = uniqueConstraints.every((uniqueConstraint) => {
|
|
1483
1648
|
return dbConstraints.some((dbConstraint) => dbConstraint["constraint_type"] ===
|
|
@@ -1512,6 +1677,27 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1512
1677
|
tableColumn.default.replace(/^(-?[\d\.]+)$/, "($1)");
|
|
1513
1678
|
}
|
|
1514
1679
|
}
|
|
1680
|
+
if (dbColumn["is_generated"] === "YES" &&
|
|
1681
|
+
dbColumn["generation_expression"]) {
|
|
1682
|
+
tableColumn.generatedType =
|
|
1683
|
+
dbColumn["generated_type"] === "s"
|
|
1684
|
+
? "STORED"
|
|
1685
|
+
: "VIRTUAL";
|
|
1686
|
+
// We cannot relay on information_schema.columns.generation_expression, because it is formatted different.
|
|
1687
|
+
const asExpressionQuery = await this.selectTypeormMetadataSql({
|
|
1688
|
+
schema: dbTable["table_schema"],
|
|
1689
|
+
table: dbTable["table_name"],
|
|
1690
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1691
|
+
name: tableColumn.name,
|
|
1692
|
+
});
|
|
1693
|
+
const results = await this.query(asExpressionQuery.query, asExpressionQuery.parameters);
|
|
1694
|
+
if (results[0] && results[0].value) {
|
|
1695
|
+
tableColumn.asExpression = results[0].value;
|
|
1696
|
+
}
|
|
1697
|
+
else {
|
|
1698
|
+
tableColumn.asExpression = "";
|
|
1699
|
+
}
|
|
1700
|
+
}
|
|
1515
1701
|
tableColumn.comment =
|
|
1516
1702
|
dbColumn["description"] == null
|
|
1517
1703
|
? undefined
|
|
@@ -1687,7 +1873,9 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1687
1873
|
}
|
|
1688
1874
|
const primaryColumns = table.columns.filter((column) => column.isPrimary);
|
|
1689
1875
|
if (primaryColumns.length > 0) {
|
|
1690
|
-
const primaryKeyName =
|
|
1876
|
+
const primaryKeyName = primaryColumns[0].primaryKeyConstraintName
|
|
1877
|
+
? primaryColumns[0].primaryKeyConstraintName
|
|
1878
|
+
: this.connection.namingStrategy.primaryKeyName(table, primaryColumns.map((column) => column.name));
|
|
1691
1879
|
const columnNames = primaryColumns
|
|
1692
1880
|
.map((column) => `"${column.name}"`)
|
|
1693
1881
|
.join(", ");
|
|
@@ -1775,8 +1963,10 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1775
1963
|
/**
|
|
1776
1964
|
* Builds create primary key sql.
|
|
1777
1965
|
*/
|
|
1778
|
-
createPrimaryKeySql(table, columnNames) {
|
|
1779
|
-
const primaryKeyName =
|
|
1966
|
+
createPrimaryKeySql(table, columnNames, constraintName) {
|
|
1967
|
+
const primaryKeyName = constraintName
|
|
1968
|
+
? constraintName
|
|
1969
|
+
: this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
1780
1970
|
const columnNamesString = columnNames
|
|
1781
1971
|
.map((columnName) => `"${columnName}"`)
|
|
1782
1972
|
.join(", ");
|
|
@@ -1786,8 +1976,13 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1786
1976
|
* Builds drop primary key sql.
|
|
1787
1977
|
*/
|
|
1788
1978
|
dropPrimaryKeySql(table) {
|
|
1979
|
+
if (!table.primaryColumns.length)
|
|
1980
|
+
throw new error_1.TypeORMError(`Table ${table} has no primary keys.`);
|
|
1789
1981
|
const columnNames = table.primaryColumns.map((column) => column.name);
|
|
1790
|
-
const
|
|
1982
|
+
const constraintName = table.primaryColumns[0].primaryKeyConstraintName;
|
|
1983
|
+
const primaryKeyName = constraintName
|
|
1984
|
+
? constraintName
|
|
1985
|
+
: this.connection.namingStrategy.primaryKeyName(table, columnNames);
|
|
1791
1986
|
return new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT "${primaryKeyName}"`);
|
|
1792
1987
|
}
|
|
1793
1988
|
/**
|
|
@@ -1904,10 +2099,15 @@ class CockroachQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1904
2099
|
}
|
|
1905
2100
|
if (!column.isGenerated)
|
|
1906
2101
|
c += " " + this.connection.driver.createFullType(column);
|
|
1907
|
-
if (column.
|
|
1908
|
-
c +=
|
|
1909
|
-
|
|
1910
|
-
|
|
2102
|
+
if (column.asExpression) {
|
|
2103
|
+
c += ` AS (${column.asExpression}) ${column.generatedType ? column.generatedType : "VIRTUAL"}`;
|
|
2104
|
+
}
|
|
2105
|
+
else {
|
|
2106
|
+
if (column.charset)
|
|
2107
|
+
c += ' CHARACTER SET "' + column.charset + '"';
|
|
2108
|
+
if (column.collation)
|
|
2109
|
+
c += ' COLLATE "' + column.collation + '"';
|
|
2110
|
+
}
|
|
1911
2111
|
if (!column.isNullable)
|
|
1912
2112
|
c += " NOT NULL";
|
|
1913
2113
|
if (!column.isGenerated &&
|