typeorm 0.3.21-dev.fdbb013 → 0.3.21
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 +1315 -1325
- package/browser/cache/DbQueryResultCache.js.map +1 -1
- package/browser/cache/QueryResultCache.d.ts +4 -2
- package/browser/cache/QueryResultCache.js.map +1 -1
- package/browser/cache/QueryResultCacheFactory.js.map +1 -1
- package/browser/cache/QueryResultCacheOptions.js.map +1 -1
- package/browser/cache/RedisQueryResultCache.js.map +1 -1
- package/browser/cli-ts-node-commonjs.js.map +1 -1
- package/browser/cli-ts-node-esm.js.map +1 -1
- package/browser/common/DeepPartial.js.map +1 -1
- package/browser/common/EntityTarget.js.map +1 -1
- package/browser/common/MixedList.js.map +1 -1
- package/browser/common/NonNever.js.map +1 -1
- package/browser/common/ObjectLiteral.js.map +1 -1
- package/browser/common/ObjectType.js.map +1 -1
- package/browser/common/PickKeysByType.js.map +1 -1
- package/browser/common/RelationType.js.map +1 -1
- package/browser/connection/BaseConnectionOptions.js.map +1 -1
- package/browser/connection/Connection.js.map +1 -1
- package/browser/connection/ConnectionManager.js.map +1 -1
- package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
- package/browser/connection/ConnectionOptions.js.map +1 -1
- package/browser/connection/ConnectionOptionsReader.d.ts +4 -4
- package/browser/connection/ConnectionOptionsReader.js.map +1 -1
- package/browser/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
- package/browser/container.js.map +1 -1
- package/browser/data-source/BaseDataSourceOptions.js.map +1 -1
- package/browser/data-source/DataSource.d.ts +2 -0
- package/browser/data-source/DataSource.js +2 -0
- package/browser/data-source/DataSource.js.map +1 -1
- package/browser/data-source/DataSourceOptions.js.map +1 -1
- package/browser/data-source/index.js.map +1 -1
- package/browser/decorator/Check.js.map +1 -1
- package/browser/decorator/EntityRepository.js.map +1 -1
- package/browser/decorator/Exclusion.js.map +1 -1
- package/browser/decorator/Generated.js.map +1 -1
- package/browser/decorator/Index.js.map +1 -1
- package/browser/decorator/Unique.js.map +1 -1
- package/browser/decorator/columns/Column.js.map +1 -1
- package/browser/decorator/columns/CreateDateColumn.js.map +1 -1
- package/browser/decorator/columns/DeleteDateColumn.js.map +1 -1
- package/browser/decorator/columns/ObjectIdColumn.js.map +1 -1
- package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
- package/browser/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
- package/browser/decorator/columns/UpdateDateColumn.js.map +1 -1
- package/browser/decorator/columns/VersionColumn.js.map +1 -1
- package/browser/decorator/columns/ViewColumn.js.map +1 -1
- package/browser/decorator/columns/VirtualColumn.js.map +1 -1
- package/browser/decorator/entity/ChildEntity.js.map +1 -1
- package/browser/decorator/entity/Entity.js.map +1 -1
- package/browser/decorator/entity/TableInheritance.js.map +1 -1
- package/browser/decorator/entity-view/ViewEntity.js.map +1 -1
- package/browser/decorator/listeners/AfterInsert.js.map +1 -1
- package/browser/decorator/listeners/AfterLoad.js.map +1 -1
- package/browser/decorator/listeners/AfterRecover.js.map +1 -1
- package/browser/decorator/listeners/AfterRemove.js.map +1 -1
- package/browser/decorator/listeners/AfterSoftRemove.js.map +1 -1
- package/browser/decorator/listeners/AfterUpdate.js.map +1 -1
- package/browser/decorator/listeners/BeforeInsert.js.map +1 -1
- package/browser/decorator/listeners/BeforeRecover.js.map +1 -1
- package/browser/decorator/listeners/BeforeRemove.js.map +1 -1
- package/browser/decorator/listeners/BeforeSoftRemove.js.map +1 -1
- package/browser/decorator/listeners/BeforeUpdate.js.map +1 -1
- package/browser/decorator/listeners/EventSubscriber.js.map +1 -1
- package/browser/decorator/options/ColumnCommonOptions.js.map +1 -1
- package/browser/decorator/options/ColumnEmbeddedOptions.js.map +1 -1
- package/browser/decorator/options/ColumnEnumOptions.js.map +1 -1
- package/browser/decorator/options/ColumnHstoreOptions.js.map +1 -1
- package/browser/decorator/options/ColumnNumericOptions.js.map +1 -1
- package/browser/decorator/options/ColumnOptions.js.map +1 -1
- package/browser/decorator/options/ColumnWithLengthOptions.js.map +1 -1
- package/browser/decorator/options/ColumnWithWidthOptions.js.map +1 -1
- package/browser/decorator/options/EntityOptions.js.map +1 -1
- package/browser/decorator/options/IndexOptions.js.map +1 -1
- package/browser/decorator/options/JoinColumnOptions.js.map +1 -1
- package/browser/decorator/options/JoinTableMultipleColumnsOptions.js.map +1 -1
- package/browser/decorator/options/JoinTableOptions.js.map +1 -1
- package/browser/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
- package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
- package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
- package/browser/decorator/options/RelationOptions.js.map +1 -1
- package/browser/decorator/options/SpatialColumnOptions.js.map +1 -1
- package/browser/decorator/options/TransactionOptions.js.map +1 -1
- package/browser/decorator/options/UniqueOptions.js.map +1 -1
- package/browser/decorator/options/ValueTransformer.js.map +1 -1
- package/browser/decorator/options/ViewColumnOptions.js.map +1 -1
- package/browser/decorator/options/ViewEntityOptions.js.map +1 -1
- package/browser/decorator/options/VirtualColumnOptions.js.map +1 -1
- package/browser/decorator/relations/JoinColumn.js.map +1 -1
- package/browser/decorator/relations/JoinTable.js.map +1 -1
- package/browser/decorator/relations/ManyToMany.js.map +1 -1
- package/browser/decorator/relations/ManyToOne.js.map +1 -1
- package/browser/decorator/relations/OneToMany.js.map +1 -1
- package/browser/decorator/relations/OneToOne.d.ts +4 -4
- package/browser/decorator/relations/OneToOne.js +2 -2
- package/browser/decorator/relations/OneToOne.js.map +1 -1
- package/browser/decorator/relations/RelationCount.js.map +1 -1
- package/browser/decorator/relations/RelationId.js.map +1 -1
- package/browser/decorator/tree/Tree.js.map +1 -1
- package/browser/decorator/tree/TreeChildren.js.map +1 -1
- package/browser/decorator/tree/TreeLevelColumn.js.map +1 -1
- package/browser/decorator/tree/TreeParent.js.map +1 -1
- package/browser/driver/Driver.js.map +1 -1
- package/browser/driver/DriverFactory.js.map +1 -1
- package/browser/driver/DriverUtils.js.map +1 -1
- package/browser/driver/Query.js.map +1 -1
- package/browser/driver/SqlInMemory.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlConnection.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.d.ts +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlConnectionOptions.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +0 -1
- package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
- package/browser/driver/aurora-postgres/AuroraPostgresConnectionOptions.js.map +1 -1
- package/browser/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
- package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
- package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
- package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +2 -2
- package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +4 -0
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
- package/browser/driver/capacitor/CapacitorConnectionOptions.js.map +1 -1
- package/browser/driver/capacitor/CapacitorDriver.js.map +1 -1
- package/browser/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachConnectionCredentialsOptions.d.ts +1 -2
- package/browser/driver/cockroachdb/CockroachConnectionCredentialsOptions.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachConnectionOptions.d.ts +1 -1
- package/browser/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +0 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +5 -3
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/cordova/CordovaConnectionOptions.js.map +1 -1
- package/browser/driver/cordova/CordovaDriver.js.map +1 -1
- package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/browser/driver/expo/ExpoConnectionOptions.js.map +1 -1
- package/browser/driver/expo/ExpoDriver.js.map +1 -1
- package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/browser/driver/mongodb/MongoConnectionOptions.d.ts +1 -2
- package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
- package/browser/driver/mongodb/MongoDriver.js.map +1 -1
- package/browser/driver/mongodb/MongoQueryRunner.d.ts +0 -1
- package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
- package/browser/driver/mongodb/bson.typings.js.map +1 -1
- package/browser/driver/mongodb/typings.d.ts +0 -8
- package/browser/driver/mongodb/typings.js +0 -1
- package/browser/driver/mongodb/typings.js.map +1 -1
- package/browser/driver/mysql/MysqlConnectionCredentialsOptions.d.ts +1 -1
- package/browser/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
- package/browser/driver/mysql/MysqlConnectionOptions.d.ts +1 -1
- package/browser/driver/mysql/MysqlConnectionOptions.js.map +1 -1
- package/browser/driver/mysql/MysqlDriver.js.map +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.d.ts +0 -1
- package/browser/driver/mysql/MysqlQueryRunner.js +71 -71
- package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/browser/driver/nativescript/NativescriptConnectionOptions.js.map +1 -1
- package/browser/driver/nativescript/NativescriptDriver.js.map +1 -1
- package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/browser/driver/oracle/OracleConnectionCredentialsOptions.d.ts +1 -1
- package/browser/driver/oracle/OracleConnectionCredentialsOptions.js.map +1 -1
- package/browser/driver/oracle/OracleConnectionOptions.d.ts +1 -1
- package/browser/driver/oracle/OracleConnectionOptions.js.map +1 -1
- package/browser/driver/oracle/OracleDriver.js.map +1 -1
- package/browser/driver/oracle/OracleQueryRunner.d.ts +0 -1
- package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/browser/driver/postgres/PostgresConnectionCredentialsOptions.d.ts +1 -2
- package/browser/driver/postgres/PostgresConnectionCredentialsOptions.js.map +1 -1
- package/browser/driver/postgres/PostgresConnectionOptions.d.ts +1 -1
- package/browser/driver/postgres/PostgresConnectionOptions.js.map +1 -1
- package/browser/driver/postgres/PostgresDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.d.ts +0 -1
- package/browser/driver/postgres/PostgresQueryRunner.js +5 -1
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
- package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
- package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/browser/driver/sap/SapConnectionCredentialsOptions.js.map +1 -1
- package/browser/driver/sap/SapConnectionOptions.js.map +1 -1
- package/browser/driver/sap/SapDriver.js.map +1 -1
- package/browser/driver/sap/SapQueryRunner.d.ts +0 -1
- package/browser/driver/sap/SapQueryRunner.js.map +1 -1
- package/browser/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +1 -1
- package/browser/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -1
- package/browser/driver/spanner/SpannerConnectionOptions.d.ts +1 -1
- package/browser/driver/spanner/SpannerConnectionOptions.js.map +1 -1
- package/browser/driver/spanner/SpannerDriver.js.map +1 -1
- package/browser/driver/spanner/SpannerQueryRunner.d.ts +0 -1
- package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
- package/browser/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
- package/browser/driver/sqlite/SqliteDriver.js +2 -2
- package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
- package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +0 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqljs/SqljsConnectionOptions.js.map +1 -1
- package/browser/driver/sqljs/SqljsDriver.js.map +1 -1
- package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/MssqlParameter.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +1 -1
- package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerConnectionOptions.d.ts +1 -1
- package/browser/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +0 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.js +26 -26
- package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryDefaultAuthentication.js.map +1 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js.map +1 -1
- package/browser/driver/sqlserver/authentication/DefaultAuthentication.js.map +1 -1
- package/browser/driver/sqlserver/authentication/NtlmAuthentication.js.map +1 -1
- package/browser/driver/types/ColumnTypes.js.map +1 -1
- package/browser/driver/types/CteCapabilities.js.map +1 -1
- package/browser/driver/types/DataTypeDefaults.js.map +1 -1
- package/browser/driver/types/DatabaseType.js.map +1 -1
- package/browser/driver/types/GeoJsonTypes.js.map +1 -1
- package/browser/driver/types/IsolationLevel.js.map +1 -1
- package/browser/driver/types/MappedColumnTypes.js.map +1 -1
- package/browser/driver/types/MetadataTableType.js.map +1 -1
- package/browser/driver/types/ReplicationMode.js.map +1 -1
- package/browser/driver/types/UpsertType.js.map +1 -1
- package/browser/entity-manager/EntityManager.d.ts +2 -0
- package/browser/entity-manager/EntityManager.js +4 -2
- package/browser/entity-manager/EntityManager.js.map +1 -1
- package/browser/entity-manager/EntityManagerFactory.js.map +1 -1
- package/browser/entity-manager/MongoEntityManager.js.map +1 -1
- package/browser/entity-manager/SqljsEntityManager.js.map +1 -1
- package/browser/entity-schema/EntitySchema.js.map +1 -1
- package/browser/entity-schema/EntitySchemaCheckOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaEmbeddedColumnOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaEmbeddedError.js.map +1 -1
- package/browser/entity-schema/EntitySchemaExclusionOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaInheritanceOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaRelationIdOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/browser/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
- package/browser/error/AlreadyHasActiveConnectionError.js.map +1 -1
- package/browser/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
- package/browser/error/CannotConnectAlreadyConnectedError.js.map +1 -1
- package/browser/error/CannotCreateEntityIdMapError.js.map +1 -1
- package/browser/error/CannotDetermineEntityError.js.map +1 -1
- package/browser/error/CannotExecuteNotConnectedError.js.map +1 -1
- package/browser/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
- package/browser/error/CannotReflectMethodParameterTypeError.js.map +1 -1
- package/browser/error/CircularRelationsError.js.map +1 -1
- package/browser/error/ColumnTypeUndefinedError.js.map +1 -1
- package/browser/error/ConnectionIsNotSetError.js.map +1 -1
- package/browser/error/ConnectionNotFoundError.js.map +1 -1
- package/browser/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
- package/browser/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
- package/browser/error/CustomRepositoryNotFoundError.js.map +1 -1
- package/browser/error/DataTypeNotSupportedError.js.map +1 -1
- package/browser/error/DriverOptionNotSetError.js.map +1 -1
- package/browser/error/DriverPackageNotInstalledError.js.map +1 -1
- package/browser/error/EntityMetadataNotFoundError.js.map +1 -1
- package/browser/error/EntityNotFoundError.js.map +1 -1
- package/browser/error/EntityPropertyNotFoundError.js.map +1 -1
- package/browser/error/FindRelationsNotFoundError.js.map +1 -1
- package/browser/error/ForbiddenTransactionModeOverrideError.js.map +1 -1
- package/browser/error/InitializedRelationError.js.map +1 -1
- package/browser/error/InsertValuesMissingError.js.map +1 -1
- package/browser/error/LimitOnUpdateNotSupportedError.js.map +1 -1
- package/browser/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
- package/browser/error/MetadataAlreadyExistsError.js.map +1 -1
- package/browser/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
- package/browser/error/MissingDeleteDateColumnError.js.map +1 -1
- package/browser/error/MissingDriverError.js.map +1 -1
- package/browser/error/MissingJoinColumnError.js.map +1 -1
- package/browser/error/MissingJoinTableError.js.map +1 -1
- package/browser/error/MissingPrimaryColumnError.js.map +1 -1
- package/browser/error/MustBeEntityError.js.map +1 -1
- package/browser/error/NamingStrategyNotFoundError.js.map +1 -1
- package/browser/error/NestedSetMultipleRootError.js.map +1 -1
- package/browser/error/NoConnectionForRepositoryError.js.map +1 -1
- package/browser/error/NoConnectionOptionError.js.map +1 -1
- package/browser/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
- package/browser/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
- package/browser/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
- package/browser/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
- package/browser/error/OptimisticLockVersionMismatchError.js.map +1 -1
- package/browser/error/PersistedEntityNotFoundError.js.map +1 -1
- package/browser/error/PessimisticLockTransactionRequiredError.js.map +1 -1
- package/browser/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
- package/browser/error/QueryFailedError.js.map +1 -1
- package/browser/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
- package/browser/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
- package/browser/error/RepositoryNotTreeError.js.map +1 -1
- package/browser/error/ReturningStatementNotSupportedError.js.map +1 -1
- package/browser/error/SubjectRemovedAndUpdatedError.js.map +1 -1
- package/browser/error/SubjectWithoutIdentifierError.js.map +1 -1
- package/browser/error/TransactionAlreadyStartedError.js.map +1 -1
- package/browser/error/TransactionNotStartedError.js.map +1 -1
- package/browser/error/TreeRepositoryNotSupportedError.js.map +1 -1
- package/browser/error/TypeORMError.js.map +1 -1
- package/browser/error/UpdateValuesMissingError.js.map +1 -1
- package/browser/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
- package/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
- package/browser/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
- package/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
- package/browser/error/index.js.map +1 -1
- package/browser/find-options/EqualOperator.js.map +1 -1
- package/browser/find-options/FindManyOptions.js.map +1 -1
- package/browser/find-options/FindOneOptions.js.map +1 -1
- package/browser/find-options/FindOperator.js.map +1 -1
- package/browser/find-options/FindOperatorType.js.map +1 -1
- package/browser/find-options/FindOptionsOrder.d.ts +0 -1
- package/browser/find-options/FindOptionsOrder.js.map +1 -1
- package/browser/find-options/FindOptionsRelations.d.ts +0 -1
- package/browser/find-options/FindOptionsRelations.js.map +1 -1
- package/browser/find-options/FindOptionsSelect.d.ts +0 -1
- package/browser/find-options/FindOptionsSelect.js.map +1 -1
- package/browser/find-options/FindOptionsUtils.js.map +1 -1
- package/browser/find-options/FindOptionsWhere.d.ts +0 -1
- package/browser/find-options/FindOptionsWhere.js.map +1 -1
- package/browser/find-options/FindTreeOptions.js.map +1 -1
- package/browser/find-options/JoinOptions.js.map +1 -1
- package/browser/find-options/OrderByCondition.js.map +1 -1
- package/browser/find-options/mongodb/MongoFindManyOptions.js.map +1 -1
- package/browser/find-options/mongodb/MongoFindOneOptions.js.map +1 -1
- package/browser/find-options/operator/And.js.map +1 -1
- package/browser/find-options/operator/Any.js.map +1 -1
- package/browser/find-options/operator/ArrayContainedBy.js.map +1 -1
- package/browser/find-options/operator/ArrayContains.js.map +1 -1
- package/browser/find-options/operator/ArrayOverlap.js.map +1 -1
- package/browser/find-options/operator/Between.js.map +1 -1
- package/browser/find-options/operator/Equal.js.map +1 -1
- package/browser/find-options/operator/ILike.js.map +1 -1
- package/browser/find-options/operator/In.js.map +1 -1
- package/browser/find-options/operator/IsNull.js.map +1 -1
- package/browser/find-options/operator/JsonContains.js.map +1 -1
- package/browser/find-options/operator/LessThan.js.map +1 -1
- package/browser/find-options/operator/LessThanOrEqual.js.map +1 -1
- package/browser/find-options/operator/Like.js.map +1 -1
- package/browser/find-options/operator/MoreThan.js.map +1 -1
- package/browser/find-options/operator/MoreThanOrEqual.js.map +1 -1
- package/browser/find-options/operator/Not.js.map +1 -1
- package/browser/find-options/operator/Or.js.map +1 -1
- package/browser/find-options/operator/Raw.js.map +1 -1
- package/browser/globals.js.map +1 -1
- package/browser/index.js.map +1 -1
- package/browser/logger/AbstractLogger.js.map +1 -1
- package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
- package/browser/logger/DebugLogger.js.map +1 -1
- package/browser/logger/FileLogger.js.map +1 -1
- package/browser/logger/Logger.js.map +1 -1
- package/browser/logger/LoggerFactory.js.map +1 -1
- package/browser/logger/LoggerOptions.js.map +1 -1
- package/browser/logger/SimpleConsoleLogger.js.map +1 -1
- package/browser/metadata/CheckMetadata.js.map +1 -1
- package/browser/metadata/ColumnMetadata.js.map +1 -1
- package/browser/metadata/EmbeddedMetadata.js.map +1 -1
- package/browser/metadata/EntityListenerMetadata.js.map +1 -1
- package/browser/metadata/EntityMetadata.js.map +1 -1
- package/browser/metadata/ExclusionMetadata.js.map +1 -1
- package/browser/metadata/ForeignKeyMetadata.js.map +1 -1
- package/browser/metadata/IndexMetadata.js.map +1 -1
- package/browser/metadata/RelationCountMetadata.js.map +1 -1
- package/browser/metadata/RelationIdMetadata.js.map +1 -1
- package/browser/metadata/RelationMetadata.js.map +1 -1
- package/browser/metadata/UniqueMetadata.js.map +1 -1
- package/browser/metadata/types/ClosureTreeOptions.js.map +1 -1
- package/browser/metadata/types/DeferrableType.js.map +1 -1
- package/browser/metadata/types/EventListenerTypes.js.map +1 -1
- package/browser/metadata/types/OnDeleteType.js.map +1 -1
- package/browser/metadata/types/OnUpdateType.js.map +1 -1
- package/browser/metadata/types/PropertyTypeInFunction.js.map +1 -1
- package/browser/metadata/types/RelationTypeInFunction.js.map +1 -1
- package/browser/metadata/types/RelationTypes.js.map +1 -1
- package/browser/metadata/types/TableTypes.js.map +1 -1
- package/browser/metadata/types/TreeTypes.js.map +1 -1
- package/browser/metadata-args/CheckMetadataArgs.js.map +1 -1
- package/browser/metadata-args/ColumnMetadataArgs.js.map +1 -1
- package/browser/metadata-args/DiscriminatorValueMetadataArgs.js.map +1 -1
- package/browser/metadata-args/EmbeddedMetadataArgs.js.map +1 -1
- package/browser/metadata-args/EntityListenerMetadataArgs.js.map +1 -1
- package/browser/metadata-args/EntityRepositoryMetadataArgs.js.map +1 -1
- package/browser/metadata-args/EntitySubscriberMetadataArgs.js.map +1 -1
- package/browser/metadata-args/ExclusionMetadataArgs.js.map +1 -1
- package/browser/metadata-args/GeneratedMetadataArgs.js.map +1 -1
- package/browser/metadata-args/IndexMetadataArgs.js.map +1 -1
- package/browser/metadata-args/InheritanceMetadataArgs.js.map +1 -1
- package/browser/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
- package/browser/metadata-args/JoinTableMetadataArgs.js.map +1 -1
- package/browser/metadata-args/MetadataArgsStorage.js.map +1 -1
- package/browser/metadata-args/NamingStrategyMetadataArgs.js.map +1 -1
- package/browser/metadata-args/RelationCountMetadataArgs.js.map +1 -1
- package/browser/metadata-args/RelationIdMetadataArgs.js.map +1 -1
- package/browser/metadata-args/RelationMetadataArgs.js.map +1 -1
- package/browser/metadata-args/TableMetadataArgs.js.map +1 -1
- package/browser/metadata-args/TransactionEntityMetadataArgs.js.map +1 -1
- package/browser/metadata-args/TransactionRepositoryMetadataArgs.js.map +1 -1
- package/browser/metadata-args/TreeMetadataArgs.js.map +1 -1
- package/browser/metadata-args/UniqueMetadataArgs.js.map +1 -1
- package/browser/metadata-args/types/ColumnMode.js.map +1 -1
- package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/MetadataUtils.js.map +1 -1
- package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/browser/migration/Migration.js.map +1 -1
- package/browser/migration/MigrationExecutor.js.map +1 -1
- package/browser/migration/MigrationInterface.js.map +1 -1
- package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
- package/browser/naming-strategy/LegacyOracleNamingStrategy.js.map +1 -1
- package/browser/naming-strategy/NamingStrategyInterface.js.map +1 -1
- package/browser/persistence/EntityPersistExecutor.js.map +1 -1
- package/browser/persistence/Subject.js.map +1 -1
- package/browser/persistence/SubjectChangeMap.js.map +1 -1
- package/browser/persistence/SubjectChangedColumnsComputer.js.map +1 -1
- package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/browser/persistence/SubjectExecutor.js +3 -3
- package/browser/persistence/SubjectExecutor.js.map +1 -1
- package/browser/persistence/{SubjectTopoligicalSorter.d.ts → SubjectTopologicalSorter.d.ts} +1 -1
- package/browser/persistence/{SubjectTopoligicalSorter.js → SubjectTopologicalSorter.js} +2 -2
- package/browser/persistence/SubjectTopologicalSorter.js.map +1 -0
- package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
- package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
- package/browser/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
- package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
- package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
- package/browser/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
- package/browser/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
- package/browser/platform/BrowserConnectionOptionsReaderDummy.js.map +1 -1
- package/browser/platform/BrowserDirectoryExportedClassesLoader.js.map +1 -1
- package/browser/platform/BrowserDisabledDriversDummy.js.map +1 -1
- package/browser/platform/BrowserFileLoggerDummy.js.map +1 -1
- package/browser/platform/BrowserPlatformTools.d.ts +2 -6
- package/browser/platform/BrowserPlatformTools.js +2 -8
- package/browser/platform/BrowserPlatformTools.js.map +1 -1
- package/browser/platform/PlatformTools.d.ts +2 -10
- package/browser/platform/PlatformTools.js +28 -36
- package/browser/platform/PlatformTools.js.map +1 -1
- package/browser/query-builder/Alias.js.map +1 -1
- package/browser/query-builder/Brackets.js.map +1 -1
- package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
- package/browser/query-builder/InsertOrUpdateOptions.js.map +1 -1
- package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
- package/browser/query-builder/JoinAttribute.js.map +1 -1
- package/browser/query-builder/JoinOptions.js.map +1 -1
- package/browser/query-builder/NotBrackets.js.map +1 -1
- package/browser/query-builder/QueryBuilder.js +2 -3
- package/browser/query-builder/QueryBuilder.js.map +1 -1
- package/browser/query-builder/QueryBuilderCte.js.map +1 -1
- package/browser/query-builder/QueryBuilderUtils.js.map +1 -1
- package/browser/query-builder/QueryExpressionMap.js.map +1 -1
- package/browser/query-builder/QueryPartialEntity.js.map +1 -1
- package/browser/query-builder/RelationIdLoader.js.map +1 -1
- package/browser/query-builder/RelationLoader.js.map +1 -1
- package/browser/query-builder/RelationQueryBuilder.js.map +1 -1
- package/browser/query-builder/RelationRemover.js.map +1 -1
- package/browser/query-builder/RelationUpdater.js.map +1 -1
- package/browser/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
- package/browser/query-builder/SelectQuery.js.map +1 -1
- package/browser/query-builder/SelectQueryBuilder.d.ts +0 -1
- package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
- package/browser/query-builder/SelectQueryBuilderOption.js.map +1 -1
- package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/browser/query-builder/WhereClause.js.map +1 -1
- package/browser/query-builder/WhereExpressionBuilder.js.map +1 -1
- package/browser/query-builder/index.js.map +1 -1
- package/browser/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
- package/browser/query-builder/relation-count/RelationCountLoadResult.js.map +1 -1
- package/browser/query-builder/relation-count/RelationCountLoader.js.map +1 -1
- package/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
- package/browser/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
- package/browser/query-builder/relation-id/RelationIdLoadResult.js.map +1 -1
- package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
- package/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
- package/browser/query-builder/result/DeleteResult.js.map +1 -1
- package/browser/query-builder/result/InsertResult.js.map +1 -1
- package/browser/query-builder/result/UpdateResult.js.map +1 -1
- package/browser/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
- package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
- package/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +9 -0
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +95 -61
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
- package/browser/query-runner/BaseQueryRunner.js.map +1 -1
- package/browser/query-runner/QueryLock.js.map +1 -1
- package/browser/query-runner/QueryResult.js.map +1 -1
- package/browser/query-runner/QueryRunner.d.ts +0 -1
- package/browser/query-runner/QueryRunner.js.map +1 -1
- package/browser/repository/AbstractRepository.js.map +1 -1
- package/browser/repository/BaseEntity.js.map +1 -1
- package/browser/repository/EntityId.js.map +1 -1
- package/browser/repository/FindTreesOptions.js.map +1 -1
- package/browser/repository/MongoRepository.js.map +1 -1
- package/browser/repository/RemoveOptions.js.map +1 -1
- package/browser/repository/Repository.d.ts +2 -0
- package/browser/repository/Repository.js +2 -0
- package/browser/repository/Repository.js.map +1 -1
- package/browser/repository/SaveOptions.js.map +1 -1
- package/browser/repository/TreeRepository.js.map +1 -1
- package/browser/repository/UpsertOptions.js.map +1 -1
- package/browser/schema-builder/MongoSchemaBuilder.js.map +1 -1
- package/browser/schema-builder/RdbmsSchemaBuilder.js +1 -1
- package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/browser/schema-builder/SchemaBuilder.js.map +1 -1
- package/browser/schema-builder/options/TableCheckOptions.js.map +1 -1
- package/browser/schema-builder/options/TableColumnOptions.js.map +1 -1
- package/browser/schema-builder/options/TableExclusionOptions.js.map +1 -1
- package/browser/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
- package/browser/schema-builder/options/TableIndexOptions.js.map +1 -1
- package/browser/schema-builder/options/TableOptions.js.map +1 -1
- package/browser/schema-builder/options/TableUniqueOptions.js.map +1 -1
- package/browser/schema-builder/options/ViewOptions.js.map +1 -1
- package/browser/schema-builder/table/Table.js.map +1 -1
- package/browser/schema-builder/table/TableCheck.js.map +1 -1
- package/browser/schema-builder/table/TableColumn.js.map +1 -1
- package/browser/schema-builder/table/TableExclusion.js.map +1 -1
- package/browser/schema-builder/table/TableForeignKey.js.map +1 -1
- package/browser/schema-builder/table/TableIndex.js.map +1 -1
- package/browser/schema-builder/table/TableUnique.js.map +1 -1
- package/browser/schema-builder/util/TableUtils.js.map +1 -1
- package/browser/schema-builder/util/ViewUtils.js.map +1 -1
- package/browser/schema-builder/view/View.js.map +1 -1
- package/browser/subscriber/Broadcaster.js.map +1 -1
- package/browser/subscriber/BroadcasterResult.js.map +1 -1
- package/browser/subscriber/EntitySubscriberInterface.js.map +1 -1
- package/browser/subscriber/event/InsertEvent.js.map +1 -1
- package/browser/subscriber/event/LoadEvent.js.map +1 -1
- package/browser/subscriber/event/QueryEvent.js.map +1 -1
- package/browser/subscriber/event/RecoverEvent.js.map +1 -1
- package/browser/subscriber/event/RemoveEvent.js.map +1 -1
- package/browser/subscriber/event/SoftRemoveEvent.js.map +1 -1
- package/browser/subscriber/event/TransactionCommitEvent.js.map +1 -1
- package/browser/subscriber/event/TransactionRollbackEvent.js.map +1 -1
- package/browser/subscriber/event/TransactionStartEvent.js.map +1 -1
- package/browser/subscriber/event/UpdateEvent.js.map +1 -1
- package/browser/util/ApplyValueTransformers.js.map +1 -1
- package/browser/util/DateUtils.js.map +1 -1
- package/browser/util/DepGraph.js.map +1 -1
- package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
- package/browser/util/ImportUtils.js +22 -34
- package/browser/util/ImportUtils.js.map +1 -1
- package/browser/util/InstanceChecker.js.map +1 -1
- package/browser/util/ObjectUtils.js.map +1 -1
- package/browser/util/OrmUtils.js.map +1 -1
- package/browser/util/PathUtils.js.map +1 -1
- package/browser/util/RandomGenerator.js.map +1 -1
- package/browser/util/StringUtils.js.map +1 -1
- package/browser/util/TreeRepositoryUtils.js.map +1 -1
- package/browser/util/VersionUtils.js.map +1 -1
- package/browser/util/escapeRegExp.js.map +1 -1
- package/cache/DbQueryResultCache.js.map +1 -1
- package/cache/QueryResultCache.d.ts +4 -2
- package/cache/QueryResultCache.js.map +1 -1
- package/cache/QueryResultCacheFactory.js.map +1 -1
- package/cache/QueryResultCacheOptions.js.map +1 -1
- package/cache/RedisQueryResultCache.js.map +1 -1
- package/cli-ts-node-commonjs.js.map +1 -1
- package/cli-ts-node-esm.js.map +1 -1
- package/cli.js.map +1 -1
- package/commands/CacheClearCommand.d.ts +1 -1
- package/commands/CacheClearCommand.js +3 -3
- package/commands/CacheClearCommand.js.map +1 -1
- package/commands/CommandUtils.d.ts +1 -1
- package/commands/CommandUtils.js +18 -16
- package/commands/CommandUtils.js.map +1 -1
- package/commands/EntityCreateCommand.d.ts +1 -1
- package/commands/EntityCreateCommand.js +13 -13
- package/commands/EntityCreateCommand.js.map +1 -1
- package/commands/InitCommand.d.ts +1 -1
- package/commands/InitCommand.js +311 -311
- package/commands/InitCommand.js.map +1 -1
- package/commands/MigrationCreateCommand.d.ts +1 -1
- package/commands/MigrationCreateCommand.js +27 -27
- package/commands/MigrationCreateCommand.js.map +1 -1
- package/commands/MigrationGenerateCommand.d.ts +1 -1
- package/commands/MigrationGenerateCommand.js +48 -48
- package/commands/MigrationGenerateCommand.js.map +1 -1
- package/commands/MigrationRevertCommand.js.map +1 -1
- package/commands/MigrationRunCommand.js.map +1 -1
- package/commands/MigrationShowCommand.js.map +1 -1
- package/commands/QueryCommand.d.ts +1 -1
- package/commands/QueryCommand.js +10 -7
- package/commands/QueryCommand.js.map +1 -1
- package/commands/SchemaDropCommand.d.ts +1 -1
- package/commands/SchemaDropCommand.js +3 -3
- package/commands/SchemaDropCommand.js.map +1 -1
- package/commands/SchemaLogCommand.d.ts +1 -1
- package/commands/SchemaLogCommand.js +12 -18
- package/commands/SchemaLogCommand.js.map +1 -1
- package/commands/SchemaSyncCommand.d.ts +1 -1
- package/commands/SchemaSyncCommand.js +3 -3
- package/commands/SchemaSyncCommand.js.map +1 -1
- package/commands/SubscriberCreateCommand.d.ts +1 -1
- package/commands/SubscriberCreateCommand.js +11 -11
- package/commands/SubscriberCreateCommand.js.map +1 -1
- package/commands/VersionCommand.js.map +1 -1
- package/common/DeepPartial.js.map +1 -1
- package/common/EntityTarget.js.map +1 -1
- package/common/MixedList.js.map +1 -1
- package/common/NonNever.js.map +1 -1
- package/common/ObjectLiteral.js.map +1 -1
- package/common/ObjectType.js.map +1 -1
- package/common/PickKeysByType.js.map +1 -1
- package/common/RelationType.js.map +1 -1
- package/connection/BaseConnectionOptions.js.map +1 -1
- package/connection/Connection.js.map +1 -1
- package/connection/ConnectionManager.js.map +1 -1
- package/connection/ConnectionMetadataBuilder.js.map +1 -1
- package/connection/ConnectionOptions.js.map +1 -1
- package/connection/ConnectionOptionsReader.d.ts +4 -4
- package/connection/ConnectionOptionsReader.js.map +1 -1
- package/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
- package/container.js +2 -3
- package/container.js.map +1 -1
- package/data-source/BaseDataSourceOptions.js.map +1 -1
- package/data-source/DataSource.d.ts +2 -0
- package/data-source/DataSource.js +2 -0
- package/data-source/DataSource.js.map +1 -1
- package/data-source/DataSourceOptions.js.map +1 -1
- package/data-source/index.js.map +1 -1
- package/decorator/Check.js +1 -2
- package/decorator/Check.js.map +1 -1
- package/decorator/EntityRepository.js +1 -2
- package/decorator/EntityRepository.js.map +1 -1
- package/decorator/Exclusion.js +1 -2
- package/decorator/Exclusion.js.map +1 -1
- package/decorator/Generated.js +1 -2
- package/decorator/Generated.js.map +1 -1
- package/decorator/Index.js +1 -2
- package/decorator/Index.js.map +1 -1
- package/decorator/Unique.js +1 -2
- package/decorator/Unique.js.map +1 -1
- package/decorator/columns/Column.js +1 -2
- package/decorator/columns/Column.js.map +1 -1
- package/decorator/columns/CreateDateColumn.js +1 -2
- package/decorator/columns/CreateDateColumn.js.map +1 -1
- package/decorator/columns/DeleteDateColumn.js +1 -2
- package/decorator/columns/DeleteDateColumn.js.map +1 -1
- package/decorator/columns/ObjectIdColumn.js +1 -2
- package/decorator/columns/ObjectIdColumn.js.map +1 -1
- package/decorator/columns/PrimaryColumn.js +1 -2
- package/decorator/columns/PrimaryColumn.js.map +1 -1
- package/decorator/columns/PrimaryGeneratedColumn.js +1 -2
- package/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
- package/decorator/columns/UpdateDateColumn.js +1 -2
- package/decorator/columns/UpdateDateColumn.js.map +1 -1
- package/decorator/columns/VersionColumn.js +1 -2
- package/decorator/columns/VersionColumn.js.map +1 -1
- package/decorator/columns/ViewColumn.js +1 -2
- package/decorator/columns/ViewColumn.js.map +1 -1
- package/decorator/columns/VirtualColumn.js +1 -2
- package/decorator/columns/VirtualColumn.js.map +1 -1
- package/decorator/entity/ChildEntity.js +1 -2
- package/decorator/entity/ChildEntity.js.map +1 -1
- package/decorator/entity/Entity.js +1 -2
- package/decorator/entity/Entity.js.map +1 -1
- package/decorator/entity/TableInheritance.js +1 -2
- package/decorator/entity/TableInheritance.js.map +1 -1
- package/decorator/entity-view/ViewEntity.js +1 -2
- package/decorator/entity-view/ViewEntity.js.map +1 -1
- package/decorator/listeners/AfterInsert.js +1 -2
- package/decorator/listeners/AfterInsert.js.map +1 -1
- package/decorator/listeners/AfterLoad.js +1 -2
- package/decorator/listeners/AfterLoad.js.map +1 -1
- package/decorator/listeners/AfterRecover.js +1 -2
- package/decorator/listeners/AfterRecover.js.map +1 -1
- package/decorator/listeners/AfterRemove.js +1 -2
- package/decorator/listeners/AfterRemove.js.map +1 -1
- package/decorator/listeners/AfterSoftRemove.js +1 -2
- package/decorator/listeners/AfterSoftRemove.js.map +1 -1
- package/decorator/listeners/AfterUpdate.js +1 -2
- package/decorator/listeners/AfterUpdate.js.map +1 -1
- package/decorator/listeners/BeforeInsert.js +1 -2
- package/decorator/listeners/BeforeInsert.js.map +1 -1
- package/decorator/listeners/BeforeRecover.js +1 -2
- package/decorator/listeners/BeforeRecover.js.map +1 -1
- package/decorator/listeners/BeforeRemove.js +1 -2
- package/decorator/listeners/BeforeRemove.js.map +1 -1
- package/decorator/listeners/BeforeSoftRemove.js +1 -2
- package/decorator/listeners/BeforeSoftRemove.js.map +1 -1
- package/decorator/listeners/BeforeUpdate.js +1 -2
- package/decorator/listeners/BeforeUpdate.js.map +1 -1
- package/decorator/listeners/EventSubscriber.js +1 -2
- package/decorator/listeners/EventSubscriber.js.map +1 -1
- package/decorator/options/ColumnCommonOptions.js.map +1 -1
- package/decorator/options/ColumnEmbeddedOptions.js.map +1 -1
- package/decorator/options/ColumnEnumOptions.js.map +1 -1
- package/decorator/options/ColumnHstoreOptions.js.map +1 -1
- package/decorator/options/ColumnNumericOptions.js.map +1 -1
- package/decorator/options/ColumnOptions.js.map +1 -1
- package/decorator/options/ColumnWithLengthOptions.js.map +1 -1
- package/decorator/options/ColumnWithWidthOptions.js.map +1 -1
- package/decorator/options/EntityOptions.js.map +1 -1
- package/decorator/options/IndexOptions.js.map +1 -1
- package/decorator/options/JoinColumnOptions.js.map +1 -1
- package/decorator/options/JoinTableMultipleColumnsOptions.js.map +1 -1
- package/decorator/options/JoinTableOptions.js.map +1 -1
- package/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
- package/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
- package/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
- package/decorator/options/RelationOptions.js.map +1 -1
- package/decorator/options/SpatialColumnOptions.js.map +1 -1
- package/decorator/options/TransactionOptions.js.map +1 -1
- package/decorator/options/UniqueOptions.js.map +1 -1
- package/decorator/options/ValueTransformer.js.map +1 -1
- package/decorator/options/ViewColumnOptions.js.map +1 -1
- package/decorator/options/ViewEntityOptions.js.map +1 -1
- package/decorator/options/VirtualColumnOptions.js.map +1 -1
- package/decorator/relations/JoinColumn.js +1 -2
- package/decorator/relations/JoinColumn.js.map +1 -1
- package/decorator/relations/JoinTable.js +1 -2
- package/decorator/relations/JoinTable.js.map +1 -1
- package/decorator/relations/ManyToMany.js +1 -2
- package/decorator/relations/ManyToMany.js.map +1 -1
- package/decorator/relations/ManyToOne.js +1 -2
- package/decorator/relations/ManyToOne.js.map +1 -1
- package/decorator/relations/OneToMany.js +1 -2
- package/decorator/relations/OneToMany.js.map +1 -1
- package/decorator/relations/OneToOne.d.ts +4 -4
- package/decorator/relations/OneToOne.js +3 -4
- package/decorator/relations/OneToOne.js.map +1 -1
- package/decorator/relations/RelationCount.js +1 -2
- package/decorator/relations/RelationCount.js.map +1 -1
- package/decorator/relations/RelationId.js +1 -2
- package/decorator/relations/RelationId.js.map +1 -1
- package/decorator/tree/Tree.js +1 -2
- package/decorator/tree/Tree.js.map +1 -1
- package/decorator/tree/TreeChildren.js +1 -2
- package/decorator/tree/TreeChildren.js.map +1 -1
- package/decorator/tree/TreeLevelColumn.js +1 -2
- package/decorator/tree/TreeLevelColumn.js.map +1 -1
- package/decorator/tree/TreeParent.js +1 -2
- package/decorator/tree/TreeParent.js.map +1 -1
- package/driver/Driver.js.map +1 -1
- package/driver/DriverFactory.js.map +1 -1
- package/driver/DriverUtils.js.map +1 -1
- package/driver/Query.js.map +1 -1
- package/driver/SqlInMemory.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlConnection.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.d.ts +1 -1
- package/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlConnectionOptions.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +0 -1
- package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
- package/driver/aurora-postgres/AuroraPostgresConnectionOptions.js.map +1 -1
- package/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
- package/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
- package/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
- package/driver/better-sqlite3/BetterSqlite3Driver.js +2 -2
- package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +4 -0
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
- package/driver/capacitor/CapacitorConnectionOptions.js.map +1 -1
- package/driver/capacitor/CapacitorDriver.js.map +1 -1
- package/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
- package/driver/cockroachdb/CockroachConnectionCredentialsOptions.d.ts +1 -2
- package/driver/cockroachdb/CockroachConnectionCredentialsOptions.js.map +1 -1
- package/driver/cockroachdb/CockroachConnectionOptions.d.ts +1 -1
- package/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
- package/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.d.ts +0 -1
- package/driver/cockroachdb/CockroachQueryRunner.js +5 -3
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/cordova/CordovaConnectionOptions.js.map +1 -1
- package/driver/cordova/CordovaDriver.js.map +1 -1
- package/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/driver/expo/ExpoConnectionOptions.js.map +1 -1
- package/driver/expo/ExpoDriver.js.map +1 -1
- package/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/driver/mongodb/MongoConnectionOptions.d.ts +1 -2
- package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
- package/driver/mongodb/MongoDriver.js.map +1 -1
- package/driver/mongodb/MongoQueryRunner.d.ts +0 -1
- package/driver/mongodb/MongoQueryRunner.js.map +1 -1
- package/driver/mongodb/bson.typings.js.map +1 -1
- package/driver/mongodb/typings.d.ts +0 -8
- package/driver/mongodb/typings.js +0 -1
- package/driver/mongodb/typings.js.map +1 -1
- package/driver/mysql/MysqlConnectionCredentialsOptions.d.ts +1 -1
- package/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
- package/driver/mysql/MysqlConnectionOptions.d.ts +1 -1
- package/driver/mysql/MysqlConnectionOptions.js.map +1 -1
- package/driver/mysql/MysqlDriver.js.map +1 -1
- package/driver/mysql/MysqlQueryRunner.d.ts +0 -1
- package/driver/mysql/MysqlQueryRunner.js +71 -71
- package/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/driver/nativescript/NativescriptConnectionOptions.js.map +1 -1
- package/driver/nativescript/NativescriptDriver.js.map +1 -1
- package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/driver/oracle/OracleConnectionCredentialsOptions.d.ts +1 -1
- package/driver/oracle/OracleConnectionCredentialsOptions.js.map +1 -1
- package/driver/oracle/OracleConnectionOptions.d.ts +1 -1
- package/driver/oracle/OracleConnectionOptions.js.map +1 -1
- package/driver/oracle/OracleDriver.js.map +1 -1
- package/driver/oracle/OracleQueryRunner.d.ts +0 -1
- package/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/driver/postgres/PostgresConnectionCredentialsOptions.d.ts +1 -2
- package/driver/postgres/PostgresConnectionCredentialsOptions.js.map +1 -1
- package/driver/postgres/PostgresConnectionOptions.d.ts +1 -1
- package/driver/postgres/PostgresConnectionOptions.js.map +1 -1
- package/driver/postgres/PostgresDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.d.ts +0 -1
- package/driver/postgres/PostgresQueryRunner.js +5 -1
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
- package/driver/react-native/ReactNativeDriver.js.map +1 -1
- package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/driver/sap/SapConnectionCredentialsOptions.js.map +1 -1
- package/driver/sap/SapConnectionOptions.js.map +1 -1
- package/driver/sap/SapDriver.js.map +1 -1
- package/driver/sap/SapQueryRunner.d.ts +0 -1
- package/driver/sap/SapQueryRunner.js.map +1 -1
- package/driver/spanner/SpannerConnectionCredentialsOptions.d.ts +1 -1
- package/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -1
- package/driver/spanner/SpannerConnectionOptions.d.ts +1 -1
- package/driver/spanner/SpannerConnectionOptions.js.map +1 -1
- package/driver/spanner/SpannerDriver.js.map +1 -1
- package/driver/spanner/SpannerQueryRunner.d.ts +0 -1
- package/driver/spanner/SpannerQueryRunner.js.map +1 -1
- package/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
- package/driver/sqlite/SqliteDriver.js +2 -2
- package/driver/sqlite/SqliteDriver.js.map +1 -1
- package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +0 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/driver/sqljs/SqljsConnectionOptions.js.map +1 -1
- package/driver/sqljs/SqljsDriver.js.map +1 -1
- package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
- package/driver/sqlserver/MssqlParameter.js.map +1 -1
- package/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +1 -1
- package/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
- package/driver/sqlserver/SqlServerConnectionOptions.d.ts +1 -1
- package/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
- package/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/driver/sqlserver/SqlServerQueryRunner.d.ts +0 -1
- package/driver/sqlserver/SqlServerQueryRunner.js +26 -26
- package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
- package/driver/sqlserver/authentication/AzureActiveDirectoryDefaultAuthentication.js.map +1 -1
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
- package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
- package/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js.map +1 -1
- package/driver/sqlserver/authentication/DefaultAuthentication.js.map +1 -1
- package/driver/sqlserver/authentication/NtlmAuthentication.js.map +1 -1
- package/driver/types/ColumnTypes.js.map +1 -1
- package/driver/types/CteCapabilities.js.map +1 -1
- package/driver/types/DataTypeDefaults.js.map +1 -1
- package/driver/types/DatabaseType.js.map +1 -1
- package/driver/types/GeoJsonTypes.js.map +1 -1
- package/driver/types/IsolationLevel.js.map +1 -1
- package/driver/types/MappedColumnTypes.js.map +1 -1
- package/driver/types/MetadataTableType.js.map +1 -1
- package/driver/types/ReplicationMode.js.map +1 -1
- package/driver/types/UpsertType.js.map +1 -1
- package/entity-manager/EntityManager.d.ts +2 -0
- package/entity-manager/EntityManager.js +4 -2
- package/entity-manager/EntityManager.js.map +1 -1
- package/entity-manager/EntityManagerFactory.js.map +1 -1
- package/entity-manager/MongoEntityManager.js.map +1 -1
- package/entity-manager/SqljsEntityManager.js.map +1 -1
- package/entity-schema/EntitySchema.js.map +1 -1
- package/entity-schema/EntitySchemaCheckOptions.js.map +1 -1
- package/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
- package/entity-schema/EntitySchemaEmbeddedColumnOptions.js.map +1 -1
- package/entity-schema/EntitySchemaEmbeddedError.js.map +1 -1
- package/entity-schema/EntitySchemaExclusionOptions.js.map +1 -1
- package/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
- package/entity-schema/EntitySchemaInheritanceOptions.js.map +1 -1
- package/entity-schema/EntitySchemaOptions.js.map +1 -1
- package/entity-schema/EntitySchemaRelationIdOptions.js.map +1 -1
- package/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
- package/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
- package/error/AlreadyHasActiveConnectionError.js.map +1 -1
- package/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
- package/error/CannotConnectAlreadyConnectedError.js.map +1 -1
- package/error/CannotCreateEntityIdMapError.js.map +1 -1
- package/error/CannotDetermineEntityError.js.map +1 -1
- package/error/CannotExecuteNotConnectedError.js.map +1 -1
- package/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
- package/error/CannotReflectMethodParameterTypeError.js.map +1 -1
- package/error/CircularRelationsError.js.map +1 -1
- package/error/ColumnTypeUndefinedError.js.map +1 -1
- package/error/ConnectionIsNotSetError.js.map +1 -1
- package/error/ConnectionNotFoundError.js.map +1 -1
- package/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
- package/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
- package/error/CustomRepositoryNotFoundError.js.map +1 -1
- package/error/DataTypeNotSupportedError.js.map +1 -1
- package/error/DriverOptionNotSetError.js.map +1 -1
- package/error/DriverPackageNotInstalledError.js.map +1 -1
- package/error/EntityMetadataNotFoundError.js.map +1 -1
- package/error/EntityNotFoundError.js.map +1 -1
- package/error/EntityPropertyNotFoundError.js.map +1 -1
- package/error/FindRelationsNotFoundError.js.map +1 -1
- package/error/ForbiddenTransactionModeOverrideError.js.map +1 -1
- package/error/InitializedRelationError.js.map +1 -1
- package/error/InsertValuesMissingError.js.map +1 -1
- package/error/LimitOnUpdateNotSupportedError.js.map +1 -1
- package/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
- package/error/MetadataAlreadyExistsError.js.map +1 -1
- package/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
- package/error/MissingDeleteDateColumnError.js.map +1 -1
- package/error/MissingDriverError.js.map +1 -1
- package/error/MissingJoinColumnError.js.map +1 -1
- package/error/MissingJoinTableError.js.map +1 -1
- package/error/MissingPrimaryColumnError.js.map +1 -1
- package/error/MustBeEntityError.js.map +1 -1
- package/error/NamingStrategyNotFoundError.js.map +1 -1
- package/error/NestedSetMultipleRootError.js.map +1 -1
- package/error/NoConnectionForRepositoryError.js.map +1 -1
- package/error/NoConnectionOptionError.js.map +1 -1
- package/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
- package/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
- package/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
- package/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
- package/error/OptimisticLockVersionMismatchError.js.map +1 -1
- package/error/PersistedEntityNotFoundError.js.map +1 -1
- package/error/PessimisticLockTransactionRequiredError.js.map +1 -1
- package/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
- package/error/QueryFailedError.js.map +1 -1
- package/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
- package/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
- package/error/RepositoryNotTreeError.js.map +1 -1
- package/error/ReturningStatementNotSupportedError.js.map +1 -1
- package/error/SubjectRemovedAndUpdatedError.js.map +1 -1
- package/error/SubjectWithoutIdentifierError.js.map +1 -1
- package/error/TransactionAlreadyStartedError.js.map +1 -1
- package/error/TransactionNotStartedError.js.map +1 -1
- package/error/TreeRepositoryNotSupportedError.js.map +1 -1
- package/error/TypeORMError.js.map +1 -1
- package/error/UpdateValuesMissingError.js.map +1 -1
- package/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
- package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
- package/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
- package/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
- package/error/index.js.map +1 -1
- package/find-options/EqualOperator.js.map +1 -1
- package/find-options/FindManyOptions.js.map +1 -1
- package/find-options/FindOneOptions.js.map +1 -1
- package/find-options/FindOperator.js.map +1 -1
- package/find-options/FindOperatorType.js.map +1 -1
- package/find-options/FindOptionsOrder.d.ts +0 -1
- package/find-options/FindOptionsOrder.js.map +1 -1
- package/find-options/FindOptionsRelations.d.ts +0 -1
- package/find-options/FindOptionsRelations.js.map +1 -1
- package/find-options/FindOptionsSelect.d.ts +0 -1
- package/find-options/FindOptionsSelect.js.map +1 -1
- package/find-options/FindOptionsUtils.js.map +1 -1
- package/find-options/FindOptionsWhere.d.ts +0 -1
- package/find-options/FindOptionsWhere.js.map +1 -1
- package/find-options/FindTreeOptions.js.map +1 -1
- package/find-options/JoinOptions.js.map +1 -1
- package/find-options/OrderByCondition.js.map +1 -1
- package/find-options/mongodb/MongoFindManyOptions.js.map +1 -1
- package/find-options/mongodb/MongoFindOneOptions.js.map +1 -1
- package/find-options/operator/And.js +1 -2
- package/find-options/operator/And.js.map +1 -1
- package/find-options/operator/Any.js +1 -2
- package/find-options/operator/Any.js.map +1 -1
- package/find-options/operator/ArrayContainedBy.js +1 -2
- package/find-options/operator/ArrayContainedBy.js.map +1 -1
- package/find-options/operator/ArrayContains.js +1 -2
- package/find-options/operator/ArrayContains.js.map +1 -1
- package/find-options/operator/ArrayOverlap.js +1 -2
- package/find-options/operator/ArrayOverlap.js.map +1 -1
- package/find-options/operator/Between.js +1 -2
- package/find-options/operator/Between.js.map +1 -1
- package/find-options/operator/Equal.js +1 -2
- package/find-options/operator/Equal.js.map +1 -1
- package/find-options/operator/ILike.js +1 -2
- package/find-options/operator/ILike.js.map +1 -1
- package/find-options/operator/In.js +1 -2
- package/find-options/operator/In.js.map +1 -1
- package/find-options/operator/IsNull.js +1 -2
- package/find-options/operator/IsNull.js.map +1 -1
- package/find-options/operator/JsonContains.js +1 -2
- package/find-options/operator/JsonContains.js.map +1 -1
- package/find-options/operator/LessThan.js +1 -2
- package/find-options/operator/LessThan.js.map +1 -1
- package/find-options/operator/LessThanOrEqual.js +1 -2
- package/find-options/operator/LessThanOrEqual.js.map +1 -1
- package/find-options/operator/Like.js +1 -2
- package/find-options/operator/Like.js.map +1 -1
- package/find-options/operator/MoreThan.js +1 -2
- package/find-options/operator/MoreThan.js.map +1 -1
- package/find-options/operator/MoreThanOrEqual.js +1 -2
- package/find-options/operator/MoreThanOrEqual.js.map +1 -1
- package/find-options/operator/Not.js +1 -2
- package/find-options/operator/Not.js.map +1 -1
- package/find-options/operator/Or.js +1 -2
- package/find-options/operator/Or.js.map +1 -1
- package/find-options/operator/Raw.js +1 -2
- package/find-options/operator/Raw.js.map +1 -1
- package/globals.js +14 -15
- package/globals.js.map +1 -1
- package/index.js.map +1 -1
- package/logger/AbstractLogger.js.map +1 -1
- package/logger/AdvancedConsoleLogger.js.map +1 -1
- package/logger/DebugLogger.js.map +1 -1
- package/logger/FileLogger.js.map +1 -1
- package/logger/Logger.js.map +1 -1
- package/logger/LoggerFactory.js.map +1 -1
- package/logger/LoggerOptions.js.map +1 -1
- package/logger/SimpleConsoleLogger.js.map +1 -1
- package/metadata/CheckMetadata.js.map +1 -1
- package/metadata/ColumnMetadata.js.map +1 -1
- package/metadata/EmbeddedMetadata.js.map +1 -1
- package/metadata/EntityListenerMetadata.js.map +1 -1
- package/metadata/EntityMetadata.js.map +1 -1
- package/metadata/ExclusionMetadata.js.map +1 -1
- package/metadata/ForeignKeyMetadata.js.map +1 -1
- package/metadata/IndexMetadata.js.map +1 -1
- package/metadata/RelationCountMetadata.js.map +1 -1
- package/metadata/RelationIdMetadata.js.map +1 -1
- package/metadata/RelationMetadata.js.map +1 -1
- package/metadata/UniqueMetadata.js.map +1 -1
- package/metadata/types/ClosureTreeOptions.js.map +1 -1
- package/metadata/types/DeferrableType.js.map +1 -1
- package/metadata/types/EventListenerTypes.js.map +1 -1
- package/metadata/types/OnDeleteType.js.map +1 -1
- package/metadata/types/OnUpdateType.js.map +1 -1
- package/metadata/types/PropertyTypeInFunction.js.map +1 -1
- package/metadata/types/RelationTypeInFunction.js.map +1 -1
- package/metadata/types/RelationTypes.js.map +1 -1
- package/metadata/types/TableTypes.js.map +1 -1
- package/metadata/types/TreeTypes.js.map +1 -1
- package/metadata-args/CheckMetadataArgs.js.map +1 -1
- package/metadata-args/ColumnMetadataArgs.js.map +1 -1
- package/metadata-args/DiscriminatorValueMetadataArgs.js.map +1 -1
- package/metadata-args/EmbeddedMetadataArgs.js.map +1 -1
- package/metadata-args/EntityListenerMetadataArgs.js.map +1 -1
- package/metadata-args/EntityRepositoryMetadataArgs.js.map +1 -1
- package/metadata-args/EntitySubscriberMetadataArgs.js.map +1 -1
- package/metadata-args/ExclusionMetadataArgs.js.map +1 -1
- package/metadata-args/GeneratedMetadataArgs.js.map +1 -1
- package/metadata-args/IndexMetadataArgs.js.map +1 -1
- package/metadata-args/InheritanceMetadataArgs.js.map +1 -1
- package/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
- package/metadata-args/JoinTableMetadataArgs.js.map +1 -1
- package/metadata-args/MetadataArgsStorage.js.map +1 -1
- package/metadata-args/NamingStrategyMetadataArgs.js.map +1 -1
- package/metadata-args/RelationCountMetadataArgs.js.map +1 -1
- package/metadata-args/RelationIdMetadataArgs.js.map +1 -1
- package/metadata-args/RelationMetadataArgs.js.map +1 -1
- package/metadata-args/TableMetadataArgs.js.map +1 -1
- package/metadata-args/TransactionEntityMetadataArgs.js.map +1 -1
- package/metadata-args/TransactionRepositoryMetadataArgs.js.map +1 -1
- package/metadata-args/TreeMetadataArgs.js.map +1 -1
- package/metadata-args/UniqueMetadataArgs.js.map +1 -1
- package/metadata-args/types/ColumnMode.js.map +1 -1
- package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/MetadataUtils.js.map +1 -1
- package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/migration/Migration.js.map +1 -1
- package/migration/MigrationExecutor.js.map +1 -1
- package/migration/MigrationInterface.js.map +1 -1
- package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
- package/naming-strategy/LegacyOracleNamingStrategy.js.map +1 -1
- package/naming-strategy/NamingStrategyInterface.js.map +1 -1
- package/package.json +260 -1
- package/persistence/EntityPersistExecutor.js.map +1 -1
- package/persistence/Subject.js.map +1 -1
- package/persistence/SubjectChangeMap.js.map +1 -1
- package/persistence/SubjectChangedColumnsComputer.js.map +1 -1
- package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/persistence/SubjectExecutor.js +3 -3
- package/persistence/SubjectExecutor.js.map +1 -1
- package/persistence/{SubjectTopoligicalSorter.d.ts → SubjectTopologicalSorter.d.ts} +1 -1
- package/persistence/{SubjectTopoligicalSorter.js → SubjectTopologicalSorter.js} +4 -4
- package/persistence/SubjectTopologicalSorter.js.map +1 -0
- package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
- package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
- package/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
- package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
- package/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
- package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
- package/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
- package/platform/PlatformTools.d.ts +2 -10
- package/platform/PlatformTools.js +37 -45
- package/platform/PlatformTools.js.map +1 -1
- package/query-builder/Alias.js.map +1 -1
- package/query-builder/Brackets.js.map +1 -1
- package/query-builder/DeleteQueryBuilder.js.map +1 -1
- package/query-builder/InsertOrUpdateOptions.js.map +1 -1
- package/query-builder/InsertQueryBuilder.js.map +1 -1
- package/query-builder/JoinAttribute.js.map +1 -1
- package/query-builder/JoinOptions.js.map +1 -1
- package/query-builder/NotBrackets.js.map +1 -1
- package/query-builder/QueryBuilder.js +2 -3
- package/query-builder/QueryBuilder.js.map +1 -1
- package/query-builder/QueryBuilderCte.js.map +1 -1
- package/query-builder/QueryBuilderUtils.js.map +1 -1
- package/query-builder/QueryExpressionMap.js.map +1 -1
- package/query-builder/QueryPartialEntity.js.map +1 -1
- package/query-builder/RelationIdLoader.js.map +1 -1
- package/query-builder/RelationLoader.js.map +1 -1
- package/query-builder/RelationQueryBuilder.js.map +1 -1
- package/query-builder/RelationRemover.js.map +1 -1
- package/query-builder/RelationUpdater.js.map +1 -1
- package/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
- package/query-builder/SelectQuery.js.map +1 -1
- package/query-builder/SelectQueryBuilder.d.ts +0 -1
- package/query-builder/SelectQueryBuilder.js.map +1 -1
- package/query-builder/SelectQueryBuilderOption.js.map +1 -1
- package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/query-builder/WhereClause.js.map +1 -1
- package/query-builder/WhereExpressionBuilder.js.map +1 -1
- package/query-builder/index.js +1 -2
- package/query-builder/index.js.map +1 -1
- package/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
- package/query-builder/relation-count/RelationCountLoadResult.js.map +1 -1
- package/query-builder/relation-count/RelationCountLoader.js.map +1 -1
- package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
- package/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
- package/query-builder/relation-id/RelationIdLoadResult.js.map +1 -1
- package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
- package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
- package/query-builder/result/DeleteResult.js.map +1 -1
- package/query-builder/result/InsertResult.js.map +1 -1
- package/query-builder/result/UpdateResult.js.map +1 -1
- package/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
- package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
- package/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +9 -0
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +95 -61
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
- package/query-runner/BaseQueryRunner.js.map +1 -1
- package/query-runner/QueryLock.js.map +1 -1
- package/query-runner/QueryResult.js.map +1 -1
- package/query-runner/QueryRunner.d.ts +0 -1
- package/query-runner/QueryRunner.js.map +1 -1
- package/repository/AbstractRepository.js.map +1 -1
- package/repository/BaseEntity.js.map +1 -1
- package/repository/EntityId.js.map +1 -1
- package/repository/FindTreesOptions.js.map +1 -1
- package/repository/MongoRepository.js.map +1 -1
- package/repository/RemoveOptions.js.map +1 -1
- package/repository/Repository.d.ts +2 -0
- package/repository/Repository.js +2 -0
- package/repository/Repository.js.map +1 -1
- package/repository/SaveOptions.js.map +1 -1
- package/repository/TreeRepository.js.map +1 -1
- package/repository/UpsertOptions.js.map +1 -1
- package/schema-builder/MongoSchemaBuilder.js.map +1 -1
- package/schema-builder/RdbmsSchemaBuilder.js +1 -1
- package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/schema-builder/SchemaBuilder.js.map +1 -1
- package/schema-builder/options/TableCheckOptions.js.map +1 -1
- package/schema-builder/options/TableColumnOptions.js.map +1 -1
- package/schema-builder/options/TableExclusionOptions.js.map +1 -1
- package/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
- package/schema-builder/options/TableIndexOptions.js.map +1 -1
- package/schema-builder/options/TableOptions.js.map +1 -1
- package/schema-builder/options/TableUniqueOptions.js.map +1 -1
- package/schema-builder/options/ViewOptions.js.map +1 -1
- package/schema-builder/table/Table.js.map +1 -1
- package/schema-builder/table/TableCheck.js.map +1 -1
- package/schema-builder/table/TableColumn.js.map +1 -1
- package/schema-builder/table/TableExclusion.js.map +1 -1
- package/schema-builder/table/TableForeignKey.js.map +1 -1
- package/schema-builder/table/TableIndex.js.map +1 -1
- package/schema-builder/table/TableUnique.js.map +1 -1
- package/schema-builder/util/TableUtils.js.map +1 -1
- package/schema-builder/util/ViewUtils.js.map +1 -1
- package/schema-builder/view/View.js.map +1 -1
- package/subscriber/Broadcaster.js.map +1 -1
- package/subscriber/BroadcasterResult.js.map +1 -1
- package/subscriber/EntitySubscriberInterface.js.map +1 -1
- package/subscriber/event/InsertEvent.js.map +1 -1
- package/subscriber/event/LoadEvent.js.map +1 -1
- package/subscriber/event/QueryEvent.js.map +1 -1
- package/subscriber/event/RecoverEvent.js.map +1 -1
- package/subscriber/event/RemoveEvent.js.map +1 -1
- package/subscriber/event/SoftRemoveEvent.js.map +1 -1
- package/subscriber/event/TransactionCommitEvent.js.map +1 -1
- package/subscriber/event/TransactionRollbackEvent.js.map +1 -1
- package/subscriber/event/TransactionStartEvent.js.map +1 -1
- package/subscriber/event/UpdateEvent.js.map +1 -1
- package/typeorm-class-transformer-shim.js +271 -271
- package/typeorm-model-shim.js +295 -295
- package/util/ApplyValueTransformers.js.map +1 -1
- package/util/DateUtils.js.map +1 -1
- package/util/DepGraph.js.map +1 -1
- package/util/DirectoryExportedClassesLoader.js +2 -3
- package/util/DirectoryExportedClassesLoader.js.map +1 -1
- package/util/ImportUtils.js +23 -36
- package/util/ImportUtils.js.map +1 -1
- package/util/InstanceChecker.js.map +1 -1
- package/util/ObjectUtils.js.map +1 -1
- package/util/OrmUtils.js.map +1 -1
- package/util/PathUtils.js +3 -4
- package/util/PathUtils.js.map +1 -1
- package/util/RandomGenerator.js.map +1 -1
- package/util/StringUtils.js +6 -7
- package/util/StringUtils.js.map +1 -1
- package/util/TreeRepositoryUtils.js.map +1 -1
- package/util/VersionUtils.js.map +1 -1
- package/util/escapeRegExp.js.map +1 -1
- package/browser/persistence/SubjectTopoligicalSorter.js.map +0 -1
- package/persistence/SubjectTopoligicalSorter.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/driver/oracle/OracleQueryRunner.ts"],"names":[],"mappings":"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","file":"OracleQueryRunner.js","sourcesContent":["import { QueryRunner } from \"../../query-runner/QueryRunner\"\nimport { ObjectLiteral } from \"../../common/ObjectLiteral\"\nimport { TransactionNotStartedError } from \"../../error/TransactionNotStartedError\"\nimport { TableColumn } from \"../../schema-builder/table/TableColumn\"\nimport { Table } from \"../../schema-builder/table/Table\"\nimport { TableForeignKey } from \"../../schema-builder/table/TableForeignKey\"\nimport { TableIndex } from \"../../schema-builder/table/TableIndex\"\nimport { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\"\nimport { View } from \"../../schema-builder/view/View\"\nimport { Query } from \"../Query\"\nimport { OracleDriver } from \"./OracleDriver\"\nimport { ReadStream } from \"../../platform/PlatformTools\"\nimport { QueryFailedError } from \"../../error/QueryFailedError\"\nimport { TableUnique } from \"../../schema-builder/table/TableUnique\"\nimport { Broadcaster } from \"../../subscriber/Broadcaster\"\nimport { BaseQueryRunner } from \"../../query-runner/BaseQueryRunner\"\nimport { OrmUtils } from \"../../util/OrmUtils\"\nimport { TableCheck } from \"../../schema-builder/table/TableCheck\"\nimport { ColumnType } from \"../types/ColumnTypes\"\nimport { IsolationLevel } from \"../types/IsolationLevel\"\nimport { TableExclusion } from \"../../schema-builder/table/TableExclusion\"\nimport { ReplicationMode } from \"../types/ReplicationMode\"\nimport { TypeORMError } from \"../../error\"\nimport { QueryResult } from \"../../query-runner/QueryResult\"\nimport { MetadataTableType } from \"../types/MetadataTableType\"\nimport { InstanceChecker } from \"../../util/InstanceChecker\"\nimport { BroadcasterResult } from \"../../subscriber/BroadcasterResult\"\n\n/**\n * Runs queries on a single oracle database connection.\n */\nexport class OracleQueryRunner extends BaseQueryRunner implements QueryRunner {\n // -------------------------------------------------------------------------\n // Public Implemented Properties\n // -------------------------------------------------------------------------\n\n /**\n * Database driver used by connection.\n */\n driver: OracleDriver\n\n // -------------------------------------------------------------------------\n // Protected Properties\n // -------------------------------------------------------------------------\n\n /**\n * Promise used to obtain a database connection for a first time.\n */\n protected databaseConnectionPromise: Promise<any>\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(driver: OracleDriver, mode: ReplicationMode) {\n super()\n this.driver = driver\n this.connection = driver.connection\n this.broadcaster = new Broadcaster(this)\n this.mode = mode\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates/uses database connection from the connection pool to perform further operations.\n * Returns obtained database connection.\n */\n connect(): Promise<any> {\n if (this.databaseConnection)\n return Promise.resolve(this.databaseConnection)\n\n if (this.databaseConnectionPromise)\n return this.databaseConnectionPromise\n\n if (this.mode === \"slave\" && this.driver.isReplicated) {\n this.databaseConnectionPromise = this.driver\n .obtainSlaveConnection()\n .then((connection) => {\n this.databaseConnection = connection\n return this.databaseConnection\n })\n } else {\n // master\n this.databaseConnectionPromise = this.driver\n .obtainMasterConnection()\n .then((connection) => {\n this.databaseConnection = connection\n return this.databaseConnection\n })\n }\n\n return this.databaseConnectionPromise\n }\n\n /**\n * Releases used database connection.\n * You cannot use query runner methods once its released.\n */\n async release(): Promise<void> {\n this.isReleased = true\n\n if (!this.databaseConnection) {\n return\n }\n\n await this.databaseConnection.close()\n }\n\n /**\n * Starts transaction.\n */\n async startTransaction(\n isolationLevel: IsolationLevel = \"READ COMMITTED\",\n ): Promise<void> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n\n // await this.query(\"START TRANSACTION\");\n if (\n isolationLevel !== \"SERIALIZABLE\" &&\n isolationLevel !== \"READ COMMITTED\"\n ) {\n throw new TypeORMError(\n `Oracle only supports SERIALIZABLE and READ COMMITTED isolation`,\n )\n }\n\n this.isTransactionActive = true\n try {\n await this.broadcaster.broadcast(\"BeforeTransactionStart\")\n } catch (err) {\n this.isTransactionActive = false\n throw err\n }\n\n if (this.transactionDepth === 0) {\n this.transactionDepth += 1\n await this.query(\n \"SET TRANSACTION ISOLATION LEVEL \" + isolationLevel,\n )\n } else {\n this.transactionDepth += 1\n await this.query(`SAVEPOINT typeorm_${this.transactionDepth - 1}`)\n }\n\n await this.broadcaster.broadcast(\"AfterTransactionStart\")\n }\n\n /**\n * Commits transaction.\n * Error will be thrown if transaction was not started.\n */\n async commitTransaction(): Promise<void> {\n if (!this.isTransactionActive) throw new TransactionNotStartedError()\n\n await this.broadcaster.broadcast(\"BeforeTransactionCommit\")\n\n if (this.transactionDepth === 1) {\n await this.query(\"COMMIT\")\n this.isTransactionActive = false\n }\n this.transactionDepth -= 1\n\n await this.broadcaster.broadcast(\"AfterTransactionCommit\")\n }\n\n /**\n * Rollbacks transaction.\n * Error will be thrown if transaction was not started.\n */\n async rollbackTransaction(): Promise<void> {\n if (!this.isTransactionActive) throw new TransactionNotStartedError()\n\n await this.broadcaster.broadcast(\"BeforeTransactionRollback\")\n\n if (this.transactionDepth > 1) {\n this.transactionDepth -= 1\n await this.query(\n `ROLLBACK TO SAVEPOINT typeorm_${this.transactionDepth}`,\n )\n } else {\n this.transactionDepth -= 1\n await this.query(\"ROLLBACK\")\n this.isTransactionActive = false\n }\n\n await this.broadcaster.broadcast(\"AfterTransactionRollback\")\n }\n\n /**\n * Executes a given SQL query.\n */\n async query(\n query: string,\n parameters?: any[],\n useStructuredResult = false,\n ): Promise<any> {\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\n\n const databaseConnection = await this.connect()\n const broadcasterResult = new BroadcasterResult()\n\n this.driver.connection.logger.logQuery(query, parameters, this)\n this.broadcaster.broadcastBeforeQueryEvent(\n broadcasterResult,\n query,\n parameters,\n )\n\n const queryStartTime = +new Date()\n\n try {\n const executionOptions = {\n autoCommit: !this.isTransactionActive,\n outFormat: this.driver.oracle.OUT_FORMAT_OBJECT,\n }\n\n const raw = await databaseConnection.execute(\n query,\n parameters || {},\n executionOptions,\n )\n\n // log slow queries if maxQueryExecution time is set\n const maxQueryExecutionTime =\n this.driver.options.maxQueryExecutionTime\n const queryEndTime = +new Date()\n const queryExecutionTime = queryEndTime - queryStartTime\n\n this.broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n true,\n queryExecutionTime,\n raw,\n undefined,\n )\n\n if (\n maxQueryExecutionTime &&\n queryExecutionTime > maxQueryExecutionTime\n )\n this.driver.connection.logger.logQuerySlow(\n queryExecutionTime,\n query,\n parameters,\n this,\n )\n\n const result = new QueryResult()\n\n result.raw =\n raw.rows ||\n raw.outBinds ||\n raw.rowsAffected ||\n raw.implicitResults\n\n if (raw?.hasOwnProperty(\"rows\") && Array.isArray(raw.rows)) {\n result.records = raw.rows\n }\n\n if (\n raw?.hasOwnProperty(\"outBinds\") &&\n Array.isArray(raw.outBinds)\n ) {\n result.records = raw.outBinds\n }\n\n if (\n raw?.hasOwnProperty(\"implicitResults\") &&\n Array.isArray(raw.implicitResults)\n ) {\n result.records = raw.implicitResults\n }\n\n if (raw?.hasOwnProperty(\"rowsAffected\")) {\n result.affected = raw.rowsAffected\n }\n\n if (useStructuredResult) {\n return result\n } else {\n return result.raw\n }\n } catch (err) {\n this.driver.connection.logger.logQueryError(\n err,\n query,\n parameters,\n this,\n )\n this.broadcaster.broadcastAfterQueryEvent(\n broadcasterResult,\n query,\n parameters,\n false,\n undefined,\n undefined,\n err,\n )\n\n throw new QueryFailedError(query, parameters, err)\n } finally {\n await broadcasterResult.wait()\n }\n }\n\n /**\n * Returns raw data stream.\n */\n async stream(\n query: string,\n parameters?: any[],\n onEnd?: Function,\n onError?: Function,\n ): Promise<ReadStream> {\n if (this.isReleased) {\n throw new QueryRunnerAlreadyReleasedError()\n }\n\n const executionOptions = {\n autoCommit: !this.isTransactionActive,\n outFormat: this.driver.oracle.OUT_FORMAT_OBJECT,\n }\n\n const databaseConnection = await this.connect()\n\n this.driver.connection.logger.logQuery(query, parameters, this)\n\n try {\n const stream = databaseConnection.queryStream(\n query,\n parameters,\n executionOptions,\n )\n if (onEnd) {\n stream.on(\"end\", onEnd)\n }\n\n if (onError) {\n stream.on(\"error\", onError)\n }\n\n return stream\n } catch (err) {\n this.driver.connection.logger.logQueryError(\n err,\n query,\n parameters,\n this,\n )\n throw new QueryFailedError(query, parameters, err)\n }\n }\n\n /**\n * Returns all available database names including system databases.\n */\n async getDatabases(): Promise<string[]> {\n return Promise.resolve([])\n }\n\n /**\n * Returns all available schema names including system schemas.\n * If database parameter specified, returns schemas of that database.\n */\n async getSchemas(database?: string): Promise<string[]> {\n return Promise.resolve([])\n }\n\n /**\n * Checks if database with the given name exist.\n */\n async hasDatabase(database: string): Promise<boolean> {\n try {\n const query = await this.query(\n `SELECT 1 AS \"exists\" FROM global_name@\"${database}\"`,\n )\n\n return query.length > 0\n } catch (e) {\n return false\n }\n }\n\n /**\n * Loads currently using database\n */\n async getCurrentDatabase(): Promise<undefined> {\n const query = await this.query(\n `SELECT SYS_CONTEXT('USERENV','DB_NAME') AS \"db_name\" FROM dual`,\n )\n return query[0][\"db_name\"]\n }\n\n /**\n * Checks if schema with the given name exist.\n */\n async hasSchema(schema: string): Promise<boolean> {\n return Promise.resolve(false)\n }\n\n /**\n * Loads currently using database schema\n */\n async getCurrentSchema(): Promise<string> {\n const query = await this.query(\n `SELECT SYS_CONTEXT('USERENV','CURRENT_SCHEMA') AS \"schema_name\" FROM dual`,\n )\n return query[0][\"schema_name\"]\n }\n\n /**\n * Checks if table with the given name exist in the database.\n */\n async hasTable(tableOrName: Table | string): Promise<boolean> {\n const { tableName } = this.driver.parseTableName(tableOrName)\n const sql = `SELECT \"TABLE_NAME\" FROM \"USER_TABLES\" WHERE \"TABLE_NAME\" = '${tableName}'`\n const result = await this.query(sql)\n return result.length ? true : false\n }\n\n /**\n * Checks if column with the given name exist in the given table.\n */\n async hasColumn(\n tableOrName: Table | string,\n columnName: string,\n ): Promise<boolean> {\n const { tableName } = this.driver.parseTableName(tableOrName)\n const sql = `SELECT \"COLUMN_NAME\" FROM \"USER_TAB_COLS\" WHERE \"TABLE_NAME\" = '${tableName}' AND \"COLUMN_NAME\" = '${columnName}'`\n const result = await this.query(sql)\n return result.length ? true : false\n }\n\n /**\n * Creates a new database.\n */\n async createDatabase(\n database: string,\n ifNotExist?: boolean,\n ): Promise<void> {\n // Even with `IF NOT EXISTS` we get:\n // ORA-01501: CREATE DATABASE failed\n // ORA-01100: database already mounted\n if (ifNotExist) {\n try {\n await this.query(`CREATE DATABASE IF NOT EXISTS \"${database}\";`)\n } catch (e) {\n // if (e instanceof QueryFailedError) {\n if (e.message.includes(\"ORA-01100: database already mounted\")) {\n return\n }\n // }\n\n throw e\n }\n } else {\n await this.query(`CREATE DATABASE \"${database}\"`)\n }\n }\n\n /**\n * Drops database.\n */\n async dropDatabase(database: string, ifExist?: boolean): Promise<void> {\n return Promise.resolve()\n }\n\n /**\n * Creates a new table schema.\n */\n async createSchema(\n schemaPath: string,\n ifNotExist?: boolean,\n ): Promise<void> {\n throw new TypeORMError(\n `Schema create queries are not supported by Oracle driver.`,\n )\n }\n\n /**\n * Drops table schema.\n */\n async dropSchema(schemaPath: string, ifExist?: boolean): Promise<void> {\n throw new TypeORMError(\n `Schema drop queries are not supported by Oracle driver.`,\n )\n }\n\n /**\n * Creates a new table.\n */\n async createTable(\n table: Table,\n ifNotExist: boolean = false,\n createForeignKeys: boolean = true,\n createIndices: boolean = true,\n ): Promise<void> {\n if (ifNotExist) {\n const isTableExist = await this.hasTable(table)\n if (isTableExist) return Promise.resolve()\n }\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n upQueries.push(this.createTableSql(table, createForeignKeys))\n downQueries.push(this.dropTableSql(table))\n\n // if createForeignKeys is true, we must drop created foreign keys in down query.\n // createTable does not need separate method to create foreign keys, because it create fk's in the same query with table creation.\n if (createForeignKeys)\n table.foreignKeys.forEach((foreignKey) =>\n downQueries.push(this.dropForeignKeySql(table, foreignKey)),\n )\n\n if (createIndices) {\n table.indices.forEach((index) => {\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name)\n index.name = this.connection.namingStrategy.indexName(\n table,\n index.columnNames,\n index.where,\n )\n upQueries.push(this.createIndexSql(table, index))\n downQueries.push(this.dropIndexSql(index))\n })\n }\n\n // if table have column with generated type, we must add the expression to the metadata table\n const generatedColumns = table.columns.filter(\n (column) => column.generatedType && column.asExpression,\n )\n\n for (const column of generatedColumns) {\n const insertQuery = this.insertTypeormMetadataSql({\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n value: column.asExpression,\n })\n\n const deleteQuery = this.deleteTypeormMetadataSql({\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n })\n\n upQueries.push(insertQuery)\n downQueries.push(deleteQuery)\n }\n\n await this.executeQueries(upQueries, downQueries)\n }\n\n /**\n * Drops the table.\n */\n async dropTable(\n tableOrName: Table | string,\n ifExist?: boolean,\n dropForeignKeys: boolean = true,\n dropIndices: boolean = true,\n ): Promise<void> {\n // It needs because if table does not exist and dropForeignKeys or dropIndices is true, we don't need\n // to perform drop queries for foreign keys and indices.\n if (ifExist) {\n const isTableExist = await this.hasTable(tableOrName)\n if (!isTableExist) return Promise.resolve()\n }\n\n // if dropTable called with dropForeignKeys = true, we must create foreign keys in down query.\n const createForeignKeys: boolean = dropForeignKeys\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n if (dropIndices) {\n table.indices.forEach((index) => {\n upQueries.push(this.dropIndexSql(index))\n downQueries.push(this.createIndexSql(table, index))\n })\n }\n\n // if dropForeignKeys is true, we just drop the table, otherwise we also drop table foreign keys.\n // createTable does not need separate method to create foreign keys, because it create fk's in the same query with table creation.\n if (dropForeignKeys)\n table.foreignKeys.forEach((foreignKey) =>\n upQueries.push(this.dropForeignKeySql(table, foreignKey)),\n )\n\n upQueries.push(this.dropTableSql(table))\n downQueries.push(this.createTableSql(table, createForeignKeys))\n\n // if table had columns with generated type, we must remove the expression from the metadata table\n const generatedColumns = table.columns.filter(\n (column) => column.generatedType && column.asExpression,\n )\n\n for (const column of generatedColumns) {\n const deleteQuery = this.deleteTypeormMetadataSql({\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n })\n\n const insertQuery = this.insertTypeormMetadataSql({\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n value: column.asExpression,\n })\n\n upQueries.push(deleteQuery)\n downQueries.push(insertQuery)\n }\n\n await this.executeQueries(upQueries, downQueries)\n }\n\n /**\n * Creates a new view.\n */\n async createView(\n view: View,\n syncWithMetadata: boolean = false,\n ): Promise<void> {\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n upQueries.push(this.createViewSql(view))\n if (syncWithMetadata) upQueries.push(this.insertViewDefinitionSql(view))\n downQueries.push(this.dropViewSql(view))\n if (syncWithMetadata)\n downQueries.push(this.deleteViewDefinitionSql(view))\n await this.executeQueries(upQueries, downQueries)\n }\n\n /**\n * Drops the view.\n */\n async dropView(target: View | string): Promise<void> {\n const viewName = InstanceChecker.isView(target) ? target.name : target\n const view = await this.getCachedView(viewName)\n\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n upQueries.push(this.deleteViewDefinitionSql(view))\n upQueries.push(this.dropViewSql(view))\n downQueries.push(this.insertViewDefinitionSql(view))\n downQueries.push(this.createViewSql(view))\n await this.executeQueries(upQueries, downQueries)\n }\n\n /**\n * Renames the given table.\n */\n async renameTable(\n oldTableOrName: Table | string,\n newTableName: string,\n ): Promise<void> {\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n const oldTable = InstanceChecker.isTable(oldTableOrName)\n ? oldTableOrName\n : await this.getCachedTable(oldTableOrName)\n let newTable = oldTable.clone()\n\n const { database: dbName, tableName: oldTableName } =\n this.driver.parseTableName(oldTable)\n\n newTable.name = dbName ? `${dbName}.${newTableName}` : newTableName\n\n // rename table\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n oldTable,\n )} RENAME TO \"${newTableName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n newTable,\n )} RENAME TO \"${oldTableName}\"`,\n ),\n )\n\n // rename primary key constraint\n if (\n newTable.primaryColumns.length > 0 &&\n !newTable.primaryColumns[0].primaryKeyConstraintName\n ) {\n const columnNames = newTable.primaryColumns.map(\n (column) => column.name,\n )\n\n const oldPkName = this.connection.namingStrategy.primaryKeyName(\n oldTable,\n columnNames,\n )\n const newPkName = this.connection.namingStrategy.primaryKeyName(\n newTable,\n columnNames,\n )\n\n // build queries\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n newTable,\n )} RENAME CONSTRAINT \"${oldPkName}\" TO \"${newPkName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n newTable,\n )} RENAME CONSTRAINT \"${newPkName}\" TO \"${oldPkName}\"`,\n ),\n )\n }\n\n // rename unique constraints\n newTable.uniques.forEach((unique) => {\n const oldUniqueName =\n this.connection.namingStrategy.uniqueConstraintName(\n oldTable,\n unique.columnNames,\n )\n\n // Skip renaming if Unique has user defined constraint name\n if (unique.name !== oldUniqueName) return\n\n // build new constraint name\n const newUniqueName =\n this.connection.namingStrategy.uniqueConstraintName(\n newTable,\n unique.columnNames,\n )\n\n // build queries\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n newTable,\n )} RENAME CONSTRAINT \"${\n unique.name\n }\" TO \"${newUniqueName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n newTable,\n )} RENAME CONSTRAINT \"${newUniqueName}\" TO \"${\n unique.name\n }\"`,\n ),\n )\n\n // replace constraint name\n unique.name = newUniqueName\n })\n\n // rename index constraints\n newTable.indices.forEach((index) => {\n const oldIndexName = this.connection.namingStrategy.indexName(\n oldTable,\n index.columnNames,\n index.where,\n )\n\n // Skip renaming if Index has user defined constraint name\n if (index.name !== oldIndexName) return\n\n // build new constraint name\n const newIndexName = this.connection.namingStrategy.indexName(\n newTable,\n index.columnNames,\n index.where,\n )\n\n // build queries\n upQueries.push(\n new Query(\n `ALTER INDEX \"${index.name}\" RENAME TO \"${newIndexName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER INDEX \"${newIndexName}\" RENAME TO \"${index.name}\"`,\n ),\n )\n\n // replace constraint name\n index.name = newIndexName\n })\n\n // rename foreign key constraints\n newTable.foreignKeys.forEach((foreignKey) => {\n const oldForeignKeyName =\n this.connection.namingStrategy.foreignKeyName(\n oldTable,\n foreignKey.columnNames,\n this.getTablePath(foreignKey),\n foreignKey.referencedColumnNames,\n )\n\n // Skip renaming if foreign key has user defined constraint name\n if (foreignKey.name !== oldForeignKeyName) return\n\n // build new constraint name\n const newForeignKeyName =\n this.connection.namingStrategy.foreignKeyName(\n newTable,\n foreignKey.columnNames,\n this.getTablePath(foreignKey),\n foreignKey.referencedColumnNames,\n )\n\n // build queries\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n newTable,\n )} RENAME CONSTRAINT \"${\n foreignKey.name\n }\" TO \"${newForeignKeyName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n newTable,\n )} RENAME CONSTRAINT \"${newForeignKeyName}\" TO \"${\n foreignKey.name\n }\"`,\n ),\n )\n\n // replace constraint name\n foreignKey.name = newForeignKeyName\n })\n\n await this.executeQueries(upQueries, downQueries)\n\n // rename old table and replace it in cached tabled;\n oldTable.name = newTable.name\n this.replaceCachedTable(oldTable, newTable)\n }\n\n /**\n * Creates a new column from the column in the table.\n */\n async addColumn(\n tableOrName: Table | string,\n column: TableColumn,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const clonedTable = table.clone()\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD ${this.buildCreateColumnSql(column)}`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} DROP COLUMN \"${\n column.name\n }\"`,\n ),\n )\n\n // create or update primary key constraint\n if (column.isPrimary) {\n const primaryColumns = clonedTable.primaryColumns\n // if table already have primary key, me must drop it and recreate again\n if (primaryColumns.length > 0) {\n const pkName = primaryColumns[0].primaryKeyConstraintName\n ? primaryColumns[0].primaryKeyConstraintName\n : this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n primaryColumns.map((column) => column.name),\n )\n\n const columnNames = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n }\n\n primaryColumns.push(column)\n const pkName = primaryColumns[0].primaryKeyConstraintName\n ? primaryColumns[0].primaryKeyConstraintName\n : this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n primaryColumns.map((column) => column.name),\n )\n\n const columnNames = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n }\n\n // create column index\n const columnIndex = clonedTable.indices.find(\n (index) =>\n index.columnNames.length === 1 &&\n index.columnNames[0] === column.name,\n )\n if (columnIndex) {\n clonedTable.indices.splice(\n clonedTable.indices.indexOf(columnIndex),\n 1,\n )\n upQueries.push(this.createIndexSql(table, columnIndex))\n downQueries.push(this.dropIndexSql(columnIndex))\n }\n\n // create unique constraint\n if (column.isUnique) {\n const uniqueConstraint = new TableUnique({\n name: this.connection.namingStrategy.uniqueConstraintName(\n table,\n [column.name],\n ),\n columnNames: [column.name],\n })\n clonedTable.uniques.push(uniqueConstraint)\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${\n uniqueConstraint.name\n }\" UNIQUE (\"${column.name}\")`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${\n uniqueConstraint.name\n }\"`,\n ),\n )\n }\n\n if (column.generatedType && column.asExpression) {\n const insertQuery = this.insertTypeormMetadataSql({\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n value: column.asExpression,\n })\n\n const deleteQuery = this.deleteTypeormMetadataSql({\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n })\n\n upQueries.push(insertQuery)\n downQueries.push(deleteQuery)\n }\n\n await this.executeQueries(upQueries, downQueries)\n\n clonedTable.addColumn(column)\n this.replaceCachedTable(table, clonedTable)\n }\n\n /**\n * Creates a new columns from the column in the table.\n */\n async addColumns(\n tableOrName: Table | string,\n columns: TableColumn[],\n ): Promise<void> {\n for (const column of columns) {\n await this.addColumn(tableOrName, column)\n }\n }\n\n /**\n * Renames column in the given table.\n */\n async renameColumn(\n tableOrName: Table | string,\n oldTableColumnOrName: TableColumn | string,\n newTableColumnOrName: TableColumn | string,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const oldColumn = InstanceChecker.isTableColumn(oldTableColumnOrName)\n ? oldTableColumnOrName\n : table.columns.find((c) => c.name === oldTableColumnOrName)\n if (!oldColumn)\n throw new TypeORMError(\n `Column \"${oldTableColumnOrName}\" was not found in the ${this.escapePath(\n table,\n )} table.`,\n )\n\n let newColumn: TableColumn | undefined = undefined\n if (InstanceChecker.isTableColumn(newTableColumnOrName)) {\n newColumn = newTableColumnOrName\n } else {\n newColumn = oldColumn.clone()\n newColumn.name = newTableColumnOrName\n }\n\n await this.changeColumn(table, oldColumn, newColumn)\n }\n\n /**\n * Changes a column in the table.\n */\n async changeColumn(\n tableOrName: Table | string,\n oldTableColumnOrName: TableColumn | string,\n newColumn: TableColumn,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n let clonedTable = table.clone()\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n const oldColumn = InstanceChecker.isTableColumn(oldTableColumnOrName)\n ? oldTableColumnOrName\n : table.columns.find(\n (column) => column.name === oldTableColumnOrName,\n )\n if (!oldColumn)\n throw new TypeORMError(\n `Column \"${oldTableColumnOrName}\" was not found in the ${this.escapePath(\n table,\n )} table.`,\n )\n\n if (\n (newColumn.isGenerated !== oldColumn.isGenerated &&\n newColumn.generationStrategy !== \"uuid\") ||\n oldColumn.type !== newColumn.type ||\n oldColumn.length !== newColumn.length ||\n oldColumn.generatedType !== newColumn.generatedType ||\n oldColumn.asExpression !== newColumn.asExpression\n ) {\n // Oracle does not support changing of IDENTITY column, so we must drop column and recreate it again.\n // Also, we recreate column if column type changed\n await this.dropColumn(table, oldColumn)\n await this.addColumn(table, newColumn)\n\n // update cloned table\n clonedTable = table.clone()\n } else {\n if (newColumn.name !== oldColumn.name) {\n // rename column\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} RENAME COLUMN \"${\n oldColumn.name\n }\" TO \"${newColumn.name}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} RENAME COLUMN \"${\n newColumn.name\n }\" TO \"${oldColumn.name}\"`,\n ),\n )\n\n // rename column primary key constraint\n if (\n oldColumn.isPrimary === true &&\n !oldColumn.primaryKeyConstraintName\n ) {\n const primaryColumns = clonedTable.primaryColumns\n\n // build old primary constraint name\n const columnNames = primaryColumns.map(\n (column) => column.name,\n )\n const oldPkName =\n this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n columnNames,\n )\n\n // replace old column name with new column name\n columnNames.splice(columnNames.indexOf(oldColumn.name), 1)\n columnNames.push(newColumn.name)\n\n // build new primary constraint name\n const newPkName =\n this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n columnNames,\n )\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} RENAME CONSTRAINT \"${oldPkName}\" TO \"${newPkName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} RENAME CONSTRAINT \"${newPkName}\" TO \"${oldPkName}\"`,\n ),\n )\n }\n\n // rename unique constraints\n clonedTable.findColumnUniques(oldColumn).forEach((unique) => {\n const oldUniqueName =\n this.connection.namingStrategy.uniqueConstraintName(\n clonedTable,\n unique.columnNames,\n )\n\n // Skip renaming if Unique has user defined constraint name\n if (unique.name !== oldUniqueName) return\n\n // build new constraint name\n unique.columnNames.splice(\n unique.columnNames.indexOf(oldColumn.name),\n 1,\n )\n unique.columnNames.push(newColumn.name)\n const newUniqueName =\n this.connection.namingStrategy.uniqueConstraintName(\n clonedTable,\n unique.columnNames,\n )\n\n // build queries\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} RENAME CONSTRAINT \"${\n unique.name\n }\" TO \"${newUniqueName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} RENAME CONSTRAINT \"${newUniqueName}\" TO \"${\n unique.name\n }\"`,\n ),\n )\n\n // replace constraint name\n unique.name = newUniqueName\n })\n\n // rename index constraints\n clonedTable.findColumnIndices(oldColumn).forEach((index) => {\n const oldIndexName =\n this.connection.namingStrategy.indexName(\n clonedTable,\n index.columnNames,\n index.where,\n )\n\n // Skip renaming if Index has user defined constraint name\n if (index.name !== oldIndexName) return\n\n // build new constraint name\n index.columnNames.splice(\n index.columnNames.indexOf(oldColumn.name),\n 1,\n )\n index.columnNames.push(newColumn.name)\n const newIndexName =\n this.connection.namingStrategy.indexName(\n clonedTable,\n index.columnNames,\n index.where,\n )\n\n // build queries\n upQueries.push(\n new Query(\n `ALTER INDEX \"${index.name}\" RENAME TO \"${newIndexName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER INDEX \"${newIndexName}\" RENAME TO \"${index.name}\"`,\n ),\n )\n\n // replace constraint name\n index.name = newIndexName\n })\n\n // rename foreign key constraints\n clonedTable\n .findColumnForeignKeys(oldColumn)\n .forEach((foreignKey) => {\n const foreignKeyName =\n this.connection.namingStrategy.foreignKeyName(\n clonedTable,\n foreignKey.columnNames,\n this.getTablePath(foreignKey),\n foreignKey.referencedColumnNames,\n )\n\n // Skip renaming if foreign key has user defined constraint name\n if (foreignKey.name !== foreignKeyName) return\n\n // build new constraint name\n foreignKey.columnNames.splice(\n foreignKey.columnNames.indexOf(oldColumn.name),\n 1,\n )\n foreignKey.columnNames.push(newColumn.name)\n const newForeignKeyName =\n this.connection.namingStrategy.foreignKeyName(\n clonedTable,\n foreignKey.columnNames,\n this.getTablePath(foreignKey),\n foreignKey.referencedColumnNames,\n )\n\n // build queries\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} RENAME CONSTRAINT \"${\n foreignKey.name\n }\" TO \"${newForeignKeyName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} RENAME CONSTRAINT \"${newForeignKeyName}\" TO \"${\n foreignKey.name\n }\"`,\n ),\n )\n\n // replace constraint name\n foreignKey.name = newForeignKeyName\n })\n\n // rename old column in the Table object\n const oldTableColumn = clonedTable.columns.find(\n (column) => column.name === oldColumn.name,\n )\n clonedTable.columns[\n clonedTable.columns.indexOf(oldTableColumn!)\n ].name = newColumn.name\n oldColumn.name = newColumn.name\n }\n\n if (this.isColumnChanged(oldColumn, newColumn, true)) {\n let defaultUp: string = \"\"\n let defaultDown: string = \"\"\n let nullableUp: string = \"\"\n let nullableDown: string = \"\"\n\n // changing column default\n if (\n newColumn.default !== null &&\n newColumn.default !== undefined\n ) {\n defaultUp = `DEFAULT ${newColumn.default}`\n\n if (\n oldColumn.default !== null &&\n oldColumn.default !== undefined\n ) {\n defaultDown = `DEFAULT ${oldColumn.default}`\n } else {\n defaultDown = \"DEFAULT NULL\"\n }\n } else if (\n oldColumn.default !== null &&\n oldColumn.default !== undefined\n ) {\n defaultUp = \"DEFAULT NULL\"\n defaultDown = `DEFAULT ${oldColumn.default}`\n }\n\n // changing column isNullable property\n if (newColumn.isNullable !== oldColumn.isNullable) {\n if (newColumn.isNullable === true) {\n nullableUp = \"NULL\"\n nullableDown = \"NOT NULL\"\n } else {\n nullableUp = \"NOT NULL\"\n nullableDown = \"NULL\"\n }\n }\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} MODIFY \"${\n oldColumn.name\n }\" ${this.connection.driver.createFullType(\n newColumn,\n )} ${defaultUp} ${nullableUp}`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} MODIFY \"${\n oldColumn.name\n }\" ${this.connection.driver.createFullType(\n oldColumn,\n )} ${defaultDown} ${nullableDown}`,\n ),\n )\n }\n\n if (newColumn.isPrimary !== oldColumn.isPrimary) {\n const primaryColumns = clonedTable.primaryColumns\n\n // if primary column state changed, we must always drop existed constraint.\n if (primaryColumns.length > 0) {\n const pkName = primaryColumns[0].primaryKeyConstraintName\n ? primaryColumns[0].primaryKeyConstraintName\n : this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n primaryColumns.map((column) => column.name),\n )\n\n const columnNames = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n }\n\n if (newColumn.isPrimary === true) {\n primaryColumns.push(newColumn)\n // update column in table\n const column = clonedTable.columns.find(\n (column) => column.name === newColumn.name,\n )\n column!.isPrimary = true\n const pkName = primaryColumns[0].primaryKeyConstraintName\n ? primaryColumns[0].primaryKeyConstraintName\n : this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n primaryColumns.map((column) => column.name),\n )\n\n const columnNames = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n } else {\n const primaryColumn = primaryColumns.find(\n (c) => c.name === newColumn.name,\n )\n primaryColumns.splice(\n primaryColumns.indexOf(primaryColumn!),\n 1,\n )\n\n // update column in table\n const column = clonedTable.columns.find(\n (column) => column.name === newColumn.name,\n )\n column!.isPrimary = false\n\n // if we have another primary keys, we must recreate constraint.\n if (primaryColumns.length > 0) {\n const pkName = primaryColumns[0]\n .primaryKeyConstraintName\n ? primaryColumns[0].primaryKeyConstraintName\n : this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n primaryColumns.map((column) => column.name),\n )\n\n const columnNames = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n }\n }\n }\n\n if (newColumn.isUnique !== oldColumn.isUnique) {\n if (newColumn.isUnique === true) {\n const uniqueConstraint = new TableUnique({\n name: this.connection.namingStrategy.uniqueConstraintName(\n table,\n [newColumn.name],\n ),\n columnNames: [newColumn.name],\n })\n clonedTable.uniques.push(uniqueConstraint)\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${\n uniqueConstraint.name\n }\" UNIQUE (\"${newColumn.name}\")`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${uniqueConstraint.name}\"`,\n ),\n )\n } else {\n const uniqueConstraint = clonedTable.uniques.find(\n (unique) => {\n return (\n unique.columnNames.length === 1 &&\n !!unique.columnNames.find(\n (columnName) =>\n columnName === newColumn.name,\n )\n )\n },\n )\n clonedTable.uniques.splice(\n clonedTable.uniques.indexOf(uniqueConstraint!),\n 1,\n )\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${uniqueConstraint!.name}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${\n uniqueConstraint!.name\n }\" UNIQUE (\"${newColumn.name}\")`,\n ),\n )\n }\n }\n\n await this.executeQueries(upQueries, downQueries)\n this.replaceCachedTable(table, clonedTable)\n }\n }\n\n /**\n * Changes a column in the table.\n */\n async changeColumns(\n tableOrName: Table | string,\n changedColumns: { newColumn: TableColumn; oldColumn: TableColumn }[],\n ): Promise<void> {\n for (const { oldColumn, newColumn } of changedColumns) {\n await this.changeColumn(tableOrName, oldColumn, newColumn)\n }\n }\n\n /**\n * Drops column in the table.\n */\n async dropColumn(\n tableOrName: Table | string,\n columnOrName: TableColumn | string,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const column = InstanceChecker.isTableColumn(columnOrName)\n ? columnOrName\n : table.findColumnByName(columnOrName)\n if (!column)\n throw new TypeORMError(\n `Column \"${columnOrName}\" was not found in table ${this.escapePath(\n table,\n )}`,\n )\n\n const clonedTable = table.clone()\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n // drop primary key constraint\n if (column.isPrimary) {\n const pkName = column.primaryKeyConstraintName\n ? column.primaryKeyConstraintName\n : this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n clonedTable.primaryColumns.map((column) => column.name),\n )\n\n const columnNames = clonedTable.primaryColumns\n .map((primaryColumn) => `\"${primaryColumn.name}\"`)\n .join(\", \")\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n clonedTable,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n clonedTable,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n\n // update column in table\n const tableColumn = clonedTable.findColumnByName(column.name)\n tableColumn!.isPrimary = false\n\n // if primary key have multiple columns, we must recreate it without dropped column\n if (clonedTable.primaryColumns.length > 0) {\n const pkName = clonedTable.primaryColumns[0]\n .primaryKeyConstraintName\n ? clonedTable.primaryColumns[0].primaryKeyConstraintName\n : this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n clonedTable.primaryColumns.map(\n (column) => column.name,\n ),\n )\n\n const columnNames = clonedTable.primaryColumns\n .map((primaryColumn) => `\"${primaryColumn.name}\"`)\n .join(\", \")\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n clonedTable,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n clonedTable,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n }\n }\n\n // drop column index\n const columnIndex = clonedTable.indices.find(\n (index) =>\n index.columnNames.length === 1 &&\n index.columnNames[0] === column.name,\n )\n if (columnIndex) {\n upQueries.push(this.dropIndexSql(columnIndex))\n downQueries.push(this.createIndexSql(table, columnIndex))\n }\n\n // drop column check\n const columnCheck = clonedTable.checks.find(\n (check) =>\n !!check.columnNames &&\n check.columnNames.length === 1 &&\n check.columnNames[0] === column.name,\n )\n if (columnCheck) {\n clonedTable.checks.splice(\n clonedTable.checks.indexOf(columnCheck),\n 1,\n )\n upQueries.push(this.dropCheckConstraintSql(table, columnCheck))\n downQueries.push(this.createCheckConstraintSql(table, columnCheck))\n }\n\n // drop column unique\n const columnUnique = clonedTable.uniques.find(\n (unique) =>\n unique.columnNames.length === 1 &&\n unique.columnNames[0] === column.name,\n )\n if (columnUnique) {\n clonedTable.uniques.splice(\n clonedTable.uniques.indexOf(columnUnique),\n 1,\n )\n upQueries.push(this.dropUniqueConstraintSql(table, columnUnique))\n downQueries.push(\n this.createUniqueConstraintSql(table, columnUnique),\n )\n }\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(table)} DROP COLUMN \"${\n column.name\n }\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD ${this.buildCreateColumnSql(column)}`,\n ),\n )\n\n if (column.generatedType && column.asExpression) {\n const deleteQuery = this.deleteTypeormMetadataSql({\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n })\n const insertQuery = this.insertTypeormMetadataSql({\n table: table.name,\n type: MetadataTableType.GENERATED_COLUMN,\n name: column.name,\n value: column.asExpression,\n })\n\n upQueries.push(deleteQuery)\n downQueries.push(insertQuery)\n }\n\n await this.executeQueries(upQueries, downQueries)\n\n clonedTable.removeColumn(column)\n this.replaceCachedTable(table, clonedTable)\n }\n\n /**\n * Drops the columns in the table.\n */\n async dropColumns(\n tableOrName: Table | string,\n columns: TableColumn[] | string[],\n ): Promise<void> {\n for (const column of columns) {\n await this.dropColumn(tableOrName, column)\n }\n }\n\n /**\n * Creates a new primary key.\n */\n async createPrimaryKey(\n tableOrName: Table | string,\n columnNames: string[],\n constraintName?: string,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const clonedTable = table.clone()\n\n const up = this.createPrimaryKeySql(table, columnNames, constraintName)\n\n // mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.\n clonedTable.columns.forEach((column) => {\n if (columnNames.find((columnName) => columnName === column.name))\n column.isPrimary = true\n })\n const down = this.dropPrimaryKeySql(clonedTable)\n\n await this.executeQueries(up, down)\n this.replaceCachedTable(table, clonedTable)\n }\n\n /**\n * Updates composite primary keys.\n */\n async updatePrimaryKeys(\n tableOrName: Table | string,\n columns: TableColumn[],\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const columnNames = columns.map((column) => column.name)\n const clonedTable = table.clone()\n const upQueries: Query[] = []\n const downQueries: Query[] = []\n\n // if table already have primary columns, we must drop them.\n const primaryColumns = clonedTable.primaryColumns\n if (primaryColumns.length > 0) {\n const pkName = primaryColumns[0].primaryKeyConstraintName\n ? primaryColumns[0].primaryKeyConstraintName\n : this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n primaryColumns.map((column) => column.name),\n )\n\n const columnNamesString = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNamesString})`,\n ),\n )\n }\n\n // update columns in table.\n clonedTable.columns\n .filter((column) => columnNames.indexOf(column.name) !== -1)\n .forEach((column) => (column.isPrimary = true))\n\n const pkName = primaryColumns[0].primaryKeyConstraintName\n ? primaryColumns[0].primaryKeyConstraintName\n : this.connection.namingStrategy.primaryKeyName(\n clonedTable,\n columnNames,\n )\n\n const columnNamesString = columnNames\n .map((columnName) => `\"${columnName}\"`)\n .join(\", \")\n upQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNamesString})`,\n ),\n )\n downQueries.push(\n new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${pkName}\"`,\n ),\n )\n\n await this.executeQueries(upQueries, downQueries)\n this.replaceCachedTable(table, clonedTable)\n }\n\n /**\n * Drops a primary key.\n */\n async dropPrimaryKey(\n tableOrName: Table | string,\n constraintName?: string,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const up = this.dropPrimaryKeySql(table)\n const down = this.createPrimaryKeySql(\n table,\n table.primaryColumns.map((column) => column.name),\n constraintName,\n )\n await this.executeQueries(up, down)\n table.primaryColumns.forEach((column) => {\n column.isPrimary = false\n })\n }\n\n /**\n * Creates a new unique constraint.\n */\n async createUniqueConstraint(\n tableOrName: Table | string,\n uniqueConstraint: TableUnique,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n\n // new unique constraint may be passed without name. In this case we generate unique name manually.\n if (!uniqueConstraint.name)\n uniqueConstraint.name =\n this.connection.namingStrategy.uniqueConstraintName(\n table,\n uniqueConstraint.columnNames,\n )\n\n const up = this.createUniqueConstraintSql(table, uniqueConstraint)\n const down = this.dropUniqueConstraintSql(table, uniqueConstraint)\n await this.executeQueries(up, down)\n table.addUniqueConstraint(uniqueConstraint)\n }\n\n /**\n * Creates a new unique constraints.\n */\n async createUniqueConstraints(\n tableOrName: Table | string,\n uniqueConstraints: TableUnique[],\n ): Promise<void> {\n const promises = uniqueConstraints.map((uniqueConstraint) =>\n this.createUniqueConstraint(tableOrName, uniqueConstraint),\n )\n await Promise.all(promises)\n }\n\n /**\n * Drops an unique constraint.\n */\n async dropUniqueConstraint(\n tableOrName: Table | string,\n uniqueOrName: TableUnique | string,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const uniqueConstraint = InstanceChecker.isTableUnique(uniqueOrName)\n ? uniqueOrName\n : table.uniques.find((u) => u.name === uniqueOrName)\n if (!uniqueConstraint)\n throw new TypeORMError(\n `Supplied unique constraint was not found in table ${table.name}`,\n )\n\n const up = this.dropUniqueConstraintSql(table, uniqueConstraint)\n const down = this.createUniqueConstraintSql(table, uniqueConstraint)\n await this.executeQueries(up, down)\n table.removeUniqueConstraint(uniqueConstraint)\n }\n\n /**\n * Creates an unique constraints.\n */\n async dropUniqueConstraints(\n tableOrName: Table | string,\n uniqueConstraints: TableUnique[],\n ): Promise<void> {\n const promises = uniqueConstraints.map((uniqueConstraint) =>\n this.dropUniqueConstraint(tableOrName, uniqueConstraint),\n )\n await Promise.all(promises)\n }\n\n /**\n * Creates new check constraint.\n */\n async createCheckConstraint(\n tableOrName: Table | string,\n checkConstraint: TableCheck,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n\n // new unique constraint may be passed without name. In this case we generate unique name manually.\n if (!checkConstraint.name)\n checkConstraint.name =\n this.connection.namingStrategy.checkConstraintName(\n table,\n checkConstraint.expression!,\n )\n\n const up = this.createCheckConstraintSql(table, checkConstraint)\n const down = this.dropCheckConstraintSql(table, checkConstraint)\n await this.executeQueries(up, down)\n table.addCheckConstraint(checkConstraint)\n }\n\n /**\n * Creates new check constraints.\n */\n async createCheckConstraints(\n tableOrName: Table | string,\n checkConstraints: TableCheck[],\n ): Promise<void> {\n const promises = checkConstraints.map((checkConstraint) =>\n this.createCheckConstraint(tableOrName, checkConstraint),\n )\n await Promise.all(promises)\n }\n\n /**\n * Drops check constraint.\n */\n async dropCheckConstraint(\n tableOrName: Table | string,\n checkOrName: TableCheck | string,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const checkConstraint = InstanceChecker.isTableCheck(checkOrName)\n ? checkOrName\n : table.checks.find((c) => c.name === checkOrName)\n if (!checkConstraint)\n throw new TypeORMError(\n `Supplied check constraint was not found in table ${table.name}`,\n )\n\n const up = this.dropCheckConstraintSql(table, checkConstraint)\n const down = this.createCheckConstraintSql(table, checkConstraint)\n await this.executeQueries(up, down)\n table.removeCheckConstraint(checkConstraint)\n }\n\n /**\n * Drops check constraints.\n */\n async dropCheckConstraints(\n tableOrName: Table | string,\n checkConstraints: TableCheck[],\n ): Promise<void> {\n const promises = checkConstraints.map((checkConstraint) =>\n this.dropCheckConstraint(tableOrName, checkConstraint),\n )\n await Promise.all(promises)\n }\n\n /**\n * Creates a new exclusion constraint.\n */\n async createExclusionConstraint(\n tableOrName: Table | string,\n exclusionConstraint: TableExclusion,\n ): Promise<void> {\n throw new TypeORMError(`Oracle does not support exclusion constraints.`)\n }\n\n /**\n * Creates a new exclusion constraints.\n */\n async createExclusionConstraints(\n tableOrName: Table | string,\n exclusionConstraints: TableExclusion[],\n ): Promise<void> {\n throw new TypeORMError(`Oracle does not support exclusion constraints.`)\n }\n\n /**\n * Drops exclusion constraint.\n */\n async dropExclusionConstraint(\n tableOrName: Table | string,\n exclusionOrName: TableExclusion | string,\n ): Promise<void> {\n throw new TypeORMError(`Oracle does not support exclusion constraints.`)\n }\n\n /**\n * Drops exclusion constraints.\n */\n async dropExclusionConstraints(\n tableOrName: Table | string,\n exclusionConstraints: TableExclusion[],\n ): Promise<void> {\n throw new TypeORMError(`Oracle does not support exclusion constraints.`)\n }\n\n /**\n * Creates a new foreign key.\n */\n async createForeignKey(\n tableOrName: Table | string,\n foreignKey: TableForeignKey,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n\n // new FK may be passed without name. In this case we generate FK name manually.\n if (!foreignKey.name)\n foreignKey.name = this.connection.namingStrategy.foreignKeyName(\n table,\n foreignKey.columnNames,\n this.getTablePath(foreignKey),\n foreignKey.referencedColumnNames,\n )\n\n const up = this.createForeignKeySql(table, foreignKey)\n const down = this.dropForeignKeySql(table, foreignKey)\n await this.executeQueries(up, down)\n table.addForeignKey(foreignKey)\n }\n\n /**\n * Creates a new foreign keys.\n */\n async createForeignKeys(\n tableOrName: Table | string,\n foreignKeys: TableForeignKey[],\n ): Promise<void> {\n const promises = foreignKeys.map((foreignKey) =>\n this.createForeignKey(tableOrName, foreignKey),\n )\n await Promise.all(promises)\n }\n\n /**\n * Drops a foreign key from the table.\n */\n async dropForeignKey(\n tableOrName: Table | string,\n foreignKeyOrName: TableForeignKey | string,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const foreignKey = InstanceChecker.isTableForeignKey(foreignKeyOrName)\n ? foreignKeyOrName\n : table.foreignKeys.find((fk) => fk.name === foreignKeyOrName)\n if (!foreignKey)\n throw new TypeORMError(\n `Supplied foreign key was not found in table ${table.name}`,\n )\n\n const up = this.dropForeignKeySql(table, foreignKey)\n const down = this.createForeignKeySql(table, foreignKey)\n await this.executeQueries(up, down)\n table.removeForeignKey(foreignKey)\n }\n\n /**\n * Drops a foreign keys from the table.\n */\n async dropForeignKeys(\n tableOrName: Table | string,\n foreignKeys: TableForeignKey[],\n ): Promise<void> {\n const promises = foreignKeys.map((foreignKey) =>\n this.dropForeignKey(tableOrName, foreignKey),\n )\n await Promise.all(promises)\n }\n\n /**\n * Creates a new index.\n */\n async createIndex(\n tableOrName: Table | string,\n index: TableIndex,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n\n // new index may be passed without name. In this case we generate index name manually.\n if (!index.name) index.name = this.generateIndexName(table, index)\n\n const up = this.createIndexSql(table, index)\n const down = this.dropIndexSql(index)\n await this.executeQueries(up, down)\n table.addIndex(index)\n }\n\n /**\n * Creates a new indices\n */\n async createIndices(\n tableOrName: Table | string,\n indices: TableIndex[],\n ): Promise<void> {\n const promises = indices.map((index) =>\n this.createIndex(tableOrName, index),\n )\n await Promise.all(promises)\n }\n\n /**\n * Drops an index from the table.\n */\n async dropIndex(\n tableOrName: Table | string,\n indexOrName: TableIndex | string,\n ): Promise<void> {\n const table = InstanceChecker.isTable(tableOrName)\n ? tableOrName\n : await this.getCachedTable(tableOrName)\n const index = InstanceChecker.isTableIndex(indexOrName)\n ? indexOrName\n : table.indices.find((i) => i.name === indexOrName)\n if (!index)\n throw new TypeORMError(\n `Supplied index ${indexOrName} was not found in table ${table.name}`,\n )\n // old index may be passed without name. In this case we generate index name manually.\n if (!index.name) index.name = this.generateIndexName(table, index)\n\n const up = this.dropIndexSql(index)\n const down = this.createIndexSql(table, index)\n await this.executeQueries(up, down)\n table.removeIndex(index)\n }\n\n /**\n * Drops an indices from the table.\n */\n async dropIndices(\n tableOrName: Table | string,\n indices: TableIndex[],\n ): Promise<void> {\n const promises = indices.map((index) =>\n this.dropIndex(tableOrName, index),\n )\n await Promise.all(promises)\n }\n\n /**\n * Clears all table contents.\n * Note: this operation uses SQL's TRUNCATE query which cannot be reverted in transactions.\n */\n async clearTable(tableName: string): Promise<void> {\n await this.query(`TRUNCATE TABLE ${this.escapePath(tableName)}`)\n }\n\n /**\n * Removes all tables from the currently connected database.\n */\n async clearDatabase(): Promise<void> {\n const isAnotherTransactionActive = this.isTransactionActive\n if (!isAnotherTransactionActive) await this.startTransaction()\n try {\n // drop views\n const dropViewsQuery = `SELECT 'DROP VIEW \"' || VIEW_NAME || '\"' AS \"query\" FROM \"USER_VIEWS\"`\n const dropViewQueries: ObjectLiteral[] = await this.query(\n dropViewsQuery,\n )\n await Promise.all(\n dropViewQueries.map((query) => this.query(query[\"query\"])),\n )\n\n // drop materialized views\n const dropMatViewsQuery = `SELECT 'DROP MATERIALIZED VIEW \"' || MVIEW_NAME || '\"' AS \"query\" FROM \"USER_MVIEWS\"`\n const dropMatViewQueries: ObjectLiteral[] = await this.query(\n dropMatViewsQuery,\n )\n await Promise.all(\n dropMatViewQueries.map((query) => this.query(query[\"query\"])),\n )\n\n // drop tables\n const dropTablesQuery = `SELECT 'DROP TABLE \"' || TABLE_NAME || '\" CASCADE CONSTRAINTS' AS \"query\" FROM \"USER_TABLES\"`\n const dropTableQueries: ObjectLiteral[] = await this.query(\n dropTablesQuery,\n )\n await Promise.all(\n dropTableQueries.map((query) => this.query(query[\"query\"])),\n )\n if (!isAnotherTransactionActive) await this.commitTransaction()\n } catch (error) {\n try {\n // we throw original error even if rollback thrown an error\n if (!isAnotherTransactionActive)\n await this.rollbackTransaction()\n } catch (rollbackError) {}\n throw error\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n protected async loadViews(viewNames?: string[]): Promise<View[]> {\n const hasTable = await this.hasTable(this.getTypeormMetadataTableName())\n if (!hasTable) {\n return []\n }\n\n if (!viewNames) {\n viewNames = []\n }\n\n const currentDatabase = await this.getCurrentDatabase()\n const currentSchema = await this.getCurrentSchema()\n\n const viewsCondition = viewNames\n .map((viewName) => this.driver.parseTableName(viewName))\n .map(({ schema, tableName }) => {\n if (!schema) {\n schema = this.driver.options.schema || currentSchema\n }\n\n return `(\"T\".\"schema\" = '${schema}' AND \"T\".\"name\" = '${tableName}')`\n })\n .join(\" OR \")\n\n let query =\n `SELECT \"T\".* FROM ${this.escapePath(\n this.getTypeormMetadataTableName(),\n )} \"T\" ` +\n `INNER JOIN \"USER_OBJECTS\" \"O\" ON \"O\".\"OBJECT_NAME\" = \"T\".\"name\" AND \"O\".\"OBJECT_TYPE\" IN ( 'MATERIALIZED VIEW', 'VIEW' ) ` +\n `WHERE \"T\".\"type\" IN ('${MetadataTableType.MATERIALIZED_VIEW}', '${MetadataTableType.VIEW}')`\n if (viewsCondition.length > 0) query += ` AND ${viewsCondition}`\n\n const dbViews = await this.query(query)\n return dbViews.map((dbView: any) => {\n const parsedName = this.driver.parseTableName(dbView[\"name\"])\n\n const view = new View()\n view.database =\n parsedName.database || dbView[\"database\"] || currentDatabase\n view.schema = parsedName.schema || dbView[\"schema\"] || currentSchema\n view.name = parsedName.tableName\n view.expression = dbView[\"value\"]\n view.materialized =\n dbView[\"type\"] === MetadataTableType.MATERIALIZED_VIEW\n return view\n })\n }\n\n /**\n * Loads all tables (with given names) from the database and creates a Table from them.\n */\n protected async loadTables(tableNames?: string[]): Promise<Table[]> {\n if (tableNames && tableNames.length === 0) {\n return []\n }\n\n const dbTables: { TABLE_NAME: string; OWNER: string }[] = []\n\n const currentSchema = await this.getCurrentSchema()\n const currentDatabase = await this.getCurrentDatabase()\n\n if (!tableNames) {\n const tablesSql = `SELECT \"TABLE_NAME\", \"OWNER\" FROM \"ALL_TABLES\"`\n dbTables.push(...(await this.query(tablesSql)))\n } else {\n const tablesCondition = tableNames\n .map((tableName) => {\n const parts = tableName.split(\".\")\n\n if (parts.length >= 3) {\n const [, schema, name] = parts\n return `(\"OWNER\" = '${schema}' AND \"TABLE_NAME\" = '${name}')`\n } else if (parts.length === 2) {\n const [schema, name] = parts\n return `(\"OWNER\" = '${schema}' AND \"TABLE_NAME\" = '${name}')`\n } else if (parts.length === 1) {\n const [name] = parts\n return `(\"TABLE_NAME\" = '${name}')`\n } else {\n return `(1=0)`\n }\n })\n .join(\" OR \")\n const tablesSql = `SELECT \"TABLE_NAME\", \"OWNER\" FROM \"ALL_TABLES\" WHERE ${tablesCondition}`\n dbTables.push(...(await this.query(tablesSql)))\n }\n\n // if tables were not found in the db, no need to proceed\n if (dbTables.length === 0) {\n return []\n }\n\n // load tables, columns, indices and foreign keys\n const columnsCondition = dbTables\n .map(({ TABLE_NAME, OWNER }) => {\n return `(\"C\".\"OWNER\" = '${OWNER}' AND \"C\".\"TABLE_NAME\" = '${TABLE_NAME}')`\n })\n .join(\" OR \")\n const columnsSql = `SELECT * FROM \"ALL_TAB_COLS\" \"C\" WHERE (${columnsCondition})`\n\n const indicesSql =\n `SELECT \"C\".\"INDEX_NAME\", \"C\".\"OWNER\", \"C\".\"TABLE_NAME\", \"C\".\"UNIQUENESS\", ` +\n `LISTAGG (\"COL\".\"COLUMN_NAME\", ',') WITHIN GROUP (ORDER BY \"COL\".\"COLUMN_NAME\") AS \"COLUMN_NAMES\" ` +\n `FROM \"ALL_INDEXES\" \"C\" ` +\n `INNER JOIN \"ALL_IND_COLUMNS\" \"COL\" ON \"COL\".\"INDEX_OWNER\" = \"C\".\"OWNER\" AND \"COL\".\"INDEX_NAME\" = \"C\".\"INDEX_NAME\" ` +\n `LEFT JOIN \"ALL_CONSTRAINTS\" \"CON\" ON \"CON\".\"OWNER\" = \"C\".\"OWNER\" AND \"CON\".\"CONSTRAINT_NAME\" = \"C\".\"INDEX_NAME\" ` +\n `WHERE (${columnsCondition}) AND \"CON\".\"CONSTRAINT_NAME\" IS NULL ` +\n `GROUP BY \"C\".\"INDEX_NAME\", \"C\".\"OWNER\", \"C\".\"TABLE_NAME\", \"C\".\"UNIQUENESS\"`\n\n const foreignKeysSql =\n `SELECT \"C\".\"CONSTRAINT_NAME\", \"C\".\"OWNER\", \"C\".\"TABLE_NAME\", \"COL\".\"COLUMN_NAME\", \"REF_COL\".\"TABLE_NAME\" AS \"REFERENCED_TABLE_NAME\", ` +\n `\"REF_COL\".\"COLUMN_NAME\" AS \"REFERENCED_COLUMN_NAME\", \"C\".\"DELETE_RULE\" AS \"ON_DELETE\" ` +\n `FROM \"ALL_CONSTRAINTS\" \"C\" ` +\n `INNER JOIN \"ALL_CONS_COLUMNS\" \"COL\" ON \"COL\".\"OWNER\" = \"C\".\"OWNER\" AND \"COL\".\"CONSTRAINT_NAME\" = \"C\".\"CONSTRAINT_NAME\" ` +\n `INNER JOIN \"ALL_CONS_COLUMNS\" \"REF_COL\" ON \"REF_COL\".\"OWNER\" = \"C\".\"R_OWNER\" AND \"REF_COL\".\"CONSTRAINT_NAME\" = \"C\".\"R_CONSTRAINT_NAME\" AND \"REF_COL\".\"POSITION\" = \"COL\".\"POSITION\" ` +\n `WHERE (${columnsCondition}) AND \"C\".\"CONSTRAINT_TYPE\" = 'R'`\n\n const constraintsSql =\n `SELECT \"C\".\"CONSTRAINT_NAME\", \"C\".\"CONSTRAINT_TYPE\", \"C\".\"OWNER\", \"C\".\"TABLE_NAME\", \"COL\".\"COLUMN_NAME\", \"C\".\"SEARCH_CONDITION\" ` +\n `FROM \"ALL_CONSTRAINTS\" \"C\" ` +\n `INNER JOIN \"ALL_CONS_COLUMNS\" \"COL\" ON \"COL\".\"OWNER\" = \"C\".\"OWNER\" AND \"COL\".\"CONSTRAINT_NAME\" = \"C\".\"CONSTRAINT_NAME\" ` +\n `WHERE (${columnsCondition}) AND \"C\".\"CONSTRAINT_TYPE\" IN ('C', 'U', 'P') AND \"C\".\"GENERATED\" = 'USER NAME'`\n\n const [\n dbColumns,\n dbIndices,\n dbForeignKeys,\n dbConstraints,\n ]: ObjectLiteral[][] = await Promise.all([\n this.query(columnsSql),\n this.query(indicesSql),\n this.query(foreignKeysSql),\n this.query(constraintsSql),\n ])\n\n // create tables for loaded tables\n return await Promise.all(\n dbTables.map(async (dbTable) => {\n const table = new Table()\n const owner =\n dbTable[\"OWNER\"] === currentSchema &&\n (!this.driver.options.schema ||\n this.driver.options.schema === currentSchema)\n ? undefined\n : dbTable[\"OWNER\"]\n table.database = currentDatabase\n table.schema = dbTable[\"OWNER\"]\n table.name = this.driver.buildTableName(\n dbTable[\"TABLE_NAME\"],\n owner,\n )\n\n // create columns from the loaded columns\n table.columns = await Promise.all(\n dbColumns\n .filter(\n (dbColumn) =>\n dbColumn[\"OWNER\"] === dbTable[\"OWNER\"] &&\n dbColumn[\"TABLE_NAME\"] ===\n dbTable[\"TABLE_NAME\"] &&\n // Filter out auto-generated virtual columns,\n // since TypeORM will have no info about them.\n !(\n dbColumn[\"VIRTUAL_COLUMN\"] === \"YES\" &&\n dbColumn[\"USER_GENERATED\"] === \"NO\"\n ),\n )\n .map(async (dbColumn) => {\n const columnConstraints = dbConstraints.filter(\n (dbConstraint) =>\n dbConstraint[\"OWNER\"] ===\n dbColumn[\"OWNER\"] &&\n dbConstraint[\"TABLE_NAME\"] ===\n dbColumn[\"TABLE_NAME\"] &&\n dbConstraint[\"COLUMN_NAME\"] ===\n dbColumn[\"COLUMN_NAME\"],\n )\n\n const uniqueConstraints = columnConstraints.filter(\n (constraint) =>\n constraint[\"CONSTRAINT_TYPE\"] === \"U\",\n )\n const isConstraintComposite =\n uniqueConstraints.every((uniqueConstraint) => {\n return dbConstraints.some(\n (dbConstraint) =>\n dbConstraint[\"OWNER\"] ===\n dbColumn[\"OWNER\"] &&\n dbConstraint[\"TABLE_NAME\"] ===\n dbColumn[\"TABLE_NAME\"] &&\n dbConstraint[\"COLUMN_NAME\"] !==\n dbColumn[\"COLUMN_NAME\"] &&\n dbConstraint[\"CONSTRAINT_NAME\"] ===\n uniqueConstraint[\n \"CONSTRAINT_NAME\"\n ] &&\n dbConstraint[\"CONSTRAINT_TYPE\"] ===\n \"U\",\n )\n })\n\n const tableColumn = new TableColumn()\n tableColumn.name = dbColumn[\"COLUMN_NAME\"]\n tableColumn.type =\n dbColumn[\"DATA_TYPE\"].toLowerCase()\n if (tableColumn.type.indexOf(\"(\") !== -1)\n tableColumn.type = tableColumn.type.replace(\n /\\([0-9]*\\)/,\n \"\",\n )\n\n // check only columns that have length property\n if (\n this.driver.withLengthColumnTypes.indexOf(\n tableColumn.type as ColumnType,\n ) !== -1\n ) {\n const length =\n tableColumn.type === \"raw\"\n ? dbColumn[\"DATA_LENGTH\"]\n : dbColumn[\"CHAR_COL_DECL_LENGTH\"]\n tableColumn.length =\n length &&\n !this.isDefaultColumnLength(\n table,\n tableColumn,\n length,\n )\n ? length.toString()\n : \"\"\n }\n\n if (\n tableColumn.type === \"number\" ||\n tableColumn.type === \"float\"\n ) {\n if (\n dbColumn[\"DATA_PRECISION\"] !== null &&\n !this.isDefaultColumnPrecision(\n table,\n tableColumn,\n dbColumn[\"DATA_PRECISION\"],\n )\n )\n tableColumn.precision =\n dbColumn[\"DATA_PRECISION\"]\n if (\n dbColumn[\"DATA_SCALE\"] !== null &&\n !this.isDefaultColumnScale(\n table,\n tableColumn,\n dbColumn[\"DATA_SCALE\"],\n )\n )\n tableColumn.scale = dbColumn[\"DATA_SCALE\"]\n } else if (\n (tableColumn.type === \"timestamp\" ||\n tableColumn.type ===\n \"timestamp with time zone\" ||\n tableColumn.type ===\n \"timestamp with local time zone\") &&\n dbColumn[\"DATA_SCALE\"] !== null\n ) {\n tableColumn.precision =\n !this.isDefaultColumnPrecision(\n table,\n tableColumn,\n dbColumn[\"DATA_SCALE\"],\n )\n ? dbColumn[\"DATA_SCALE\"]\n : undefined\n }\n\n tableColumn.default =\n dbColumn[\"DATA_DEFAULT\"] !== null &&\n dbColumn[\"DATA_DEFAULT\"] !== undefined &&\n dbColumn[\"VIRTUAL_COLUMN\"] === \"NO\" &&\n dbColumn[\"DATA_DEFAULT\"].trim() !== \"NULL\"\n ? (tableColumn.default =\n dbColumn[\"DATA_DEFAULT\"].trim())\n : undefined\n\n const primaryConstraint = columnConstraints.find(\n (constraint) =>\n constraint[\"CONSTRAINT_TYPE\"] === \"P\",\n )\n if (primaryConstraint) {\n tableColumn.isPrimary = true\n // find another columns involved in primary key constraint\n const anotherPrimaryConstraints =\n dbConstraints.filter(\n (constraint) =>\n constraint[\"OWNER\"] ===\n dbColumn[\"OWNER\"] &&\n constraint[\"TABLE_NAME\"] ===\n dbColumn[\"TABLE_NAME\"] &&\n constraint[\"COLUMN_NAME\"] !==\n dbColumn[\"COLUMN_NAME\"] &&\n constraint[\"CONSTRAINT_TYPE\"] ===\n \"P\",\n )\n\n // collect all column names\n const columnNames =\n anotherPrimaryConstraints.map(\n (constraint) =>\n constraint[\"COLUMN_NAME\"],\n )\n columnNames.push(dbColumn[\"COLUMN_NAME\"])\n\n // build default primary key constraint name\n const pkName =\n this.connection.namingStrategy.primaryKeyName(\n table,\n columnNames,\n )\n\n // if primary key has user-defined constraint name, write it in table column\n if (\n primaryConstraint[\"CONSTRAINT_NAME\"] !==\n pkName\n ) {\n tableColumn.primaryKeyConstraintName =\n primaryConstraint[\"CONSTRAINT_NAME\"]\n }\n }\n\n tableColumn.isNullable =\n dbColumn[\"NULLABLE\"] === \"Y\"\n tableColumn.isUnique =\n uniqueConstraints.length > 0 &&\n !isConstraintComposite\n tableColumn.isGenerated =\n dbColumn[\"IDENTITY_COLUMN\"] === \"YES\"\n if (tableColumn.isGenerated) {\n tableColumn.generationStrategy = \"increment\"\n tableColumn.default = undefined\n }\n tableColumn.comment = \"\" // todo\n\n if (dbColumn[\"VIRTUAL_COLUMN\"] === \"YES\") {\n tableColumn.generatedType = \"VIRTUAL\"\n\n const asExpressionQuery =\n this.selectTypeormMetadataSql({\n table: dbTable[\"TABLE_NAME\"],\n type: MetadataTableType.GENERATED_COLUMN,\n name: tableColumn.name,\n })\n\n const results = await this.query(\n asExpressionQuery.query,\n asExpressionQuery.parameters,\n )\n if (results[0] && results[0].value) {\n tableColumn.asExpression = results[0].value\n } else {\n tableColumn.asExpression = \"\"\n }\n }\n\n return tableColumn\n }),\n )\n\n // find unique constraints of table, group them by constraint name and build TableUnique.\n const tableUniqueConstraints = OrmUtils.uniq(\n dbConstraints.filter((dbConstraint) => {\n return (\n dbConstraint[\"TABLE_NAME\"] ===\n dbTable[\"TABLE_NAME\"] &&\n dbConstraint[\"OWNER\"] === dbTable[\"OWNER\"] &&\n dbConstraint[\"CONSTRAINT_TYPE\"] === \"U\"\n )\n }),\n (dbConstraint) => dbConstraint[\"CONSTRAINT_NAME\"],\n )\n\n table.uniques = tableUniqueConstraints.map((constraint) => {\n const uniques = dbConstraints.filter(\n (dbC) =>\n dbC[\"CONSTRAINT_NAME\"] ===\n constraint[\"CONSTRAINT_NAME\"],\n )\n return new TableUnique({\n name: constraint[\"CONSTRAINT_NAME\"],\n columnNames: uniques.map((u) => u[\"COLUMN_NAME\"]),\n })\n })\n\n // find check constraints of table, group them by constraint name and build TableCheck.\n const tableCheckConstraints = OrmUtils.uniq(\n dbConstraints.filter((dbConstraint) => {\n return (\n dbConstraint[\"TABLE_NAME\"] ===\n dbTable[\"TABLE_NAME\"] &&\n dbConstraint[\"OWNER\"] === dbTable[\"OWNER\"] &&\n dbConstraint[\"CONSTRAINT_TYPE\"] === \"C\"\n )\n }),\n (dbConstraint) => dbConstraint[\"CONSTRAINT_NAME\"],\n )\n\n table.checks = tableCheckConstraints.map((constraint) => {\n const checks = dbConstraints.filter(\n (dbC) =>\n dbC[\"TABLE_NAME\"] === constraint[\"TABLE_NAME\"] &&\n dbC[\"OWNER\"] === constraint[\"OWNER\"] &&\n dbC[\"CONSTRAINT_NAME\"] ===\n constraint[\"CONSTRAINT_NAME\"],\n )\n return new TableCheck({\n name: constraint[\"CONSTRAINT_NAME\"],\n columnNames: checks.map((c) => c[\"COLUMN_NAME\"]),\n expression: constraint[\"SEARCH_CONDITION\"],\n })\n })\n\n // find foreign key constraints of table, group them by constraint name and build TableForeignKey.\n const tableForeignKeyConstraints = OrmUtils.uniq(\n dbForeignKeys.filter(\n (dbForeignKey) =>\n dbForeignKey[\"OWNER\"] === dbTable[\"OWNER\"] &&\n dbForeignKey[\"TABLE_NAME\"] ===\n dbTable[\"TABLE_NAME\"],\n ),\n (dbForeignKey) => dbForeignKey[\"CONSTRAINT_NAME\"],\n )\n\n table.foreignKeys = tableForeignKeyConstraints.map(\n (dbForeignKey) => {\n const foreignKeys = dbForeignKeys.filter(\n (dbFk) =>\n dbFk[\"TABLE_NAME\"] ===\n dbForeignKey[\"TABLE_NAME\"] &&\n dbFk[\"OWNER\"] === dbForeignKey[\"OWNER\"] &&\n dbFk[\"CONSTRAINT_NAME\"] ===\n dbForeignKey[\"CONSTRAINT_NAME\"],\n )\n return new TableForeignKey({\n name: dbForeignKey[\"CONSTRAINT_NAME\"],\n columnNames: foreignKeys.map(\n (dbFk) => dbFk[\"COLUMN_NAME\"],\n ),\n referencedDatabase: table.database,\n referencedSchema: dbForeignKey[\"OWNER\"],\n referencedTableName:\n dbForeignKey[\"REFERENCED_TABLE_NAME\"],\n referencedColumnNames: foreignKeys.map(\n (dbFk) => dbFk[\"REFERENCED_COLUMN_NAME\"],\n ),\n onDelete: dbForeignKey[\"ON_DELETE\"],\n onUpdate: \"NO ACTION\", // Oracle does not have onUpdate option in FK's, but we need it for proper synchronization\n })\n },\n )\n\n // Attempt to map auto-generated virtual columns to their\n // referenced columns, through its 'DATA_DEFAULT' property.\n //\n // An example of this happening is when a column of type\n // TIMESTAMP WITH TIME ZONE is indexed. Oracle will create a\n // virtual column of type TIMESTAMP with a default value of\n // SYS_EXTRACT_UTC(<column>).\n const autoGenVirtualDbColumns = dbColumns\n .filter(\n (dbColumn) =>\n dbColumn[\"OWNER\"] === dbTable[\"OWNER\"] &&\n dbColumn[\"TABLE_NAME\"] === dbTable[\"TABLE_NAME\"] &&\n dbColumn[\"VIRTUAL_COLUMN\"] === \"YES\" &&\n dbColumn[\"USER_GENERATED\"] === \"NO\",\n )\n .reduce((acc, x) => {\n const referencedDbColumn = dbColumns.find((dbColumn) =>\n x[\"DATA_DEFAULT\"].includes(dbColumn[\"COLUMN_NAME\"]),\n )\n\n if (!referencedDbColumn) return acc\n\n return {\n ...acc,\n [x[\"COLUMN_NAME\"]]:\n referencedDbColumn[\"COLUMN_NAME\"],\n }\n }, {})\n\n // create TableIndex objects from the loaded indices\n table.indices = dbIndices\n .filter(\n (dbIndex) =>\n dbIndex[\"TABLE_NAME\"] === dbTable[\"TABLE_NAME\"] &&\n dbIndex[\"OWNER\"] === dbTable[\"OWNER\"],\n )\n .map((dbIndex) => {\n //\n const columnNames = dbIndex[\"COLUMN_NAMES\"]\n .split(\",\")\n .map(\n (\n columnName: keyof typeof autoGenVirtualDbColumns,\n ) =>\n autoGenVirtualDbColumns[columnName] ??\n columnName,\n )\n\n return new TableIndex({\n name: dbIndex[\"INDEX_NAME\"],\n columnNames,\n isUnique: dbIndex[\"UNIQUENESS\"] === \"UNIQUE\",\n })\n })\n\n return table\n }),\n )\n }\n\n /**\n * Builds and returns SQL for create table.\n */\n protected createTableSql(table: Table, createForeignKeys?: boolean): Query {\n const columnDefinitions = table.columns\n .map((column) => this.buildCreateColumnSql(column))\n .join(\", \")\n let sql = `CREATE TABLE ${this.escapePath(table)} (${columnDefinitions}`\n\n table.columns\n .filter((column) => column.isUnique)\n .forEach((column) => {\n const isUniqueExist = table.uniques.some(\n (unique) =>\n unique.columnNames.length === 1 &&\n unique.columnNames[0] === column.name,\n )\n if (!isUniqueExist)\n table.uniques.push(\n new TableUnique({\n name: this.connection.namingStrategy.uniqueConstraintName(\n table,\n [column.name],\n ),\n columnNames: [column.name],\n }),\n )\n })\n\n if (table.uniques.length > 0) {\n const uniquesSql = table.uniques\n .map((unique) => {\n const uniqueName = unique.name\n ? unique.name\n : this.connection.namingStrategy.uniqueConstraintName(\n table,\n unique.columnNames,\n )\n const columnNames = unique.columnNames\n .map((columnName) => `\"${columnName}\"`)\n .join(\", \")\n return `CONSTRAINT \"${uniqueName}\" UNIQUE (${columnNames})`\n })\n .join(\", \")\n\n sql += `, ${uniquesSql}`\n }\n\n if (table.checks.length > 0) {\n const checksSql = table.checks\n .map((check) => {\n const checkName = check.name\n ? check.name\n : this.connection.namingStrategy.checkConstraintName(\n table,\n check.expression!,\n )\n return `CONSTRAINT \"${checkName}\" CHECK (${check.expression})`\n })\n .join(\", \")\n\n sql += `, ${checksSql}`\n }\n\n if (table.foreignKeys.length > 0 && createForeignKeys) {\n const foreignKeysSql = table.foreignKeys\n .map((fk) => {\n const columnNames = fk.columnNames\n .map((columnName) => `\"${columnName}\"`)\n .join(\", \")\n if (!fk.name)\n fk.name = this.connection.namingStrategy.foreignKeyName(\n table,\n fk.columnNames,\n this.getTablePath(fk),\n fk.referencedColumnNames,\n )\n const referencedColumnNames = fk.referencedColumnNames\n .map((columnName) => `\"${columnName}\"`)\n .join(\", \")\n let constraint = `CONSTRAINT \"${\n fk.name\n }\" FOREIGN KEY (${columnNames}) REFERENCES ${this.escapePath(\n this.getTablePath(fk),\n )} (${referencedColumnNames})`\n if (fk.onDelete && fk.onDelete !== \"NO ACTION\") {\n // Oracle does not support NO ACTION, but we set NO ACTION by default in EntityMetadata\n constraint += ` ON DELETE ${fk.onDelete}`\n }\n return constraint\n })\n .join(\", \")\n\n sql += `, ${foreignKeysSql}`\n }\n\n const primaryColumns = table.columns.filter(\n (column) => column.isPrimary,\n )\n if (primaryColumns.length > 0) {\n const primaryKeyName = primaryColumns[0].primaryKeyConstraintName\n ? primaryColumns[0].primaryKeyConstraintName\n : this.connection.namingStrategy.primaryKeyName(\n table,\n primaryColumns.map((column) => column.name),\n )\n\n const columnNames = primaryColumns\n .map((column) => `\"${column.name}\"`)\n .join(\", \")\n sql += `, CONSTRAINT \"${primaryKeyName}\" PRIMARY KEY (${columnNames})`\n }\n\n sql += `)`\n\n return new Query(sql)\n }\n\n /**\n * Builds drop table sql.\n */\n protected dropTableSql(\n tableOrName: Table | string,\n ifExist?: boolean,\n ): Query {\n const query = ifExist\n ? `DROP TABLE IF EXISTS ${this.escapePath(tableOrName)}`\n : `DROP TABLE ${this.escapePath(tableOrName)}`\n return new Query(query)\n }\n\n protected createViewSql(view: View): Query {\n const materializedClause = view.materialized ? \"MATERIALIZED \" : \"\"\n if (typeof view.expression === \"string\") {\n return new Query(\n `CREATE ${materializedClause}VIEW ${this.escapePath(view)} AS ${\n view.expression\n }`,\n )\n } else {\n return new Query(\n `CREATE ${materializedClause}VIEW ${this.escapePath(\n view,\n )} AS ${view.expression(this.connection).getQuery()}`,\n )\n }\n }\n\n protected insertViewDefinitionSql(view: View): Query {\n const expression =\n typeof view.expression === \"string\"\n ? view.expression.trim()\n : view.expression(this.connection).getQuery()\n const type = view.materialized\n ? MetadataTableType.MATERIALIZED_VIEW\n : MetadataTableType.VIEW\n const { schema, tableName } = this.driver.parseTableName(view)\n return this.insertTypeormMetadataSql({\n type: type,\n name: tableName,\n schema: schema,\n value: expression,\n })\n }\n\n /**\n * Builds drop view sql.\n */\n protected dropViewSql(view: View): Query {\n const materializedClause = view.materialized ? \"MATERIALIZED \" : \"\"\n return new Query(\n `DROP ${materializedClause}VIEW ${this.escapePath(view)}`,\n )\n }\n\n /**\n * Builds remove view sql.\n */\n protected deleteViewDefinitionSql(view: View): Query {\n const type = view.materialized\n ? MetadataTableType.MATERIALIZED_VIEW\n : MetadataTableType.VIEW\n return this.deleteTypeormMetadataSql({ type, name: view.name })\n }\n\n /**\n * Builds create index sql.\n */\n protected createIndexSql(table: Table, index: TableIndex): Query {\n const columns = index.columnNames\n .map((columnName) => `\"${columnName}\"`)\n .join(\", \")\n return new Query(\n `CREATE ${index.isUnique ? \"UNIQUE \" : \"\"}INDEX \"${\n index.name\n }\" ON ${this.escapePath(table)} (${columns})`,\n )\n }\n\n /**\n * Builds drop index sql.\n */\n protected dropIndexSql(indexOrName: TableIndex | string): Query {\n let indexName = InstanceChecker.isTableIndex(indexOrName)\n ? indexOrName.name\n : indexOrName\n return new Query(`DROP INDEX \"${indexName}\"`)\n }\n\n /**\n * Builds create primary key sql.\n */\n protected createPrimaryKeySql(\n table: Table,\n columnNames: string[],\n constraintName?: string,\n ): Query {\n const primaryKeyName = constraintName\n ? constraintName\n : this.connection.namingStrategy.primaryKeyName(table, columnNames)\n\n const columnNamesString = columnNames\n .map((columnName) => `\"${columnName}\"`)\n .join(\", \")\n\n return new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} ADD CONSTRAINT \"${primaryKeyName}\" PRIMARY KEY (${columnNamesString})`,\n )\n }\n\n /**\n * Builds drop primary key sql.\n */\n protected dropPrimaryKeySql(table: Table): Query {\n if (!table.primaryColumns.length)\n throw new TypeORMError(`Table ${table} has no primary keys.`)\n\n const columnNames = table.primaryColumns.map((column) => column.name)\n const constraintName = table.primaryColumns[0].primaryKeyConstraintName\n const primaryKeyName = constraintName\n ? constraintName\n : this.connection.namingStrategy.primaryKeyName(table, columnNames)\n\n return new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${primaryKeyName}\"`,\n )\n }\n\n /**\n * Builds create unique constraint sql.\n */\n protected createUniqueConstraintSql(\n table: Table,\n uniqueConstraint: TableUnique,\n ): Query {\n const columnNames = uniqueConstraint.columnNames\n .map((column) => `\"` + column + `\"`)\n .join(\", \")\n return new Query(\n `ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${\n uniqueConstraint.name\n }\" UNIQUE (${columnNames})`,\n )\n }\n\n /**\n * Builds drop unique constraint sql.\n */\n protected dropUniqueConstraintSql(\n table: Table,\n uniqueOrName: TableUnique | string,\n ): Query {\n const uniqueName = InstanceChecker.isTableUnique(uniqueOrName)\n ? uniqueOrName.name\n : uniqueOrName\n return new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${uniqueName}\"`,\n )\n }\n\n /**\n * Builds create check constraint sql.\n */\n protected createCheckConstraintSql(\n table: Table,\n checkConstraint: TableCheck,\n ): Query {\n return new Query(\n `ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${\n checkConstraint.name\n }\" CHECK (${checkConstraint.expression})`,\n )\n }\n\n /**\n * Builds drop check constraint sql.\n */\n protected dropCheckConstraintSql(\n table: Table,\n checkOrName: TableCheck | string,\n ): Query {\n const checkName = InstanceChecker.isTableCheck(checkOrName)\n ? checkOrName.name\n : checkOrName\n return new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${checkName}\"`,\n )\n }\n\n /**\n * Builds create foreign key sql.\n */\n protected createForeignKeySql(\n table: Table,\n foreignKey: TableForeignKey,\n ): Query {\n const columnNames = foreignKey.columnNames\n .map((column) => `\"` + column + `\"`)\n .join(\", \")\n const referencedColumnNames = foreignKey.referencedColumnNames\n .map((column) => `\"` + column + `\"`)\n .join(\",\")\n let sql =\n `ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${\n foreignKey.name\n }\" FOREIGN KEY (${columnNames}) ` +\n `REFERENCES ${this.escapePath(\n this.getTablePath(foreignKey),\n )} (${referencedColumnNames})`\n // Oracle does not support NO ACTION, but we set NO ACTION by default in EntityMetadata\n if (foreignKey.onDelete && foreignKey.onDelete !== \"NO ACTION\") {\n sql += ` ON DELETE ${foreignKey.onDelete}`\n }\n return new Query(sql)\n }\n\n /**\n * Builds drop foreign key sql.\n */\n protected dropForeignKeySql(\n table: Table,\n foreignKeyOrName: TableForeignKey | string,\n ): Query {\n const foreignKeyName = InstanceChecker.isTableForeignKey(\n foreignKeyOrName,\n )\n ? foreignKeyOrName.name\n : foreignKeyOrName\n return new Query(\n `ALTER TABLE ${this.escapePath(\n table,\n )} DROP CONSTRAINT \"${foreignKeyName}\"`,\n )\n }\n\n /**\n * Builds a query for create column.\n */\n protected buildCreateColumnSql(column: TableColumn) {\n let c =\n `\"${column.name}\" ` + this.connection.driver.createFullType(column)\n if (column.charset) c += \" CHARACTER SET \" + column.charset\n if (column.collation) c += \" COLLATE \" + column.collation\n\n if (column.asExpression) c += ` AS (${column.asExpression}) VIRTUAL`\n\n if (column.default !== undefined && column.default !== null)\n // DEFAULT must be placed before NOT NULL\n c += \" DEFAULT \" + column.default\n if (column.isNullable !== true && !column.isGenerated)\n // NOT NULL is not supported with GENERATED\n c += \" NOT NULL\"\n if (\n column.isGenerated === true &&\n column.generationStrategy === \"increment\"\n )\n c += \" GENERATED BY DEFAULT AS IDENTITY\"\n\n return c\n }\n\n /**\n * Escapes given table or view path.\n */\n protected escapePath(target: Table | View | string): string {\n // Ignore database when escaping paths\n const { schema, tableName } = this.driver.parseTableName(target)\n\n if (schema && schema !== this.driver.schema) {\n return `\"${schema}\".\"${tableName}\"`\n }\n\n return `\"${tableName}\"`\n }\n\n /**\n * Change table comment.\n */\n changeTableComment(\n tableOrName: Table | string,\n comment?: string,\n ): Promise<void> {\n throw new TypeORMError(\n `oracle driver does not support change table comment.`,\n )\n }\n}\n"],"sourceRoot":"../.."}
|
|
1
|
+
{"version":3,"sources":["../../src/driver/oracle/OracleQueryRunner.ts"],"names":[],"mappings":"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","file":"OracleQueryRunner.js","sourcesContent":["import { QueryRunner } from \"../../query-runner/QueryRunner\"\r\nimport { ObjectLiteral } from \"../../common/ObjectLiteral\"\r\nimport { TransactionNotStartedError } from \"../../error/TransactionNotStartedError\"\r\nimport { TableColumn } from \"../../schema-builder/table/TableColumn\"\r\nimport { Table } from \"../../schema-builder/table/Table\"\r\nimport { TableForeignKey } from \"../../schema-builder/table/TableForeignKey\"\r\nimport { TableIndex } from \"../../schema-builder/table/TableIndex\"\r\nimport { QueryRunnerAlreadyReleasedError } from \"../../error/QueryRunnerAlreadyReleasedError\"\r\nimport { View } from \"../../schema-builder/view/View\"\r\nimport { Query } from \"../Query\"\r\nimport { OracleDriver } from \"./OracleDriver\"\r\nimport { ReadStream } from \"../../platform/PlatformTools\"\r\nimport { QueryFailedError } from \"../../error/QueryFailedError\"\r\nimport { TableUnique } from \"../../schema-builder/table/TableUnique\"\r\nimport { Broadcaster } from \"../../subscriber/Broadcaster\"\r\nimport { BaseQueryRunner } from \"../../query-runner/BaseQueryRunner\"\r\nimport { OrmUtils } from \"../../util/OrmUtils\"\r\nimport { TableCheck } from \"../../schema-builder/table/TableCheck\"\r\nimport { ColumnType } from \"../types/ColumnTypes\"\r\nimport { IsolationLevel } from \"../types/IsolationLevel\"\r\nimport { TableExclusion } from \"../../schema-builder/table/TableExclusion\"\r\nimport { ReplicationMode } from \"../types/ReplicationMode\"\r\nimport { TypeORMError } from \"../../error\"\r\nimport { QueryResult } from \"../../query-runner/QueryResult\"\r\nimport { MetadataTableType } from \"../types/MetadataTableType\"\r\nimport { InstanceChecker } from \"../../util/InstanceChecker\"\r\nimport { BroadcasterResult } from \"../../subscriber/BroadcasterResult\"\r\n\r\n/**\r\n * Runs queries on a single oracle database connection.\r\n */\r\nexport class OracleQueryRunner extends BaseQueryRunner implements QueryRunner {\r\n // -------------------------------------------------------------------------\r\n // Public Implemented Properties\r\n // -------------------------------------------------------------------------\r\n\r\n /**\r\n * Database driver used by connection.\r\n */\r\n driver: OracleDriver\r\n\r\n // -------------------------------------------------------------------------\r\n // Protected Properties\r\n // -------------------------------------------------------------------------\r\n\r\n /**\r\n * Promise used to obtain a database connection for a first time.\r\n */\r\n protected databaseConnectionPromise: Promise<any>\r\n\r\n // -------------------------------------------------------------------------\r\n // Constructor\r\n // -------------------------------------------------------------------------\r\n\r\n constructor(driver: OracleDriver, mode: ReplicationMode) {\r\n super()\r\n this.driver = driver\r\n this.connection = driver.connection\r\n this.broadcaster = new Broadcaster(this)\r\n this.mode = mode\r\n }\r\n\r\n // -------------------------------------------------------------------------\r\n // Public Methods\r\n // -------------------------------------------------------------------------\r\n\r\n /**\r\n * Creates/uses database connection from the connection pool to perform further operations.\r\n * Returns obtained database connection.\r\n */\r\n connect(): Promise<any> {\r\n if (this.databaseConnection)\r\n return Promise.resolve(this.databaseConnection)\r\n\r\n if (this.databaseConnectionPromise)\r\n return this.databaseConnectionPromise\r\n\r\n if (this.mode === \"slave\" && this.driver.isReplicated) {\r\n this.databaseConnectionPromise = this.driver\r\n .obtainSlaveConnection()\r\n .then((connection) => {\r\n this.databaseConnection = connection\r\n return this.databaseConnection\r\n })\r\n } else {\r\n // master\r\n this.databaseConnectionPromise = this.driver\r\n .obtainMasterConnection()\r\n .then((connection) => {\r\n this.databaseConnection = connection\r\n return this.databaseConnection\r\n })\r\n }\r\n\r\n return this.databaseConnectionPromise\r\n }\r\n\r\n /**\r\n * Releases used database connection.\r\n * You cannot use query runner methods once its released.\r\n */\r\n async release(): Promise<void> {\r\n this.isReleased = true\r\n\r\n if (!this.databaseConnection) {\r\n return\r\n }\r\n\r\n await this.databaseConnection.close()\r\n }\r\n\r\n /**\r\n * Starts transaction.\r\n */\r\n async startTransaction(\r\n isolationLevel: IsolationLevel = \"READ COMMITTED\",\r\n ): Promise<void> {\r\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\r\n\r\n // await this.query(\"START TRANSACTION\");\r\n if (\r\n isolationLevel !== \"SERIALIZABLE\" &&\r\n isolationLevel !== \"READ COMMITTED\"\r\n ) {\r\n throw new TypeORMError(\r\n `Oracle only supports SERIALIZABLE and READ COMMITTED isolation`,\r\n )\r\n }\r\n\r\n this.isTransactionActive = true\r\n try {\r\n await this.broadcaster.broadcast(\"BeforeTransactionStart\")\r\n } catch (err) {\r\n this.isTransactionActive = false\r\n throw err\r\n }\r\n\r\n if (this.transactionDepth === 0) {\r\n this.transactionDepth += 1\r\n await this.query(\r\n \"SET TRANSACTION ISOLATION LEVEL \" + isolationLevel,\r\n )\r\n } else {\r\n this.transactionDepth += 1\r\n await this.query(`SAVEPOINT typeorm_${this.transactionDepth - 1}`)\r\n }\r\n\r\n await this.broadcaster.broadcast(\"AfterTransactionStart\")\r\n }\r\n\r\n /**\r\n * Commits transaction.\r\n * Error will be thrown if transaction was not started.\r\n */\r\n async commitTransaction(): Promise<void> {\r\n if (!this.isTransactionActive) throw new TransactionNotStartedError()\r\n\r\n await this.broadcaster.broadcast(\"BeforeTransactionCommit\")\r\n\r\n if (this.transactionDepth === 1) {\r\n await this.query(\"COMMIT\")\r\n this.isTransactionActive = false\r\n }\r\n this.transactionDepth -= 1\r\n\r\n await this.broadcaster.broadcast(\"AfterTransactionCommit\")\r\n }\r\n\r\n /**\r\n * Rollbacks transaction.\r\n * Error will be thrown if transaction was not started.\r\n */\r\n async rollbackTransaction(): Promise<void> {\r\n if (!this.isTransactionActive) throw new TransactionNotStartedError()\r\n\r\n await this.broadcaster.broadcast(\"BeforeTransactionRollback\")\r\n\r\n if (this.transactionDepth > 1) {\r\n this.transactionDepth -= 1\r\n await this.query(\r\n `ROLLBACK TO SAVEPOINT typeorm_${this.transactionDepth}`,\r\n )\r\n } else {\r\n this.transactionDepth -= 1\r\n await this.query(\"ROLLBACK\")\r\n this.isTransactionActive = false\r\n }\r\n\r\n await this.broadcaster.broadcast(\"AfterTransactionRollback\")\r\n }\r\n\r\n /**\r\n * Executes a given SQL query.\r\n */\r\n async query(\r\n query: string,\r\n parameters?: any[],\r\n useStructuredResult = false,\r\n ): Promise<any> {\r\n if (this.isReleased) throw new QueryRunnerAlreadyReleasedError()\r\n\r\n const databaseConnection = await this.connect()\r\n const broadcasterResult = new BroadcasterResult()\r\n\r\n this.driver.connection.logger.logQuery(query, parameters, this)\r\n this.broadcaster.broadcastBeforeQueryEvent(\r\n broadcasterResult,\r\n query,\r\n parameters,\r\n )\r\n\r\n const queryStartTime = +new Date()\r\n\r\n try {\r\n const executionOptions = {\r\n autoCommit: !this.isTransactionActive,\r\n outFormat: this.driver.oracle.OUT_FORMAT_OBJECT,\r\n }\r\n\r\n const raw = await databaseConnection.execute(\r\n query,\r\n parameters || {},\r\n executionOptions,\r\n )\r\n\r\n // log slow queries if maxQueryExecution time is set\r\n const maxQueryExecutionTime =\r\n this.driver.options.maxQueryExecutionTime\r\n const queryEndTime = +new Date()\r\n const queryExecutionTime = queryEndTime - queryStartTime\r\n\r\n this.broadcaster.broadcastAfterQueryEvent(\r\n broadcasterResult,\r\n query,\r\n parameters,\r\n true,\r\n queryExecutionTime,\r\n raw,\r\n undefined,\r\n )\r\n\r\n if (\r\n maxQueryExecutionTime &&\r\n queryExecutionTime > maxQueryExecutionTime\r\n )\r\n this.driver.connection.logger.logQuerySlow(\r\n queryExecutionTime,\r\n query,\r\n parameters,\r\n this,\r\n )\r\n\r\n const result = new QueryResult()\r\n\r\n result.raw =\r\n raw.rows ||\r\n raw.outBinds ||\r\n raw.rowsAffected ||\r\n raw.implicitResults\r\n\r\n if (raw?.hasOwnProperty(\"rows\") && Array.isArray(raw.rows)) {\r\n result.records = raw.rows\r\n }\r\n\r\n if (\r\n raw?.hasOwnProperty(\"outBinds\") &&\r\n Array.isArray(raw.outBinds)\r\n ) {\r\n result.records = raw.outBinds\r\n }\r\n\r\n if (\r\n raw?.hasOwnProperty(\"implicitResults\") &&\r\n Array.isArray(raw.implicitResults)\r\n ) {\r\n result.records = raw.implicitResults\r\n }\r\n\r\n if (raw?.hasOwnProperty(\"rowsAffected\")) {\r\n result.affected = raw.rowsAffected\r\n }\r\n\r\n if (useStructuredResult) {\r\n return result\r\n } else {\r\n return result.raw\r\n }\r\n } catch (err) {\r\n this.driver.connection.logger.logQueryError(\r\n err,\r\n query,\r\n parameters,\r\n this,\r\n )\r\n this.broadcaster.broadcastAfterQueryEvent(\r\n broadcasterResult,\r\n query,\r\n parameters,\r\n false,\r\n undefined,\r\n undefined,\r\n err,\r\n )\r\n\r\n throw new QueryFailedError(query, parameters, err)\r\n } finally {\r\n await broadcasterResult.wait()\r\n }\r\n }\r\n\r\n /**\r\n * Returns raw data stream.\r\n */\r\n async stream(\r\n query: string,\r\n parameters?: any[],\r\n onEnd?: Function,\r\n onError?: Function,\r\n ): Promise<ReadStream> {\r\n if (this.isReleased) {\r\n throw new QueryRunnerAlreadyReleasedError()\r\n }\r\n\r\n const executionOptions = {\r\n autoCommit: !this.isTransactionActive,\r\n outFormat: this.driver.oracle.OUT_FORMAT_OBJECT,\r\n }\r\n\r\n const databaseConnection = await this.connect()\r\n\r\n this.driver.connection.logger.logQuery(query, parameters, this)\r\n\r\n try {\r\n const stream = databaseConnection.queryStream(\r\n query,\r\n parameters,\r\n executionOptions,\r\n )\r\n if (onEnd) {\r\n stream.on(\"end\", onEnd)\r\n }\r\n\r\n if (onError) {\r\n stream.on(\"error\", onError)\r\n }\r\n\r\n return stream\r\n } catch (err) {\r\n this.driver.connection.logger.logQueryError(\r\n err,\r\n query,\r\n parameters,\r\n this,\r\n )\r\n throw new QueryFailedError(query, parameters, err)\r\n }\r\n }\r\n\r\n /**\r\n * Returns all available database names including system databases.\r\n */\r\n async getDatabases(): Promise<string[]> {\r\n return Promise.resolve([])\r\n }\r\n\r\n /**\r\n * Returns all available schema names including system schemas.\r\n * If database parameter specified, returns schemas of that database.\r\n */\r\n async getSchemas(database?: string): Promise<string[]> {\r\n return Promise.resolve([])\r\n }\r\n\r\n /**\r\n * Checks if database with the given name exist.\r\n */\r\n async hasDatabase(database: string): Promise<boolean> {\r\n try {\r\n const query = await this.query(\r\n `SELECT 1 AS \"exists\" FROM global_name@\"${database}\"`,\r\n )\r\n\r\n return query.length > 0\r\n } catch (e) {\r\n return false\r\n }\r\n }\r\n\r\n /**\r\n * Loads currently using database\r\n */\r\n async getCurrentDatabase(): Promise<undefined> {\r\n const query = await this.query(\r\n `SELECT SYS_CONTEXT('USERENV','DB_NAME') AS \"db_name\" FROM dual`,\r\n )\r\n return query[0][\"db_name\"]\r\n }\r\n\r\n /**\r\n * Checks if schema with the given name exist.\r\n */\r\n async hasSchema(schema: string): Promise<boolean> {\r\n return Promise.resolve(false)\r\n }\r\n\r\n /**\r\n * Loads currently using database schema\r\n */\r\n async getCurrentSchema(): Promise<string> {\r\n const query = await this.query(\r\n `SELECT SYS_CONTEXT('USERENV','CURRENT_SCHEMA') AS \"schema_name\" FROM dual`,\r\n )\r\n return query[0][\"schema_name\"]\r\n }\r\n\r\n /**\r\n * Checks if table with the given name exist in the database.\r\n */\r\n async hasTable(tableOrName: Table | string): Promise<boolean> {\r\n const { tableName } = this.driver.parseTableName(tableOrName)\r\n const sql = `SELECT \"TABLE_NAME\" FROM \"USER_TABLES\" WHERE \"TABLE_NAME\" = '${tableName}'`\r\n const result = await this.query(sql)\r\n return result.length ? true : false\r\n }\r\n\r\n /**\r\n * Checks if column with the given name exist in the given table.\r\n */\r\n async hasColumn(\r\n tableOrName: Table | string,\r\n columnName: string,\r\n ): Promise<boolean> {\r\n const { tableName } = this.driver.parseTableName(tableOrName)\r\n const sql = `SELECT \"COLUMN_NAME\" FROM \"USER_TAB_COLS\" WHERE \"TABLE_NAME\" = '${tableName}' AND \"COLUMN_NAME\" = '${columnName}'`\r\n const result = await this.query(sql)\r\n return result.length ? true : false\r\n }\r\n\r\n /**\r\n * Creates a new database.\r\n */\r\n async createDatabase(\r\n database: string,\r\n ifNotExist?: boolean,\r\n ): Promise<void> {\r\n // Even with `IF NOT EXISTS` we get:\r\n // ORA-01501: CREATE DATABASE failed\r\n // ORA-01100: database already mounted\r\n if (ifNotExist) {\r\n try {\r\n await this.query(`CREATE DATABASE IF NOT EXISTS \"${database}\";`)\r\n } catch (e) {\r\n // if (e instanceof QueryFailedError) {\r\n if (e.message.includes(\"ORA-01100: database already mounted\")) {\r\n return\r\n }\r\n // }\r\n\r\n throw e\r\n }\r\n } else {\r\n await this.query(`CREATE DATABASE \"${database}\"`)\r\n }\r\n }\r\n\r\n /**\r\n * Drops database.\r\n */\r\n async dropDatabase(database: string, ifExist?: boolean): Promise<void> {\r\n return Promise.resolve()\r\n }\r\n\r\n /**\r\n * Creates a new table schema.\r\n */\r\n async createSchema(\r\n schemaPath: string,\r\n ifNotExist?: boolean,\r\n ): Promise<void> {\r\n throw new TypeORMError(\r\n `Schema create queries are not supported by Oracle driver.`,\r\n )\r\n }\r\n\r\n /**\r\n * Drops table schema.\r\n */\r\n async dropSchema(schemaPath: string, ifExist?: boolean): Promise<void> {\r\n throw new TypeORMError(\r\n `Schema drop queries are not supported by Oracle driver.`,\r\n )\r\n }\r\n\r\n /**\r\n * Creates a new table.\r\n */\r\n async createTable(\r\n table: Table,\r\n ifNotExist: boolean = false,\r\n createForeignKeys: boolean = true,\r\n createIndices: boolean = true,\r\n ): Promise<void> {\r\n if (ifNotExist) {\r\n const isTableExist = await this.hasTable(table)\r\n if (isTableExist) return Promise.resolve()\r\n }\r\n const upQueries: Query[] = []\r\n const downQueries: Query[] = []\r\n\r\n upQueries.push(this.createTableSql(table, createForeignKeys))\r\n downQueries.push(this.dropTableSql(table))\r\n\r\n // if createForeignKeys is true, we must drop created foreign keys in down query.\r\n // createTable does not need separate method to create foreign keys, because it create fk's in the same query with table creation.\r\n if (createForeignKeys)\r\n table.foreignKeys.forEach((foreignKey) =>\r\n downQueries.push(this.dropForeignKeySql(table, foreignKey)),\r\n )\r\n\r\n if (createIndices) {\r\n table.indices.forEach((index) => {\r\n // new index may be passed without name. In this case we generate index name manually.\r\n if (!index.name)\r\n index.name = this.connection.namingStrategy.indexName(\r\n table,\r\n index.columnNames,\r\n index.where,\r\n )\r\n upQueries.push(this.createIndexSql(table, index))\r\n downQueries.push(this.dropIndexSql(index))\r\n })\r\n }\r\n\r\n // if table have column with generated type, we must add the expression to the metadata table\r\n const generatedColumns = table.columns.filter(\r\n (column) => column.generatedType && column.asExpression,\r\n )\r\n\r\n for (const column of generatedColumns) {\r\n const insertQuery = this.insertTypeormMetadataSql({\r\n table: table.name,\r\n type: MetadataTableType.GENERATED_COLUMN,\r\n name: column.name,\r\n value: column.asExpression,\r\n })\r\n\r\n const deleteQuery = this.deleteTypeormMetadataSql({\r\n table: table.name,\r\n type: MetadataTableType.GENERATED_COLUMN,\r\n name: column.name,\r\n })\r\n\r\n upQueries.push(insertQuery)\r\n downQueries.push(deleteQuery)\r\n }\r\n\r\n await this.executeQueries(upQueries, downQueries)\r\n }\r\n\r\n /**\r\n * Drops the table.\r\n */\r\n async dropTable(\r\n tableOrName: Table | string,\r\n ifExist?: boolean,\r\n dropForeignKeys: boolean = true,\r\n dropIndices: boolean = true,\r\n ): Promise<void> {\r\n // It needs because if table does not exist and dropForeignKeys or dropIndices is true, we don't need\r\n // to perform drop queries for foreign keys and indices.\r\n if (ifExist) {\r\n const isTableExist = await this.hasTable(tableOrName)\r\n if (!isTableExist) return Promise.resolve()\r\n }\r\n\r\n // if dropTable called with dropForeignKeys = true, we must create foreign keys in down query.\r\n const createForeignKeys: boolean = dropForeignKeys\r\n const table = InstanceChecker.isTable(tableOrName)\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n const upQueries: Query[] = []\r\n const downQueries: Query[] = []\r\n\r\n if (dropIndices) {\r\n table.indices.forEach((index) => {\r\n upQueries.push(this.dropIndexSql(index))\r\n downQueries.push(this.createIndexSql(table, index))\r\n })\r\n }\r\n\r\n // if dropForeignKeys is true, we just drop the table, otherwise we also drop table foreign keys.\r\n // createTable does not need separate method to create foreign keys, because it create fk's in the same query with table creation.\r\n if (dropForeignKeys)\r\n table.foreignKeys.forEach((foreignKey) =>\r\n upQueries.push(this.dropForeignKeySql(table, foreignKey)),\r\n )\r\n\r\n upQueries.push(this.dropTableSql(table))\r\n downQueries.push(this.createTableSql(table, createForeignKeys))\r\n\r\n // if table had columns with generated type, we must remove the expression from the metadata table\r\n const generatedColumns = table.columns.filter(\r\n (column) => column.generatedType && column.asExpression,\r\n )\r\n\r\n for (const column of generatedColumns) {\r\n const deleteQuery = this.deleteTypeormMetadataSql({\r\n table: table.name,\r\n type: MetadataTableType.GENERATED_COLUMN,\r\n name: column.name,\r\n })\r\n\r\n const insertQuery = this.insertTypeormMetadataSql({\r\n table: table.name,\r\n type: MetadataTableType.GENERATED_COLUMN,\r\n name: column.name,\r\n value: column.asExpression,\r\n })\r\n\r\n upQueries.push(deleteQuery)\r\n downQueries.push(insertQuery)\r\n }\r\n\r\n await this.executeQueries(upQueries, downQueries)\r\n }\r\n\r\n /**\r\n * Creates a new view.\r\n */\r\n async createView(\r\n view: View,\r\n syncWithMetadata: boolean = false,\r\n ): Promise<void> {\r\n const upQueries: Query[] = []\r\n const downQueries: Query[] = []\r\n upQueries.push(this.createViewSql(view))\r\n if (syncWithMetadata) upQueries.push(this.insertViewDefinitionSql(view))\r\n downQueries.push(this.dropViewSql(view))\r\n if (syncWithMetadata)\r\n downQueries.push(this.deleteViewDefinitionSql(view))\r\n await this.executeQueries(upQueries, downQueries)\r\n }\r\n\r\n /**\r\n * Drops the view.\r\n */\r\n async dropView(target: View | string): Promise<void> {\r\n const viewName = InstanceChecker.isView(target) ? target.name : target\r\n const view = await this.getCachedView(viewName)\r\n\r\n const upQueries: Query[] = []\r\n const downQueries: Query[] = []\r\n upQueries.push(this.deleteViewDefinitionSql(view))\r\n upQueries.push(this.dropViewSql(view))\r\n downQueries.push(this.insertViewDefinitionSql(view))\r\n downQueries.push(this.createViewSql(view))\r\n await this.executeQueries(upQueries, downQueries)\r\n }\r\n\r\n /**\r\n * Renames the given table.\r\n */\r\n async renameTable(\r\n oldTableOrName: Table | string,\r\n newTableName: string,\r\n ): Promise<void> {\r\n const upQueries: Query[] = []\r\n const downQueries: Query[] = []\r\n const oldTable = InstanceChecker.isTable(oldTableOrName)\r\n ? oldTableOrName\r\n : await this.getCachedTable(oldTableOrName)\r\n let newTable = oldTable.clone()\r\n\r\n const { database: dbName, tableName: oldTableName } =\r\n this.driver.parseTableName(oldTable)\r\n\r\n newTable.name = dbName ? `${dbName}.${newTableName}` : newTableName\r\n\r\n // rename table\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n oldTable,\r\n )} RENAME TO \"${newTableName}\"`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n newTable,\r\n )} RENAME TO \"${oldTableName}\"`,\r\n ),\r\n )\r\n\r\n // rename primary key constraint\r\n if (\r\n newTable.primaryColumns.length > 0 &&\r\n !newTable.primaryColumns[0].primaryKeyConstraintName\r\n ) {\r\n const columnNames = newTable.primaryColumns.map(\r\n (column) => column.name,\r\n )\r\n\r\n const oldPkName = this.connection.namingStrategy.primaryKeyName(\r\n oldTable,\r\n columnNames,\r\n )\r\n const newPkName = this.connection.namingStrategy.primaryKeyName(\r\n newTable,\r\n columnNames,\r\n )\r\n\r\n // build queries\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n newTable,\r\n )} RENAME CONSTRAINT \"${oldPkName}\" TO \"${newPkName}\"`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n newTable,\r\n )} RENAME CONSTRAINT \"${newPkName}\" TO \"${oldPkName}\"`,\r\n ),\r\n )\r\n }\r\n\r\n // rename unique constraints\r\n newTable.uniques.forEach((unique) => {\r\n const oldUniqueName =\r\n this.connection.namingStrategy.uniqueConstraintName(\r\n oldTable,\r\n unique.columnNames,\r\n )\r\n\r\n // Skip renaming if Unique has user defined constraint name\r\n if (unique.name !== oldUniqueName) return\r\n\r\n // build new constraint name\r\n const newUniqueName =\r\n this.connection.namingStrategy.uniqueConstraintName(\r\n newTable,\r\n unique.columnNames,\r\n )\r\n\r\n // build queries\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n newTable,\r\n )} RENAME CONSTRAINT \"${\r\n unique.name\r\n }\" TO \"${newUniqueName}\"`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n newTable,\r\n )} RENAME CONSTRAINT \"${newUniqueName}\" TO \"${\r\n unique.name\r\n }\"`,\r\n ),\r\n )\r\n\r\n // replace constraint name\r\n unique.name = newUniqueName\r\n })\r\n\r\n // rename index constraints\r\n newTable.indices.forEach((index) => {\r\n const oldIndexName = this.connection.namingStrategy.indexName(\r\n oldTable,\r\n index.columnNames,\r\n index.where,\r\n )\r\n\r\n // Skip renaming if Index has user defined constraint name\r\n if (index.name !== oldIndexName) return\r\n\r\n // build new constraint name\r\n const newIndexName = this.connection.namingStrategy.indexName(\r\n newTable,\r\n index.columnNames,\r\n index.where,\r\n )\r\n\r\n // build queries\r\n upQueries.push(\r\n new Query(\r\n `ALTER INDEX \"${index.name}\" RENAME TO \"${newIndexName}\"`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER INDEX \"${newIndexName}\" RENAME TO \"${index.name}\"`,\r\n ),\r\n )\r\n\r\n // replace constraint name\r\n index.name = newIndexName\r\n })\r\n\r\n // rename foreign key constraints\r\n newTable.foreignKeys.forEach((foreignKey) => {\r\n const oldForeignKeyName =\r\n this.connection.namingStrategy.foreignKeyName(\r\n oldTable,\r\n foreignKey.columnNames,\r\n this.getTablePath(foreignKey),\r\n foreignKey.referencedColumnNames,\r\n )\r\n\r\n // Skip renaming if foreign key has user defined constraint name\r\n if (foreignKey.name !== oldForeignKeyName) return\r\n\r\n // build new constraint name\r\n const newForeignKeyName =\r\n this.connection.namingStrategy.foreignKeyName(\r\n newTable,\r\n foreignKey.columnNames,\r\n this.getTablePath(foreignKey),\r\n foreignKey.referencedColumnNames,\r\n )\r\n\r\n // build queries\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n newTable,\r\n )} RENAME CONSTRAINT \"${\r\n foreignKey.name\r\n }\" TO \"${newForeignKeyName}\"`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n newTable,\r\n )} RENAME CONSTRAINT \"${newForeignKeyName}\" TO \"${\r\n foreignKey.name\r\n }\"`,\r\n ),\r\n )\r\n\r\n // replace constraint name\r\n foreignKey.name = newForeignKeyName\r\n })\r\n\r\n await this.executeQueries(upQueries, downQueries)\r\n\r\n // rename old table and replace it in cached tabled;\r\n oldTable.name = newTable.name\r\n this.replaceCachedTable(oldTable, newTable)\r\n }\r\n\r\n /**\r\n * Creates a new column from the column in the table.\r\n */\r\n async addColumn(\r\n tableOrName: Table | string,\r\n column: TableColumn,\r\n ): Promise<void> {\r\n const table = InstanceChecker.isTable(tableOrName)\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n const clonedTable = table.clone()\r\n const upQueries: Query[] = []\r\n const downQueries: Query[] = []\r\n\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} ADD ${this.buildCreateColumnSql(column)}`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(table)} DROP COLUMN \"${\r\n column.name\r\n }\"`,\r\n ),\r\n )\r\n\r\n // create or update primary key constraint\r\n if (column.isPrimary) {\r\n const primaryColumns = clonedTable.primaryColumns\r\n // if table already have primary key, me must drop it and recreate again\r\n if (primaryColumns.length > 0) {\r\n const pkName = primaryColumns[0].primaryKeyConstraintName\r\n ? primaryColumns[0].primaryKeyConstraintName\r\n : this.connection.namingStrategy.primaryKeyName(\r\n clonedTable,\r\n primaryColumns.map((column) => column.name),\r\n )\r\n\r\n const columnNames = primaryColumns\r\n .map((column) => `\"${column.name}\"`)\r\n .join(\", \")\r\n\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} DROP CONSTRAINT \"${pkName}\"`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\r\n ),\r\n )\r\n }\r\n\r\n primaryColumns.push(column)\r\n const pkName = primaryColumns[0].primaryKeyConstraintName\r\n ? primaryColumns[0].primaryKeyConstraintName\r\n : this.connection.namingStrategy.primaryKeyName(\r\n clonedTable,\r\n primaryColumns.map((column) => column.name),\r\n )\r\n\r\n const columnNames = primaryColumns\r\n .map((column) => `\"${column.name}\"`)\r\n .join(\", \")\r\n\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} DROP CONSTRAINT \"${pkName}\"`,\r\n ),\r\n )\r\n }\r\n\r\n // create column index\r\n const columnIndex = clonedTable.indices.find(\r\n (index) =>\r\n index.columnNames.length === 1 &&\r\n index.columnNames[0] === column.name,\r\n )\r\n if (columnIndex) {\r\n clonedTable.indices.splice(\r\n clonedTable.indices.indexOf(columnIndex),\r\n 1,\r\n )\r\n upQueries.push(this.createIndexSql(table, columnIndex))\r\n downQueries.push(this.dropIndexSql(columnIndex))\r\n }\r\n\r\n // create unique constraint\r\n if (column.isUnique) {\r\n const uniqueConstraint = new TableUnique({\r\n name: this.connection.namingStrategy.uniqueConstraintName(\r\n table,\r\n [column.name],\r\n ),\r\n columnNames: [column.name],\r\n })\r\n clonedTable.uniques.push(uniqueConstraint)\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${\r\n uniqueConstraint.name\r\n }\" UNIQUE (\"${column.name}\")`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(table)} DROP CONSTRAINT \"${\r\n uniqueConstraint.name\r\n }\"`,\r\n ),\r\n )\r\n }\r\n\r\n if (column.generatedType && column.asExpression) {\r\n const insertQuery = this.insertTypeormMetadataSql({\r\n table: table.name,\r\n type: MetadataTableType.GENERATED_COLUMN,\r\n name: column.name,\r\n value: column.asExpression,\r\n })\r\n\r\n const deleteQuery = this.deleteTypeormMetadataSql({\r\n table: table.name,\r\n type: MetadataTableType.GENERATED_COLUMN,\r\n name: column.name,\r\n })\r\n\r\n upQueries.push(insertQuery)\r\n downQueries.push(deleteQuery)\r\n }\r\n\r\n await this.executeQueries(upQueries, downQueries)\r\n\r\n clonedTable.addColumn(column)\r\n this.replaceCachedTable(table, clonedTable)\r\n }\r\n\r\n /**\r\n * Creates a new columns from the column in the table.\r\n */\r\n async addColumns(\r\n tableOrName: Table | string,\r\n columns: TableColumn[],\r\n ): Promise<void> {\r\n for (const column of columns) {\r\n await this.addColumn(tableOrName, column)\r\n }\r\n }\r\n\r\n /**\r\n * Renames column in the given table.\r\n */\r\n async renameColumn(\r\n tableOrName: Table | string,\r\n oldTableColumnOrName: TableColumn | string,\r\n newTableColumnOrName: TableColumn | string,\r\n ): Promise<void> {\r\n const table = InstanceChecker.isTable(tableOrName)\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n const oldColumn = InstanceChecker.isTableColumn(oldTableColumnOrName)\r\n ? oldTableColumnOrName\r\n : table.columns.find((c) => c.name === oldTableColumnOrName)\r\n if (!oldColumn)\r\n throw new TypeORMError(\r\n `Column \"${oldTableColumnOrName}\" was not found in the ${this.escapePath(\r\n table,\r\n )} table.`,\r\n )\r\n\r\n let newColumn: TableColumn | undefined = undefined\r\n if (InstanceChecker.isTableColumn(newTableColumnOrName)) {\r\n newColumn = newTableColumnOrName\r\n } else {\r\n newColumn = oldColumn.clone()\r\n newColumn.name = newTableColumnOrName\r\n }\r\n\r\n await this.changeColumn(table, oldColumn, newColumn)\r\n }\r\n\r\n /**\r\n * Changes a column in the table.\r\n */\r\n async changeColumn(\r\n tableOrName: Table | string,\r\n oldTableColumnOrName: TableColumn | string,\r\n newColumn: TableColumn,\r\n ): Promise<void> {\r\n const table = InstanceChecker.isTable(tableOrName)\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n let clonedTable = table.clone()\r\n const upQueries: Query[] = []\r\n const downQueries: Query[] = []\r\n\r\n const oldColumn = InstanceChecker.isTableColumn(oldTableColumnOrName)\r\n ? oldTableColumnOrName\r\n : table.columns.find(\r\n (column) => column.name === oldTableColumnOrName,\r\n )\r\n if (!oldColumn)\r\n throw new TypeORMError(\r\n `Column \"${oldTableColumnOrName}\" was not found in the ${this.escapePath(\r\n table,\r\n )} table.`,\r\n )\r\n\r\n if (\r\n (newColumn.isGenerated !== oldColumn.isGenerated &&\r\n newColumn.generationStrategy !== \"uuid\") ||\r\n oldColumn.type !== newColumn.type ||\r\n oldColumn.length !== newColumn.length ||\r\n oldColumn.generatedType !== newColumn.generatedType ||\r\n oldColumn.asExpression !== newColumn.asExpression\r\n ) {\r\n // Oracle does not support changing of IDENTITY column, so we must drop column and recreate it again.\r\n // Also, we recreate column if column type changed\r\n await this.dropColumn(table, oldColumn)\r\n await this.addColumn(table, newColumn)\r\n\r\n // update cloned table\r\n clonedTable = table.clone()\r\n } else {\r\n if (newColumn.name !== oldColumn.name) {\r\n // rename column\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(table)} RENAME COLUMN \"${\r\n oldColumn.name\r\n }\" TO \"${newColumn.name}\"`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(table)} RENAME COLUMN \"${\r\n newColumn.name\r\n }\" TO \"${oldColumn.name}\"`,\r\n ),\r\n )\r\n\r\n // rename column primary key constraint\r\n if (\r\n oldColumn.isPrimary === true &&\r\n !oldColumn.primaryKeyConstraintName\r\n ) {\r\n const primaryColumns = clonedTable.primaryColumns\r\n\r\n // build old primary constraint name\r\n const columnNames = primaryColumns.map(\r\n (column) => column.name,\r\n )\r\n const oldPkName =\r\n this.connection.namingStrategy.primaryKeyName(\r\n clonedTable,\r\n columnNames,\r\n )\r\n\r\n // replace old column name with new column name\r\n columnNames.splice(columnNames.indexOf(oldColumn.name), 1)\r\n columnNames.push(newColumn.name)\r\n\r\n // build new primary constraint name\r\n const newPkName =\r\n this.connection.namingStrategy.primaryKeyName(\r\n clonedTable,\r\n columnNames,\r\n )\r\n\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} RENAME CONSTRAINT \"${oldPkName}\" TO \"${newPkName}\"`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} RENAME CONSTRAINT \"${newPkName}\" TO \"${oldPkName}\"`,\r\n ),\r\n )\r\n }\r\n\r\n // rename unique constraints\r\n clonedTable.findColumnUniques(oldColumn).forEach((unique) => {\r\n const oldUniqueName =\r\n this.connection.namingStrategy.uniqueConstraintName(\r\n clonedTable,\r\n unique.columnNames,\r\n )\r\n\r\n // Skip renaming if Unique has user defined constraint name\r\n if (unique.name !== oldUniqueName) return\r\n\r\n // build new constraint name\r\n unique.columnNames.splice(\r\n unique.columnNames.indexOf(oldColumn.name),\r\n 1,\r\n )\r\n unique.columnNames.push(newColumn.name)\r\n const newUniqueName =\r\n this.connection.namingStrategy.uniqueConstraintName(\r\n clonedTable,\r\n unique.columnNames,\r\n )\r\n\r\n // build queries\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} RENAME CONSTRAINT \"${\r\n unique.name\r\n }\" TO \"${newUniqueName}\"`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} RENAME CONSTRAINT \"${newUniqueName}\" TO \"${\r\n unique.name\r\n }\"`,\r\n ),\r\n )\r\n\r\n // replace constraint name\r\n unique.name = newUniqueName\r\n })\r\n\r\n // rename index constraints\r\n clonedTable.findColumnIndices(oldColumn).forEach((index) => {\r\n const oldIndexName =\r\n this.connection.namingStrategy.indexName(\r\n clonedTable,\r\n index.columnNames,\r\n index.where,\r\n )\r\n\r\n // Skip renaming if Index has user defined constraint name\r\n if (index.name !== oldIndexName) return\r\n\r\n // build new constraint name\r\n index.columnNames.splice(\r\n index.columnNames.indexOf(oldColumn.name),\r\n 1,\r\n )\r\n index.columnNames.push(newColumn.name)\r\n const newIndexName =\r\n this.connection.namingStrategy.indexName(\r\n clonedTable,\r\n index.columnNames,\r\n index.where,\r\n )\r\n\r\n // build queries\r\n upQueries.push(\r\n new Query(\r\n `ALTER INDEX \"${index.name}\" RENAME TO \"${newIndexName}\"`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER INDEX \"${newIndexName}\" RENAME TO \"${index.name}\"`,\r\n ),\r\n )\r\n\r\n // replace constraint name\r\n index.name = newIndexName\r\n })\r\n\r\n // rename foreign key constraints\r\n clonedTable\r\n .findColumnForeignKeys(oldColumn)\r\n .forEach((foreignKey) => {\r\n const foreignKeyName =\r\n this.connection.namingStrategy.foreignKeyName(\r\n clonedTable,\r\n foreignKey.columnNames,\r\n this.getTablePath(foreignKey),\r\n foreignKey.referencedColumnNames,\r\n )\r\n\r\n // Skip renaming if foreign key has user defined constraint name\r\n if (foreignKey.name !== foreignKeyName) return\r\n\r\n // build new constraint name\r\n foreignKey.columnNames.splice(\r\n foreignKey.columnNames.indexOf(oldColumn.name),\r\n 1,\r\n )\r\n foreignKey.columnNames.push(newColumn.name)\r\n const newForeignKeyName =\r\n this.connection.namingStrategy.foreignKeyName(\r\n clonedTable,\r\n foreignKey.columnNames,\r\n this.getTablePath(foreignKey),\r\n foreignKey.referencedColumnNames,\r\n )\r\n\r\n // build queries\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} RENAME CONSTRAINT \"${\r\n foreignKey.name\r\n }\" TO \"${newForeignKeyName}\"`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} RENAME CONSTRAINT \"${newForeignKeyName}\" TO \"${\r\n foreignKey.name\r\n }\"`,\r\n ),\r\n )\r\n\r\n // replace constraint name\r\n foreignKey.name = newForeignKeyName\r\n })\r\n\r\n // rename old column in the Table object\r\n const oldTableColumn = clonedTable.columns.find(\r\n (column) => column.name === oldColumn.name,\r\n )\r\n clonedTable.columns[\r\n clonedTable.columns.indexOf(oldTableColumn!)\r\n ].name = newColumn.name\r\n oldColumn.name = newColumn.name\r\n }\r\n\r\n if (this.isColumnChanged(oldColumn, newColumn, true)) {\r\n let defaultUp: string = \"\"\r\n let defaultDown: string = \"\"\r\n let nullableUp: string = \"\"\r\n let nullableDown: string = \"\"\r\n\r\n // changing column default\r\n if (\r\n newColumn.default !== null &&\r\n newColumn.default !== undefined\r\n ) {\r\n defaultUp = `DEFAULT ${newColumn.default}`\r\n\r\n if (\r\n oldColumn.default !== null &&\r\n oldColumn.default !== undefined\r\n ) {\r\n defaultDown = `DEFAULT ${oldColumn.default}`\r\n } else {\r\n defaultDown = \"DEFAULT NULL\"\r\n }\r\n } else if (\r\n oldColumn.default !== null &&\r\n oldColumn.default !== undefined\r\n ) {\r\n defaultUp = \"DEFAULT NULL\"\r\n defaultDown = `DEFAULT ${oldColumn.default}`\r\n }\r\n\r\n // changing column isNullable property\r\n if (newColumn.isNullable !== oldColumn.isNullable) {\r\n if (newColumn.isNullable === true) {\r\n nullableUp = \"NULL\"\r\n nullableDown = \"NOT NULL\"\r\n } else {\r\n nullableUp = \"NOT NULL\"\r\n nullableDown = \"NULL\"\r\n }\r\n }\r\n\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(table)} MODIFY \"${\r\n oldColumn.name\r\n }\" ${this.connection.driver.createFullType(\r\n newColumn,\r\n )} ${defaultUp} ${nullableUp}`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(table)} MODIFY \"${\r\n oldColumn.name\r\n }\" ${this.connection.driver.createFullType(\r\n oldColumn,\r\n )} ${defaultDown} ${nullableDown}`,\r\n ),\r\n )\r\n }\r\n\r\n if (newColumn.isPrimary !== oldColumn.isPrimary) {\r\n const primaryColumns = clonedTable.primaryColumns\r\n\r\n // if primary column state changed, we must always drop existed constraint.\r\n if (primaryColumns.length > 0) {\r\n const pkName = primaryColumns[0].primaryKeyConstraintName\r\n ? primaryColumns[0].primaryKeyConstraintName\r\n : this.connection.namingStrategy.primaryKeyName(\r\n clonedTable,\r\n primaryColumns.map((column) => column.name),\r\n )\r\n\r\n const columnNames = primaryColumns\r\n .map((column) => `\"${column.name}\"`)\r\n .join(\", \")\r\n\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} DROP CONSTRAINT \"${pkName}\"`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\r\n ),\r\n )\r\n }\r\n\r\n if (newColumn.isPrimary === true) {\r\n primaryColumns.push(newColumn)\r\n // update column in table\r\n const column = clonedTable.columns.find(\r\n (column) => column.name === newColumn.name,\r\n )\r\n column!.isPrimary = true\r\n const pkName = primaryColumns[0].primaryKeyConstraintName\r\n ? primaryColumns[0].primaryKeyConstraintName\r\n : this.connection.namingStrategy.primaryKeyName(\r\n clonedTable,\r\n primaryColumns.map((column) => column.name),\r\n )\r\n\r\n const columnNames = primaryColumns\r\n .map((column) => `\"${column.name}\"`)\r\n .join(\", \")\r\n\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} DROP CONSTRAINT \"${pkName}\"`,\r\n ),\r\n )\r\n } else {\r\n const primaryColumn = primaryColumns.find(\r\n (c) => c.name === newColumn.name,\r\n )\r\n primaryColumns.splice(\r\n primaryColumns.indexOf(primaryColumn!),\r\n 1,\r\n )\r\n\r\n // update column in table\r\n const column = clonedTable.columns.find(\r\n (column) => column.name === newColumn.name,\r\n )\r\n column!.isPrimary = false\r\n\r\n // if we have another primary keys, we must recreate constraint.\r\n if (primaryColumns.length > 0) {\r\n const pkName = primaryColumns[0]\r\n .primaryKeyConstraintName\r\n ? primaryColumns[0].primaryKeyConstraintName\r\n : this.connection.namingStrategy.primaryKeyName(\r\n clonedTable,\r\n primaryColumns.map((column) => column.name),\r\n )\r\n\r\n const columnNames = primaryColumns\r\n .map((column) => `\"${column.name}\"`)\r\n .join(\", \")\r\n\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} DROP CONSTRAINT \"${pkName}\"`,\r\n ),\r\n )\r\n }\r\n }\r\n }\r\n\r\n if (newColumn.isUnique !== oldColumn.isUnique) {\r\n if (newColumn.isUnique === true) {\r\n const uniqueConstraint = new TableUnique({\r\n name: this.connection.namingStrategy.uniqueConstraintName(\r\n table,\r\n [newColumn.name],\r\n ),\r\n columnNames: [newColumn.name],\r\n })\r\n clonedTable.uniques.push(uniqueConstraint)\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} ADD CONSTRAINT \"${\r\n uniqueConstraint.name\r\n }\" UNIQUE (\"${newColumn.name}\")`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} DROP CONSTRAINT \"${uniqueConstraint.name}\"`,\r\n ),\r\n )\r\n } else {\r\n const uniqueConstraint = clonedTable.uniques.find(\r\n (unique) => {\r\n return (\r\n unique.columnNames.length === 1 &&\r\n !!unique.columnNames.find(\r\n (columnName) =>\r\n columnName === newColumn.name,\r\n )\r\n )\r\n },\r\n )\r\n clonedTable.uniques.splice(\r\n clonedTable.uniques.indexOf(uniqueConstraint!),\r\n 1,\r\n )\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} DROP CONSTRAINT \"${uniqueConstraint!.name}\"`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} ADD CONSTRAINT \"${\r\n uniqueConstraint!.name\r\n }\" UNIQUE (\"${newColumn.name}\")`,\r\n ),\r\n )\r\n }\r\n }\r\n\r\n await this.executeQueries(upQueries, downQueries)\r\n this.replaceCachedTable(table, clonedTable)\r\n }\r\n }\r\n\r\n /**\r\n * Changes a column in the table.\r\n */\r\n async changeColumns(\r\n tableOrName: Table | string,\r\n changedColumns: { newColumn: TableColumn; oldColumn: TableColumn }[],\r\n ): Promise<void> {\r\n for (const { oldColumn, newColumn } of changedColumns) {\r\n await this.changeColumn(tableOrName, oldColumn, newColumn)\r\n }\r\n }\r\n\r\n /**\r\n * Drops column in the table.\r\n */\r\n async dropColumn(\r\n tableOrName: Table | string,\r\n columnOrName: TableColumn | string,\r\n ): Promise<void> {\r\n const table = InstanceChecker.isTable(tableOrName)\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n const column = InstanceChecker.isTableColumn(columnOrName)\r\n ? columnOrName\r\n : table.findColumnByName(columnOrName)\r\n if (!column)\r\n throw new TypeORMError(\r\n `Column \"${columnOrName}\" was not found in table ${this.escapePath(\r\n table,\r\n )}`,\r\n )\r\n\r\n const clonedTable = table.clone()\r\n const upQueries: Query[] = []\r\n const downQueries: Query[] = []\r\n\r\n // drop primary key constraint\r\n if (column.isPrimary) {\r\n const pkName = column.primaryKeyConstraintName\r\n ? column.primaryKeyConstraintName\r\n : this.connection.namingStrategy.primaryKeyName(\r\n clonedTable,\r\n clonedTable.primaryColumns.map((column) => column.name),\r\n )\r\n\r\n const columnNames = clonedTable.primaryColumns\r\n .map((primaryColumn) => `\"${primaryColumn.name}\"`)\r\n .join(\", \")\r\n\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n clonedTable,\r\n )} DROP CONSTRAINT \"${pkName}\"`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n clonedTable,\r\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\r\n ),\r\n )\r\n\r\n // update column in table\r\n const tableColumn = clonedTable.findColumnByName(column.name)\r\n tableColumn!.isPrimary = false\r\n\r\n // if primary key have multiple columns, we must recreate it without dropped column\r\n if (clonedTable.primaryColumns.length > 0) {\r\n const pkName = clonedTable.primaryColumns[0]\r\n .primaryKeyConstraintName\r\n ? clonedTable.primaryColumns[0].primaryKeyConstraintName\r\n : this.connection.namingStrategy.primaryKeyName(\r\n clonedTable,\r\n clonedTable.primaryColumns.map(\r\n (column) => column.name,\r\n ),\r\n )\r\n\r\n const columnNames = clonedTable.primaryColumns\r\n .map((primaryColumn) => `\"${primaryColumn.name}\"`)\r\n .join(\", \")\r\n\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n clonedTable,\r\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNames})`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n clonedTable,\r\n )} DROP CONSTRAINT \"${pkName}\"`,\r\n ),\r\n )\r\n }\r\n }\r\n\r\n // drop column index\r\n const columnIndex = clonedTable.indices.find(\r\n (index) =>\r\n index.columnNames.length === 1 &&\r\n index.columnNames[0] === column.name,\r\n )\r\n if (columnIndex) {\r\n upQueries.push(this.dropIndexSql(columnIndex))\r\n downQueries.push(this.createIndexSql(table, columnIndex))\r\n }\r\n\r\n // drop column check\r\n const columnCheck = clonedTable.checks.find(\r\n (check) =>\r\n !!check.columnNames &&\r\n check.columnNames.length === 1 &&\r\n check.columnNames[0] === column.name,\r\n )\r\n if (columnCheck) {\r\n clonedTable.checks.splice(\r\n clonedTable.checks.indexOf(columnCheck),\r\n 1,\r\n )\r\n upQueries.push(this.dropCheckConstraintSql(table, columnCheck))\r\n downQueries.push(this.createCheckConstraintSql(table, columnCheck))\r\n }\r\n\r\n // drop column unique\r\n const columnUnique = clonedTable.uniques.find(\r\n (unique) =>\r\n unique.columnNames.length === 1 &&\r\n unique.columnNames[0] === column.name,\r\n )\r\n if (columnUnique) {\r\n clonedTable.uniques.splice(\r\n clonedTable.uniques.indexOf(columnUnique),\r\n 1,\r\n )\r\n upQueries.push(this.dropUniqueConstraintSql(table, columnUnique))\r\n downQueries.push(\r\n this.createUniqueConstraintSql(table, columnUnique),\r\n )\r\n }\r\n\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(table)} DROP COLUMN \"${\r\n column.name\r\n }\"`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} ADD ${this.buildCreateColumnSql(column)}`,\r\n ),\r\n )\r\n\r\n if (column.generatedType && column.asExpression) {\r\n const deleteQuery = this.deleteTypeormMetadataSql({\r\n table: table.name,\r\n type: MetadataTableType.GENERATED_COLUMN,\r\n name: column.name,\r\n })\r\n const insertQuery = this.insertTypeormMetadataSql({\r\n table: table.name,\r\n type: MetadataTableType.GENERATED_COLUMN,\r\n name: column.name,\r\n value: column.asExpression,\r\n })\r\n\r\n upQueries.push(deleteQuery)\r\n downQueries.push(insertQuery)\r\n }\r\n\r\n await this.executeQueries(upQueries, downQueries)\r\n\r\n clonedTable.removeColumn(column)\r\n this.replaceCachedTable(table, clonedTable)\r\n }\r\n\r\n /**\r\n * Drops the columns in the table.\r\n */\r\n async dropColumns(\r\n tableOrName: Table | string,\r\n columns: TableColumn[] | string[],\r\n ): Promise<void> {\r\n for (const column of columns) {\r\n await this.dropColumn(tableOrName, column)\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new primary key.\r\n */\r\n async createPrimaryKey(\r\n tableOrName: Table | string,\r\n columnNames: string[],\r\n constraintName?: string,\r\n ): Promise<void> {\r\n const table = InstanceChecker.isTable(tableOrName)\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n const clonedTable = table.clone()\r\n\r\n const up = this.createPrimaryKeySql(table, columnNames, constraintName)\r\n\r\n // mark columns as primary, because dropPrimaryKeySql build constraint name from table primary column names.\r\n clonedTable.columns.forEach((column) => {\r\n if (columnNames.find((columnName) => columnName === column.name))\r\n column.isPrimary = true\r\n })\r\n const down = this.dropPrimaryKeySql(clonedTable)\r\n\r\n await this.executeQueries(up, down)\r\n this.replaceCachedTable(table, clonedTable)\r\n }\r\n\r\n /**\r\n * Updates composite primary keys.\r\n */\r\n async updatePrimaryKeys(\r\n tableOrName: Table | string,\r\n columns: TableColumn[],\r\n ): Promise<void> {\r\n const table = InstanceChecker.isTable(tableOrName)\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n const columnNames = columns.map((column) => column.name)\r\n const clonedTable = table.clone()\r\n const upQueries: Query[] = []\r\n const downQueries: Query[] = []\r\n\r\n // if table already have primary columns, we must drop them.\r\n const primaryColumns = clonedTable.primaryColumns\r\n if (primaryColumns.length > 0) {\r\n const pkName = primaryColumns[0].primaryKeyConstraintName\r\n ? primaryColumns[0].primaryKeyConstraintName\r\n : this.connection.namingStrategy.primaryKeyName(\r\n clonedTable,\r\n primaryColumns.map((column) => column.name),\r\n )\r\n\r\n const columnNamesString = primaryColumns\r\n .map((column) => `\"${column.name}\"`)\r\n .join(\", \")\r\n\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} DROP CONSTRAINT \"${pkName}\"`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNamesString})`,\r\n ),\r\n )\r\n }\r\n\r\n // update columns in table.\r\n clonedTable.columns\r\n .filter((column) => columnNames.indexOf(column.name) !== -1)\r\n .forEach((column) => (column.isPrimary = true))\r\n\r\n const pkName = primaryColumns[0].primaryKeyConstraintName\r\n ? primaryColumns[0].primaryKeyConstraintName\r\n : this.connection.namingStrategy.primaryKeyName(\r\n clonedTable,\r\n columnNames,\r\n )\r\n\r\n const columnNamesString = columnNames\r\n .map((columnName) => `\"${columnName}\"`)\r\n .join(\", \")\r\n upQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} ADD CONSTRAINT \"${pkName}\" PRIMARY KEY (${columnNamesString})`,\r\n ),\r\n )\r\n downQueries.push(\r\n new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} DROP CONSTRAINT \"${pkName}\"`,\r\n ),\r\n )\r\n\r\n await this.executeQueries(upQueries, downQueries)\r\n this.replaceCachedTable(table, clonedTable)\r\n }\r\n\r\n /**\r\n * Drops a primary key.\r\n */\r\n async dropPrimaryKey(\r\n tableOrName: Table | string,\r\n constraintName?: string,\r\n ): Promise<void> {\r\n const table = InstanceChecker.isTable(tableOrName)\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n const up = this.dropPrimaryKeySql(table)\r\n const down = this.createPrimaryKeySql(\r\n table,\r\n table.primaryColumns.map((column) => column.name),\r\n constraintName,\r\n )\r\n await this.executeQueries(up, down)\r\n table.primaryColumns.forEach((column) => {\r\n column.isPrimary = false\r\n })\r\n }\r\n\r\n /**\r\n * Creates a new unique constraint.\r\n */\r\n async createUniqueConstraint(\r\n tableOrName: Table | string,\r\n uniqueConstraint: TableUnique,\r\n ): Promise<void> {\r\n const table = InstanceChecker.isTable(tableOrName)\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n\r\n // new unique constraint may be passed without name. In this case we generate unique name manually.\r\n if (!uniqueConstraint.name)\r\n uniqueConstraint.name =\r\n this.connection.namingStrategy.uniqueConstraintName(\r\n table,\r\n uniqueConstraint.columnNames,\r\n )\r\n\r\n const up = this.createUniqueConstraintSql(table, uniqueConstraint)\r\n const down = this.dropUniqueConstraintSql(table, uniqueConstraint)\r\n await this.executeQueries(up, down)\r\n table.addUniqueConstraint(uniqueConstraint)\r\n }\r\n\r\n /**\r\n * Creates a new unique constraints.\r\n */\r\n async createUniqueConstraints(\r\n tableOrName: Table | string,\r\n uniqueConstraints: TableUnique[],\r\n ): Promise<void> {\r\n const promises = uniqueConstraints.map((uniqueConstraint) =>\r\n this.createUniqueConstraint(tableOrName, uniqueConstraint),\r\n )\r\n await Promise.all(promises)\r\n }\r\n\r\n /**\r\n * Drops an unique constraint.\r\n */\r\n async dropUniqueConstraint(\r\n tableOrName: Table | string,\r\n uniqueOrName: TableUnique | string,\r\n ): Promise<void> {\r\n const table = InstanceChecker.isTable(tableOrName)\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n const uniqueConstraint = InstanceChecker.isTableUnique(uniqueOrName)\r\n ? uniqueOrName\r\n : table.uniques.find((u) => u.name === uniqueOrName)\r\n if (!uniqueConstraint)\r\n throw new TypeORMError(\r\n `Supplied unique constraint was not found in table ${table.name}`,\r\n )\r\n\r\n const up = this.dropUniqueConstraintSql(table, uniqueConstraint)\r\n const down = this.createUniqueConstraintSql(table, uniqueConstraint)\r\n await this.executeQueries(up, down)\r\n table.removeUniqueConstraint(uniqueConstraint)\r\n }\r\n\r\n /**\r\n * Creates an unique constraints.\r\n */\r\n async dropUniqueConstraints(\r\n tableOrName: Table | string,\r\n uniqueConstraints: TableUnique[],\r\n ): Promise<void> {\r\n const promises = uniqueConstraints.map((uniqueConstraint) =>\r\n this.dropUniqueConstraint(tableOrName, uniqueConstraint),\r\n )\r\n await Promise.all(promises)\r\n }\r\n\r\n /**\r\n * Creates new check constraint.\r\n */\r\n async createCheckConstraint(\r\n tableOrName: Table | string,\r\n checkConstraint: TableCheck,\r\n ): Promise<void> {\r\n const table = InstanceChecker.isTable(tableOrName)\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n\r\n // new unique constraint may be passed without name. In this case we generate unique name manually.\r\n if (!checkConstraint.name)\r\n checkConstraint.name =\r\n this.connection.namingStrategy.checkConstraintName(\r\n table,\r\n checkConstraint.expression!,\r\n )\r\n\r\n const up = this.createCheckConstraintSql(table, checkConstraint)\r\n const down = this.dropCheckConstraintSql(table, checkConstraint)\r\n await this.executeQueries(up, down)\r\n table.addCheckConstraint(checkConstraint)\r\n }\r\n\r\n /**\r\n * Creates new check constraints.\r\n */\r\n async createCheckConstraints(\r\n tableOrName: Table | string,\r\n checkConstraints: TableCheck[],\r\n ): Promise<void> {\r\n const promises = checkConstraints.map((checkConstraint) =>\r\n this.createCheckConstraint(tableOrName, checkConstraint),\r\n )\r\n await Promise.all(promises)\r\n }\r\n\r\n /**\r\n * Drops check constraint.\r\n */\r\n async dropCheckConstraint(\r\n tableOrName: Table | string,\r\n checkOrName: TableCheck | string,\r\n ): Promise<void> {\r\n const table = InstanceChecker.isTable(tableOrName)\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n const checkConstraint = InstanceChecker.isTableCheck(checkOrName)\r\n ? checkOrName\r\n : table.checks.find((c) => c.name === checkOrName)\r\n if (!checkConstraint)\r\n throw new TypeORMError(\r\n `Supplied check constraint was not found in table ${table.name}`,\r\n )\r\n\r\n const up = this.dropCheckConstraintSql(table, checkConstraint)\r\n const down = this.createCheckConstraintSql(table, checkConstraint)\r\n await this.executeQueries(up, down)\r\n table.removeCheckConstraint(checkConstraint)\r\n }\r\n\r\n /**\r\n * Drops check constraints.\r\n */\r\n async dropCheckConstraints(\r\n tableOrName: Table | string,\r\n checkConstraints: TableCheck[],\r\n ): Promise<void> {\r\n const promises = checkConstraints.map((checkConstraint) =>\r\n this.dropCheckConstraint(tableOrName, checkConstraint),\r\n )\r\n await Promise.all(promises)\r\n }\r\n\r\n /**\r\n * Creates a new exclusion constraint.\r\n */\r\n async createExclusionConstraint(\r\n tableOrName: Table | string,\r\n exclusionConstraint: TableExclusion,\r\n ): Promise<void> {\r\n throw new TypeORMError(`Oracle does not support exclusion constraints.`)\r\n }\r\n\r\n /**\r\n * Creates a new exclusion constraints.\r\n */\r\n async createExclusionConstraints(\r\n tableOrName: Table | string,\r\n exclusionConstraints: TableExclusion[],\r\n ): Promise<void> {\r\n throw new TypeORMError(`Oracle does not support exclusion constraints.`)\r\n }\r\n\r\n /**\r\n * Drops exclusion constraint.\r\n */\r\n async dropExclusionConstraint(\r\n tableOrName: Table | string,\r\n exclusionOrName: TableExclusion | string,\r\n ): Promise<void> {\r\n throw new TypeORMError(`Oracle does not support exclusion constraints.`)\r\n }\r\n\r\n /**\r\n * Drops exclusion constraints.\r\n */\r\n async dropExclusionConstraints(\r\n tableOrName: Table | string,\r\n exclusionConstraints: TableExclusion[],\r\n ): Promise<void> {\r\n throw new TypeORMError(`Oracle does not support exclusion constraints.`)\r\n }\r\n\r\n /**\r\n * Creates a new foreign key.\r\n */\r\n async createForeignKey(\r\n tableOrName: Table | string,\r\n foreignKey: TableForeignKey,\r\n ): Promise<void> {\r\n const table = InstanceChecker.isTable(tableOrName)\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n\r\n // new FK may be passed without name. In this case we generate FK name manually.\r\n if (!foreignKey.name)\r\n foreignKey.name = this.connection.namingStrategy.foreignKeyName(\r\n table,\r\n foreignKey.columnNames,\r\n this.getTablePath(foreignKey),\r\n foreignKey.referencedColumnNames,\r\n )\r\n\r\n const up = this.createForeignKeySql(table, foreignKey)\r\n const down = this.dropForeignKeySql(table, foreignKey)\r\n await this.executeQueries(up, down)\r\n table.addForeignKey(foreignKey)\r\n }\r\n\r\n /**\r\n * Creates a new foreign keys.\r\n */\r\n async createForeignKeys(\r\n tableOrName: Table | string,\r\n foreignKeys: TableForeignKey[],\r\n ): Promise<void> {\r\n const promises = foreignKeys.map((foreignKey) =>\r\n this.createForeignKey(tableOrName, foreignKey),\r\n )\r\n await Promise.all(promises)\r\n }\r\n\r\n /**\r\n * Drops a foreign key from the table.\r\n */\r\n async dropForeignKey(\r\n tableOrName: Table | string,\r\n foreignKeyOrName: TableForeignKey | string,\r\n ): Promise<void> {\r\n const table = InstanceChecker.isTable(tableOrName)\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n const foreignKey = InstanceChecker.isTableForeignKey(foreignKeyOrName)\r\n ? foreignKeyOrName\r\n : table.foreignKeys.find((fk) => fk.name === foreignKeyOrName)\r\n if (!foreignKey)\r\n throw new TypeORMError(\r\n `Supplied foreign key was not found in table ${table.name}`,\r\n )\r\n\r\n const up = this.dropForeignKeySql(table, foreignKey)\r\n const down = this.createForeignKeySql(table, foreignKey)\r\n await this.executeQueries(up, down)\r\n table.removeForeignKey(foreignKey)\r\n }\r\n\r\n /**\r\n * Drops a foreign keys from the table.\r\n */\r\n async dropForeignKeys(\r\n tableOrName: Table | string,\r\n foreignKeys: TableForeignKey[],\r\n ): Promise<void> {\r\n const promises = foreignKeys.map((foreignKey) =>\r\n this.dropForeignKey(tableOrName, foreignKey),\r\n )\r\n await Promise.all(promises)\r\n }\r\n\r\n /**\r\n * Creates a new index.\r\n */\r\n async createIndex(\r\n tableOrName: Table | string,\r\n index: TableIndex,\r\n ): Promise<void> {\r\n const table = InstanceChecker.isTable(tableOrName)\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n\r\n // new index may be passed without name. In this case we generate index name manually.\r\n if (!index.name) index.name = this.generateIndexName(table, index)\r\n\r\n const up = this.createIndexSql(table, index)\r\n const down = this.dropIndexSql(index)\r\n await this.executeQueries(up, down)\r\n table.addIndex(index)\r\n }\r\n\r\n /**\r\n * Creates a new indices\r\n */\r\n async createIndices(\r\n tableOrName: Table | string,\r\n indices: TableIndex[],\r\n ): Promise<void> {\r\n const promises = indices.map((index) =>\r\n this.createIndex(tableOrName, index),\r\n )\r\n await Promise.all(promises)\r\n }\r\n\r\n /**\r\n * Drops an index from the table.\r\n */\r\n async dropIndex(\r\n tableOrName: Table | string,\r\n indexOrName: TableIndex | string,\r\n ): Promise<void> {\r\n const table = InstanceChecker.isTable(tableOrName)\r\n ? tableOrName\r\n : await this.getCachedTable(tableOrName)\r\n const index = InstanceChecker.isTableIndex(indexOrName)\r\n ? indexOrName\r\n : table.indices.find((i) => i.name === indexOrName)\r\n if (!index)\r\n throw new TypeORMError(\r\n `Supplied index ${indexOrName} was not found in table ${table.name}`,\r\n )\r\n // old index may be passed without name. In this case we generate index name manually.\r\n if (!index.name) index.name = this.generateIndexName(table, index)\r\n\r\n const up = this.dropIndexSql(index)\r\n const down = this.createIndexSql(table, index)\r\n await this.executeQueries(up, down)\r\n table.removeIndex(index)\r\n }\r\n\r\n /**\r\n * Drops an indices from the table.\r\n */\r\n async dropIndices(\r\n tableOrName: Table | string,\r\n indices: TableIndex[],\r\n ): Promise<void> {\r\n const promises = indices.map((index) =>\r\n this.dropIndex(tableOrName, index),\r\n )\r\n await Promise.all(promises)\r\n }\r\n\r\n /**\r\n * Clears all table contents.\r\n * Note: this operation uses SQL's TRUNCATE query which cannot be reverted in transactions.\r\n */\r\n async clearTable(tableName: string): Promise<void> {\r\n await this.query(`TRUNCATE TABLE ${this.escapePath(tableName)}`)\r\n }\r\n\r\n /**\r\n * Removes all tables from the currently connected database.\r\n */\r\n async clearDatabase(): Promise<void> {\r\n const isAnotherTransactionActive = this.isTransactionActive\r\n if (!isAnotherTransactionActive) await this.startTransaction()\r\n try {\r\n // drop views\r\n const dropViewsQuery = `SELECT 'DROP VIEW \"' || VIEW_NAME || '\"' AS \"query\" FROM \"USER_VIEWS\"`\r\n const dropViewQueries: ObjectLiteral[] = await this.query(\r\n dropViewsQuery,\r\n )\r\n await Promise.all(\r\n dropViewQueries.map((query) => this.query(query[\"query\"])),\r\n )\r\n\r\n // drop materialized views\r\n const dropMatViewsQuery = `SELECT 'DROP MATERIALIZED VIEW \"' || MVIEW_NAME || '\"' AS \"query\" FROM \"USER_MVIEWS\"`\r\n const dropMatViewQueries: ObjectLiteral[] = await this.query(\r\n dropMatViewsQuery,\r\n )\r\n await Promise.all(\r\n dropMatViewQueries.map((query) => this.query(query[\"query\"])),\r\n )\r\n\r\n // drop tables\r\n const dropTablesQuery = `SELECT 'DROP TABLE \"' || TABLE_NAME || '\" CASCADE CONSTRAINTS' AS \"query\" FROM \"USER_TABLES\"`\r\n const dropTableQueries: ObjectLiteral[] = await this.query(\r\n dropTablesQuery,\r\n )\r\n await Promise.all(\r\n dropTableQueries.map((query) => this.query(query[\"query\"])),\r\n )\r\n if (!isAnotherTransactionActive) await this.commitTransaction()\r\n } catch (error) {\r\n try {\r\n // we throw original error even if rollback thrown an error\r\n if (!isAnotherTransactionActive)\r\n await this.rollbackTransaction()\r\n } catch (rollbackError) {}\r\n throw error\r\n }\r\n }\r\n\r\n // -------------------------------------------------------------------------\r\n // Protected Methods\r\n // -------------------------------------------------------------------------\r\n\r\n protected async loadViews(viewNames?: string[]): Promise<View[]> {\r\n const hasTable = await this.hasTable(this.getTypeormMetadataTableName())\r\n if (!hasTable) {\r\n return []\r\n }\r\n\r\n if (!viewNames) {\r\n viewNames = []\r\n }\r\n\r\n const currentDatabase = await this.getCurrentDatabase()\r\n const currentSchema = await this.getCurrentSchema()\r\n\r\n const viewsCondition = viewNames\r\n .map((viewName) => this.driver.parseTableName(viewName))\r\n .map(({ schema, tableName }) => {\r\n if (!schema) {\r\n schema = this.driver.options.schema || currentSchema\r\n }\r\n\r\n return `(\"T\".\"schema\" = '${schema}' AND \"T\".\"name\" = '${tableName}')`\r\n })\r\n .join(\" OR \")\r\n\r\n let query =\r\n `SELECT \"T\".* FROM ${this.escapePath(\r\n this.getTypeormMetadataTableName(),\r\n )} \"T\" ` +\r\n `INNER JOIN \"USER_OBJECTS\" \"O\" ON \"O\".\"OBJECT_NAME\" = \"T\".\"name\" AND \"O\".\"OBJECT_TYPE\" IN ( 'MATERIALIZED VIEW', 'VIEW' ) ` +\r\n `WHERE \"T\".\"type\" IN ('${MetadataTableType.MATERIALIZED_VIEW}', '${MetadataTableType.VIEW}')`\r\n if (viewsCondition.length > 0) query += ` AND ${viewsCondition}`\r\n\r\n const dbViews = await this.query(query)\r\n return dbViews.map((dbView: any) => {\r\n const parsedName = this.driver.parseTableName(dbView[\"name\"])\r\n\r\n const view = new View()\r\n view.database =\r\n parsedName.database || dbView[\"database\"] || currentDatabase\r\n view.schema = parsedName.schema || dbView[\"schema\"] || currentSchema\r\n view.name = parsedName.tableName\r\n view.expression = dbView[\"value\"]\r\n view.materialized =\r\n dbView[\"type\"] === MetadataTableType.MATERIALIZED_VIEW\r\n return view\r\n })\r\n }\r\n\r\n /**\r\n * Loads all tables (with given names) from the database and creates a Table from them.\r\n */\r\n protected async loadTables(tableNames?: string[]): Promise<Table[]> {\r\n if (tableNames && tableNames.length === 0) {\r\n return []\r\n }\r\n\r\n const dbTables: { TABLE_NAME: string; OWNER: string }[] = []\r\n\r\n const currentSchema = await this.getCurrentSchema()\r\n const currentDatabase = await this.getCurrentDatabase()\r\n\r\n if (!tableNames) {\r\n const tablesSql = `SELECT \"TABLE_NAME\", \"OWNER\" FROM \"ALL_TABLES\"`\r\n dbTables.push(...(await this.query(tablesSql)))\r\n } else {\r\n const tablesCondition = tableNames\r\n .map((tableName) => {\r\n const parts = tableName.split(\".\")\r\n\r\n if (parts.length >= 3) {\r\n const [, schema, name] = parts\r\n return `(\"OWNER\" = '${schema}' AND \"TABLE_NAME\" = '${name}')`\r\n } else if (parts.length === 2) {\r\n const [schema, name] = parts\r\n return `(\"OWNER\" = '${schema}' AND \"TABLE_NAME\" = '${name}')`\r\n } else if (parts.length === 1) {\r\n const [name] = parts\r\n return `(\"TABLE_NAME\" = '${name}')`\r\n } else {\r\n return `(1=0)`\r\n }\r\n })\r\n .join(\" OR \")\r\n const tablesSql = `SELECT \"TABLE_NAME\", \"OWNER\" FROM \"ALL_TABLES\" WHERE ${tablesCondition}`\r\n dbTables.push(...(await this.query(tablesSql)))\r\n }\r\n\r\n // if tables were not found in the db, no need to proceed\r\n if (dbTables.length === 0) {\r\n return []\r\n }\r\n\r\n // load tables, columns, indices and foreign keys\r\n const columnsCondition = dbTables\r\n .map(({ TABLE_NAME, OWNER }) => {\r\n return `(\"C\".\"OWNER\" = '${OWNER}' AND \"C\".\"TABLE_NAME\" = '${TABLE_NAME}')`\r\n })\r\n .join(\" OR \")\r\n const columnsSql = `SELECT * FROM \"ALL_TAB_COLS\" \"C\" WHERE (${columnsCondition})`\r\n\r\n const indicesSql =\r\n `SELECT \"C\".\"INDEX_NAME\", \"C\".\"OWNER\", \"C\".\"TABLE_NAME\", \"C\".\"UNIQUENESS\", ` +\r\n `LISTAGG (\"COL\".\"COLUMN_NAME\", ',') WITHIN GROUP (ORDER BY \"COL\".\"COLUMN_NAME\") AS \"COLUMN_NAMES\" ` +\r\n `FROM \"ALL_INDEXES\" \"C\" ` +\r\n `INNER JOIN \"ALL_IND_COLUMNS\" \"COL\" ON \"COL\".\"INDEX_OWNER\" = \"C\".\"OWNER\" AND \"COL\".\"INDEX_NAME\" = \"C\".\"INDEX_NAME\" ` +\r\n `LEFT JOIN \"ALL_CONSTRAINTS\" \"CON\" ON \"CON\".\"OWNER\" = \"C\".\"OWNER\" AND \"CON\".\"CONSTRAINT_NAME\" = \"C\".\"INDEX_NAME\" ` +\r\n `WHERE (${columnsCondition}) AND \"CON\".\"CONSTRAINT_NAME\" IS NULL ` +\r\n `GROUP BY \"C\".\"INDEX_NAME\", \"C\".\"OWNER\", \"C\".\"TABLE_NAME\", \"C\".\"UNIQUENESS\"`\r\n\r\n const foreignKeysSql =\r\n `SELECT \"C\".\"CONSTRAINT_NAME\", \"C\".\"OWNER\", \"C\".\"TABLE_NAME\", \"COL\".\"COLUMN_NAME\", \"REF_COL\".\"TABLE_NAME\" AS \"REFERENCED_TABLE_NAME\", ` +\r\n `\"REF_COL\".\"COLUMN_NAME\" AS \"REFERENCED_COLUMN_NAME\", \"C\".\"DELETE_RULE\" AS \"ON_DELETE\" ` +\r\n `FROM \"ALL_CONSTRAINTS\" \"C\" ` +\r\n `INNER JOIN \"ALL_CONS_COLUMNS\" \"COL\" ON \"COL\".\"OWNER\" = \"C\".\"OWNER\" AND \"COL\".\"CONSTRAINT_NAME\" = \"C\".\"CONSTRAINT_NAME\" ` +\r\n `INNER JOIN \"ALL_CONS_COLUMNS\" \"REF_COL\" ON \"REF_COL\".\"OWNER\" = \"C\".\"R_OWNER\" AND \"REF_COL\".\"CONSTRAINT_NAME\" = \"C\".\"R_CONSTRAINT_NAME\" AND \"REF_COL\".\"POSITION\" = \"COL\".\"POSITION\" ` +\r\n `WHERE (${columnsCondition}) AND \"C\".\"CONSTRAINT_TYPE\" = 'R'`\r\n\r\n const constraintsSql =\r\n `SELECT \"C\".\"CONSTRAINT_NAME\", \"C\".\"CONSTRAINT_TYPE\", \"C\".\"OWNER\", \"C\".\"TABLE_NAME\", \"COL\".\"COLUMN_NAME\", \"C\".\"SEARCH_CONDITION\" ` +\r\n `FROM \"ALL_CONSTRAINTS\" \"C\" ` +\r\n `INNER JOIN \"ALL_CONS_COLUMNS\" \"COL\" ON \"COL\".\"OWNER\" = \"C\".\"OWNER\" AND \"COL\".\"CONSTRAINT_NAME\" = \"C\".\"CONSTRAINT_NAME\" ` +\r\n `WHERE (${columnsCondition}) AND \"C\".\"CONSTRAINT_TYPE\" IN ('C', 'U', 'P') AND \"C\".\"GENERATED\" = 'USER NAME'`\r\n\r\n const [\r\n dbColumns,\r\n dbIndices,\r\n dbForeignKeys,\r\n dbConstraints,\r\n ]: ObjectLiteral[][] = await Promise.all([\r\n this.query(columnsSql),\r\n this.query(indicesSql),\r\n this.query(foreignKeysSql),\r\n this.query(constraintsSql),\r\n ])\r\n\r\n // create tables for loaded tables\r\n return await Promise.all(\r\n dbTables.map(async (dbTable) => {\r\n const table = new Table()\r\n const owner =\r\n dbTable[\"OWNER\"] === currentSchema &&\r\n (!this.driver.options.schema ||\r\n this.driver.options.schema === currentSchema)\r\n ? undefined\r\n : dbTable[\"OWNER\"]\r\n table.database = currentDatabase\r\n table.schema = dbTable[\"OWNER\"]\r\n table.name = this.driver.buildTableName(\r\n dbTable[\"TABLE_NAME\"],\r\n owner,\r\n )\r\n\r\n // create columns from the loaded columns\r\n table.columns = await Promise.all(\r\n dbColumns\r\n .filter(\r\n (dbColumn) =>\r\n dbColumn[\"OWNER\"] === dbTable[\"OWNER\"] &&\r\n dbColumn[\"TABLE_NAME\"] ===\r\n dbTable[\"TABLE_NAME\"] &&\r\n // Filter out auto-generated virtual columns,\r\n // since TypeORM will have no info about them.\r\n !(\r\n dbColumn[\"VIRTUAL_COLUMN\"] === \"YES\" &&\r\n dbColumn[\"USER_GENERATED\"] === \"NO\"\r\n ),\r\n )\r\n .map(async (dbColumn) => {\r\n const columnConstraints = dbConstraints.filter(\r\n (dbConstraint) =>\r\n dbConstraint[\"OWNER\"] ===\r\n dbColumn[\"OWNER\"] &&\r\n dbConstraint[\"TABLE_NAME\"] ===\r\n dbColumn[\"TABLE_NAME\"] &&\r\n dbConstraint[\"COLUMN_NAME\"] ===\r\n dbColumn[\"COLUMN_NAME\"],\r\n )\r\n\r\n const uniqueConstraints = columnConstraints.filter(\r\n (constraint) =>\r\n constraint[\"CONSTRAINT_TYPE\"] === \"U\",\r\n )\r\n const isConstraintComposite =\r\n uniqueConstraints.every((uniqueConstraint) => {\r\n return dbConstraints.some(\r\n (dbConstraint) =>\r\n dbConstraint[\"OWNER\"] ===\r\n dbColumn[\"OWNER\"] &&\r\n dbConstraint[\"TABLE_NAME\"] ===\r\n dbColumn[\"TABLE_NAME\"] &&\r\n dbConstraint[\"COLUMN_NAME\"] !==\r\n dbColumn[\"COLUMN_NAME\"] &&\r\n dbConstraint[\"CONSTRAINT_NAME\"] ===\r\n uniqueConstraint[\r\n \"CONSTRAINT_NAME\"\r\n ] &&\r\n dbConstraint[\"CONSTRAINT_TYPE\"] ===\r\n \"U\",\r\n )\r\n })\r\n\r\n const tableColumn = new TableColumn()\r\n tableColumn.name = dbColumn[\"COLUMN_NAME\"]\r\n tableColumn.type =\r\n dbColumn[\"DATA_TYPE\"].toLowerCase()\r\n if (tableColumn.type.indexOf(\"(\") !== -1)\r\n tableColumn.type = tableColumn.type.replace(\r\n /\\([0-9]*\\)/,\r\n \"\",\r\n )\r\n\r\n // check only columns that have length property\r\n if (\r\n this.driver.withLengthColumnTypes.indexOf(\r\n tableColumn.type as ColumnType,\r\n ) !== -1\r\n ) {\r\n const length =\r\n tableColumn.type === \"raw\"\r\n ? dbColumn[\"DATA_LENGTH\"]\r\n : dbColumn[\"CHAR_COL_DECL_LENGTH\"]\r\n tableColumn.length =\r\n length &&\r\n !this.isDefaultColumnLength(\r\n table,\r\n tableColumn,\r\n length,\r\n )\r\n ? length.toString()\r\n : \"\"\r\n }\r\n\r\n if (\r\n tableColumn.type === \"number\" ||\r\n tableColumn.type === \"float\"\r\n ) {\r\n if (\r\n dbColumn[\"DATA_PRECISION\"] !== null &&\r\n !this.isDefaultColumnPrecision(\r\n table,\r\n tableColumn,\r\n dbColumn[\"DATA_PRECISION\"],\r\n )\r\n )\r\n tableColumn.precision =\r\n dbColumn[\"DATA_PRECISION\"]\r\n if (\r\n dbColumn[\"DATA_SCALE\"] !== null &&\r\n !this.isDefaultColumnScale(\r\n table,\r\n tableColumn,\r\n dbColumn[\"DATA_SCALE\"],\r\n )\r\n )\r\n tableColumn.scale = dbColumn[\"DATA_SCALE\"]\r\n } else if (\r\n (tableColumn.type === \"timestamp\" ||\r\n tableColumn.type ===\r\n \"timestamp with time zone\" ||\r\n tableColumn.type ===\r\n \"timestamp with local time zone\") &&\r\n dbColumn[\"DATA_SCALE\"] !== null\r\n ) {\r\n tableColumn.precision =\r\n !this.isDefaultColumnPrecision(\r\n table,\r\n tableColumn,\r\n dbColumn[\"DATA_SCALE\"],\r\n )\r\n ? dbColumn[\"DATA_SCALE\"]\r\n : undefined\r\n }\r\n\r\n tableColumn.default =\r\n dbColumn[\"DATA_DEFAULT\"] !== null &&\r\n dbColumn[\"DATA_DEFAULT\"] !== undefined &&\r\n dbColumn[\"VIRTUAL_COLUMN\"] === \"NO\" &&\r\n dbColumn[\"DATA_DEFAULT\"].trim() !== \"NULL\"\r\n ? (tableColumn.default =\r\n dbColumn[\"DATA_DEFAULT\"].trim())\r\n : undefined\r\n\r\n const primaryConstraint = columnConstraints.find(\r\n (constraint) =>\r\n constraint[\"CONSTRAINT_TYPE\"] === \"P\",\r\n )\r\n if (primaryConstraint) {\r\n tableColumn.isPrimary = true\r\n // find another columns involved in primary key constraint\r\n const anotherPrimaryConstraints =\r\n dbConstraints.filter(\r\n (constraint) =>\r\n constraint[\"OWNER\"] ===\r\n dbColumn[\"OWNER\"] &&\r\n constraint[\"TABLE_NAME\"] ===\r\n dbColumn[\"TABLE_NAME\"] &&\r\n constraint[\"COLUMN_NAME\"] !==\r\n dbColumn[\"COLUMN_NAME\"] &&\r\n constraint[\"CONSTRAINT_TYPE\"] ===\r\n \"P\",\r\n )\r\n\r\n // collect all column names\r\n const columnNames =\r\n anotherPrimaryConstraints.map(\r\n (constraint) =>\r\n constraint[\"COLUMN_NAME\"],\r\n )\r\n columnNames.push(dbColumn[\"COLUMN_NAME\"])\r\n\r\n // build default primary key constraint name\r\n const pkName =\r\n this.connection.namingStrategy.primaryKeyName(\r\n table,\r\n columnNames,\r\n )\r\n\r\n // if primary key has user-defined constraint name, write it in table column\r\n if (\r\n primaryConstraint[\"CONSTRAINT_NAME\"] !==\r\n pkName\r\n ) {\r\n tableColumn.primaryKeyConstraintName =\r\n primaryConstraint[\"CONSTRAINT_NAME\"]\r\n }\r\n }\r\n\r\n tableColumn.isNullable =\r\n dbColumn[\"NULLABLE\"] === \"Y\"\r\n tableColumn.isUnique =\r\n uniqueConstraints.length > 0 &&\r\n !isConstraintComposite\r\n tableColumn.isGenerated =\r\n dbColumn[\"IDENTITY_COLUMN\"] === \"YES\"\r\n if (tableColumn.isGenerated) {\r\n tableColumn.generationStrategy = \"increment\"\r\n tableColumn.default = undefined\r\n }\r\n tableColumn.comment = \"\" // todo\r\n\r\n if (dbColumn[\"VIRTUAL_COLUMN\"] === \"YES\") {\r\n tableColumn.generatedType = \"VIRTUAL\"\r\n\r\n const asExpressionQuery =\r\n this.selectTypeormMetadataSql({\r\n table: dbTable[\"TABLE_NAME\"],\r\n type: MetadataTableType.GENERATED_COLUMN,\r\n name: tableColumn.name,\r\n })\r\n\r\n const results = await this.query(\r\n asExpressionQuery.query,\r\n asExpressionQuery.parameters,\r\n )\r\n if (results[0] && results[0].value) {\r\n tableColumn.asExpression = results[0].value\r\n } else {\r\n tableColumn.asExpression = \"\"\r\n }\r\n }\r\n\r\n return tableColumn\r\n }),\r\n )\r\n\r\n // find unique constraints of table, group them by constraint name and build TableUnique.\r\n const tableUniqueConstraints = OrmUtils.uniq(\r\n dbConstraints.filter((dbConstraint) => {\r\n return (\r\n dbConstraint[\"TABLE_NAME\"] ===\r\n dbTable[\"TABLE_NAME\"] &&\r\n dbConstraint[\"OWNER\"] === dbTable[\"OWNER\"] &&\r\n dbConstraint[\"CONSTRAINT_TYPE\"] === \"U\"\r\n )\r\n }),\r\n (dbConstraint) => dbConstraint[\"CONSTRAINT_NAME\"],\r\n )\r\n\r\n table.uniques = tableUniqueConstraints.map((constraint) => {\r\n const uniques = dbConstraints.filter(\r\n (dbC) =>\r\n dbC[\"CONSTRAINT_NAME\"] ===\r\n constraint[\"CONSTRAINT_NAME\"],\r\n )\r\n return new TableUnique({\r\n name: constraint[\"CONSTRAINT_NAME\"],\r\n columnNames: uniques.map((u) => u[\"COLUMN_NAME\"]),\r\n })\r\n })\r\n\r\n // find check constraints of table, group them by constraint name and build TableCheck.\r\n const tableCheckConstraints = OrmUtils.uniq(\r\n dbConstraints.filter((dbConstraint) => {\r\n return (\r\n dbConstraint[\"TABLE_NAME\"] ===\r\n dbTable[\"TABLE_NAME\"] &&\r\n dbConstraint[\"OWNER\"] === dbTable[\"OWNER\"] &&\r\n dbConstraint[\"CONSTRAINT_TYPE\"] === \"C\"\r\n )\r\n }),\r\n (dbConstraint) => dbConstraint[\"CONSTRAINT_NAME\"],\r\n )\r\n\r\n table.checks = tableCheckConstraints.map((constraint) => {\r\n const checks = dbConstraints.filter(\r\n (dbC) =>\r\n dbC[\"TABLE_NAME\"] === constraint[\"TABLE_NAME\"] &&\r\n dbC[\"OWNER\"] === constraint[\"OWNER\"] &&\r\n dbC[\"CONSTRAINT_NAME\"] ===\r\n constraint[\"CONSTRAINT_NAME\"],\r\n )\r\n return new TableCheck({\r\n name: constraint[\"CONSTRAINT_NAME\"],\r\n columnNames: checks.map((c) => c[\"COLUMN_NAME\"]),\r\n expression: constraint[\"SEARCH_CONDITION\"],\r\n })\r\n })\r\n\r\n // find foreign key constraints of table, group them by constraint name and build TableForeignKey.\r\n const tableForeignKeyConstraints = OrmUtils.uniq(\r\n dbForeignKeys.filter(\r\n (dbForeignKey) =>\r\n dbForeignKey[\"OWNER\"] === dbTable[\"OWNER\"] &&\r\n dbForeignKey[\"TABLE_NAME\"] ===\r\n dbTable[\"TABLE_NAME\"],\r\n ),\r\n (dbForeignKey) => dbForeignKey[\"CONSTRAINT_NAME\"],\r\n )\r\n\r\n table.foreignKeys = tableForeignKeyConstraints.map(\r\n (dbForeignKey) => {\r\n const foreignKeys = dbForeignKeys.filter(\r\n (dbFk) =>\r\n dbFk[\"TABLE_NAME\"] ===\r\n dbForeignKey[\"TABLE_NAME\"] &&\r\n dbFk[\"OWNER\"] === dbForeignKey[\"OWNER\"] &&\r\n dbFk[\"CONSTRAINT_NAME\"] ===\r\n dbForeignKey[\"CONSTRAINT_NAME\"],\r\n )\r\n return new TableForeignKey({\r\n name: dbForeignKey[\"CONSTRAINT_NAME\"],\r\n columnNames: foreignKeys.map(\r\n (dbFk) => dbFk[\"COLUMN_NAME\"],\r\n ),\r\n referencedDatabase: table.database,\r\n referencedSchema: dbForeignKey[\"OWNER\"],\r\n referencedTableName:\r\n dbForeignKey[\"REFERENCED_TABLE_NAME\"],\r\n referencedColumnNames: foreignKeys.map(\r\n (dbFk) => dbFk[\"REFERENCED_COLUMN_NAME\"],\r\n ),\r\n onDelete: dbForeignKey[\"ON_DELETE\"],\r\n onUpdate: \"NO ACTION\", // Oracle does not have onUpdate option in FK's, but we need it for proper synchronization\r\n })\r\n },\r\n )\r\n\r\n // Attempt to map auto-generated virtual columns to their\r\n // referenced columns, through its 'DATA_DEFAULT' property.\r\n //\r\n // An example of this happening is when a column of type\r\n // TIMESTAMP WITH TIME ZONE is indexed. Oracle will create a\r\n // virtual column of type TIMESTAMP with a default value of\r\n // SYS_EXTRACT_UTC(<column>).\r\n const autoGenVirtualDbColumns = dbColumns\r\n .filter(\r\n (dbColumn) =>\r\n dbColumn[\"OWNER\"] === dbTable[\"OWNER\"] &&\r\n dbColumn[\"TABLE_NAME\"] === dbTable[\"TABLE_NAME\"] &&\r\n dbColumn[\"VIRTUAL_COLUMN\"] === \"YES\" &&\r\n dbColumn[\"USER_GENERATED\"] === \"NO\",\r\n )\r\n .reduce((acc, x) => {\r\n const referencedDbColumn = dbColumns.find((dbColumn) =>\r\n x[\"DATA_DEFAULT\"].includes(dbColumn[\"COLUMN_NAME\"]),\r\n )\r\n\r\n if (!referencedDbColumn) return acc\r\n\r\n return {\r\n ...acc,\r\n [x[\"COLUMN_NAME\"]]:\r\n referencedDbColumn[\"COLUMN_NAME\"],\r\n }\r\n }, {})\r\n\r\n // create TableIndex objects from the loaded indices\r\n table.indices = dbIndices\r\n .filter(\r\n (dbIndex) =>\r\n dbIndex[\"TABLE_NAME\"] === dbTable[\"TABLE_NAME\"] &&\r\n dbIndex[\"OWNER\"] === dbTable[\"OWNER\"],\r\n )\r\n .map((dbIndex) => {\r\n //\r\n const columnNames = dbIndex[\"COLUMN_NAMES\"]\r\n .split(\",\")\r\n .map(\r\n (\r\n columnName: keyof typeof autoGenVirtualDbColumns,\r\n ) =>\r\n autoGenVirtualDbColumns[columnName] ??\r\n columnName,\r\n )\r\n\r\n return new TableIndex({\r\n name: dbIndex[\"INDEX_NAME\"],\r\n columnNames,\r\n isUnique: dbIndex[\"UNIQUENESS\"] === \"UNIQUE\",\r\n })\r\n })\r\n\r\n return table\r\n }),\r\n )\r\n }\r\n\r\n /**\r\n * Builds and returns SQL for create table.\r\n */\r\n protected createTableSql(table: Table, createForeignKeys?: boolean): Query {\r\n const columnDefinitions = table.columns\r\n .map((column) => this.buildCreateColumnSql(column))\r\n .join(\", \")\r\n let sql = `CREATE TABLE ${this.escapePath(table)} (${columnDefinitions}`\r\n\r\n table.columns\r\n .filter((column) => column.isUnique)\r\n .forEach((column) => {\r\n const isUniqueExist = table.uniques.some(\r\n (unique) =>\r\n unique.columnNames.length === 1 &&\r\n unique.columnNames[0] === column.name,\r\n )\r\n if (!isUniqueExist)\r\n table.uniques.push(\r\n new TableUnique({\r\n name: this.connection.namingStrategy.uniqueConstraintName(\r\n table,\r\n [column.name],\r\n ),\r\n columnNames: [column.name],\r\n }),\r\n )\r\n })\r\n\r\n if (table.uniques.length > 0) {\r\n const uniquesSql = table.uniques\r\n .map((unique) => {\r\n const uniqueName = unique.name\r\n ? unique.name\r\n : this.connection.namingStrategy.uniqueConstraintName(\r\n table,\r\n unique.columnNames,\r\n )\r\n const columnNames = unique.columnNames\r\n .map((columnName) => `\"${columnName}\"`)\r\n .join(\", \")\r\n return `CONSTRAINT \"${uniqueName}\" UNIQUE (${columnNames})`\r\n })\r\n .join(\", \")\r\n\r\n sql += `, ${uniquesSql}`\r\n }\r\n\r\n if (table.checks.length > 0) {\r\n const checksSql = table.checks\r\n .map((check) => {\r\n const checkName = check.name\r\n ? check.name\r\n : this.connection.namingStrategy.checkConstraintName(\r\n table,\r\n check.expression!,\r\n )\r\n return `CONSTRAINT \"${checkName}\" CHECK (${check.expression})`\r\n })\r\n .join(\", \")\r\n\r\n sql += `, ${checksSql}`\r\n }\r\n\r\n if (table.foreignKeys.length > 0 && createForeignKeys) {\r\n const foreignKeysSql = table.foreignKeys\r\n .map((fk) => {\r\n const columnNames = fk.columnNames\r\n .map((columnName) => `\"${columnName}\"`)\r\n .join(\", \")\r\n if (!fk.name)\r\n fk.name = this.connection.namingStrategy.foreignKeyName(\r\n table,\r\n fk.columnNames,\r\n this.getTablePath(fk),\r\n fk.referencedColumnNames,\r\n )\r\n const referencedColumnNames = fk.referencedColumnNames\r\n .map((columnName) => `\"${columnName}\"`)\r\n .join(\", \")\r\n let constraint = `CONSTRAINT \"${\r\n fk.name\r\n }\" FOREIGN KEY (${columnNames}) REFERENCES ${this.escapePath(\r\n this.getTablePath(fk),\r\n )} (${referencedColumnNames})`\r\n if (fk.onDelete && fk.onDelete !== \"NO ACTION\") {\r\n // Oracle does not support NO ACTION, but we set NO ACTION by default in EntityMetadata\r\n constraint += ` ON DELETE ${fk.onDelete}`\r\n }\r\n return constraint\r\n })\r\n .join(\", \")\r\n\r\n sql += `, ${foreignKeysSql}`\r\n }\r\n\r\n const primaryColumns = table.columns.filter(\r\n (column) => column.isPrimary,\r\n )\r\n if (primaryColumns.length > 0) {\r\n const primaryKeyName = primaryColumns[0].primaryKeyConstraintName\r\n ? primaryColumns[0].primaryKeyConstraintName\r\n : this.connection.namingStrategy.primaryKeyName(\r\n table,\r\n primaryColumns.map((column) => column.name),\r\n )\r\n\r\n const columnNames = primaryColumns\r\n .map((column) => `\"${column.name}\"`)\r\n .join(\", \")\r\n sql += `, CONSTRAINT \"${primaryKeyName}\" PRIMARY KEY (${columnNames})`\r\n }\r\n\r\n sql += `)`\r\n\r\n return new Query(sql)\r\n }\r\n\r\n /**\r\n * Builds drop table sql.\r\n */\r\n protected dropTableSql(\r\n tableOrName: Table | string,\r\n ifExist?: boolean,\r\n ): Query {\r\n const query = ifExist\r\n ? `DROP TABLE IF EXISTS ${this.escapePath(tableOrName)}`\r\n : `DROP TABLE ${this.escapePath(tableOrName)}`\r\n return new Query(query)\r\n }\r\n\r\n protected createViewSql(view: View): Query {\r\n const materializedClause = view.materialized ? \"MATERIALIZED \" : \"\"\r\n if (typeof view.expression === \"string\") {\r\n return new Query(\r\n `CREATE ${materializedClause}VIEW ${this.escapePath(view)} AS ${\r\n view.expression\r\n }`,\r\n )\r\n } else {\r\n return new Query(\r\n `CREATE ${materializedClause}VIEW ${this.escapePath(\r\n view,\r\n )} AS ${view.expression(this.connection).getQuery()}`,\r\n )\r\n }\r\n }\r\n\r\n protected insertViewDefinitionSql(view: View): Query {\r\n const expression =\r\n typeof view.expression === \"string\"\r\n ? view.expression.trim()\r\n : view.expression(this.connection).getQuery()\r\n const type = view.materialized\r\n ? MetadataTableType.MATERIALIZED_VIEW\r\n : MetadataTableType.VIEW\r\n const { schema, tableName } = this.driver.parseTableName(view)\r\n return this.insertTypeormMetadataSql({\r\n type: type,\r\n name: tableName,\r\n schema: schema,\r\n value: expression,\r\n })\r\n }\r\n\r\n /**\r\n * Builds drop view sql.\r\n */\r\n protected dropViewSql(view: View): Query {\r\n const materializedClause = view.materialized ? \"MATERIALIZED \" : \"\"\r\n return new Query(\r\n `DROP ${materializedClause}VIEW ${this.escapePath(view)}`,\r\n )\r\n }\r\n\r\n /**\r\n * Builds remove view sql.\r\n */\r\n protected deleteViewDefinitionSql(view: View): Query {\r\n const type = view.materialized\r\n ? MetadataTableType.MATERIALIZED_VIEW\r\n : MetadataTableType.VIEW\r\n return this.deleteTypeormMetadataSql({ type, name: view.name })\r\n }\r\n\r\n /**\r\n * Builds create index sql.\r\n */\r\n protected createIndexSql(table: Table, index: TableIndex): Query {\r\n const columns = index.columnNames\r\n .map((columnName) => `\"${columnName}\"`)\r\n .join(\", \")\r\n return new Query(\r\n `CREATE ${index.isUnique ? \"UNIQUE \" : \"\"}INDEX \"${\r\n index.name\r\n }\" ON ${this.escapePath(table)} (${columns})`,\r\n )\r\n }\r\n\r\n /**\r\n * Builds drop index sql.\r\n */\r\n protected dropIndexSql(indexOrName: TableIndex | string): Query {\r\n let indexName = InstanceChecker.isTableIndex(indexOrName)\r\n ? indexOrName.name\r\n : indexOrName\r\n return new Query(`DROP INDEX \"${indexName}\"`)\r\n }\r\n\r\n /**\r\n * Builds create primary key sql.\r\n */\r\n protected createPrimaryKeySql(\r\n table: Table,\r\n columnNames: string[],\r\n constraintName?: string,\r\n ): Query {\r\n const primaryKeyName = constraintName\r\n ? constraintName\r\n : this.connection.namingStrategy.primaryKeyName(table, columnNames)\r\n\r\n const columnNamesString = columnNames\r\n .map((columnName) => `\"${columnName}\"`)\r\n .join(\", \")\r\n\r\n return new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} ADD CONSTRAINT \"${primaryKeyName}\" PRIMARY KEY (${columnNamesString})`,\r\n )\r\n }\r\n\r\n /**\r\n * Builds drop primary key sql.\r\n */\r\n protected dropPrimaryKeySql(table: Table): Query {\r\n if (!table.primaryColumns.length)\r\n throw new TypeORMError(`Table ${table} has no primary keys.`)\r\n\r\n const columnNames = table.primaryColumns.map((column) => column.name)\r\n const constraintName = table.primaryColumns[0].primaryKeyConstraintName\r\n const primaryKeyName = constraintName\r\n ? constraintName\r\n : this.connection.namingStrategy.primaryKeyName(table, columnNames)\r\n\r\n return new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} DROP CONSTRAINT \"${primaryKeyName}\"`,\r\n )\r\n }\r\n\r\n /**\r\n * Builds create unique constraint sql.\r\n */\r\n protected createUniqueConstraintSql(\r\n table: Table,\r\n uniqueConstraint: TableUnique,\r\n ): Query {\r\n const columnNames = uniqueConstraint.columnNames\r\n .map((column) => `\"` + column + `\"`)\r\n .join(\", \")\r\n return new Query(\r\n `ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${\r\n uniqueConstraint.name\r\n }\" UNIQUE (${columnNames})`,\r\n )\r\n }\r\n\r\n /**\r\n * Builds drop unique constraint sql.\r\n */\r\n protected dropUniqueConstraintSql(\r\n table: Table,\r\n uniqueOrName: TableUnique | string,\r\n ): Query {\r\n const uniqueName = InstanceChecker.isTableUnique(uniqueOrName)\r\n ? uniqueOrName.name\r\n : uniqueOrName\r\n return new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} DROP CONSTRAINT \"${uniqueName}\"`,\r\n )\r\n }\r\n\r\n /**\r\n * Builds create check constraint sql.\r\n */\r\n protected createCheckConstraintSql(\r\n table: Table,\r\n checkConstraint: TableCheck,\r\n ): Query {\r\n return new Query(\r\n `ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${\r\n checkConstraint.name\r\n }\" CHECK (${checkConstraint.expression})`,\r\n )\r\n }\r\n\r\n /**\r\n * Builds drop check constraint sql.\r\n */\r\n protected dropCheckConstraintSql(\r\n table: Table,\r\n checkOrName: TableCheck | string,\r\n ): Query {\r\n const checkName = InstanceChecker.isTableCheck(checkOrName)\r\n ? checkOrName.name\r\n : checkOrName\r\n return new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} DROP CONSTRAINT \"${checkName}\"`,\r\n )\r\n }\r\n\r\n /**\r\n * Builds create foreign key sql.\r\n */\r\n protected createForeignKeySql(\r\n table: Table,\r\n foreignKey: TableForeignKey,\r\n ): Query {\r\n const columnNames = foreignKey.columnNames\r\n .map((column) => `\"` + column + `\"`)\r\n .join(\", \")\r\n const referencedColumnNames = foreignKey.referencedColumnNames\r\n .map((column) => `\"` + column + `\"`)\r\n .join(\",\")\r\n let sql =\r\n `ALTER TABLE ${this.escapePath(table)} ADD CONSTRAINT \"${\r\n foreignKey.name\r\n }\" FOREIGN KEY (${columnNames}) ` +\r\n `REFERENCES ${this.escapePath(\r\n this.getTablePath(foreignKey),\r\n )} (${referencedColumnNames})`\r\n // Oracle does not support NO ACTION, but we set NO ACTION by default in EntityMetadata\r\n if (foreignKey.onDelete && foreignKey.onDelete !== \"NO ACTION\") {\r\n sql += ` ON DELETE ${foreignKey.onDelete}`\r\n }\r\n return new Query(sql)\r\n }\r\n\r\n /**\r\n * Builds drop foreign key sql.\r\n */\r\n protected dropForeignKeySql(\r\n table: Table,\r\n foreignKeyOrName: TableForeignKey | string,\r\n ): Query {\r\n const foreignKeyName = InstanceChecker.isTableForeignKey(\r\n foreignKeyOrName,\r\n )\r\n ? foreignKeyOrName.name\r\n : foreignKeyOrName\r\n return new Query(\r\n `ALTER TABLE ${this.escapePath(\r\n table,\r\n )} DROP CONSTRAINT \"${foreignKeyName}\"`,\r\n )\r\n }\r\n\r\n /**\r\n * Builds a query for create column.\r\n */\r\n protected buildCreateColumnSql(column: TableColumn) {\r\n let c =\r\n `\"${column.name}\" ` + this.connection.driver.createFullType(column)\r\n if (column.charset) c += \" CHARACTER SET \" + column.charset\r\n if (column.collation) c += \" COLLATE \" + column.collation\r\n\r\n if (column.asExpression) c += ` AS (${column.asExpression}) VIRTUAL`\r\n\r\n if (column.default !== undefined && column.default !== null)\r\n // DEFAULT must be placed before NOT NULL\r\n c += \" DEFAULT \" + column.default\r\n if (column.isNullable !== true && !column.isGenerated)\r\n // NOT NULL is not supported with GENERATED\r\n c += \" NOT NULL\"\r\n if (\r\n column.isGenerated === true &&\r\n column.generationStrategy === \"increment\"\r\n )\r\n c += \" GENERATED BY DEFAULT AS IDENTITY\"\r\n\r\n return c\r\n }\r\n\r\n /**\r\n * Escapes given table or view path.\r\n */\r\n protected escapePath(target: Table | View | string): string {\r\n // Ignore database when escaping paths\r\n const { schema, tableName } = this.driver.parseTableName(target)\r\n\r\n if (schema && schema !== this.driver.schema) {\r\n return `\"${schema}\".\"${tableName}\"`\r\n }\r\n\r\n return `\"${tableName}\"`\r\n }\r\n\r\n /**\r\n * Change table comment.\r\n */\r\n changeTableComment(\r\n tableOrName: Table | string,\r\n comment?: string,\r\n ): Promise<void> {\r\n throw new TypeORMError(\r\n `oracle driver does not support change table comment.`,\r\n )\r\n }\r\n}\r\n"],"sourceRoot":"../.."}
|