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
|
@@ -318,6 +318,26 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
318
318
|
// createTable does not need separate method to create foreign keys, because it create fk's in the same query with table creation.
|
|
319
319
|
if (createForeignKeys)
|
|
320
320
|
table.foreignKeys.forEach((foreignKey) => downQueries.push(this.dropForeignKeySql(table, foreignKey)));
|
|
321
|
+
// if table has column with generated type, we must add the expression to the metadata table
|
|
322
|
+
const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
|
|
323
|
+
for (const column of generatedColumns) {
|
|
324
|
+
const currentDatabase = await this.getCurrentDatabase();
|
|
325
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
326
|
+
schema: currentDatabase,
|
|
327
|
+
table: table.name,
|
|
328
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
329
|
+
name: column.name,
|
|
330
|
+
value: column.asExpression,
|
|
331
|
+
});
|
|
332
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
333
|
+
schema: currentDatabase,
|
|
334
|
+
table: table.name,
|
|
335
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
336
|
+
name: column.name,
|
|
337
|
+
});
|
|
338
|
+
upQueries.push(insertQuery);
|
|
339
|
+
downQueries.push(deleteQuery);
|
|
340
|
+
}
|
|
321
341
|
return this.executeQueries(upQueries, downQueries);
|
|
322
342
|
}
|
|
323
343
|
/**
|
|
@@ -342,6 +362,26 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
342
362
|
table.indices.forEach((index) => upQueries.push(this.dropIndexSql(table, index)));
|
|
343
363
|
upQueries.push(this.dropTableSql(table));
|
|
344
364
|
downQueries.push(this.createTableSql(table, createForeignKeys));
|
|
365
|
+
// if table had columns with generated type, we must remove the expression from the metadata table
|
|
366
|
+
const generatedColumns = table.columns.filter((column) => column.generatedType && column.asExpression);
|
|
367
|
+
for (const column of generatedColumns) {
|
|
368
|
+
const currentDatabase = await this.getCurrentDatabase();
|
|
369
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
370
|
+
schema: currentDatabase,
|
|
371
|
+
table: table.name,
|
|
372
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
373
|
+
name: column.name,
|
|
374
|
+
});
|
|
375
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
376
|
+
schema: currentDatabase,
|
|
377
|
+
table: table.name,
|
|
378
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
379
|
+
name: column.name,
|
|
380
|
+
value: column.asExpression,
|
|
381
|
+
});
|
|
382
|
+
upQueries.push(deleteQuery);
|
|
383
|
+
downQueries.push(insertQuery);
|
|
384
|
+
}
|
|
345
385
|
await this.executeQueries(upQueries, downQueries);
|
|
346
386
|
}
|
|
347
387
|
/**
|
|
@@ -387,6 +427,10 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
387
427
|
downQueries.push(new Query_1.Query(`RENAME TABLE ${this.escapePath(newTable)} TO ${this.escapePath(oldTable)}`));
|
|
388
428
|
// rename index constraints
|
|
389
429
|
newTable.indices.forEach((index) => {
|
|
430
|
+
const oldIndexName = this.connection.namingStrategy.indexName(oldTable, index.columnNames);
|
|
431
|
+
// Skip renaming if Index has user defined constraint name
|
|
432
|
+
if (index.name !== oldIndexName)
|
|
433
|
+
return;
|
|
390
434
|
// build new constraint name
|
|
391
435
|
const columnNames = index.columnNames
|
|
392
436
|
.map((column) => `\`${column}\``)
|
|
@@ -410,6 +454,10 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
410
454
|
});
|
|
411
455
|
// rename foreign key constraint
|
|
412
456
|
newTable.foreignKeys.forEach((foreignKey) => {
|
|
457
|
+
const oldForeignKeyName = this.connection.namingStrategy.foreignKeyName(oldTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
458
|
+
// Skip renaming if foreign key has user defined constraint name
|
|
459
|
+
if (foreignKey.name !== oldForeignKeyName)
|
|
460
|
+
return;
|
|
413
461
|
// build new constraint name
|
|
414
462
|
const columnNames = foreignKey.columnNames
|
|
415
463
|
.map((column) => `\`${column}\``)
|
|
@@ -487,6 +535,24 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
487
535
|
downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} CHANGE \`${column.name}\` ${this.buildCreateColumnSql(nonGeneratedColumn, true)}`));
|
|
488
536
|
}
|
|
489
537
|
}
|
|
538
|
+
if (column.generatedType && column.asExpression) {
|
|
539
|
+
const currentDatabase = await this.getCurrentDatabase();
|
|
540
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
541
|
+
schema: currentDatabase,
|
|
542
|
+
table: table.name,
|
|
543
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
544
|
+
name: column.name,
|
|
545
|
+
value: column.asExpression,
|
|
546
|
+
});
|
|
547
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
548
|
+
schema: currentDatabase,
|
|
549
|
+
table: table.name,
|
|
550
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
551
|
+
name: column.name,
|
|
552
|
+
});
|
|
553
|
+
upQueries.push(insertQuery);
|
|
554
|
+
downQueries.push(deleteQuery);
|
|
555
|
+
}
|
|
490
556
|
// create column index
|
|
491
557
|
const columnIndex = clonedTable.indices.find((index) => index.columnNames.length === 1 &&
|
|
492
558
|
index.columnNames[0] === column.name);
|
|
@@ -563,7 +629,12 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
563
629
|
newColumn.generationStrategy !== "uuid") ||
|
|
564
630
|
oldColumn.type !== newColumn.type ||
|
|
565
631
|
oldColumn.length !== newColumn.length ||
|
|
566
|
-
oldColumn.generatedType
|
|
632
|
+
(oldColumn.generatedType &&
|
|
633
|
+
newColumn.generatedType &&
|
|
634
|
+
oldColumn.generatedType !== newColumn.generatedType) ||
|
|
635
|
+
(!oldColumn.generatedType &&
|
|
636
|
+
newColumn.generatedType === "VIRTUAL") ||
|
|
637
|
+
(oldColumn.generatedType === "VIRTUAL" && !newColumn.generatedType)) {
|
|
567
638
|
await this.dropColumn(table, oldColumn);
|
|
568
639
|
await this.addColumn(table, newColumn);
|
|
569
640
|
// update cloned table
|
|
@@ -576,6 +647,10 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
576
647
|
downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} CHANGE \`${newColumn.name}\` \`${oldColumn.name}\` ${this.buildCreateColumnSql(oldColumn, true, true)}`));
|
|
577
648
|
// rename index constraints
|
|
578
649
|
clonedTable.findColumnIndices(oldColumn).forEach((index) => {
|
|
650
|
+
const oldUniqueName = this.connection.namingStrategy.indexName(clonedTable, index.columnNames);
|
|
651
|
+
// Skip renaming if Index has user defined constraint name
|
|
652
|
+
if (index.name !== oldUniqueName)
|
|
653
|
+
return;
|
|
579
654
|
// build new constraint name
|
|
580
655
|
index.columnNames.splice(index.columnNames.indexOf(oldColumn.name), 1);
|
|
581
656
|
index.columnNames.push(newColumn.name);
|
|
@@ -603,6 +678,10 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
603
678
|
clonedTable
|
|
604
679
|
.findColumnForeignKeys(oldColumn)
|
|
605
680
|
.forEach((foreignKey) => {
|
|
681
|
+
const foreignKeyName = this.connection.namingStrategy.foreignKeyName(clonedTable, foreignKey.columnNames, this.getTablePath(foreignKey), foreignKey.referencedColumnNames);
|
|
682
|
+
// Skip renaming if foreign key has user defined constraint name
|
|
683
|
+
if (foreignKey.name !== foreignKeyName)
|
|
684
|
+
return;
|
|
606
685
|
// build new constraint name
|
|
607
686
|
foreignKey.columnNames.splice(foreignKey.columnNames.indexOf(oldColumn.name), 1);
|
|
608
687
|
foreignKey.columnNames.push(newColumn.name);
|
|
@@ -639,6 +718,77 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
639
718
|
if (this.isColumnChanged(oldColumn, newColumn, true, true)) {
|
|
640
719
|
upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} CHANGE \`${oldColumn.name}\` ${this.buildCreateColumnSql(newColumn, true)}`));
|
|
641
720
|
downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} CHANGE \`${newColumn.name}\` ${this.buildCreateColumnSql(oldColumn, true)}`));
|
|
721
|
+
if (oldColumn.generatedType && !newColumn.generatedType) {
|
|
722
|
+
// if column changed from generated to non-generated, delete record from typeorm metadata
|
|
723
|
+
const currentDatabase = await this.getCurrentDatabase();
|
|
724
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
725
|
+
schema: currentDatabase,
|
|
726
|
+
table: table.name,
|
|
727
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
728
|
+
name: oldColumn.name,
|
|
729
|
+
});
|
|
730
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
731
|
+
schema: currentDatabase,
|
|
732
|
+
table: table.name,
|
|
733
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
734
|
+
name: oldColumn.name,
|
|
735
|
+
value: oldColumn.asExpression,
|
|
736
|
+
});
|
|
737
|
+
upQueries.push(deleteQuery);
|
|
738
|
+
downQueries.push(insertQuery);
|
|
739
|
+
}
|
|
740
|
+
else if (!oldColumn.generatedType &&
|
|
741
|
+
newColumn.generatedType) {
|
|
742
|
+
// if column changed from non-generated to generated, insert record into typeorm metadata
|
|
743
|
+
const currentDatabase = await this.getCurrentDatabase();
|
|
744
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
745
|
+
schema: currentDatabase,
|
|
746
|
+
table: table.name,
|
|
747
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
748
|
+
name: newColumn.name,
|
|
749
|
+
value: newColumn.asExpression,
|
|
750
|
+
});
|
|
751
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
752
|
+
schema: currentDatabase,
|
|
753
|
+
table: table.name,
|
|
754
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
755
|
+
name: newColumn.name,
|
|
756
|
+
});
|
|
757
|
+
upQueries.push(insertQuery);
|
|
758
|
+
downQueries.push(deleteQuery);
|
|
759
|
+
}
|
|
760
|
+
else if (oldColumn.asExpression !== newColumn.asExpression) {
|
|
761
|
+
// if only expression changed, just update it in typeorm_metadata table
|
|
762
|
+
const currentDatabase = await this.getCurrentDatabase();
|
|
763
|
+
const updateQuery = this.connection
|
|
764
|
+
.createQueryBuilder()
|
|
765
|
+
.update(this.getTypeormMetadataTableName())
|
|
766
|
+
.set({ value: newColumn.asExpression })
|
|
767
|
+
.where("`type` = :type", {
|
|
768
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
769
|
+
})
|
|
770
|
+
.andWhere("`name` = :name", { name: oldColumn.name })
|
|
771
|
+
.andWhere("`schema` = :schema", {
|
|
772
|
+
schema: currentDatabase,
|
|
773
|
+
})
|
|
774
|
+
.andWhere("`table` = :table", { table: table.name })
|
|
775
|
+
.getQueryAndParameters();
|
|
776
|
+
const revertUpdateQuery = this.connection
|
|
777
|
+
.createQueryBuilder()
|
|
778
|
+
.update(this.getTypeormMetadataTableName())
|
|
779
|
+
.set({ value: oldColumn.asExpression })
|
|
780
|
+
.where("`type` = :type", {
|
|
781
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
782
|
+
})
|
|
783
|
+
.andWhere("`name` = :name", { name: newColumn.name })
|
|
784
|
+
.andWhere("`schema` = :schema", {
|
|
785
|
+
schema: currentDatabase,
|
|
786
|
+
})
|
|
787
|
+
.andWhere("`table` = :table", { table: table.name })
|
|
788
|
+
.getQueryAndParameters();
|
|
789
|
+
upQueries.push(new Query_1.Query(updateQuery[0], updateQuery[1]));
|
|
790
|
+
downQueries.push(new Query_1.Query(revertUpdateQuery[0], revertUpdateQuery[1]));
|
|
791
|
+
}
|
|
642
792
|
}
|
|
643
793
|
if (newColumn.isPrimary !== oldColumn.isPrimary) {
|
|
644
794
|
// if table have generated column, we must drop AUTO_INCREMENT before changing primary constraints.
|
|
@@ -817,6 +967,24 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
817
967
|
}
|
|
818
968
|
upQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} DROP COLUMN \`${column.name}\``));
|
|
819
969
|
downQueries.push(new Query_1.Query(`ALTER TABLE ${this.escapePath(table)} ADD ${this.buildCreateColumnSql(column, true)}`));
|
|
970
|
+
if (column.generatedType && column.asExpression) {
|
|
971
|
+
const currentDatabase = await this.getCurrentDatabase();
|
|
972
|
+
const deleteQuery = this.deleteTypeormMetadataSql({
|
|
973
|
+
schema: currentDatabase,
|
|
974
|
+
table: table.name,
|
|
975
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
976
|
+
name: column.name,
|
|
977
|
+
});
|
|
978
|
+
const insertQuery = this.insertTypeormMetadataSql({
|
|
979
|
+
schema: currentDatabase,
|
|
980
|
+
table: table.name,
|
|
981
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
982
|
+
name: column.name,
|
|
983
|
+
value: column.asExpression,
|
|
984
|
+
});
|
|
985
|
+
upQueries.push(deleteQuery);
|
|
986
|
+
downQueries.push(insertQuery);
|
|
987
|
+
}
|
|
820
988
|
await this.executeQueries(upQueries, downQueries);
|
|
821
989
|
clonedTable.removeColumn(column);
|
|
822
990
|
this.replaceCachedTable(table, clonedTable);
|
|
@@ -1352,11 +1520,12 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1352
1520
|
table.database = dbTable["TABLE_SCHEMA"];
|
|
1353
1521
|
table.name = this.driver.buildTableName(dbTable["TABLE_NAME"], undefined, db);
|
|
1354
1522
|
// create columns from the loaded columns
|
|
1355
|
-
table.columns = dbColumns
|
|
1356
|
-
.filter((dbColumn) => dbColumn["TABLE_NAME"] ===
|
|
1523
|
+
table.columns = await Promise.all(dbColumns
|
|
1524
|
+
.filter((dbColumn) => dbColumn["TABLE_NAME"] ===
|
|
1525
|
+
dbTable["TABLE_NAME"] &&
|
|
1357
1526
|
dbColumn["TABLE_SCHEMA"] ===
|
|
1358
1527
|
dbTable["TABLE_SCHEMA"])
|
|
1359
|
-
.map((dbColumn) => {
|
|
1528
|
+
.map(async (dbColumn) => {
|
|
1360
1529
|
const columnUniqueIndices = dbIndices.filter((dbIndex) => {
|
|
1361
1530
|
return (dbIndex["TABLE_NAME"] ===
|
|
1362
1531
|
dbTable["TABLE_NAME"] &&
|
|
@@ -1364,7 +1533,8 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1364
1533
|
dbTable["TABLE_SCHEMA"] &&
|
|
1365
1534
|
dbIndex["COLUMN_NAME"] ===
|
|
1366
1535
|
dbColumn["COLUMN_NAME"] &&
|
|
1367
|
-
parseInt(dbIndex["NON_UNIQUE"], 10) ===
|
|
1536
|
+
parseInt(dbIndex["NON_UNIQUE"], 10) ===
|
|
1537
|
+
0);
|
|
1368
1538
|
});
|
|
1369
1539
|
const tableMetadata = this.connection.entityMetadatas.find((metadata) => this.getTablePath(table) ===
|
|
1370
1540
|
this.getTablePath(metadata));
|
|
@@ -1385,9 +1555,11 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1385
1555
|
});
|
|
1386
1556
|
const tableColumn = new TableColumn_1.TableColumn();
|
|
1387
1557
|
tableColumn.name = dbColumn["COLUMN_NAME"];
|
|
1388
|
-
tableColumn.type =
|
|
1558
|
+
tableColumn.type =
|
|
1559
|
+
dbColumn["DATA_TYPE"].toLowerCase();
|
|
1389
1560
|
tableColumn.zerofill =
|
|
1390
|
-
dbColumn["COLUMN_TYPE"].indexOf("zerofill") !==
|
|
1561
|
+
dbColumn["COLUMN_TYPE"].indexOf("zerofill") !==
|
|
1562
|
+
-1;
|
|
1391
1563
|
tableColumn.unsigned = tableColumn.zerofill
|
|
1392
1564
|
? true
|
|
1393
1565
|
: dbColumn["COLUMN_TYPE"].indexOf("unsigned") !== -1;
|
|
@@ -1401,7 +1573,8 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1401
1573
|
}
|
|
1402
1574
|
if (dbColumn["COLUMN_DEFAULT"] === null ||
|
|
1403
1575
|
dbColumn["COLUMN_DEFAULT"] === undefined ||
|
|
1404
|
-
(isMariaDb &&
|
|
1576
|
+
(isMariaDb &&
|
|
1577
|
+
dbColumn["COLUMN_DEFAULT"] === "NULL")) {
|
|
1405
1578
|
tableColumn.default = undefined;
|
|
1406
1579
|
}
|
|
1407
1580
|
else if (/^CURRENT_TIMESTAMP(\([0-9]*\))?$/i.test(dbColumn["COLUMN_DEFAULT"])) {
|
|
@@ -1423,23 +1596,41 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1423
1596
|
// New versions of MariaDB return expressions in lowercase. We need to set it in
|
|
1424
1597
|
// uppercase so the comparison in MysqlDriver#compareExtraValues does not fail.
|
|
1425
1598
|
tableColumn.onUpdate = dbColumn["EXTRA"]
|
|
1426
|
-
.substring(dbColumn["EXTRA"].indexOf("on update") +
|
|
1599
|
+
.substring(dbColumn["EXTRA"].indexOf("on update") +
|
|
1600
|
+
10)
|
|
1427
1601
|
.toUpperCase();
|
|
1428
1602
|
}
|
|
1429
1603
|
if (dbColumn["GENERATION_EXPRESSION"]) {
|
|
1430
|
-
tableColumn.asExpression =
|
|
1431
|
-
dbColumn["GENERATION_EXPRESSION"];
|
|
1432
1604
|
tableColumn.generatedType =
|
|
1433
1605
|
dbColumn["EXTRA"].indexOf("VIRTUAL") !== -1
|
|
1434
1606
|
? "VIRTUAL"
|
|
1435
1607
|
: "STORED";
|
|
1608
|
+
// We cannot relay on information_schema.columns.generation_expression, because it is formatted different.
|
|
1609
|
+
const asExpressionQuery = await this.selectTypeormMetadataSql({
|
|
1610
|
+
schema: dbTable["TABLE_SCHEMA"],
|
|
1611
|
+
table: dbTable["TABLE_NAME"],
|
|
1612
|
+
type: MetadataTableType_1.MetadataTableType.GENERATED_COLUMN,
|
|
1613
|
+
name: tableColumn.name,
|
|
1614
|
+
});
|
|
1615
|
+
const results = await this.query(asExpressionQuery.query, asExpressionQuery.parameters);
|
|
1616
|
+
if (results[0] && results[0].value) {
|
|
1617
|
+
tableColumn.asExpression = results[0].value;
|
|
1618
|
+
}
|
|
1619
|
+
else {
|
|
1620
|
+
tableColumn.asExpression = "";
|
|
1621
|
+
}
|
|
1436
1622
|
}
|
|
1437
1623
|
tableColumn.isUnique =
|
|
1438
1624
|
columnUniqueIndices.length > 0 &&
|
|
1439
1625
|
!hasIgnoredIndex &&
|
|
1440
1626
|
!isConstraintComposite;
|
|
1441
|
-
tableColumn.
|
|
1442
|
-
|
|
1627
|
+
if (isMariaDb && tableColumn.generatedType) {
|
|
1628
|
+
// do nothing - MariaDB does not support NULL/NOT NULL expressions for generated columns
|
|
1629
|
+
}
|
|
1630
|
+
else {
|
|
1631
|
+
tableColumn.isNullable =
|
|
1632
|
+
dbColumn["IS_NULLABLE"] === "YES";
|
|
1633
|
+
}
|
|
1443
1634
|
tableColumn.isPrimary = dbPrimaryKeys.some((dbPrimaryKey) => {
|
|
1444
1635
|
return (dbPrimaryKey["TABLE_NAME"] ===
|
|
1445
1636
|
dbColumn["TABLE_NAME"] &&
|
|
@@ -1449,11 +1640,13 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1449
1640
|
dbColumn["COLUMN_NAME"]);
|
|
1450
1641
|
});
|
|
1451
1642
|
tableColumn.isGenerated =
|
|
1452
|
-
dbColumn["EXTRA"].indexOf("auto_increment") !==
|
|
1643
|
+
dbColumn["EXTRA"].indexOf("auto_increment") !==
|
|
1644
|
+
-1;
|
|
1453
1645
|
if (tableColumn.isGenerated)
|
|
1454
1646
|
tableColumn.generationStrategy = "increment";
|
|
1455
1647
|
tableColumn.comment =
|
|
1456
|
-
typeof dbColumn["COLUMN_COMMENT"] ===
|
|
1648
|
+
typeof dbColumn["COLUMN_COMMENT"] ===
|
|
1649
|
+
"string" &&
|
|
1457
1650
|
dbColumn["COLUMN_COMMENT"].length === 0
|
|
1458
1651
|
? undefined
|
|
1459
1652
|
: dbColumn["COLUMN_COMMENT"];
|
|
@@ -1465,16 +1658,18 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1465
1658
|
: dbColumn["CHARACTER_SET_NAME"];
|
|
1466
1659
|
if (dbColumn["COLLATION_NAME"])
|
|
1467
1660
|
tableColumn.collation =
|
|
1468
|
-
dbColumn["COLLATION_NAME"] ===
|
|
1661
|
+
dbColumn["COLLATION_NAME"] ===
|
|
1662
|
+
defaultCollation
|
|
1469
1663
|
? undefined
|
|
1470
1664
|
: dbColumn["COLLATION_NAME"];
|
|
1471
1665
|
// check only columns that have length property
|
|
1472
1666
|
if (this.driver.withLengthColumnTypes.indexOf(tableColumn.type) !== -1 &&
|
|
1473
1667
|
dbColumn["CHARACTER_MAXIMUM_LENGTH"]) {
|
|
1474
1668
|
const length = dbColumn["CHARACTER_MAXIMUM_LENGTH"].toString();
|
|
1475
|
-
tableColumn.length =
|
|
1476
|
-
|
|
1477
|
-
|
|
1669
|
+
tableColumn.length =
|
|
1670
|
+
!this.isDefaultColumnLength(table, tableColumn, length)
|
|
1671
|
+
? length
|
|
1672
|
+
: "";
|
|
1478
1673
|
}
|
|
1479
1674
|
if (tableColumn.type === "decimal" ||
|
|
1480
1675
|
tableColumn.type === "double" ||
|
|
@@ -1507,7 +1702,7 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1507
1702
|
tableColumn.precision = parseInt(dbColumn["DATETIME_PRECISION"]);
|
|
1508
1703
|
}
|
|
1509
1704
|
return tableColumn;
|
|
1510
|
-
});
|
|
1705
|
+
}));
|
|
1511
1706
|
// find foreign key constraints of table, group them by constraint name and build TableForeignKey.
|
|
1512
1707
|
const tableForeignKeyConstraints = OrmUtils_1.OrmUtils.uniq(dbForeignKeys.filter((dbForeignKey) => {
|
|
1513
1708
|
return (dbForeignKey["TABLE_NAME"] ===
|
|
@@ -1804,6 +1999,10 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1804
1999
|
else {
|
|
1805
2000
|
c = `\`${column.name}\` ${this.connection.driver.createFullType(column)}`;
|
|
1806
2001
|
}
|
|
2002
|
+
if (column.charset)
|
|
2003
|
+
c += ` CHARACTER SET "${column.charset}"`;
|
|
2004
|
+
if (column.collation)
|
|
2005
|
+
c += ` COLLATE "${column.collation}"`;
|
|
1807
2006
|
if (column.asExpression)
|
|
1808
2007
|
c += ` AS (${column.asExpression}) ${column.generatedType ? column.generatedType : "VIRTUAL"}`;
|
|
1809
2008
|
// if you specify ZEROFILL for a numeric column, MySQL automatically adds the UNSIGNED attribute to that column.
|
|
@@ -1817,10 +2016,6 @@ class MysqlQueryRunner extends BaseQueryRunner_1.BaseQueryRunner {
|
|
|
1817
2016
|
c += ` (${column.enum
|
|
1818
2017
|
.map((value) => "'" + value.replace(/'/g, "''") + "'")
|
|
1819
2018
|
.join(", ")})`;
|
|
1820
|
-
if (column.charset)
|
|
1821
|
-
c += ` CHARACTER SET "${column.charset}"`;
|
|
1822
|
-
if (column.collation)
|
|
1823
|
-
c += ` COLLATE "${column.collation}"`;
|
|
1824
2019
|
const isMariaDb = this.driver.options.type === "mariadb";
|
|
1825
2020
|
if (isMariaDb &&
|
|
1826
2021
|
column.asExpression &&
|