typeorm 0.2.25 → 0.2.29
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 +16 -7
- package/browser/cache/DbQueryResultCache.js +14 -14
- package/browser/cache/DbQueryResultCache.js.map +1 -1
- package/browser/cache/RedisQueryResultCache.js +19 -14
- package/browser/cache/RedisQueryResultCache.js.map +1 -1
- package/browser/common/DeepPartial.d.ts +1 -1
- package/browser/common/DeepPartial.js.map +1 -1
- package/browser/common/EntityTarget.d.ts +9 -0
- package/browser/common/EntityTarget.js +3 -0
- package/browser/common/EntityTarget.js.map +1 -0
- package/browser/connection/Connection.d.ts +11 -10
- package/browser/connection/Connection.js +63 -40
- package/browser/connection/Connection.js.map +1 -1
- package/browser/connection/ConnectionMetadataBuilder.js +8 -8
- package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
- package/browser/connection/ConnectionOptions.d.ts +2 -1
- package/browser/connection/ConnectionOptions.js.map +1 -1
- package/browser/connection/ConnectionOptionsReader.js +48 -43
- package/browser/connection/ConnectionOptionsReader.js.map +1 -1
- package/browser/connection/options-reader/ConnectionOptionsEnvReader.d.ts +5 -1
- package/browser/connection/options-reader/ConnectionOptionsEnvReader.js +45 -31
- package/browser/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
- package/browser/connection/options-reader/ConnectionOptionsXmlReader.js +4 -4
- package/browser/connection/options-reader/ConnectionOptionsXmlReader.js.map +1 -1
- package/browser/connection/options-reader/ConnectionOptionsYmlReader.d.ts +1 -1
- package/browser/connection/options-reader/ConnectionOptionsYmlReader.js +15 -4
- package/browser/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
- package/browser/decorator/Check.d.ts +2 -2
- package/browser/decorator/Check.js.map +1 -1
- package/browser/decorator/EntityRepository.d.ts +1 -1
- package/browser/decorator/EntityRepository.js.map +1 -1
- package/browser/decorator/Exclusion.d.ts +2 -2
- package/browser/decorator/Exclusion.js.map +1 -1
- package/browser/decorator/Generated.d.ts +1 -1
- package/browser/decorator/Generated.js.map +1 -1
- package/browser/decorator/Index.d.ts +7 -7
- package/browser/decorator/Index.js.map +1 -1
- package/browser/decorator/Unique.d.ts +4 -4
- package/browser/decorator/Unique.js +12 -1
- package/browser/decorator/Unique.js.map +1 -1
- package/browser/decorator/columns/Column.d.ts +12 -12
- package/browser/decorator/columns/Column.js.map +1 -1
- package/browser/decorator/columns/CreateDateColumn.d.ts +1 -1
- package/browser/decorator/columns/CreateDateColumn.js.map +1 -1
- package/browser/decorator/columns/DeleteDateColumn.d.ts +1 -1
- package/browser/decorator/columns/DeleteDateColumn.js.map +1 -1
- package/browser/decorator/columns/ObjectIdColumn.d.ts +1 -1
- package/browser/decorator/columns/ObjectIdColumn.js.map +1 -1
- package/browser/decorator/columns/PrimaryColumn.d.ts +2 -2
- package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
- package/browser/decorator/columns/PrimaryGeneratedColumn.d.ts +5 -5
- package/browser/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
- package/browser/decorator/columns/UpdateDateColumn.d.ts +1 -1
- package/browser/decorator/columns/UpdateDateColumn.js.map +1 -1
- package/browser/decorator/columns/VersionColumn.d.ts +1 -1
- package/browser/decorator/columns/VersionColumn.js.map +1 -1
- package/browser/decorator/columns/ViewColumn.d.ts +1 -1
- package/browser/decorator/columns/ViewColumn.js.map +1 -1
- package/browser/decorator/entity/ChildEntity.d.ts +1 -1
- package/browser/decorator/entity/ChildEntity.js +1 -1
- package/browser/decorator/entity/ChildEntity.js.map +1 -1
- package/browser/decorator/entity/TableInheritance.d.ts +1 -1
- package/browser/decorator/entity/TableInheritance.js.map +1 -1
- package/browser/decorator/entity-view/ViewEntity.d.ts +2 -2
- package/browser/decorator/entity-view/ViewEntity.js.map +1 -1
- package/browser/decorator/listeners/AfterInsert.d.ts +1 -1
- package/browser/decorator/listeners/AfterInsert.js.map +1 -1
- package/browser/decorator/listeners/AfterLoad.d.ts +1 -1
- package/browser/decorator/listeners/AfterLoad.js.map +1 -1
- package/browser/decorator/listeners/AfterRemove.d.ts +1 -1
- package/browser/decorator/listeners/AfterRemove.js.map +1 -1
- package/browser/decorator/listeners/AfterUpdate.d.ts +1 -1
- package/browser/decorator/listeners/AfterUpdate.js.map +1 -1
- package/browser/decorator/listeners/BeforeInsert.d.ts +1 -1
- package/browser/decorator/listeners/BeforeInsert.js.map +1 -1
- package/browser/decorator/listeners/BeforeRemove.d.ts +1 -1
- package/browser/decorator/listeners/BeforeRemove.js.map +1 -1
- package/browser/decorator/listeners/BeforeUpdate.d.ts +1 -1
- package/browser/decorator/listeners/BeforeUpdate.js.map +1 -1
- package/browser/decorator/listeners/EventSubscriber.d.ts +1 -1
- package/browser/decorator/listeners/EventSubscriber.js.map +1 -1
- package/browser/decorator/options/ColumnOptions.js.map +1 -1
- package/browser/decorator/options/TransactionOptions.js.map +1 -1
- package/browser/decorator/relations/JoinColumn.d.ts +3 -3
- package/browser/decorator/relations/JoinColumn.js.map +1 -1
- package/browser/decorator/relations/JoinTable.d.ts +3 -3
- package/browser/decorator/relations/JoinTable.js.map +1 -1
- package/browser/decorator/relations/ManyToMany.d.ts +2 -2
- package/browser/decorator/relations/ManyToMany.js.map +1 -1
- package/browser/decorator/relations/ManyToOne.d.ts +2 -2
- package/browser/decorator/relations/ManyToOne.js.map +1 -1
- package/browser/decorator/relations/OneToMany.d.ts +3 -3
- package/browser/decorator/relations/OneToMany.js +2 -2
- package/browser/decorator/relations/OneToMany.js.map +1 -1
- package/browser/decorator/relations/OneToOne.d.ts +2 -2
- package/browser/decorator/relations/OneToOne.js.map +1 -1
- package/browser/decorator/relations/RelationCount.d.ts +1 -1
- package/browser/decorator/relations/RelationCount.js.map +1 -1
- package/browser/decorator/relations/RelationId.d.ts +1 -1
- package/browser/decorator/relations/RelationId.js.map +1 -1
- package/browser/decorator/transaction/Transaction.js +4 -4
- package/browser/decorator/transaction/Transaction.js.map +1 -1
- package/browser/decorator/transaction/TransactionManager.d.ts +1 -1
- package/browser/decorator/transaction/TransactionManager.js.map +1 -1
- package/browser/decorator/tree/Tree.d.ts +1 -1
- package/browser/decorator/tree/Tree.js.map +1 -1
- package/browser/decorator/tree/TreeChildren.d.ts +1 -1
- package/browser/decorator/tree/TreeChildren.js.map +1 -1
- package/browser/decorator/tree/TreeLevelColumn.d.ts +1 -1
- package/browser/decorator/tree/TreeLevelColumn.js.map +1 -1
- package/browser/decorator/tree/TreeParent.d.ts +1 -1
- package/browser/decorator/tree/TreeParent.js.map +1 -1
- package/browser/driver/Driver.d.ts +7 -2
- package/browser/driver/Driver.js.map +1 -1
- package/browser/driver/DriverFactory.js +4 -1
- package/browser/driver/DriverFactory.js.map +1 -1
- package/browser/driver/DriverUtils.d.ts +2 -2
- package/browser/driver/DriverUtils.js +27 -15
- package/browser/driver/DriverUtils.js.map +1 -1
- package/browser/driver/aurora-data-api/AuroraDataApiConnection.d.ts +2 -1
- package/browser/driver/aurora-data-api/AuroraDataApiConnection.js +2 -3
- package/browser/driver/aurora-data-api/AuroraDataApiConnection.js.map +1 -1
- package/browser/driver/aurora-data-api/AuroraDataApiConnectionOptions.d.ts +3 -0
- package/browser/driver/aurora-data-api/AuroraDataApiConnectionOptions.js.map +1 -1
- package/browser/driver/aurora-data-api/AuroraDataApiDriver.d.ts +6 -1
- package/browser/driver/aurora-data-api/AuroraDataApiDriver.js +14 -9
- package/browser/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
- package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.d.ts +5 -0
- package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +283 -149
- package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
- package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.d.ts +6 -0
- package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.js.map +1 -1
- package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.d.ts +57 -0
- package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js +99 -0
- package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js.map +1 -0
- package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.d.ts +4 -3
- package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +66 -20
- package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
- package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.d.ts +50 -0
- package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js +3 -0
- package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -0
- package/browser/driver/better-sqlite3/BetterSqlite3Driver.d.ts +46 -0
- package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +125 -0
- package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -0
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.d.ts +22 -0
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +113 -0
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -0
- package/browser/driver/cockroachdb/CockroachConnectionCredentialsOptions.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachDriver.d.ts +6 -1
- package/browser/driver/cockroachdb/CockroachDriver.js +21 -16
- package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +7 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +509 -211
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/cordova/CordovaDriver.d.ts +2 -1
- package/browser/driver/cordova/CordovaDriver.js +4 -5
- package/browser/driver/cordova/CordovaDriver.js.map +1 -1
- package/browser/driver/cordova/CordovaQueryRunner.js +4 -4
- package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/browser/driver/expo/ExpoDriver.d.ts +2 -1
- package/browser/driver/expo/ExpoDriver.js +4 -5
- package/browser/driver/expo/ExpoDriver.js.map +1 -1
- package/browser/driver/expo/ExpoQueryRunner.js +82 -24
- package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/browser/driver/mongodb/MongoConnectionOptions.d.ts +4 -0
- package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
- package/browser/driver/mongodb/MongoDriver.d.ts +13 -4
- package/browser/driver/mongodb/MongoDriver.js +24 -18
- package/browser/driver/mongodb/MongoDriver.js.map +1 -1
- package/browser/driver/mongodb/MongoQueryRunner.d.ts +4 -3
- package/browser/driver/mongodb/MongoQueryRunner.js +175 -175
- package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
- package/browser/driver/mongodb/typings.js.map +1 -1
- package/browser/driver/mysql/MysqlDriver.d.ts +7 -2
- package/browser/driver/mysql/MysqlDriver.js +20 -13
- package/browser/driver/mysql/MysqlDriver.js.map +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.d.ts +11 -1
- package/browser/driver/mysql/MysqlQueryRunner.js +351 -185
- package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/browser/driver/nativescript/NativescriptDriver.d.ts +2 -1
- package/browser/driver/nativescript/NativescriptDriver.js +4 -5
- package/browser/driver/nativescript/NativescriptDriver.js.map +1 -1
- package/browser/driver/nativescript/NativescriptQueryRunner.js +2 -2
- package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/browser/driver/oracle/OracleDriver.d.ts +6 -1
- package/browser/driver/oracle/OracleDriver.js +17 -12
- package/browser/driver/oracle/OracleDriver.js.map +1 -1
- package/browser/driver/oracle/OracleQueryRunner.d.ts +3 -1
- package/browser/driver/oracle/OracleQueryRunner.js +247 -134
- package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/browser/driver/postgres/PostgresConnectionCredentialsOptions.js.map +1 -1
- package/browser/driver/postgres/PostgresConnectionOptions.d.ts +9 -0
- package/browser/driver/postgres/PostgresConnectionOptions.js.map +1 -1
- package/browser/driver/postgres/PostgresDriver.d.ts +18 -55
- package/browser/driver/postgres/PostgresDriver.js +196 -206
- package/browser/driver/postgres/PostgresDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.d.ts +11 -1
- package/browser/driver/postgres/PostgresQueryRunner.js +517 -209
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/react-native/ReactNativeDriver.d.ts +2 -1
- package/browser/driver/react-native/ReactNativeDriver.js +4 -5
- package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
- package/browser/driver/react-native/ReactNativeQueryRunner.js +4 -4
- package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/browser/driver/sap/SapDriver.d.ts +6 -1
- package/browser/driver/sap/SapDriver.js +12 -7
- package/browser/driver/sap/SapDriver.js.map +1 -1
- package/browser/driver/sap/SapQueryRunner.d.ts +3 -1
- package/browser/driver/sap/SapQueryRunner.js +276 -160
- package/browser/driver/sap/SapQueryRunner.js.map +1 -1
- package/browser/driver/sqlite/SqliteConnectionOptions.d.ts +18 -0
- package/browser/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
- package/browser/driver/sqlite/SqliteDriver.d.ts +2 -1
- package/browser/driver/sqlite/SqliteDriver.js +31 -17
- package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
- package/browser/driver/sqlite/SqliteQueryRunner.js +37 -18
- package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +7 -2
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +36 -9
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +1 -0
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +189 -127
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqljs/SqljsDriver.d.ts +2 -1
- package/browser/driver/sqljs/SqljsDriver.js +14 -15
- package/browser/driver/sqljs/SqljsDriver.js.map +1 -1
- package/browser/driver/sqljs/SqljsQueryRunner.js +7 -6
- package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.d.ts +6 -1
- package/browser/driver/sqlserver/SqlServerDriver.js +13 -8
- package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +3 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.js +368 -230
- package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/browser/driver/types/ColumnTypes.d.ts +1 -1
- package/browser/driver/types/ColumnTypes.js.map +1 -1
- package/browser/driver/types/DatabaseType.d.ts +1 -1
- package/browser/driver/types/DatabaseType.js.map +1 -1
- package/browser/driver/types/ReplicationMode.d.ts +1 -0
- package/browser/driver/types/ReplicationMode.js +3 -0
- package/browser/driver/types/ReplicationMode.js.map +1 -0
- package/browser/entity-manager/EntityManager.d.ts +41 -256
- package/browser/entity-manager/EntityManager.js +32 -42
- package/browser/entity-manager/EntityManager.js.map +1 -1
- package/browser/entity-manager/MongoEntityManager.d.ts +46 -46
- package/browser/entity-manager/MongoEntityManager.js +31 -20
- package/browser/entity-manager/MongoEntityManager.js.map +1 -1
- package/browser/entity-manager/SqljsEntityManager.js +6 -6
- package/browser/entity-manager/SqljsEntityManager.js.map +1 -1
- package/browser/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaRelationOptions.d.ts +1 -1
- package/browser/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaTransformer.js +22 -7
- package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/browser/error/AlreadyHasActiveConnectionError.js +2 -2
- package/browser/error/AlreadyHasActiveConnectionError.js.map +1 -1
- package/browser/error/CannotAttachTreeChildrenEntityError.js +2 -2
- package/browser/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
- package/browser/error/CannotConnectAlreadyConnectedError.js +2 -2
- package/browser/error/CannotConnectAlreadyConnectedError.js.map +1 -1
- package/browser/error/CannotCreateEntityIdMapError.js +2 -2
- package/browser/error/CannotCreateEntityIdMapError.js.map +1 -1
- package/browser/error/CannotDetermineEntityError.js +2 -2
- package/browser/error/CannotDetermineEntityError.js.map +1 -1
- package/browser/error/CannotExecuteNotConnectedError.js +2 -2
- package/browser/error/CannotExecuteNotConnectedError.js.map +1 -1
- package/browser/error/CannotGetEntityManagerNotConnectedError.js +2 -2
- package/browser/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
- package/browser/error/CannotReflectMethodParameterTypeError.js +2 -2
- package/browser/error/CannotReflectMethodParameterTypeError.js.map +1 -1
- package/browser/error/CircularRelationsError.js +2 -2
- package/browser/error/CircularRelationsError.js.map +1 -1
- package/browser/error/ColumnTypeUndefinedError.js +2 -2
- package/browser/error/ColumnTypeUndefinedError.js.map +1 -1
- package/browser/error/ConnectionIsNotSetError.js +2 -2
- package/browser/error/ConnectionIsNotSetError.js.map +1 -1
- package/browser/error/ConnectionNotFoundError.js +2 -2
- package/browser/error/ConnectionNotFoundError.js.map +1 -1
- package/browser/error/CustomRepositoryCannotInheritRepositoryError.js +2 -2
- package/browser/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
- package/browser/error/CustomRepositoryDoesNotHaveEntityError.js +2 -2
- package/browser/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
- package/browser/error/CustomRepositoryNotFoundError.js +2 -2
- package/browser/error/CustomRepositoryNotFoundError.js.map +1 -1
- package/browser/error/DataTypeNotSupportedError.js +2 -2
- package/browser/error/DataTypeNotSupportedError.js.map +1 -1
- package/browser/error/DriverOptionNotSetError.js +2 -2
- package/browser/error/DriverOptionNotSetError.js.map +1 -1
- package/browser/error/DriverPackageNotInstalledError.js +2 -2
- package/browser/error/DriverPackageNotInstalledError.js.map +1 -1
- package/browser/error/EntityColumnNotFound.js +2 -2
- package/browser/error/EntityColumnNotFound.js.map +1 -1
- package/browser/error/EntityMetadataNotFoundError.d.ts +2 -2
- package/browser/error/EntityMetadataNotFoundError.js +5 -2
- package/browser/error/EntityMetadataNotFoundError.js.map +1 -1
- package/browser/error/EntityNotFoundError.d.ts +2 -3
- package/browser/error/EntityNotFoundError.js +5 -2
- package/browser/error/EntityNotFoundError.js.map +1 -1
- package/browser/error/FindRelationsNotFoundError.js +4 -4
- package/browser/error/FindRelationsNotFoundError.js.map +1 -1
- package/browser/error/InitializedRelationError.js +2 -2
- package/browser/error/InitializedRelationError.js.map +1 -1
- package/browser/error/InsertValuesMissingError.js +2 -2
- package/browser/error/InsertValuesMissingError.js.map +1 -1
- package/browser/error/LimitOnUpdateNotSupportedError.js +2 -2
- package/browser/error/LimitOnUpdateNotSupportedError.js.map +1 -1
- package/browser/error/LockNotSupportedOnGivenDriverError.js +2 -2
- package/browser/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
- package/browser/error/MetadataAlreadyExistsError.js +2 -2
- package/browser/error/MetadataAlreadyExistsError.js.map +1 -1
- package/browser/error/MetadataWithSuchNameAlreadyExistsError.js +2 -2
- package/browser/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
- package/browser/error/MissingDeleteDateColumnError.js +2 -2
- package/browser/error/MissingDeleteDateColumnError.js.map +1 -1
- package/browser/error/MissingDriverError.js +3 -3
- package/browser/error/MissingDriverError.js.map +1 -1
- package/browser/error/MissingJoinColumnError.js +2 -2
- package/browser/error/MissingJoinColumnError.js.map +1 -1
- package/browser/error/MissingJoinTableError.js +2 -2
- package/browser/error/MissingJoinTableError.js.map +1 -1
- package/browser/error/MissingPrimaryColumnError.js +2 -2
- package/browser/error/MissingPrimaryColumnError.js.map +1 -1
- package/browser/error/MustBeEntityError.js +2 -2
- package/browser/error/MustBeEntityError.js.map +1 -1
- package/browser/error/NamingStrategyNotFoundError.js +2 -2
- package/browser/error/NamingStrategyNotFoundError.js.map +1 -1
- package/browser/error/NoConnectionForRepositoryError.js +2 -2
- package/browser/error/NoConnectionForRepositoryError.js.map +1 -1
- package/browser/error/NoConnectionOptionError.js +2 -2
- package/browser/error/NoConnectionOptionError.js.map +1 -1
- package/browser/error/NoNeedToReleaseEntityManagerError.js +2 -2
- package/browser/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
- package/browser/error/NoVersionOrUpdateDateColumnError.js +2 -2
- package/browser/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
- package/browser/error/OffsetWithoutLimitNotSupportedError.js +2 -2
- package/browser/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
- package/browser/error/OptimisticLockCanNotBeUsedError.js +2 -2
- package/browser/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
- package/browser/error/OptimisticLockVersionMismatchError.js +2 -2
- package/browser/error/OptimisticLockVersionMismatchError.js.map +1 -1
- package/browser/error/PersistedEntityNotFoundError.js +2 -2
- package/browser/error/PersistedEntityNotFoundError.js.map +1 -1
- package/browser/error/PessimisticLockTransactionRequiredError.js +2 -2
- package/browser/error/PessimisticLockTransactionRequiredError.js.map +1 -1
- package/browser/error/PrimaryColumnCannotBeNullableError.js +2 -2
- package/browser/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
- package/browser/error/QueryFailedError.js +3 -3
- package/browser/error/QueryFailedError.js.map +1 -1
- package/browser/error/QueryRunnerAlreadyReleasedError.js +2 -2
- package/browser/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
- package/browser/error/QueryRunnerProviderAlreadyReleasedError.js +2 -2
- package/browser/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
- package/browser/error/RepositoryNotFoundError.d.ts +2 -2
- package/browser/error/RepositoryNotFoundError.js +5 -2
- package/browser/error/RepositoryNotFoundError.js.map +1 -1
- package/browser/error/RepositoryNotTreeError.d.ts +2 -2
- package/browser/error/RepositoryNotTreeError.js +11 -8
- package/browser/error/RepositoryNotTreeError.js.map +1 -1
- package/browser/error/ReturningStatementNotSupportedError.js +2 -2
- package/browser/error/ReturningStatementNotSupportedError.js.map +1 -1
- package/browser/error/SubjectRemovedAndUpdatedError.js +2 -2
- package/browser/error/SubjectRemovedAndUpdatedError.js.map +1 -1
- package/browser/error/SubjectWithoutIdentifierError.js +2 -2
- package/browser/error/SubjectWithoutIdentifierError.js.map +1 -1
- package/browser/error/TransactionAlreadyStartedError.js +2 -2
- package/browser/error/TransactionAlreadyStartedError.js.map +1 -1
- package/browser/error/TransactionNotStartedError.js +2 -2
- package/browser/error/TransactionNotStartedError.js.map +1 -1
- package/browser/error/TreeRepositoryNotSupportedError.js +2 -2
- package/browser/error/TreeRepositoryNotSupportedError.js.map +1 -1
- package/browser/error/UpdateValuesMissingError.js +2 -2
- package/browser/error/UpdateValuesMissingError.js.map +1 -1
- package/browser/error/UsingJoinColumnIsNotAllowedError.js +2 -2
- package/browser/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
- package/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.js +2 -2
- package/browser/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
- package/browser/error/UsingJoinTableIsNotAllowedError.js +2 -2
- package/browser/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
- package/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.js +2 -2
- package/browser/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
- package/browser/find-options/FindOneOptions.d.ts +4 -0
- package/browser/find-options/FindOneOptions.js.map +1 -1
- package/browser/find-options/FindOperator.d.ts +26 -4
- package/browser/find-options/FindOperator.js +49 -50
- package/browser/find-options/FindOperator.js.map +1 -1
- package/browser/find-options/FindOperatorType.d.ts +1 -1
- package/browser/find-options/FindOperatorType.js.map +1 -1
- package/browser/find-options/FindOptionsUtils.d.ts +2 -2
- package/browser/find-options/FindOptionsUtils.js +5 -1
- package/browser/find-options/FindOptionsUtils.js.map +1 -1
- package/browser/find-options/operator/Any.d.ts +1 -1
- package/browser/find-options/operator/Any.js.map +1 -1
- package/browser/find-options/operator/Between.d.ts +1 -1
- package/browser/find-options/operator/Between.js.map +1 -1
- package/browser/find-options/operator/ILike.d.ts +6 -0
- package/browser/find-options/operator/ILike.js +10 -0
- package/browser/find-options/operator/ILike.js.map +1 -0
- package/browser/find-options/operator/In.d.ts +1 -1
- package/browser/find-options/operator/In.js.map +1 -1
- package/browser/find-options/operator/Raw.d.ts +14 -2
- package/browser/find-options/operator/Raw.js +5 -6
- package/browser/find-options/operator/Raw.js.map +1 -1
- package/browser/index.d.ts +10 -11
- package/browser/index.js +9 -15
- package/browser/index.js.map +1 -1
- package/browser/logger/DebugLogger.d.ts +0 -1
- package/browser/logger/DebugLogger.js +9 -9
- package/browser/logger/DebugLogger.js.map +1 -1
- package/browser/logger/FileLogger.d.ts +3 -1
- package/browser/logger/FileLogger.js +9 -3
- package/browser/logger/FileLogger.js.map +1 -1
- package/browser/logger/Logger.d.ts +1 -1
- package/browser/logger/Logger.js.map +1 -1
- package/browser/logger/LoggerOptions.d.ts +9 -0
- package/browser/logger/LoggerOptions.js.map +1 -1
- package/browser/metadata/ColumnMetadata.js +29 -19
- package/browser/metadata/ColumnMetadata.js.map +1 -1
- package/browser/metadata/EmbeddedMetadata.js +2 -2
- package/browser/metadata/EmbeddedMetadata.js.map +1 -1
- package/browser/metadata/EntityMetadata.d.ts +1 -0
- package/browser/metadata/EntityMetadata.js +13 -5
- package/browser/metadata/EntityMetadata.js.map +1 -1
- package/browser/metadata/RelationMetadata.js +7 -7
- package/browser/metadata/RelationMetadata.js.map +1 -1
- package/browser/metadata/types/EventListenerTypes.d.ts +7 -7
- package/browser/metadata/types/EventListenerTypes.js.map +1 -1
- package/browser/metadata-args/EntityRepositoryMetadataArgs.d.ts +2 -2
- package/browser/metadata-args/EntityRepositoryMetadataArgs.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-builder/EntityMetadataBuilder.js +21 -15
- package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataValidator.js +8 -5
- package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +3 -2
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/browser/migration/MigrationExecutor.js +132 -103
- package/browser/migration/MigrationExecutor.js.map +1 -1
- package/browser/naming-strategy/DefaultNamingStrategy.js +6 -6
- package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
- package/browser/persistence/EntityPersistExecutor.js +65 -47
- package/browser/persistence/EntityPersistExecutor.js.map +1 -1
- package/browser/persistence/Subject.js +4 -3
- package/browser/persistence/Subject.js.map +1 -1
- package/browser/persistence/SubjectDatabaseEntityLoader.js +9 -8
- package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/browser/persistence/SubjectExecutor.js +263 -206
- package/browser/persistence/SubjectExecutor.js.map +1 -1
- package/browser/persistence/SubjectTopoligicalSorter.js +6 -6
- package/browser/persistence/SubjectTopoligicalSorter.js.map +1 -1
- package/browser/persistence/subject-builder/CascadesSubjectBuilder.js +2 -2
- package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
- package/browser/persistence/tree/ClosureSubjectExecutor.js +4 -4
- package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
- package/browser/persistence/tree/MaterializedPathSubjectExecutor.js +5 -4
- package/browser/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
- package/browser/persistence/tree/NestedSetSubjectExecutor.js +3 -3
- package/browser/platform/BrowserConnectionOptionsReaderDummy.d.ts +38 -0
- package/browser/platform/BrowserConnectionOptionsReaderDummy.js +93 -0
- package/browser/platform/BrowserConnectionOptionsReaderDummy.js.map +1 -0
- package/browser/platform/BrowserDirectoryExportedClassesLoader.d.ts +15 -0
- package/browser/platform/BrowserDirectoryExportedClassesLoader.js +22 -0
- package/browser/platform/BrowserDirectoryExportedClassesLoader.js.map +1 -0
- package/browser/platform/BrowserDisabledDriversDummy.d.ts +32 -2
- package/browser/platform/BrowserDisabledDriversDummy.js +52 -2
- package/browser/platform/BrowserDisabledDriversDummy.js.map +1 -1
- package/browser/platform/BrowserFileLoggerDummy.d.ts +33 -0
- package/browser/platform/BrowserFileLoggerDummy.js +58 -0
- package/browser/platform/BrowserFileLoggerDummy.js.map +1 -0
- package/browser/platform/BrowserPlatformTools.d.ts +74 -0
- package/browser/platform/BrowserPlatformTools.js +157 -0
- package/browser/platform/BrowserPlatformTools.js.map +1 -0
- package/browser/platform/PlatformTools.d.ts +15 -21
- package/browser/platform/PlatformTools.js +142 -81
- package/browser/platform/PlatformTools.js.map +1 -1
- package/browser/query-builder/Alias.js.map +1 -1
- package/browser/query-builder/DeleteQueryBuilder.d.ts +2 -3
- package/browser/query-builder/DeleteQueryBuilder.js +12 -6
- package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
- package/browser/query-builder/InsertQueryBuilder.d.ts +2 -3
- package/browser/query-builder/InsertQueryBuilder.js +49 -16
- package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
- package/browser/query-builder/JoinAttribute.js +2 -2
- package/browser/query-builder/JoinAttribute.js.map +1 -1
- package/browser/query-builder/QueryBuilder.d.ts +18 -15
- package/browser/query-builder/QueryBuilder.js +205 -55
- package/browser/query-builder/QueryBuilder.js.map +1 -1
- package/browser/query-builder/QueryBuilderUtils.js +2 -2
- package/browser/query-builder/QueryBuilderUtils.js.map +1 -1
- package/browser/query-builder/QueryExpressionMap.d.ts +4 -0
- package/browser/query-builder/QueryExpressionMap.js +4 -4
- package/browser/query-builder/QueryExpressionMap.js.map +1 -1
- package/browser/query-builder/QueryPartialEntity.d.ts +1 -1
- package/browser/query-builder/QueryPartialEntity.js.map +1 -1
- package/browser/query-builder/RelationIdLoader.js +5 -5
- package/browser/query-builder/RelationLoader.js +3 -3
- package/browser/query-builder/RelationLoader.js.map +1 -1
- package/browser/query-builder/RelationQueryBuilder.js +14 -14
- package/browser/query-builder/RelationQueryBuilder.js.map +1 -1
- package/browser/query-builder/RelationRemover.js +7 -7
- package/browser/query-builder/RelationRemover.js.map +1 -1
- package/browser/query-builder/RelationUpdater.js +3 -3
- package/browser/query-builder/ReturningResultsEntityUpdator.js +30 -31
- package/browser/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
- package/browser/query-builder/SelectQueryBuilder.d.ts +9 -3
- package/browser/query-builder/SelectQueryBuilder.js +116 -68
- package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
- package/browser/query-builder/SoftDeleteQueryBuilder.d.ts +2 -3
- package/browser/query-builder/SoftDeleteQueryBuilder.js +6 -6
- package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/browser/query-builder/UpdateQueryBuilder.js +13 -7
- package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/browser/query-builder/relation-count/RelationCountAttribute.js +3 -3
- package/browser/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
- package/browser/query-builder/relation-count/RelationCountLoader.js +5 -5
- package/browser/query-builder/relation-id/RelationIdAttribute.js +2 -2
- package/browser/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
- package/browser/query-builder/relation-id/RelationIdLoader.js +6 -6
- package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
- package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +4 -4
- package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +9 -6
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
- package/browser/query-runner/BaseQueryRunner.d.ts +2 -5
- package/browser/query-runner/BaseQueryRunner.js +106 -56
- package/browser/query-runner/BaseQueryRunner.js.map +1 -1
- package/browser/query-runner/QueryRunner.d.ts +2 -1
- package/browser/query-runner/QueryRunner.js.map +1 -1
- package/browser/repository/AbstractRepository.js.map +1 -1
- package/browser/repository/BaseEntity.js +5 -5
- package/browser/repository/BaseEntity.js.map +1 -1
- package/browser/repository/MongoRepository.js +2 -2
- package/browser/repository/MongoRepository.js.map +1 -1
- package/browser/repository/Repository.js +3 -3
- package/browser/repository/Repository.js.map +1 -1
- package/browser/repository/TreeRepository.js +6 -6
- package/browser/repository/TreeRepository.js.map +1 -1
- package/browser/schema-builder/MongoSchemaBuilder.js +4 -4
- package/browser/schema-builder/MongoSchemaBuilder.js.map +1 -1
- package/browser/schema-builder/RdbmsSchemaBuilder.js +924 -368
- package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/browser/schema-builder/options/TableIndexOptions.d.ts +1 -1
- package/browser/schema-builder/options/TableIndexOptions.js.map +1 -1
- package/browser/schema-builder/table/TableCheck.js +2 -2
- package/browser/schema-builder/table/TableCheck.js.map +1 -1
- package/browser/schema-builder/table/TableForeignKey.js +3 -3
- package/browser/schema-builder/table/TableForeignKey.js.map +1 -1
- package/browser/schema-builder/table/TableIndex.js +2 -2
- package/browser/schema-builder/table/TableIndex.js.map +1 -1
- package/browser/schema-builder/table/TableUnique.js +2 -2
- package/browser/schema-builder/table/TableUnique.js.map +1 -1
- package/browser/schema-builder/view/View.d.ts +1 -2
- package/browser/schema-builder/view/View.js.map +1 -1
- package/browser/subscriber/Broadcaster.d.ts +24 -0
- package/browser/subscriber/Broadcaster.js +120 -0
- package/browser/subscriber/Broadcaster.js.map +1 -1
- package/browser/subscriber/EntitySubscriberInterface.d.ts +27 -0
- package/browser/subscriber/EntitySubscriberInterface.js.map +1 -1
- package/browser/subscriber/event/TransactionCommitEvent.d.ts +22 -0
- package/browser/subscriber/event/TransactionCommitEvent.js +3 -0
- package/browser/subscriber/event/TransactionCommitEvent.js.map +1 -0
- package/browser/subscriber/event/TransactionRollbackEvent.d.ts +22 -0
- package/browser/subscriber/event/TransactionRollbackEvent.js +3 -0
- package/browser/subscriber/event/TransactionRollbackEvent.js.map +1 -0
- package/browser/subscriber/event/TransactionStartEvent.d.ts +22 -0
- package/browser/subscriber/event/TransactionStartEvent.js +3 -0
- package/browser/subscriber/event/TransactionStartEvent.js.map +1 -0
- package/browser/util/ApplyValueTransformers.js.map +1 -1
- package/browser/util/DateUtils.js +3 -9
- package/browser/util/DateUtils.js.map +1 -1
- package/browser/util/DirectoryExportedClassesLoader.js +6 -5
- package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
- package/browser/util/ObjectUtils.js +4 -4
- package/browser/util/ObjectUtils.js.map +1 -1
- package/browser/util/OrmUtils.js +5 -8
- package/browser/util/OrmUtils.js.map +1 -1
- package/cache/DbQueryResultCache.js +1 -1
- package/cache/DbQueryResultCache.js.map +1 -1
- package/cache/RedisQueryResultCache.js +6 -1
- package/cache/RedisQueryResultCache.js.map +1 -1
- package/commands/CacheClearCommand.js +4 -4
- package/commands/CacheClearCommand.js.map +1 -1
- package/commands/CommandUtils.d.ts +1 -1
- package/commands/CommandUtils.js +2 -2
- package/commands/CommandUtils.js.map +1 -1
- package/commands/EntityCreateCommand.js +9 -6
- package/commands/EntityCreateCommand.js.map +1 -1
- package/commands/InitCommand.js +15 -5
- package/commands/InitCommand.js.map +1 -1
- package/commands/MigrationCreateCommand.js +8 -5
- package/commands/MigrationCreateCommand.js.map +1 -1
- package/commands/MigrationGenerateCommand.d.ts +7 -1
- package/commands/MigrationGenerateCommand.js +53 -32
- package/commands/MigrationGenerateCommand.js.map +1 -1
- package/commands/MigrationRevertCommand.js +2 -2
- package/commands/MigrationRevertCommand.js.map +1 -1
- package/commands/MigrationRunCommand.js +2 -2
- package/commands/MigrationRunCommand.js.map +1 -1
- package/commands/MigrationShowCommand.js +2 -2
- package/commands/MigrationShowCommand.js.map +1 -1
- package/commands/QueryCommand.d.ts +2 -0
- package/commands/QueryCommand.js +16 -7
- package/commands/QueryCommand.js.map +1 -1
- package/commands/SchemaDropCommand.js +3 -3
- package/commands/SchemaDropCommand.js.map +1 -1
- package/commands/SchemaLogCommand.js +6 -6
- package/commands/SchemaLogCommand.js.map +1 -1
- package/commands/SchemaSyncCommand.js +3 -3
- package/commands/SchemaSyncCommand.js.map +1 -1
- package/commands/SubscriberCreateCommand.js +8 -5
- package/commands/SubscriberCreateCommand.js.map +1 -1
- package/commands/VersionCommand.js +2 -2
- package/commands/VersionCommand.js.map +1 -1
- package/common/DeepPartial.d.ts +1 -1
- package/common/DeepPartial.js.map +1 -1
- package/common/EntityTarget.d.ts +9 -0
- package/common/EntityTarget.js +4 -0
- package/common/EntityTarget.js.map +1 -0
- package/connection/Connection.d.ts +11 -10
- package/connection/Connection.js +45 -22
- package/connection/Connection.js.map +1 -1
- package/connection/ConnectionOptions.d.ts +2 -1
- package/connection/ConnectionOptions.js.map +1 -1
- package/connection/ConnectionOptionsReader.js +39 -34
- package/connection/ConnectionOptionsReader.js.map +1 -1
- package/connection/options-reader/ConnectionOptionsEnvReader.d.ts +5 -1
- package/connection/options-reader/ConnectionOptionsEnvReader.js +45 -31
- package/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
- package/connection/options-reader/ConnectionOptionsXmlReader.js +2 -2
- package/connection/options-reader/ConnectionOptionsXmlReader.js.map +1 -1
- package/connection/options-reader/ConnectionOptionsYmlReader.d.ts +1 -1
- package/connection/options-reader/ConnectionOptionsYmlReader.js +15 -4
- package/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
- package/decorator/Check.d.ts +2 -2
- package/decorator/Check.js.map +1 -1
- package/decorator/EntityRepository.d.ts +1 -1
- package/decorator/EntityRepository.js.map +1 -1
- package/decorator/Exclusion.d.ts +2 -2
- package/decorator/Exclusion.js.map +1 -1
- package/decorator/Generated.d.ts +1 -1
- package/decorator/Generated.js.map +1 -1
- package/decorator/Index.d.ts +7 -7
- package/decorator/Index.js.map +1 -1
- package/decorator/Unique.d.ts +4 -4
- package/decorator/Unique.js +12 -1
- package/decorator/Unique.js.map +1 -1
- package/decorator/columns/Column.d.ts +12 -12
- package/decorator/columns/Column.js.map +1 -1
- package/decorator/columns/CreateDateColumn.d.ts +1 -1
- package/decorator/columns/CreateDateColumn.js.map +1 -1
- package/decorator/columns/DeleteDateColumn.d.ts +1 -1
- package/decorator/columns/DeleteDateColumn.js.map +1 -1
- package/decorator/columns/ObjectIdColumn.d.ts +1 -1
- package/decorator/columns/ObjectIdColumn.js.map +1 -1
- package/decorator/columns/PrimaryColumn.d.ts +2 -2
- package/decorator/columns/PrimaryColumn.js.map +1 -1
- package/decorator/columns/PrimaryGeneratedColumn.d.ts +5 -5
- package/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
- package/decorator/columns/UpdateDateColumn.d.ts +1 -1
- package/decorator/columns/UpdateDateColumn.js.map +1 -1
- package/decorator/columns/VersionColumn.d.ts +1 -1
- package/decorator/columns/VersionColumn.js.map +1 -1
- package/decorator/columns/ViewColumn.d.ts +1 -1
- package/decorator/columns/ViewColumn.js.map +1 -1
- package/decorator/entity/ChildEntity.d.ts +1 -1
- package/decorator/entity/ChildEntity.js +1 -1
- package/decorator/entity/ChildEntity.js.map +1 -1
- package/decorator/entity/TableInheritance.d.ts +1 -1
- package/decorator/entity/TableInheritance.js.map +1 -1
- package/decorator/entity-view/ViewEntity.d.ts +2 -2
- package/decorator/entity-view/ViewEntity.js.map +1 -1
- package/decorator/listeners/AfterInsert.d.ts +1 -1
- package/decorator/listeners/AfterInsert.js.map +1 -1
- package/decorator/listeners/AfterLoad.d.ts +1 -1
- package/decorator/listeners/AfterLoad.js.map +1 -1
- package/decorator/listeners/AfterRemove.d.ts +1 -1
- package/decorator/listeners/AfterRemove.js.map +1 -1
- package/decorator/listeners/AfterUpdate.d.ts +1 -1
- package/decorator/listeners/AfterUpdate.js.map +1 -1
- package/decorator/listeners/BeforeInsert.d.ts +1 -1
- package/decorator/listeners/BeforeInsert.js.map +1 -1
- package/decorator/listeners/BeforeRemove.d.ts +1 -1
- package/decorator/listeners/BeforeRemove.js.map +1 -1
- package/decorator/listeners/BeforeUpdate.d.ts +1 -1
- package/decorator/listeners/BeforeUpdate.js.map +1 -1
- package/decorator/listeners/EventSubscriber.d.ts +1 -1
- package/decorator/listeners/EventSubscriber.js.map +1 -1
- package/decorator/options/ColumnOptions.js.map +1 -1
- package/decorator/options/TransactionOptions.js.map +1 -1
- package/decorator/relations/JoinColumn.d.ts +3 -3
- package/decorator/relations/JoinColumn.js.map +1 -1
- package/decorator/relations/JoinTable.d.ts +3 -3
- package/decorator/relations/JoinTable.js.map +1 -1
- package/decorator/relations/ManyToMany.d.ts +2 -2
- package/decorator/relations/ManyToMany.js.map +1 -1
- package/decorator/relations/ManyToOne.d.ts +2 -2
- package/decorator/relations/ManyToOne.js.map +1 -1
- package/decorator/relations/OneToMany.d.ts +3 -3
- package/decorator/relations/OneToMany.js +2 -2
- package/decorator/relations/OneToMany.js.map +1 -1
- package/decorator/relations/OneToOne.d.ts +2 -2
- package/decorator/relations/OneToOne.js.map +1 -1
- package/decorator/relations/RelationCount.d.ts +1 -1
- package/decorator/relations/RelationCount.js.map +1 -1
- package/decorator/relations/RelationId.d.ts +1 -1
- package/decorator/relations/RelationId.js.map +1 -1
- package/decorator/transaction/TransactionManager.d.ts +1 -1
- package/decorator/transaction/TransactionManager.js.map +1 -1
- package/decorator/tree/Tree.d.ts +1 -1
- package/decorator/tree/Tree.js.map +1 -1
- package/decorator/tree/TreeChildren.d.ts +1 -1
- package/decorator/tree/TreeChildren.js.map +1 -1
- package/decorator/tree/TreeLevelColumn.d.ts +1 -1
- package/decorator/tree/TreeLevelColumn.js.map +1 -1
- package/decorator/tree/TreeParent.d.ts +1 -1
- package/decorator/tree/TreeParent.js.map +1 -1
- package/driver/Driver.d.ts +7 -2
- package/driver/Driver.js.map +1 -1
- package/driver/DriverFactory.js +5 -2
- package/driver/DriverFactory.js.map +1 -1
- package/driver/DriverUtils.d.ts +2 -2
- package/driver/DriverUtils.js +25 -13
- package/driver/DriverUtils.js.map +1 -1
- package/driver/aurora-data-api/AuroraDataApiConnection.d.ts +2 -1
- package/driver/aurora-data-api/AuroraDataApiConnection.js +0 -1
- package/driver/aurora-data-api/AuroraDataApiConnection.js.map +1 -1
- package/driver/aurora-data-api/AuroraDataApiConnectionOptions.d.ts +3 -0
- package/driver/aurora-data-api/AuroraDataApiConnectionOptions.js.map +1 -1
- package/driver/aurora-data-api/AuroraDataApiDriver.d.ts +6 -1
- package/driver/aurora-data-api/AuroraDataApiDriver.js +7 -2
- package/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
- package/driver/aurora-data-api/AuroraDataApiQueryRunner.d.ts +4 -0
- package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +159 -25
- package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
- package/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.d.ts +6 -0
- package/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.js.map +1 -1
- package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.d.ts +57 -0
- package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js +101 -0
- package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js.map +1 -0
- package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.d.ts +4 -3
- package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +53 -7
- package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
- package/driver/better-sqlite3/BetterSqlite3ConnectionOptions.d.ts +50 -0
- package/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js +4 -0
- package/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -0
- package/driver/better-sqlite3/BetterSqlite3Driver.d.ts +46 -0
- package/driver/better-sqlite3/BetterSqlite3Driver.js +127 -0
- package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -0
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.d.ts +22 -0
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +115 -0
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -0
- package/driver/cockroachdb/CockroachConnectionCredentialsOptions.js.map +1 -1
- package/driver/cockroachdb/CockroachDriver.d.ts +6 -1
- package/driver/cockroachdb/CockroachDriver.js +9 -4
- package/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.d.ts +6 -1
- package/driver/cockroachdb/CockroachQueryRunner.js +392 -94
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/cordova/CordovaDriver.d.ts +2 -1
- package/driver/cordova/CordovaDriver.js +0 -1
- package/driver/cordova/CordovaDriver.js.map +1 -1
- package/driver/expo/ExpoDriver.d.ts +2 -1
- package/driver/expo/ExpoDriver.js +0 -1
- package/driver/expo/ExpoDriver.js.map +1 -1
- package/driver/expo/ExpoQueryRunner.js +72 -14
- package/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/driver/mongodb/MongoConnectionOptions.d.ts +4 -0
- package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
- package/driver/mongodb/MongoDriver.d.ts +13 -4
- package/driver/mongodb/MongoDriver.js +21 -15
- package/driver/mongodb/MongoDriver.js.map +1 -1
- package/driver/mongodb/MongoQueryRunner.d.ts +3 -3
- package/driver/mongodb/MongoQueryRunner.js.map +1 -1
- package/driver/mongodb/typings.js.map +1 -1
- package/driver/mysql/MysqlDriver.d.ts +7 -2
- package/driver/mysql/MysqlDriver.js +14 -7
- package/driver/mysql/MysqlDriver.js.map +1 -1
- package/driver/mysql/MysqlQueryRunner.d.ts +10 -1
- package/driver/mysql/MysqlQueryRunner.js +227 -61
- package/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/driver/nativescript/NativescriptDriver.d.ts +2 -1
- package/driver/nativescript/NativescriptDriver.js +0 -1
- package/driver/nativescript/NativescriptDriver.js.map +1 -1
- package/driver/oracle/OracleDriver.d.ts +6 -1
- package/driver/oracle/OracleDriver.js +8 -3
- package/driver/oracle/OracleDriver.js.map +1 -1
- package/driver/oracle/OracleQueryRunner.d.ts +2 -1
- package/driver/oracle/OracleQueryRunner.js +139 -26
- package/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/driver/postgres/PostgresConnectionCredentialsOptions.js.map +1 -1
- package/driver/postgres/PostgresConnectionOptions.d.ts +9 -0
- package/driver/postgres/PostgresConnectionOptions.js.map +1 -1
- package/driver/postgres/PostgresDriver.d.ts +18 -55
- package/driver/postgres/PostgresDriver.js +181 -191
- package/driver/postgres/PostgresDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.d.ts +10 -1
- package/driver/postgres/PostgresQueryRunner.js +389 -81
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/react-native/ReactNativeDriver.d.ts +2 -1
- package/driver/react-native/ReactNativeDriver.js +0 -1
- package/driver/react-native/ReactNativeDriver.js.map +1 -1
- package/driver/sap/SapDriver.d.ts +6 -1
- package/driver/sap/SapDriver.js +6 -1
- package/driver/sap/SapDriver.js.map +1 -1
- package/driver/sap/SapQueryRunner.d.ts +2 -1
- package/driver/sap/SapQueryRunner.js +143 -27
- package/driver/sap/SapQueryRunner.js.map +1 -1
- package/driver/sqlite/SqliteConnectionOptions.d.ts +18 -0
- package/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
- package/driver/sqlite/SqliteDriver.d.ts +2 -1
- package/driver/sqlite/SqliteDriver.js +25 -11
- package/driver/sqlite/SqliteDriver.js.map +1 -1
- package/driver/sqlite/SqliteQueryRunner.js +33 -14
- package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +7 -2
- package/driver/sqlite-abstract/AbstractSqliteDriver.js +31 -4
- package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +72 -10
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/driver/sqljs/SqljsDriver.d.ts +2 -1
- package/driver/sqljs/SqljsDriver.js +0 -1
- package/driver/sqljs/SqljsDriver.js.map +1 -1
- package/driver/sqljs/SqljsQueryRunner.js +1 -0
- package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
- package/driver/sqlserver/SqlServerDriver.d.ts +6 -1
- package/driver/sqlserver/SqlServerDriver.js +6 -1
- package/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/driver/sqlserver/SqlServerQueryRunner.d.ts +2 -1
- package/driver/sqlserver/SqlServerQueryRunner.js +224 -86
- package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/driver/types/ColumnTypes.d.ts +1 -1
- package/driver/types/ColumnTypes.js.map +1 -1
- package/driver/types/DatabaseType.d.ts +1 -1
- package/driver/types/DatabaseType.js.map +1 -1
- package/driver/types/ReplicationMode.d.ts +1 -0
- package/driver/types/ReplicationMode.js +4 -0
- package/driver/types/ReplicationMode.js.map +1 -0
- package/entity-manager/EntityManager.d.ts +41 -256
- package/entity-manager/EntityManager.js +3 -13
- package/entity-manager/EntityManager.js.map +1 -1
- package/entity-manager/MongoEntityManager.d.ts +46 -46
- package/entity-manager/MongoEntityManager.js +14 -3
- package/entity-manager/MongoEntityManager.js.map +1 -1
- package/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
- package/entity-schema/EntitySchemaRelationOptions.d.ts +1 -1
- package/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
- package/entity-schema/EntitySchemaTransformer.js +22 -7
- package/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/error/EntityMetadataNotFoundError.d.ts +2 -2
- package/error/EntityMetadataNotFoundError.js +3 -0
- package/error/EntityMetadataNotFoundError.js.map +1 -1
- package/error/EntityNotFoundError.d.ts +2 -3
- package/error/EntityNotFoundError.js +3 -0
- package/error/EntityNotFoundError.js.map +1 -1
- package/error/FindRelationsNotFoundError.js +2 -2
- package/error/FindRelationsNotFoundError.js.map +1 -1
- package/error/MissingDriverError.js +1 -1
- package/error/MissingDriverError.js.map +1 -1
- package/error/QueryFailedError.js +1 -1
- package/error/QueryFailedError.js.map +1 -1
- package/error/RepositoryNotFoundError.d.ts +2 -2
- package/error/RepositoryNotFoundError.js +3 -0
- package/error/RepositoryNotFoundError.js.map +1 -1
- package/error/RepositoryNotTreeError.d.ts +2 -2
- package/error/RepositoryNotTreeError.js +9 -6
- package/error/RepositoryNotTreeError.js.map +1 -1
- package/find-options/FindOneOptions.d.ts +4 -0
- package/find-options/FindOneOptions.js.map +1 -1
- package/find-options/FindOperator.d.ts +26 -4
- package/find-options/FindOperator.js +49 -50
- package/find-options/FindOperator.js.map +1 -1
- package/find-options/FindOperatorType.d.ts +1 -1
- package/find-options/FindOperatorType.js.map +1 -1
- package/find-options/FindOptionsUtils.d.ts +2 -2
- package/find-options/FindOptionsUtils.js +5 -1
- package/find-options/FindOptionsUtils.js.map +1 -1
- package/find-options/operator/Any.d.ts +1 -1
- package/find-options/operator/Any.js.map +1 -1
- package/find-options/operator/Between.d.ts +1 -1
- package/find-options/operator/Between.js.map +1 -1
- package/find-options/operator/ILike.d.ts +6 -0
- package/find-options/operator/ILike.js +13 -0
- package/find-options/operator/ILike.js.map +1 -0
- package/find-options/operator/In.d.ts +1 -1
- package/find-options/operator/In.js.map +1 -1
- package/find-options/operator/Raw.d.ts +14 -2
- package/find-options/operator/Raw.js +5 -6
- package/find-options/operator/Raw.js.map +1 -1
- package/index.d.ts +10 -11
- package/index.js +2 -14
- package/index.js.map +1 -1
- package/logger/DebugLogger.d.ts +0 -1
- package/logger/DebugLogger.js +10 -9
- package/logger/DebugLogger.js.map +1 -1
- package/logger/FileLogger.d.ts +3 -1
- package/logger/FileLogger.js +10 -3
- package/logger/FileLogger.js.map +1 -1
- package/logger/Logger.d.ts +1 -1
- package/logger/Logger.js.map +1 -1
- package/logger/LoggerOptions.d.ts +9 -0
- package/logger/LoggerOptions.js.map +1 -1
- package/metadata/ColumnMetadata.js +24 -14
- package/metadata/ColumnMetadata.js.map +1 -1
- package/metadata/EntityMetadata.d.ts +1 -0
- package/metadata/EntityMetadata.js +11 -3
- package/metadata/EntityMetadata.js.map +1 -1
- package/metadata/RelationMetadata.js +2 -2
- package/metadata/RelationMetadata.js.map +1 -1
- package/metadata/types/EventListenerTypes.d.ts +7 -7
- package/metadata/types/EventListenerTypes.js.map +1 -1
- package/metadata-args/EntityRepositoryMetadataArgs.d.ts +2 -2
- package/metadata-args/EntityRepositoryMetadataArgs.js.map +1 -1
- package/metadata-args/RelationCountMetadataArgs.js.map +1 -1
- package/metadata-args/RelationIdMetadataArgs.js.map +1 -1
- package/metadata-builder/EntityMetadataBuilder.js +15 -9
- package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/EntityMetadataValidator.js +8 -5
- package/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/metadata-builder/JunctionEntityMetadataBuilder.js +1 -0
- package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/migration/MigrationExecutor.js +103 -74
- package/migration/MigrationExecutor.js.map +1 -1
- package/package.json +72 -51
- package/persistence/EntityPersistExecutor.js +61 -43
- package/persistence/EntityPersistExecutor.js.map +1 -1
- package/persistence/Subject.js +2 -1
- package/persistence/Subject.js.map +1 -1
- package/persistence/SubjectDatabaseEntityLoader.js +2 -1
- package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/persistence/SubjectExecutor.js +244 -187
- package/persistence/SubjectExecutor.js.map +1 -1
- package/persistence/tree/MaterializedPathSubjectExecutor.js +2 -1
- package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
- package/platform/PlatformTools.d.ts +7 -1
- package/platform/PlatformTools.js +42 -41
- package/platform/PlatformTools.js.map +1 -1
- package/query-builder/Alias.js.map +1 -1
- package/query-builder/DeleteQueryBuilder.d.ts +2 -3
- package/query-builder/DeleteQueryBuilder.js +7 -1
- package/query-builder/DeleteQueryBuilder.js.map +1 -1
- package/query-builder/InsertQueryBuilder.d.ts +2 -3
- package/query-builder/InsertQueryBuilder.js +44 -11
- package/query-builder/InsertQueryBuilder.js.map +1 -1
- package/query-builder/QueryBuilder.d.ts +18 -15
- package/query-builder/QueryBuilder.js +198 -48
- package/query-builder/QueryBuilder.js.map +1 -1
- package/query-builder/QueryExpressionMap.d.ts +4 -0
- package/query-builder/QueryExpressionMap.js.map +1 -1
- package/query-builder/QueryPartialEntity.d.ts +1 -1
- package/query-builder/QueryPartialEntity.js.map +1 -1
- package/query-builder/ReturningResultsEntityUpdator.js +23 -24
- package/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
- package/query-builder/SelectQueryBuilder.d.ts +8 -3
- package/query-builder/SelectQueryBuilder.js +80 -32
- package/query-builder/SelectQueryBuilder.js.map +1 -1
- package/query-builder/SoftDeleteQueryBuilder.d.ts +2 -3
- package/query-builder/SoftDeleteQueryBuilder.js +1 -1
- package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/query-builder/UpdateQueryBuilder.js +8 -2
- package/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +6 -3
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
- package/query-runner/BaseQueryRunner.d.ts +2 -5
- package/query-runner/BaseQueryRunner.js +90 -40
- package/query-runner/BaseQueryRunner.js.map +1 -1
- package/query-runner/QueryRunner.d.ts +1 -1
- package/query-runner/QueryRunner.js.map +1 -1
- package/repository/AbstractRepository.js.map +1 -1
- package/repository/BaseEntity.js +1 -1
- package/repository/BaseEntity.js.map +1 -1
- package/repository/MongoRepository.js.map +1 -1
- package/repository/Repository.js +1 -1
- package/repository/Repository.js.map +1 -1
- package/repository/TreeRepository.js +2 -2
- package/repository/TreeRepository.js.map +1 -1
- package/schema-builder/MongoSchemaBuilder.js +1 -1
- package/schema-builder/MongoSchemaBuilder.js.map +1 -1
- package/schema-builder/RdbmsSchemaBuilder.js +875 -319
- package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/schema-builder/options/TableIndexOptions.d.ts +1 -1
- package/schema-builder/options/TableIndexOptions.js.map +1 -1
- package/schema-builder/view/View.d.ts +1 -2
- package/schema-builder/view/View.js.map +1 -1
- package/subscriber/Broadcaster.d.ts +24 -0
- package/subscriber/Broadcaster.js +120 -0
- package/subscriber/Broadcaster.js.map +1 -1
- package/subscriber/EntitySubscriberInterface.d.ts +27 -0
- package/subscriber/EntitySubscriberInterface.js.map +1 -1
- package/subscriber/event/TransactionCommitEvent.d.ts +22 -0
- package/subscriber/event/TransactionCommitEvent.js +4 -0
- package/subscriber/event/TransactionCommitEvent.js.map +1 -0
- package/subscriber/event/TransactionRollbackEvent.d.ts +22 -0
- package/subscriber/event/TransactionRollbackEvent.js +4 -0
- package/subscriber/event/TransactionRollbackEvent.js.map +1 -0
- package/subscriber/event/TransactionStartEvent.d.ts +22 -0
- package/subscriber/event/TransactionStartEvent.js +4 -0
- package/subscriber/event/TransactionStartEvent.js.map +1 -0
- package/typeorm-class-transformer-shim.js +16 -2
- package/typeorm-model-shim.js +146 -111
- package/util/ApplyValueTransformers.js.map +1 -1
- package/util/DateUtils.js +1 -7
- package/util/DateUtils.js.map +1 -1
- package/util/DirectoryExportedClassesLoader.js +7 -5
- package/util/DirectoryExportedClassesLoader.js.map +1 -1
- package/util/ObjectUtils.js +2 -2
- package/util/ObjectUtils.js.map +1 -1
- package/util/OrmUtils.js +3 -6
- package/util/OrmUtils.js.map +1 -1
- package/browser/util/PromiseUtils.d.ts +0 -24
- package/browser/util/PromiseUtils.js +0 -62
- package/browser/util/PromiseUtils.js.map +0 -1
- package/util/PromiseUtils.d.ts +0 -24
- package/util/PromiseUtils.js +0 -64
- package/util/PromiseUtils.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../browser/src/migration/MigrationExecutor.ts"],"names":[],"mappings":"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","file":"MigrationExecutor.js","sourcesContent":["import {Table} from \"../schema-builder/table/Table\";\nimport {Connection} from \"../connection/Connection\";\nimport {Migration} from \"./Migration\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {PromiseUtils} from \"../util/PromiseUtils\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {MssqlParameter} from \"../driver/sqlserver/MssqlParameter\";\nimport {SqlServerConnectionOptions} from \"../driver/sqlserver/SqlServerConnectionOptions\";\nimport {PostgresConnectionOptions} from \"../driver/postgres/PostgresConnectionOptions\";\nimport { MongoDriver } from \"../driver/mongodb/MongoDriver\";\nimport { MongoQueryRunner } from \"../driver/mongodb/MongoQueryRunner\";\n\n/**\n * Executes migrations: runs pending and reverts previously executed migrations.\n */\nexport class MigrationExecutor {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Indicates how migrations should be run in transactions.\n * all: all migrations are run in a single transaction\n * none: all migrations are run without a transaction\n * each: each migration is run in a separate transaction\n */\n transaction: \"all\" | \"none\" | \"each\" = \"all\";\n\n // -------------------------------------------------------------------------\n // Private Properties\n // -------------------------------------------------------------------------\n\n private readonly migrationsTable: string;\n private readonly migrationsTableName: string;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: Connection,\n protected queryRunner?: QueryRunner) {\n\n const options = <SqlServerConnectionOptions|PostgresConnectionOptions>this.connection.driver.options;\n this.migrationsTableName = connection.options.migrationsTableName || \"migrations\";\n this.migrationsTable = this.connection.driver.buildTableName(this.migrationsTableName, options.schema, options.database);\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Tries to execute a single migration given.\n */\n public async executeMigration(migration: Migration): Promise<Migration> {\n return this.withQueryRunner(async (queryRunner) => {\n await this.createMigrationsTableIfNotExist(queryRunner);\n await (migration.instance as any).up(queryRunner);\n await this.insertExecutedMigration(queryRunner, migration);\n\n return migration;\n });\n }\n\n /**\n * Returns an array of all migrations.\n */\n public async getAllMigrations(): Promise<Migration[]> {\n return Promise.resolve(this.getMigrations());\n }\n\n /**\n * Returns an array of all executed migrations.\n */\n public async getExecutedMigrations(): Promise<Migration[]> {\n return this.withQueryRunner(async queryRunner => {\n await this.createMigrationsTableIfNotExist(queryRunner);\n\n return await this.loadExecutedMigrations(queryRunner);\n });\n }\n\n /**\n * Returns an array of all pending migrations.\n */\n public async getPendingMigrations(): Promise<Migration[]> {\n const allMigrations = await this.getAllMigrations();\n const executedMigrations = await this.getExecutedMigrations();\n\n return allMigrations.filter(migration =>\n executedMigrations.find(\n executedMigration =>\n executedMigration.name === migration.name\n )\n );\n }\n\n /**\n * Inserts an executed migration.\n */\n public insertMigration(migration: Migration): Promise<void> {\n return new Promise((resolve, reject) => {\n this.withQueryRunner(queryRunner => {\n this.insertExecutedMigration(queryRunner, migration)\n .then(resolve)\n .catch(reject);\n });\n });\n }\n\n /**\n * Deletes an executed migration.\n */\n public deleteMigration(migration: Migration): Promise<void> {\n return new Promise((resolve, reject) => {\n this.withQueryRunner(queryRunner => {\n this.deleteExecutedMigration(queryRunner, migration)\n .then(resolve)\n .catch(reject);\n });\n });\n }\n\n /**\n * Lists all migrations and whether they have been executed or not\n * returns true if there are unapplied migrations\n */\n async showMigrations(): Promise<boolean> {\n let hasUnappliedMigrations = false;\n const queryRunner = this.queryRunner || this.connection.createQueryRunner(\"master\");\n // create migrations table if its not created yet\n await this.createMigrationsTableIfNotExist(queryRunner);\n // get all migrations that are executed and saved in the database\n const executedMigrations = await this.loadExecutedMigrations(queryRunner);\n\n // get all user's migrations in the source code\n const allMigrations = this.getMigrations();\n\n for (const migration of allMigrations) {\n const executedMigration = executedMigrations.find(executedMigration => executedMigration.name === migration.name);\n\n if (executedMigration) {\n this.connection.logger.logSchemaBuild(` [X] ${migration.name}`);\n } else {\n hasUnappliedMigrations = true;\n this.connection.logger.logSchemaBuild(` [ ] ${migration.name}`);\n }\n }\n\n // if query runner was created by us then release it\n if (!this.queryRunner) {\n await queryRunner.release();\n }\n\n return hasUnappliedMigrations;\n }\n\n /**\n * Executes all pending migrations. Pending migrations are migrations that are not yet executed,\n * thus not saved in the database.\n */\n async executePendingMigrations(): Promise<Migration[]> {\n\n const queryRunner = this.queryRunner || this.connection.createQueryRunner(\"master\");\n // create migrations table if its not created yet\n await this.createMigrationsTableIfNotExist(queryRunner);\n // get all migrations that are executed and saved in the database\n const executedMigrations = await this.loadExecutedMigrations(queryRunner);\n\n // get the time when last migration was executed\n let lastTimeExecutedMigration = this.getLatestTimestampMigration(executedMigrations);\n\n // get all user's migrations in the source code\n const allMigrations = this.getMigrations();\n\n // variable to store all migrations we did successefuly\n const successMigrations: Migration[] = [];\n\n // find all migrations that needs to be executed\n const pendingMigrations = allMigrations.filter(migration => {\n // check if we already have executed migration\n const executedMigration = executedMigrations.find(executedMigration => executedMigration.name === migration.name);\n if (executedMigration)\n return false;\n\n // migration is new and not executed. now check if its timestamp is correct\n // if (lastTimeExecutedMigration && migration.timestamp < lastTimeExecutedMigration.timestamp)\n // throw new Error(`New migration found: ${migration.name}, however this migration's timestamp is not valid. Migration's timestamp should not be older then migrations already executed in the database.`);\n\n // every check is passed means that migration was not run yet and we need to run it\n return true;\n });\n\n // if no migrations are pending then nothing to do here\n if (!pendingMigrations.length) {\n this.connection.logger.logSchemaBuild(`No migrations are pending`);\n // if query runner was created by us then release it\n if (!this.queryRunner)\n await queryRunner.release();\n return [];\n }\n\n // log information about migration execution\n this.connection.logger.logSchemaBuild(`${executedMigrations.length} migrations are already loaded in the database.`);\n this.connection.logger.logSchemaBuild(`${allMigrations.length} migrations were found in the source code.`);\n if (lastTimeExecutedMigration)\n this.connection.logger.logSchemaBuild(`${lastTimeExecutedMigration.name} is the last executed migration. It was executed on ${new Date(lastTimeExecutedMigration.timestamp).toString()}.`);\n this.connection.logger.logSchemaBuild(`${pendingMigrations.length} migrations are new migrations that needs to be executed.`);\n\n // start transaction if its not started yet\n let transactionStartedByUs = false;\n if (this.transaction === \"all\" && !queryRunner.isTransactionActive) {\n await queryRunner.startTransaction();\n transactionStartedByUs = true;\n }\n\n // run all pending migrations in a sequence\n try {\n await PromiseUtils.runInSequence(pendingMigrations, async migration => {\n if (this.transaction === \"each\" && !queryRunner.isTransactionActive) {\n await queryRunner.startTransaction();\n transactionStartedByUs = true;\n }\n\n return migration.instance!.up(queryRunner)\n .then(async () => { // now when migration is executed we need to insert record about it into the database\n await this.insertExecutedMigration(queryRunner, migration);\n // commit transaction if we started it\n if (this.transaction === \"each\" && transactionStartedByUs)\n await queryRunner.commitTransaction();\n })\n .then(() => { // informative log about migration success\n successMigrations.push(migration);\n this.connection.logger.logSchemaBuild(`Migration ${migration.name} has been executed successfully.`);\n });\n });\n\n // commit transaction if we started it\n if (this.transaction === \"all\" && transactionStartedByUs)\n await queryRunner.commitTransaction();\n\n } catch (err) { // rollback transaction if we started it\n if (transactionStartedByUs) {\n try { // we throw original error even if rollback thrown an error\n await queryRunner.rollbackTransaction();\n } catch (rollbackError) { }\n }\n\n throw err;\n\n } finally {\n\n // if query runner was created by us then release it\n if (!this.queryRunner)\n await queryRunner.release();\n }\n return successMigrations;\n\n }\n\n /**\n * Reverts last migration that were run.\n */\n async undoLastMigration(): Promise<void> {\n\n const queryRunner = this.queryRunner || this.connection.createQueryRunner(\"master\");\n\n // create migrations table if its not created yet\n await this.createMigrationsTableIfNotExist(queryRunner);\n\n // get all migrations that are executed and saved in the database\n const executedMigrations = await this.loadExecutedMigrations(queryRunner);\n\n // get the time when last migration was executed\n let lastTimeExecutedMigration = this.getLatestExecutedMigration(executedMigrations);\n\n // if no migrations found in the database then nothing to revert\n if (!lastTimeExecutedMigration) {\n this.connection.logger.logSchemaBuild(`No migrations was found in the database. Nothing to revert!`);\n return;\n }\n\n // get all user's migrations in the source code\n const allMigrations = this.getMigrations();\n\n // find the instance of the migration we need to remove\n const migrationToRevert = allMigrations.find(migration => migration.name === lastTimeExecutedMigration!.name);\n\n // if no migrations found in the database then nothing to revert\n if (!migrationToRevert)\n throw new Error(`No migration ${lastTimeExecutedMigration.name} was found in the source code. Make sure you have this migration in your codebase and its included in the connection options.`);\n\n // log information about migration execution\n this.connection.logger.logSchemaBuild(`${executedMigrations.length} migrations are already loaded in the database.`);\n this.connection.logger.logSchemaBuild(`${lastTimeExecutedMigration.name} is the last executed migration. It was executed on ${new Date(lastTimeExecutedMigration.timestamp).toString()}.`);\n this.connection.logger.logSchemaBuild(`Now reverting it...`);\n\n // start transaction if its not started yet\n let transactionStartedByUs = false;\n if ((this.transaction !== \"none\") && !queryRunner.isTransactionActive) {\n await queryRunner.startTransaction();\n transactionStartedByUs = true;\n }\n\n try {\n await migrationToRevert.instance!.down(queryRunner);\n await this.deleteExecutedMigration(queryRunner, migrationToRevert);\n this.connection.logger.logSchemaBuild(`Migration ${migrationToRevert.name} has been reverted successfully.`);\n\n // commit transaction if we started it\n if (transactionStartedByUs)\n await queryRunner.commitTransaction();\n\n } catch (err) { // rollback transaction if we started it\n if (transactionStartedByUs) {\n try { // we throw original error even if rollback thrown an error\n await queryRunner.rollbackTransaction();\n } catch (rollbackError) { }\n }\n\n throw err;\n\n } finally {\n\n // if query runner was created by us then release it\n if (!this.queryRunner)\n await queryRunner.release();\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates table \"migrations\" that will store information about executed migrations.\n */\n protected async createMigrationsTableIfNotExist(queryRunner: QueryRunner): Promise<void> {\n // If driver is mongo no need to create\n if (this.connection.driver instanceof MongoDriver) {\n return;\n }\n const tableExist = await queryRunner.hasTable(this.migrationsTable); // todo: table name should be configurable\n if (!tableExist) {\n await queryRunner.createTable(new Table(\n {\n name: this.migrationsTable,\n columns: [\n {\n name: \"id\",\n type: this.connection.driver.normalizeType({type: this.connection.driver.mappedDataTypes.migrationId}),\n isGenerated: true,\n generationStrategy: \"increment\",\n isPrimary: true,\n isNullable: false\n },\n {\n name: \"timestamp\",\n type: this.connection.driver.normalizeType({type: this.connection.driver.mappedDataTypes.migrationTimestamp}),\n isPrimary: false,\n isNullable: false\n },\n {\n name: \"name\",\n type: this.connection.driver.normalizeType({type: this.connection.driver.mappedDataTypes.migrationName}),\n isNullable: false\n },\n ]\n },\n ));\n }\n }\n\n /**\n * Loads all migrations that were executed and saved into the database (sorts by id).\n */\n protected async loadExecutedMigrations(queryRunner: QueryRunner): Promise<Migration[]> {\n if (this.connection.driver instanceof MongoDriver) {\n const mongoRunner = queryRunner as MongoQueryRunner;\n return await mongoRunner.databaseConnection\n .db(this.connection.driver.database!)\n .collection(this.migrationsTableName)\n .find<Migration>()\n .sort({\"_id\": -1})\n .toArray();\n } else {\n const migrationsRaw: ObjectLiteral[] = await this.connection.manager\n .createQueryBuilder(queryRunner)\n .select()\n .orderBy(this.connection.driver.escape(\"id\"), \"DESC\")\n .from(this.migrationsTable, this.migrationsTableName)\n .getRawMany();\n return migrationsRaw.map(migrationRaw => {\n return new Migration(parseInt(migrationRaw[\"id\"]), parseInt(migrationRaw[\"timestamp\"]), migrationRaw[\"name\"]);\n });\n }\n }\n\n /**\n * Gets all migrations that setup for this connection.\n */\n protected getMigrations(): Migration[] {\n const migrations = this.connection.migrations.map(migration => {\n const migrationClassName = migration.name || (migration.constructor as any).name;\n const migrationTimestamp = parseInt(migrationClassName.substr(-13), 10);\n if (!migrationTimestamp || isNaN(migrationTimestamp)) {\n throw new Error(`${migrationClassName} migration name is wrong. Migration class name should have a JavaScript timestamp appended.`);\n }\n\n return new Migration(undefined, migrationTimestamp, migrationClassName, migration);\n });\n\n this.checkForDuplicateMigrations(migrations);\n\n // sort them by timestamp\n return migrations.sort((a, b) => a.timestamp - b.timestamp);\n }\n\n protected checkForDuplicateMigrations(migrations: Migration[]) {\n const migrationNames = migrations.map(migration => migration.name);\n const duplicates = Array.from(new Set(migrationNames.filter((migrationName, index) => migrationNames.indexOf(migrationName) < index)));\n if (duplicates.length > 0) {\n throw Error(`Duplicate migrations: ${duplicates.join(\", \")}`);\n }\n }\n\n /**\n * Finds the latest migration (sorts by timestamp) in the given array of migrations.\n */\n protected getLatestTimestampMigration(migrations: Migration[]): Migration|undefined {\n const sortedMigrations = migrations.map(migration => migration).sort((a, b) => (a.timestamp - b.timestamp) * -1);\n return sortedMigrations.length > 0 ? sortedMigrations[0] : undefined;\n }\n\n /**\n * Finds the latest migration in the given array of migrations.\n * PRE: Migration array must be sorted by descending id.\n */\n protected getLatestExecutedMigration(sortedMigrations: Migration[]): Migration|undefined {\n return sortedMigrations.length > 0 ? sortedMigrations[0] : undefined;\n }\n\n /**\n * Inserts new executed migration's data into migrations table.\n */\n protected async insertExecutedMigration(queryRunner: QueryRunner, migration: Migration): Promise<void> {\n const values: ObjectLiteral = {};\n if (this.connection.driver instanceof SqlServerDriver) {\n values[\"timestamp\"] = new MssqlParameter(migration.timestamp, this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationTimestamp }) as any);\n values[\"name\"] = new MssqlParameter(migration.name, this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationName }) as any);\n } else {\n values[\"timestamp\"] = migration.timestamp;\n values[\"name\"] = migration.name;\n }\n if (this.connection.driver instanceof MongoDriver) {\n const mongoRunner = queryRunner as MongoQueryRunner;\n await mongoRunner.databaseConnection.db(this.connection.driver.database!).collection(this.migrationsTableName).insert(values);\n } else {\n const qb = queryRunner.manager.createQueryBuilder();\n await qb.insert()\n .into(this.migrationsTable)\n .values(values)\n .execute();\n }\n }\n\n /**\n * Delete previously executed migration's data from the migrations table.\n */\n protected async deleteExecutedMigration(queryRunner: QueryRunner, migration: Migration): Promise<void> {\n\n const conditions: ObjectLiteral = {};\n if (this.connection.driver instanceof SqlServerDriver) {\n conditions[\"timestamp\"] = new MssqlParameter(migration.timestamp, this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationTimestamp }) as any);\n conditions[\"name\"] = new MssqlParameter(migration.name, this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationName }) as any);\n } else {\n conditions[\"timestamp\"] = migration.timestamp;\n conditions[\"name\"] = migration.name;\n }\n\n if (this.connection.driver instanceof MongoDriver) {\n const mongoRunner = queryRunner as MongoQueryRunner;\n await mongoRunner.databaseConnection.db(this.connection.driver.database!).collection(this.migrationsTableName).deleteOne(conditions);\n } else {\n const qb = queryRunner.manager.createQueryBuilder();\n await qb.delete()\n .from(this.migrationsTable)\n .where(`${qb.escape(\"timestamp\")} = :timestamp`)\n .andWhere(`${qb.escape(\"name\")} = :name`)\n .setParameters(conditions)\n .execute();\n }\n\n }\n\n protected async withQueryRunner<T extends any>(callback: (queryRunner: QueryRunner) => T) {\n const queryRunner = this.queryRunner || this.connection.createQueryRunner(\"master\");\n\n try {\n return callback(queryRunner);\n } finally {\n if (!this.queryRunner) {\n await queryRunner.release();\n }\n }\n }\n}\n"],"sourceRoot":".."}
|
|
1
|
+
{"version":3,"sources":["../browser/src/migration/MigrationExecutor.ts"],"names":[],"mappings":"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","file":"MigrationExecutor.js","sourcesContent":["import {Table} from \"../schema-builder/table/Table\";\nimport {Connection} from \"../connection/Connection\";\nimport {Migration} from \"./Migration\";\nimport {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {SqlServerDriver} from \"../driver/sqlserver/SqlServerDriver\";\nimport {MssqlParameter} from \"../driver/sqlserver/MssqlParameter\";\nimport {SqlServerConnectionOptions} from \"../driver/sqlserver/SqlServerConnectionOptions\";\nimport {PostgresConnectionOptions} from \"../driver/postgres/PostgresConnectionOptions\";\nimport {MongoDriver} from \"../driver/mongodb/MongoDriver\";\nimport {MongoQueryRunner} from \"../driver/mongodb/MongoQueryRunner\";\n\n/**\n * Executes migrations: runs pending and reverts previously executed migrations.\n */\nexport class MigrationExecutor {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Indicates how migrations should be run in transactions.\n * all: all migrations are run in a single transaction\n * none: all migrations are run without a transaction\n * each: each migration is run in a separate transaction\n */\n transaction: \"all\" | \"none\" | \"each\" = \"all\";\n\n // -------------------------------------------------------------------------\n // Private Properties\n // -------------------------------------------------------------------------\n\n private readonly migrationsTable: string;\n private readonly migrationsTableName: string;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: Connection,\n protected queryRunner?: QueryRunner) {\n\n const options = <SqlServerConnectionOptions|PostgresConnectionOptions>this.connection.driver.options;\n this.migrationsTableName = connection.options.migrationsTableName || \"migrations\";\n this.migrationsTable = this.connection.driver.buildTableName(this.migrationsTableName, options.schema, options.database);\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Tries to execute a single migration given.\n */\n public async executeMigration(migration: Migration): Promise<Migration> {\n return this.withQueryRunner(async (queryRunner) => {\n await this.createMigrationsTableIfNotExist(queryRunner);\n await (migration.instance as any).up(queryRunner);\n await this.insertExecutedMigration(queryRunner, migration);\n\n return migration;\n });\n }\n\n /**\n * Returns an array of all migrations.\n */\n public async getAllMigrations(): Promise<Migration[]> {\n return Promise.resolve(this.getMigrations());\n }\n\n /**\n * Returns an array of all executed migrations.\n */\n public async getExecutedMigrations(): Promise<Migration[]> {\n return this.withQueryRunner(async queryRunner => {\n await this.createMigrationsTableIfNotExist(queryRunner);\n\n return await this.loadExecutedMigrations(queryRunner);\n });\n }\n\n /**\n * Returns an array of all pending migrations.\n */\n public async getPendingMigrations(): Promise<Migration[]> {\n const allMigrations = await this.getAllMigrations();\n const executedMigrations = await this.getExecutedMigrations();\n\n return allMigrations.filter(migration =>\n !executedMigrations.find(\n executedMigration =>\n executedMigration.name === migration.name\n )\n );\n }\n\n /**\n * Inserts an executed migration.\n */\n public insertMigration(migration: Migration): Promise<void> {\n return new Promise((resolve, reject) => {\n this.withQueryRunner(queryRunner => {\n this.insertExecutedMigration(queryRunner, migration)\n .then(resolve)\n .catch(reject);\n });\n });\n }\n\n /**\n * Deletes an executed migration.\n */\n public deleteMigration(migration: Migration): Promise<void> {\n return new Promise((resolve, reject) => {\n this.withQueryRunner(queryRunner => {\n this.deleteExecutedMigration(queryRunner, migration)\n .then(resolve)\n .catch(reject);\n });\n });\n }\n\n /**\n * Lists all migrations and whether they have been executed or not\n * returns true if there are unapplied migrations\n */\n async showMigrations(): Promise<boolean> {\n let hasUnappliedMigrations = false;\n const queryRunner = this.queryRunner || this.connection.createQueryRunner();\n // create migrations table if its not created yet\n await this.createMigrationsTableIfNotExist(queryRunner);\n // get all migrations that are executed and saved in the database\n const executedMigrations = await this.loadExecutedMigrations(queryRunner);\n\n // get all user's migrations in the source code\n const allMigrations = this.getMigrations();\n\n for (const migration of allMigrations) {\n const executedMigration = executedMigrations.find(executedMigration => executedMigration.name === migration.name);\n\n if (executedMigration) {\n this.connection.logger.logSchemaBuild(` [X] ${migration.name}`);\n } else {\n hasUnappliedMigrations = true;\n this.connection.logger.logSchemaBuild(` [ ] ${migration.name}`);\n }\n }\n\n // if query runner was created by us then release it\n if (!this.queryRunner) {\n await queryRunner.release();\n }\n\n return hasUnappliedMigrations;\n }\n\n /**\n * Executes all pending migrations. Pending migrations are migrations that are not yet executed,\n * thus not saved in the database.\n */\n async executePendingMigrations(): Promise<Migration[]> {\n\n const queryRunner = this.queryRunner || this.connection.createQueryRunner();\n // create migrations table if its not created yet\n await this.createMigrationsTableIfNotExist(queryRunner);\n // get all migrations that are executed and saved in the database\n const executedMigrations = await this.loadExecutedMigrations(queryRunner);\n\n // get the time when last migration was executed\n let lastTimeExecutedMigration = this.getLatestTimestampMigration(executedMigrations);\n\n // get all user's migrations in the source code\n const allMigrations = this.getMigrations();\n\n // variable to store all migrations we did successefuly\n const successMigrations: Migration[] = [];\n\n // find all migrations that needs to be executed\n const pendingMigrations = allMigrations.filter(migration => {\n // check if we already have executed migration\n const executedMigration = executedMigrations.find(executedMigration => executedMigration.name === migration.name);\n if (executedMigration)\n return false;\n\n // migration is new and not executed. now check if its timestamp is correct\n // if (lastTimeExecutedMigration && migration.timestamp < lastTimeExecutedMigration.timestamp)\n // throw new Error(`New migration found: ${migration.name}, however this migration's timestamp is not valid. Migration's timestamp should not be older then migrations already executed in the database.`);\n\n // every check is passed means that migration was not run yet and we need to run it\n return true;\n });\n\n // if no migrations are pending then nothing to do here\n if (!pendingMigrations.length) {\n this.connection.logger.logSchemaBuild(`No migrations are pending`);\n // if query runner was created by us then release it\n if (!this.queryRunner)\n await queryRunner.release();\n return [];\n }\n\n // log information about migration execution\n this.connection.logger.logSchemaBuild(`${executedMigrations.length} migrations are already loaded in the database.`);\n this.connection.logger.logSchemaBuild(`${allMigrations.length} migrations were found in the source code.`);\n if (lastTimeExecutedMigration)\n this.connection.logger.logSchemaBuild(`${lastTimeExecutedMigration.name} is the last executed migration. It was executed on ${new Date(lastTimeExecutedMigration.timestamp).toString()}.`);\n this.connection.logger.logSchemaBuild(`${pendingMigrations.length} migrations are new migrations that needs to be executed.`);\n\n // start transaction if its not started yet\n let transactionStartedByUs = false;\n if (this.transaction === \"all\" && !queryRunner.isTransactionActive) {\n await queryRunner.startTransaction();\n transactionStartedByUs = true;\n }\n\n // run all pending migrations in a sequence\n try {\n for (const migration of pendingMigrations) {\n if (this.transaction === \"each\" && !queryRunner.isTransactionActive) {\n await queryRunner.startTransaction();\n transactionStartedByUs = true;\n }\n\n await migration.instance!.up(queryRunner)\n .then(async () => { // now when migration is executed we need to insert record about it into the database\n await this.insertExecutedMigration(queryRunner, migration);\n // commit transaction if we started it\n if (this.transaction === \"each\" && transactionStartedByUs)\n await queryRunner.commitTransaction();\n })\n .then(() => { // informative log about migration success\n successMigrations.push(migration);\n this.connection.logger.logSchemaBuild(`Migration ${migration.name} has been executed successfully.`);\n });\n }\n\n // commit transaction if we started it\n if (this.transaction === \"all\" && transactionStartedByUs)\n await queryRunner.commitTransaction();\n\n } catch (err) { // rollback transaction if we started it\n if (transactionStartedByUs) {\n try { // we throw original error even if rollback thrown an error\n await queryRunner.rollbackTransaction();\n } catch (rollbackError) { }\n }\n\n throw err;\n\n } finally {\n\n // if query runner was created by us then release it\n if (!this.queryRunner)\n await queryRunner.release();\n }\n return successMigrations;\n\n }\n\n /**\n * Reverts last migration that were run.\n */\n async undoLastMigration(): Promise<void> {\n\n const queryRunner = this.queryRunner || this.connection.createQueryRunner();\n\n // create migrations table if its not created yet\n await this.createMigrationsTableIfNotExist(queryRunner);\n\n // get all migrations that are executed and saved in the database\n const executedMigrations = await this.loadExecutedMigrations(queryRunner);\n\n // get the time when last migration was executed\n let lastTimeExecutedMigration = this.getLatestExecutedMigration(executedMigrations);\n\n // if no migrations found in the database then nothing to revert\n if (!lastTimeExecutedMigration) {\n this.connection.logger.logSchemaBuild(`No migrations was found in the database. Nothing to revert!`);\n return;\n }\n\n // get all user's migrations in the source code\n const allMigrations = this.getMigrations();\n\n // find the instance of the migration we need to remove\n const migrationToRevert = allMigrations.find(migration => migration.name === lastTimeExecutedMigration!.name);\n\n // if no migrations found in the database then nothing to revert\n if (!migrationToRevert)\n throw new Error(`No migration ${lastTimeExecutedMigration.name} was found in the source code. Make sure you have this migration in your codebase and its included in the connection options.`);\n\n // log information about migration execution\n this.connection.logger.logSchemaBuild(`${executedMigrations.length} migrations are already loaded in the database.`);\n this.connection.logger.logSchemaBuild(`${lastTimeExecutedMigration.name} is the last executed migration. It was executed on ${new Date(lastTimeExecutedMigration.timestamp).toString()}.`);\n this.connection.logger.logSchemaBuild(`Now reverting it...`);\n\n // start transaction if its not started yet\n let transactionStartedByUs = false;\n if ((this.transaction !== \"none\") && !queryRunner.isTransactionActive) {\n await queryRunner.startTransaction();\n transactionStartedByUs = true;\n }\n\n try {\n await migrationToRevert.instance!.down(queryRunner);\n await this.deleteExecutedMigration(queryRunner, migrationToRevert);\n this.connection.logger.logSchemaBuild(`Migration ${migrationToRevert.name} has been reverted successfully.`);\n\n // commit transaction if we started it\n if (transactionStartedByUs)\n await queryRunner.commitTransaction();\n\n } catch (err) { // rollback transaction if we started it\n if (transactionStartedByUs) {\n try { // we throw original error even if rollback thrown an error\n await queryRunner.rollbackTransaction();\n } catch (rollbackError) { }\n }\n\n throw err;\n\n } finally {\n\n // if query runner was created by us then release it\n if (!this.queryRunner)\n await queryRunner.release();\n }\n }\n\n // -------------------------------------------------------------------------\n // Protected Methods\n // -------------------------------------------------------------------------\n\n /**\n * Creates table \"migrations\" that will store information about executed migrations.\n */\n protected async createMigrationsTableIfNotExist(queryRunner: QueryRunner): Promise<void> {\n // If driver is mongo no need to create\n if (this.connection.driver instanceof MongoDriver) {\n return;\n }\n const tableExist = await queryRunner.hasTable(this.migrationsTable); // todo: table name should be configurable\n if (!tableExist) {\n await queryRunner.createTable(new Table(\n {\n name: this.migrationsTable,\n columns: [\n {\n name: \"id\",\n type: this.connection.driver.normalizeType({type: this.connection.driver.mappedDataTypes.migrationId}),\n isGenerated: true,\n generationStrategy: \"increment\",\n isPrimary: true,\n isNullable: false\n },\n {\n name: \"timestamp\",\n type: this.connection.driver.normalizeType({type: this.connection.driver.mappedDataTypes.migrationTimestamp}),\n isPrimary: false,\n isNullable: false\n },\n {\n name: \"name\",\n type: this.connection.driver.normalizeType({type: this.connection.driver.mappedDataTypes.migrationName}),\n isNullable: false\n },\n ]\n },\n ));\n }\n }\n\n /**\n * Loads all migrations that were executed and saved into the database (sorts by id).\n */\n protected async loadExecutedMigrations(queryRunner: QueryRunner): Promise<Migration[]> {\n if (this.connection.driver instanceof MongoDriver) {\n const mongoRunner = queryRunner as MongoQueryRunner;\n return await mongoRunner.databaseConnection\n .db(this.connection.driver.database!)\n .collection(this.migrationsTableName)\n .find<Migration>()\n .sort({\"_id\": -1})\n .toArray();\n } else {\n const migrationsRaw: ObjectLiteral[] = await this.connection.manager\n .createQueryBuilder(queryRunner)\n .select()\n .orderBy(this.connection.driver.escape(\"id\"), \"DESC\")\n .from(this.migrationsTable, this.migrationsTableName)\n .getRawMany();\n return migrationsRaw.map(migrationRaw => {\n return new Migration(parseInt(migrationRaw[\"id\"]), parseInt(migrationRaw[\"timestamp\"]), migrationRaw[\"name\"]);\n });\n }\n }\n\n /**\n * Gets all migrations that setup for this connection.\n */\n protected getMigrations(): Migration[] {\n const migrations = this.connection.migrations.map(migration => {\n const migrationClassName = migration.name || (migration.constructor as any).name;\n const migrationTimestamp = parseInt(migrationClassName.substr(-13), 10);\n if (!migrationTimestamp || isNaN(migrationTimestamp)) {\n throw new Error(`${migrationClassName} migration name is wrong. Migration class name should have a JavaScript timestamp appended.`);\n }\n\n return new Migration(undefined, migrationTimestamp, migrationClassName, migration);\n });\n\n this.checkForDuplicateMigrations(migrations);\n\n // sort them by timestamp\n return migrations.sort((a, b) => a.timestamp - b.timestamp);\n }\n\n protected checkForDuplicateMigrations(migrations: Migration[]) {\n const migrationNames = migrations.map(migration => migration.name);\n const duplicates = Array.from(new Set(migrationNames.filter((migrationName, index) => migrationNames.indexOf(migrationName) < index)));\n if (duplicates.length > 0) {\n throw Error(`Duplicate migrations: ${duplicates.join(\", \")}`);\n }\n }\n\n /**\n * Finds the latest migration (sorts by timestamp) in the given array of migrations.\n */\n protected getLatestTimestampMigration(migrations: Migration[]): Migration|undefined {\n const sortedMigrations = migrations.map(migration => migration).sort((a, b) => (a.timestamp - b.timestamp) * -1);\n return sortedMigrations.length > 0 ? sortedMigrations[0] : undefined;\n }\n\n /**\n * Finds the latest migration in the given array of migrations.\n * PRE: Migration array must be sorted by descending id.\n */\n protected getLatestExecutedMigration(sortedMigrations: Migration[]): Migration|undefined {\n return sortedMigrations.length > 0 ? sortedMigrations[0] : undefined;\n }\n\n /**\n * Inserts new executed migration's data into migrations table.\n */\n protected async insertExecutedMigration(queryRunner: QueryRunner, migration: Migration): Promise<void> {\n const values: ObjectLiteral = {};\n if (this.connection.driver instanceof SqlServerDriver) {\n values[\"timestamp\"] = new MssqlParameter(migration.timestamp, this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationTimestamp }) as any);\n values[\"name\"] = new MssqlParameter(migration.name, this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationName }) as any);\n } else {\n values[\"timestamp\"] = migration.timestamp;\n values[\"name\"] = migration.name;\n }\n if (this.connection.driver instanceof MongoDriver) {\n const mongoRunner = queryRunner as MongoQueryRunner;\n await mongoRunner.databaseConnection.db(this.connection.driver.database!).collection(this.migrationsTableName).insert(values);\n } else {\n const qb = queryRunner.manager.createQueryBuilder();\n await qb.insert()\n .into(this.migrationsTable)\n .values(values)\n .execute();\n }\n }\n\n /**\n * Delete previously executed migration's data from the migrations table.\n */\n protected async deleteExecutedMigration(queryRunner: QueryRunner, migration: Migration): Promise<void> {\n\n const conditions: ObjectLiteral = {};\n if (this.connection.driver instanceof SqlServerDriver) {\n conditions[\"timestamp\"] = new MssqlParameter(migration.timestamp, this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationTimestamp }) as any);\n conditions[\"name\"] = new MssqlParameter(migration.name, this.connection.driver.normalizeType({ type: this.connection.driver.mappedDataTypes.migrationName }) as any);\n } else {\n conditions[\"timestamp\"] = migration.timestamp;\n conditions[\"name\"] = migration.name;\n }\n\n if (this.connection.driver instanceof MongoDriver) {\n const mongoRunner = queryRunner as MongoQueryRunner;\n await mongoRunner.databaseConnection.db(this.connection.driver.database!).collection(this.migrationsTableName).deleteOne(conditions);\n } else {\n const qb = queryRunner.manager.createQueryBuilder();\n await qb.delete()\n .from(this.migrationsTable)\n .where(`${qb.escape(\"timestamp\")} = :timestamp`)\n .andWhere(`${qb.escape(\"name\")} = :name`)\n .setParameters(conditions)\n .execute();\n }\n\n }\n\n protected async withQueryRunner<T extends any>(callback: (queryRunner: QueryRunner) => T) {\n const queryRunner = this.queryRunner || this.connection.createQueryRunner();\n\n try {\n return callback(queryRunner);\n } finally {\n if (!this.queryRunner) {\n await queryRunner.release();\n }\n }\n }\n}\n"],"sourceRoot":".."}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { __read, __spread } from "tslib";
|
|
2
2
|
import { RandomGenerator } from "../util/RandomGenerator";
|
|
3
3
|
import { camelCase, snakeCase, titleCase } from "../util/StringUtils";
|
|
4
4
|
import { Table } from "../schema-builder/table/Table";
|
|
@@ -38,7 +38,7 @@ var DefaultNamingStrategy = /** @class */ (function () {
|
|
|
38
38
|
};
|
|
39
39
|
DefaultNamingStrategy.prototype.primaryKeyName = function (tableOrName, columnNames) {
|
|
40
40
|
// sort incoming column names to avoid issue when ["id", "name"] and ["name", "id"] arrays
|
|
41
|
-
var clonedColumnNames =
|
|
41
|
+
var clonedColumnNames = __spread(columnNames);
|
|
42
42
|
clonedColumnNames.sort();
|
|
43
43
|
var tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;
|
|
44
44
|
var replacedTableName = tableName.replace(".", "_");
|
|
@@ -47,7 +47,7 @@ var DefaultNamingStrategy = /** @class */ (function () {
|
|
|
47
47
|
};
|
|
48
48
|
DefaultNamingStrategy.prototype.uniqueConstraintName = function (tableOrName, columnNames) {
|
|
49
49
|
// sort incoming column names to avoid issue when ["id", "name"] and ["name", "id"] arrays
|
|
50
|
-
var clonedColumnNames =
|
|
50
|
+
var clonedColumnNames = __spread(columnNames);
|
|
51
51
|
clonedColumnNames.sort();
|
|
52
52
|
var tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;
|
|
53
53
|
var replacedTableName = tableName.replace(".", "_");
|
|
@@ -56,7 +56,7 @@ var DefaultNamingStrategy = /** @class */ (function () {
|
|
|
56
56
|
};
|
|
57
57
|
DefaultNamingStrategy.prototype.relationConstraintName = function (tableOrName, columnNames, where) {
|
|
58
58
|
// sort incoming column names to avoid issue when ["id", "name"] and ["name", "id"] arrays
|
|
59
|
-
var clonedColumnNames =
|
|
59
|
+
var clonedColumnNames = __spread(columnNames);
|
|
60
60
|
clonedColumnNames.sort();
|
|
61
61
|
var tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;
|
|
62
62
|
var replacedTableName = tableName.replace(".", "_");
|
|
@@ -73,7 +73,7 @@ var DefaultNamingStrategy = /** @class */ (function () {
|
|
|
73
73
|
};
|
|
74
74
|
DefaultNamingStrategy.prototype.foreignKeyName = function (tableOrName, columnNames, _referencedTablePath, _referencedColumnNames) {
|
|
75
75
|
// sort incoming column names to avoid issue when ["id", "name"] and ["name", "id"] arrays
|
|
76
|
-
var clonedColumnNames =
|
|
76
|
+
var clonedColumnNames = __spread(columnNames);
|
|
77
77
|
clonedColumnNames.sort();
|
|
78
78
|
var tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;
|
|
79
79
|
var replacedTableName = tableName.replace(".", "_");
|
|
@@ -82,7 +82,7 @@ var DefaultNamingStrategy = /** @class */ (function () {
|
|
|
82
82
|
};
|
|
83
83
|
DefaultNamingStrategy.prototype.indexName = function (tableOrName, columnNames, where) {
|
|
84
84
|
// sort incoming column names to avoid issue when ["id", "name"] and ["name", "id"] arrays
|
|
85
|
-
var clonedColumnNames =
|
|
85
|
+
var clonedColumnNames = __spread(columnNames);
|
|
86
86
|
clonedColumnNames.sort();
|
|
87
87
|
var tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;
|
|
88
88
|
var replacedTableName = tableName.replace(".", "_");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../browser/src/naming-strategy/DefaultNamingStrategy.ts"],"names":[],"mappings":"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","file":"DefaultNamingStrategy.js","sourcesContent":["import {NamingStrategyInterface} from \"./NamingStrategyInterface\";\nimport {RandomGenerator} from \"../util/RandomGenerator\";\nimport {camelCase, snakeCase, titleCase} from \"../util/StringUtils\";\nimport {Table} from \"../schema-builder/table/Table\";\n\n/**\n * Naming strategy that is used by default.\n */\nexport class DefaultNamingStrategy implements NamingStrategyInterface {\n\n /**\n * Normalizes table name.\n *\n * @param targetName Name of the target entity that can be used to generate a table name.\n * @param userSpecifiedName For example if user specified a table name in a decorator, e.g. @Entity(\"name\")\n */\n tableName(targetName: string, userSpecifiedName: string|undefined): string {\n return userSpecifiedName ? userSpecifiedName : snakeCase(targetName);\n }\n\n /**\n * Creates a table name for a junction table of a closure table.\n *\n * @param originalClosureTableName Name of the closure table which owns this junction table.\n */\n closureJunctionTableName(originalClosureTableName: string): string {\n return originalClosureTableName + \"_closure\";\n }\n\n columnName(propertyName: string, customName: string, embeddedPrefixes: string[]): string {\n const name = customName || propertyName;\n \n if (embeddedPrefixes.length)\n return camelCase(embeddedPrefixes.join(\"_\")) + titleCase(name);\n\n return name;\n }\n\n relationName(propertyName: string): string {\n return propertyName;\n }\n\n primaryKeyName(tableOrName: Table|string, columnNames: string[]): string {\n // sort incoming column names to avoid issue when [\"id\", \"name\"] and [\"name\", \"id\"] arrays\n const clonedColumnNames = [...columnNames];\n clonedColumnNames.sort();\n const tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n const replacedTableName = tableName.replace(\".\", \"_\");\n const key = `${replacedTableName}_${clonedColumnNames.join(\"_\")}`;\n return \"PK_\" + RandomGenerator.sha1(key).substr(0, 27);\n }\n\n uniqueConstraintName(tableOrName: Table|string, columnNames: string[]): string {\n // sort incoming column names to avoid issue when [\"id\", \"name\"] and [\"name\", \"id\"] arrays\n const clonedColumnNames = [...columnNames];\n clonedColumnNames.sort();\n const tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n const replacedTableName = tableName.replace(\".\", \"_\");\n const key = `${replacedTableName}_${clonedColumnNames.join(\"_\")}`;\n return \"UQ_\" + RandomGenerator.sha1(key).substr(0, 27);\n }\n\n relationConstraintName(tableOrName: Table|string, columnNames: string[], where?: string): string {\n // sort incoming column names to avoid issue when [\"id\", \"name\"] and [\"name\", \"id\"] arrays\n const clonedColumnNames = [...columnNames];\n clonedColumnNames.sort();\n const tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n const replacedTableName = tableName.replace(\".\", \"_\");\n let key = `${replacedTableName}_${clonedColumnNames.join(\"_\")}`;\n if (where)\n key += `_${where}`;\n\n return \"REL_\" + RandomGenerator.sha1(key).substr(0, 26);\n }\n\n defaultConstraintName(tableOrName: Table|string, columnName: string): string {\n const tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n const replacedTableName = tableName.replace(\".\", \"_\");\n const key = `${replacedTableName}_${columnName}`;\n return \"DF_\" + RandomGenerator.sha1(key).substr(0, 27);\n }\n\n foreignKeyName(tableOrName: Table|string, columnNames: string[], _referencedTablePath?: string, _referencedColumnNames?: string[]): string {\n // sort incoming column names to avoid issue when [\"id\", \"name\"] and [\"name\", \"id\"] arrays\n const clonedColumnNames = [...columnNames];\n clonedColumnNames.sort();\n const tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n const replacedTableName = tableName.replace(\".\", \"_\");\n const key = `${replacedTableName}_${clonedColumnNames.join(\"_\")}`;\n return \"FK_\" + RandomGenerator.sha1(key).substr(0, 27);\n }\n\n indexName(tableOrName: Table|string, columnNames: string[], where?: string): string {\n // sort incoming column names to avoid issue when [\"id\", \"name\"] and [\"name\", \"id\"] arrays\n const clonedColumnNames = [...columnNames];\n clonedColumnNames.sort();\n const tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n const replacedTableName = tableName.replace(\".\", \"_\");\n let key = `${replacedTableName}_${clonedColumnNames.join(\"_\")}`;\n if (where)\n key += `_${where}`;\n\n return \"IDX_\" + RandomGenerator.sha1(key).substr(0, 26);\n }\n\n checkConstraintName(tableOrName: Table|string, expression: string): string {\n const tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n const replacedTableName = tableName.replace(\".\", \"_\");\n const key = `${replacedTableName}_${expression}`;\n return \"CHK_\" + RandomGenerator.sha1(key).substr(0, 26);\n }\n\n exclusionConstraintName(tableOrName: Table|string, expression: string): string {\n const tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n const replacedTableName = tableName.replace(\".\", \"_\");\n const key = `${replacedTableName}_${expression}`;\n return \"XCL_\" + RandomGenerator.sha1(key).substr(0, 26);\n }\n\n joinColumnName(relationName: string, referencedColumnName: string): string {\n return camelCase(relationName + \"_\" + referencedColumnName);\n }\n\n joinTableName(firstTableName: string,\n secondTableName: string,\n firstPropertyName: string,\n secondPropertyName: string): string {\n return snakeCase(firstTableName + \"_\" + firstPropertyName.replace(/\\./gi, \"_\") + \"_\" + secondTableName);\n }\n\n joinTableColumnDuplicationPrefix(columnName: string, index: number): string {\n return columnName + \"_\" + index;\n }\n\n joinTableColumnName(tableName: string, propertyName: string, columnName?: string): string {\n return camelCase(tableName + \"_\" + (columnName ? columnName : propertyName));\n }\n\n joinTableInverseColumnName(tableName: string, propertyName: string, columnName?: string): string {\n return this.joinTableColumnName(tableName, propertyName, columnName);\n }\n\n /**\n * Adds globally set prefix to the table name.\n * This method is executed no matter if prefix was set or not.\n * Table name is either user's given table name, either name generated from entity target.\n * Note that table name comes here already normalized by #tableName method.\n */\n prefixTableName(prefix: string, tableName: string): string {\n return prefix + tableName;\n }\n\n eagerJoinRelationAlias(alias: string, propertyPath: string): string {\n return alias + \"_\" + propertyPath.replace(\".\", \"_\");\n }\n\n nestedSetColumnNames = { left: \"nsleft\", right: \"nsright\" };\n materializedPathColumnName = \"mpath\";\n}\n"],"sourceRoot":".."}
|
|
1
|
+
{"version":3,"sources":["../browser/src/naming-strategy/DefaultNamingStrategy.ts"],"names":[],"mappings":"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","file":"DefaultNamingStrategy.js","sourcesContent":["import {NamingStrategyInterface} from \"./NamingStrategyInterface\";\nimport {RandomGenerator} from \"../util/RandomGenerator\";\nimport {camelCase, snakeCase, titleCase} from \"../util/StringUtils\";\nimport {Table} from \"../schema-builder/table/Table\";\n\n/**\n * Naming strategy that is used by default.\n */\nexport class DefaultNamingStrategy implements NamingStrategyInterface {\n\n /**\n * Normalizes table name.\n *\n * @param targetName Name of the target entity that can be used to generate a table name.\n * @param userSpecifiedName For example if user specified a table name in a decorator, e.g. @Entity(\"name\")\n */\n tableName(targetName: string, userSpecifiedName: string|undefined): string {\n return userSpecifiedName ? userSpecifiedName : snakeCase(targetName);\n }\n\n /**\n * Creates a table name for a junction table of a closure table.\n *\n * @param originalClosureTableName Name of the closure table which owns this junction table.\n */\n closureJunctionTableName(originalClosureTableName: string): string {\n return originalClosureTableName + \"_closure\";\n }\n\n columnName(propertyName: string, customName: string, embeddedPrefixes: string[]): string {\n const name = customName || propertyName;\n \n if (embeddedPrefixes.length)\n return camelCase(embeddedPrefixes.join(\"_\")) + titleCase(name);\n\n return name;\n }\n\n relationName(propertyName: string): string {\n return propertyName;\n }\n\n primaryKeyName(tableOrName: Table|string, columnNames: string[]): string {\n // sort incoming column names to avoid issue when [\"id\", \"name\"] and [\"name\", \"id\"] arrays\n const clonedColumnNames = [...columnNames];\n clonedColumnNames.sort();\n const tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n const replacedTableName = tableName.replace(\".\", \"_\");\n const key = `${replacedTableName}_${clonedColumnNames.join(\"_\")}`;\n return \"PK_\" + RandomGenerator.sha1(key).substr(0, 27);\n }\n\n uniqueConstraintName(tableOrName: Table|string, columnNames: string[]): string {\n // sort incoming column names to avoid issue when [\"id\", \"name\"] and [\"name\", \"id\"] arrays\n const clonedColumnNames = [...columnNames];\n clonedColumnNames.sort();\n const tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n const replacedTableName = tableName.replace(\".\", \"_\");\n const key = `${replacedTableName}_${clonedColumnNames.join(\"_\")}`;\n return \"UQ_\" + RandomGenerator.sha1(key).substr(0, 27);\n }\n\n relationConstraintName(tableOrName: Table|string, columnNames: string[], where?: string): string {\n // sort incoming column names to avoid issue when [\"id\", \"name\"] and [\"name\", \"id\"] arrays\n const clonedColumnNames = [...columnNames];\n clonedColumnNames.sort();\n const tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n const replacedTableName = tableName.replace(\".\", \"_\");\n let key = `${replacedTableName}_${clonedColumnNames.join(\"_\")}`;\n if (where)\n key += `_${where}`;\n\n return \"REL_\" + RandomGenerator.sha1(key).substr(0, 26);\n }\n\n defaultConstraintName(tableOrName: Table|string, columnName: string): string {\n const tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n const replacedTableName = tableName.replace(\".\", \"_\");\n const key = `${replacedTableName}_${columnName}`;\n return \"DF_\" + RandomGenerator.sha1(key).substr(0, 27);\n }\n\n foreignKeyName(tableOrName: Table|string, columnNames: string[], _referencedTablePath?: string, _referencedColumnNames?: string[]): string {\n // sort incoming column names to avoid issue when [\"id\", \"name\"] and [\"name\", \"id\"] arrays\n const clonedColumnNames = [...columnNames];\n clonedColumnNames.sort();\n const tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n const replacedTableName = tableName.replace(\".\", \"_\");\n const key = `${replacedTableName}_${clonedColumnNames.join(\"_\")}`;\n return \"FK_\" + RandomGenerator.sha1(key).substr(0, 27);\n }\n\n indexName(tableOrName: Table|string, columnNames: string[], where?: string): string {\n // sort incoming column names to avoid issue when [\"id\", \"name\"] and [\"name\", \"id\"] arrays\n const clonedColumnNames = [...columnNames];\n clonedColumnNames.sort();\n const tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n const replacedTableName = tableName.replace(\".\", \"_\");\n let key = `${replacedTableName}_${clonedColumnNames.join(\"_\")}`;\n if (where)\n key += `_${where}`;\n\n return \"IDX_\" + RandomGenerator.sha1(key).substr(0, 26);\n }\n\n checkConstraintName(tableOrName: Table|string, expression: string): string {\n const tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n const replacedTableName = tableName.replace(\".\", \"_\");\n const key = `${replacedTableName}_${expression}`;\n return \"CHK_\" + RandomGenerator.sha1(key).substr(0, 26);\n }\n\n exclusionConstraintName(tableOrName: Table|string, expression: string): string {\n const tableName = tableOrName instanceof Table ? tableOrName.name : tableOrName;\n const replacedTableName = tableName.replace(\".\", \"_\");\n const key = `${replacedTableName}_${expression}`;\n return \"XCL_\" + RandomGenerator.sha1(key).substr(0, 26);\n }\n\n joinColumnName(relationName: string, referencedColumnName: string): string {\n return camelCase(relationName + \"_\" + referencedColumnName);\n }\n\n joinTableName(firstTableName: string,\n secondTableName: string,\n firstPropertyName: string,\n secondPropertyName: string): string {\n return snakeCase(firstTableName + \"_\" + firstPropertyName.replace(/\\./gi, \"_\") + \"_\" + secondTableName);\n }\n\n joinTableColumnDuplicationPrefix(columnName: string, index: number): string {\n return columnName + \"_\" + index;\n }\n\n joinTableColumnName(tableName: string, propertyName: string, columnName?: string): string {\n return camelCase(tableName + \"_\" + (columnName ? columnName : propertyName));\n }\n\n joinTableInverseColumnName(tableName: string, propertyName: string, columnName?: string): string {\n return this.joinTableColumnName(tableName, propertyName, columnName);\n }\n\n /**\n * Adds globally set prefix to the table name.\n * This method is executed no matter if prefix was set or not.\n * Table name is either user's given table name, either name generated from entity target.\n * Note that table name comes here already normalized by #tableName method.\n */\n prefixTableName(prefix: string, tableName: string): string {\n return prefix + tableName;\n }\n\n eagerJoinRelationAlias(alias: string, propertyPath: string): string {\n return alias + \"_\" + propertyPath.replace(\".\", \"_\");\n }\n\n nestedSetColumnNames = { left: \"nsleft\", right: \"nsright\" };\n materializedPathColumnName = \"mpath\";\n}\n"],"sourceRoot":".."}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { __awaiter, __generator, __values } from "tslib";
|
|
2
2
|
import { MustBeEntityError } from "../error/MustBeEntityError";
|
|
3
3
|
import { SubjectExecutor } from "./SubjectExecutor";
|
|
4
4
|
import { CannotDetermineEntityError } from "../error/CannotDetermineEntityError";
|
|
@@ -9,7 +9,6 @@ import { ManyToManySubjectBuilder } from "./subject-builder/ManyToManySubjectBui
|
|
|
9
9
|
import { SubjectDatabaseEntityLoader } from "./SubjectDatabaseEntityLoader";
|
|
10
10
|
import { CascadesSubjectBuilder } from "./subject-builder/CascadesSubjectBuilder";
|
|
11
11
|
import { OrmUtils } from "../util/OrmUtils";
|
|
12
|
-
import { PromiseUtils } from "../util/PromiseUtils";
|
|
13
12
|
/**
|
|
14
13
|
* Persists a single entity or multiple entities - saves or removes them.
|
|
15
14
|
*/
|
|
@@ -34,29 +33,30 @@ var EntityPersistExecutor = /** @class */ (function () {
|
|
|
34
33
|
EntityPersistExecutor.prototype.execute = function () {
|
|
35
34
|
var _this = this;
|
|
36
35
|
// check if entity we are going to save is valid and is an object
|
|
37
|
-
if (!this.entity ||
|
|
36
|
+
if (!this.entity || typeof this.entity !== "object")
|
|
38
37
|
return Promise.reject(new MustBeEntityError(this.mode, this.entity));
|
|
39
38
|
// we MUST call "fake" resolve here to make sure all properties of lazily loaded relations are resolved
|
|
40
|
-
return Promise.resolve().then(function () { return
|
|
41
|
-
var queryRunner, entities, entitiesInChunks, executors, executorsWithExecutableOperations, isTransactionStartedByUs, error_1, rollbackError_1;
|
|
39
|
+
return Promise.resolve().then(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
40
|
+
var queryRunner, entities, entitiesInChunks, executors, executorsWithExecutableOperations, isTransactionStartedByUs, executorsWithExecutableOperations_1, executorsWithExecutableOperations_1_1, executor, e_1_1, error_1, rollbackError_1;
|
|
41
|
+
var e_1, _a;
|
|
42
42
|
var _this = this;
|
|
43
|
-
return
|
|
44
|
-
switch (
|
|
43
|
+
return __generator(this, function (_b) {
|
|
44
|
+
switch (_b.label) {
|
|
45
45
|
case 0:
|
|
46
|
-
queryRunner = this.queryRunner || this.connection.createQueryRunner(
|
|
46
|
+
queryRunner = this.queryRunner || this.connection.createQueryRunner();
|
|
47
47
|
// save data in the query runner - this is useful functionality to share data from outside of the world
|
|
48
48
|
// with third classes - like subscribers and listener methods
|
|
49
49
|
if (this.options && this.options.data)
|
|
50
50
|
queryRunner.data = this.options.data;
|
|
51
|
-
|
|
51
|
+
_b.label = 1;
|
|
52
52
|
case 1:
|
|
53
|
-
|
|
53
|
+
_b.trys.push([1, , 21, 24]);
|
|
54
54
|
entities = Array.isArray(this.entity) ? this.entity : [this.entity];
|
|
55
55
|
entitiesInChunks = this.options && this.options.chunk && this.options.chunk > 0 ? OrmUtils.chunk(entities, this.options.chunk) : [entities];
|
|
56
|
-
return [4 /*yield*/, Promise.all(entitiesInChunks.map(function (entities) { return
|
|
56
|
+
return [4 /*yield*/, Promise.all(entitiesInChunks.map(function (entities) { return __awaiter(_this, void 0, void 0, function () {
|
|
57
57
|
var subjects, cascadesSubjectBuilder;
|
|
58
58
|
var _this = this;
|
|
59
|
-
return
|
|
59
|
+
return __generator(this, function (_a) {
|
|
60
60
|
switch (_a.label) {
|
|
61
61
|
case 0:
|
|
62
62
|
subjects = [];
|
|
@@ -116,58 +116,76 @@ var EntityPersistExecutor = /** @class */ (function () {
|
|
|
116
116
|
});
|
|
117
117
|
}); }))];
|
|
118
118
|
case 2:
|
|
119
|
-
executors =
|
|
119
|
+
executors = _b.sent();
|
|
120
120
|
executorsWithExecutableOperations = executors.filter(function (executor) { return executor.hasExecutableOperations; });
|
|
121
121
|
if (executorsWithExecutableOperations.length === 0)
|
|
122
122
|
return [2 /*return*/];
|
|
123
123
|
isTransactionStartedByUs = false;
|
|
124
|
-
|
|
124
|
+
_b.label = 3;
|
|
125
125
|
case 3:
|
|
126
|
-
|
|
126
|
+
_b.trys.push([3, 15, , 20]);
|
|
127
127
|
if (!!queryRunner.isTransactionActive) return [3 /*break*/, 5];
|
|
128
128
|
if (!(!this.options || this.options.transaction !== false)) return [3 /*break*/, 5];
|
|
129
129
|
isTransactionStartedByUs = true;
|
|
130
130
|
return [4 /*yield*/, queryRunner.startTransaction()];
|
|
131
131
|
case 4:
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
case 5:
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
132
|
+
_b.sent();
|
|
133
|
+
_b.label = 5;
|
|
134
|
+
case 5:
|
|
135
|
+
_b.trys.push([5, 10, 11, 12]);
|
|
136
|
+
executorsWithExecutableOperations_1 = __values(executorsWithExecutableOperations), executorsWithExecutableOperations_1_1 = executorsWithExecutableOperations_1.next();
|
|
137
|
+
_b.label = 6;
|
|
138
138
|
case 6:
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
if (!(isTransactionStartedByUs === true)) return [3 /*break*/, 8];
|
|
143
|
-
return [4 /*yield*/, queryRunner.commitTransaction()];
|
|
139
|
+
if (!!executorsWithExecutableOperations_1_1.done) return [3 /*break*/, 9];
|
|
140
|
+
executor = executorsWithExecutableOperations_1_1.value;
|
|
141
|
+
return [4 /*yield*/, executor.execute()];
|
|
144
142
|
case 7:
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
case 8:
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
_a.label = 10;
|
|
143
|
+
_b.sent();
|
|
144
|
+
_b.label = 8;
|
|
145
|
+
case 8:
|
|
146
|
+
executorsWithExecutableOperations_1_1 = executorsWithExecutableOperations_1.next();
|
|
147
|
+
return [3 /*break*/, 6];
|
|
148
|
+
case 9: return [3 /*break*/, 12];
|
|
152
149
|
case 10:
|
|
153
|
-
|
|
154
|
-
|
|
150
|
+
e_1_1 = _b.sent();
|
|
151
|
+
e_1 = { error: e_1_1 };
|
|
152
|
+
return [3 /*break*/, 12];
|
|
155
153
|
case 11:
|
|
156
|
-
|
|
157
|
-
|
|
154
|
+
try {
|
|
155
|
+
if (executorsWithExecutableOperations_1_1 && !executorsWithExecutableOperations_1_1.done && (_a = executorsWithExecutableOperations_1.return)) _a.call(executorsWithExecutableOperations_1);
|
|
156
|
+
}
|
|
157
|
+
finally { if (e_1) throw e_1.error; }
|
|
158
|
+
return [7 /*endfinally*/];
|
|
158
159
|
case 12:
|
|
159
|
-
|
|
160
|
-
return [
|
|
161
|
-
case 13:
|
|
162
|
-
|
|
160
|
+
if (!(isTransactionStartedByUs === true)) return [3 /*break*/, 14];
|
|
161
|
+
return [4 /*yield*/, queryRunner.commitTransaction()];
|
|
162
|
+
case 13:
|
|
163
|
+
_b.sent();
|
|
164
|
+
_b.label = 14;
|
|
165
|
+
case 14: return [3 /*break*/, 20];
|
|
163
166
|
case 15:
|
|
164
|
-
|
|
165
|
-
return [
|
|
167
|
+
error_1 = _b.sent();
|
|
168
|
+
if (!isTransactionStartedByUs) return [3 /*break*/, 19];
|
|
169
|
+
_b.label = 16;
|
|
166
170
|
case 16:
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
case 17:
|
|
170
|
-
|
|
171
|
+
_b.trys.push([16, 18, , 19]);
|
|
172
|
+
return [4 /*yield*/, queryRunner.rollbackTransaction()];
|
|
173
|
+
case 17:
|
|
174
|
+
_b.sent();
|
|
175
|
+
return [3 /*break*/, 19];
|
|
176
|
+
case 18:
|
|
177
|
+
rollbackError_1 = _b.sent();
|
|
178
|
+
return [3 /*break*/, 19];
|
|
179
|
+
case 19: throw error_1;
|
|
180
|
+
case 20: return [3 /*break*/, 24];
|
|
181
|
+
case 21:
|
|
182
|
+
if (!!this.queryRunner) return [3 /*break*/, 23];
|
|
183
|
+
return [4 /*yield*/, queryRunner.release()];
|
|
184
|
+
case 22:
|
|
185
|
+
_b.sent();
|
|
186
|
+
_b.label = 23;
|
|
187
|
+
case 23: return [7 /*endfinally*/];
|
|
188
|
+
case 24: return [2 /*return*/];
|
|
171
189
|
}
|
|
172
190
|
});
|
|
173
191
|
}); });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../browser/src/persistence/EntityPersistExecutor.ts"],"names":[],"mappings":"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","file":"EntityPersistExecutor.js","sourcesContent":["import {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {SaveOptions} from \"../repository/SaveOptions\";\nimport {RemoveOptions} from \"../repository/RemoveOptions\";\nimport {MustBeEntityError} from \"../error/MustBeEntityError\";\nimport {SubjectExecutor} from \"./SubjectExecutor\";\nimport {CannotDetermineEntityError} from \"../error/CannotDetermineEntityError\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {Connection} from \"../connection/Connection\";\nimport {Subject} from \"./Subject\";\nimport {OneToManySubjectBuilder} from \"./subject-builder/OneToManySubjectBuilder\";\nimport {OneToOneInverseSideSubjectBuilder} from \"./subject-builder/OneToOneInverseSideSubjectBuilder\";\nimport {ManyToManySubjectBuilder} from \"./subject-builder/ManyToManySubjectBuilder\";\nimport {SubjectDatabaseEntityLoader} from \"./SubjectDatabaseEntityLoader\";\nimport {CascadesSubjectBuilder} from \"./subject-builder/CascadesSubjectBuilder\";\nimport {OrmUtils} from \"../util/OrmUtils\";\nimport {PromiseUtils} from \"../util/PromiseUtils\";\n\n/**\n * Persists a single entity or multiple entities - saves or removes them.\n */\nexport class EntityPersistExecutor {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: Connection,\n protected queryRunner: QueryRunner|undefined,\n protected mode: \"save\"|\"remove\"|\"soft-remove\"|\"recover\",\n protected target: Function|string|undefined,\n protected entity: ObjectLiteral|ObjectLiteral[],\n protected options?: SaveOptions & RemoveOptions) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Executes persistence operation ob given entity or entities.\n */\n execute(): Promise<void> {\n\n // check if entity we are going to save is valid and is an object\n if (!this.entity || !(this.entity instanceof Object))\n return Promise.reject(new MustBeEntityError(this.mode, this.entity));\n\n // we MUST call \"fake\" resolve here to make sure all properties of lazily loaded relations are resolved\n return Promise.resolve().then(async () => {\n\n // if query runner is already defined in this class, it means this entity manager was already created for a single connection\n // if its not defined we create a new query runner - single connection where we'll execute all our operations\n const queryRunner = this.queryRunner || this.connection.createQueryRunner(\"master\");\n\n // save data in the query runner - this is useful functionality to share data from outside of the world\n // with third classes - like subscribers and listener methods\n if (this.options && this.options.data)\n queryRunner.data = this.options.data;\n\n try {\n\n // collect all operate subjects\n const entities: ObjectLiteral[] = Array.isArray(this.entity) ? this.entity : [this.entity];\n const entitiesInChunks = this.options && this.options.chunk && this.options.chunk > 0 ? OrmUtils.chunk(entities, this.options.chunk) : [entities];\n\n // console.time(\"building subject executors...\");\n const executors = await Promise.all(entitiesInChunks.map(async entities => {\n const subjects: Subject[] = [];\n\n // create subjects for all entities we received for the persistence\n entities.forEach(entity => {\n const entityTarget = this.target ? this.target : entity.constructor;\n if (entityTarget === Object)\n throw new CannotDetermineEntityError(this.mode);\n\n subjects.push(new Subject({\n metadata: this.connection.getMetadata(entityTarget),\n entity: entity,\n canBeInserted: this.mode === \"save\",\n canBeUpdated: this.mode === \"save\",\n mustBeRemoved: this.mode === \"remove\",\n canBeSoftRemoved: this.mode === \"soft-remove\",\n canBeRecovered: this.mode === \"recover\"\n }));\n });\n\n // console.time(\"building cascades...\");\n // go through each entity with metadata and create subjects and subjects by cascades for them\n const cascadesSubjectBuilder = new CascadesSubjectBuilder(subjects);\n subjects.forEach(subject => {\n // next step we build list of subjects we will operate with\n // these subjects are subjects that we need to insert or update alongside with main persisted entity\n cascadesSubjectBuilder.build(subject, this.mode);\n });\n // console.timeEnd(\"building cascades...\");\n\n // load database entities for all subjects we have\n // next step is to load database entities for all operate subjects\n // console.time(\"loading...\");\n await new SubjectDatabaseEntityLoader(queryRunner, subjects).load(this.mode);\n // console.timeEnd(\"loading...\");\n\n // console.time(\"other subjects...\");\n // build all related subjects and change maps\n if (this.mode === \"save\" || this.mode === \"soft-remove\" || this.mode === \"recover\") {\n new OneToManySubjectBuilder(subjects).build();\n new OneToOneInverseSideSubjectBuilder(subjects).build();\n new ManyToManySubjectBuilder(subjects).build();\n } else {\n subjects.forEach(subject => {\n if (subject.mustBeRemoved) {\n new ManyToManySubjectBuilder(subjects).buildForAllRemoval(subject);\n }\n });\n }\n // console.timeEnd(\"other subjects...\");\n // console.timeEnd(\"building subjects...\");\n // console.log(\"subjects\", subjects);\n\n // create a subject executor\n return new SubjectExecutor(queryRunner, subjects, this.options);\n }));\n // console.timeEnd(\"building subject executors...\");\n\n // make sure we have at least one executable operation before we create a transaction and proceed\n // if we don't have operations it means we don't really need to update or remove something\n const executorsWithExecutableOperations = executors.filter(executor => executor.hasExecutableOperations);\n if (executorsWithExecutableOperations.length === 0)\n return;\n\n // start execute queries in a transaction\n // if transaction is already opened in this query runner then we don't touch it\n // if its not opened yet then we open it here, and once we finish - we close it\n let isTransactionStartedByUs = false;\n try {\n\n // open transaction if its not opened yet\n if (!queryRunner.isTransactionActive) {\n if (!this.options || this.options.transaction !== false) { // start transaction until it was not explicitly disabled\n isTransactionStartedByUs = true;\n await queryRunner.startTransaction();\n }\n }\n\n // execute all persistence operations for all entities we have\n // console.time(\"executing subject executors...\");\n await PromiseUtils.runInSequence(executorsWithExecutableOperations, executor => executor.execute());\n // console.timeEnd(\"executing subject executors...\");\n\n // commit transaction if it was started by us\n // console.time(\"commit\");\n if (isTransactionStartedByUs === true)\n await queryRunner.commitTransaction();\n // console.timeEnd(\"commit\");\n\n } catch (error) {\n\n // rollback transaction if it was started by us\n if (isTransactionStartedByUs) {\n try {\n await queryRunner.rollbackTransaction();\n } catch (rollbackError) { }\n }\n throw error;\n }\n\n } finally {\n\n // release query runner only if its created by us\n if (!this.queryRunner)\n await queryRunner.release();\n }\n });\n }\n\n}\n"],"sourceRoot":".."}
|
|
1
|
+
{"version":3,"sources":["../browser/src/persistence/EntityPersistExecutor.ts"],"names":[],"mappings":"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","file":"EntityPersistExecutor.js","sourcesContent":["import {ObjectLiteral} from \"../common/ObjectLiteral\";\nimport {SaveOptions} from \"../repository/SaveOptions\";\nimport {RemoveOptions} from \"../repository/RemoveOptions\";\nimport {MustBeEntityError} from \"../error/MustBeEntityError\";\nimport {SubjectExecutor} from \"./SubjectExecutor\";\nimport {CannotDetermineEntityError} from \"../error/CannotDetermineEntityError\";\nimport {QueryRunner} from \"../query-runner/QueryRunner\";\nimport {Connection} from \"../connection/Connection\";\nimport {Subject} from \"./Subject\";\nimport {OneToManySubjectBuilder} from \"./subject-builder/OneToManySubjectBuilder\";\nimport {OneToOneInverseSideSubjectBuilder} from \"./subject-builder/OneToOneInverseSideSubjectBuilder\";\nimport {ManyToManySubjectBuilder} from \"./subject-builder/ManyToManySubjectBuilder\";\nimport {SubjectDatabaseEntityLoader} from \"./SubjectDatabaseEntityLoader\";\nimport {CascadesSubjectBuilder} from \"./subject-builder/CascadesSubjectBuilder\";\nimport {OrmUtils} from \"../util/OrmUtils\";\n\n/**\n * Persists a single entity or multiple entities - saves or removes them.\n */\nexport class EntityPersistExecutor {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: Connection,\n protected queryRunner: QueryRunner|undefined,\n protected mode: \"save\"|\"remove\"|\"soft-remove\"|\"recover\",\n protected target: Function|string|undefined,\n protected entity: ObjectLiteral|ObjectLiteral[],\n protected options?: SaveOptions & RemoveOptions) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Executes persistence operation ob given entity or entities.\n */\n execute(): Promise<void> {\n\n // check if entity we are going to save is valid and is an object\n if (!this.entity || typeof this.entity !== \"object\")\n return Promise.reject(new MustBeEntityError(this.mode, this.entity));\n\n // we MUST call \"fake\" resolve here to make sure all properties of lazily loaded relations are resolved\n return Promise.resolve().then(async () => {\n\n // if query runner is already defined in this class, it means this entity manager was already created for a single connection\n // if its not defined we create a new query runner - single connection where we'll execute all our operations\n const queryRunner = this.queryRunner || this.connection.createQueryRunner();\n\n // save data in the query runner - this is useful functionality to share data from outside of the world\n // with third classes - like subscribers and listener methods\n if (this.options && this.options.data)\n queryRunner.data = this.options.data;\n\n try {\n\n // collect all operate subjects\n const entities: ObjectLiteral[] = Array.isArray(this.entity) ? this.entity : [this.entity];\n const entitiesInChunks = this.options && this.options.chunk && this.options.chunk > 0 ? OrmUtils.chunk(entities, this.options.chunk) : [entities];\n\n // console.time(\"building subject executors...\");\n const executors = await Promise.all(entitiesInChunks.map(async entities => {\n const subjects: Subject[] = [];\n\n // create subjects for all entities we received for the persistence\n entities.forEach(entity => {\n const entityTarget = this.target ? this.target : entity.constructor;\n if (entityTarget === Object)\n throw new CannotDetermineEntityError(this.mode);\n\n subjects.push(new Subject({\n metadata: this.connection.getMetadata(entityTarget),\n entity: entity,\n canBeInserted: this.mode === \"save\",\n canBeUpdated: this.mode === \"save\",\n mustBeRemoved: this.mode === \"remove\",\n canBeSoftRemoved: this.mode === \"soft-remove\",\n canBeRecovered: this.mode === \"recover\"\n }));\n });\n\n // console.time(\"building cascades...\");\n // go through each entity with metadata and create subjects and subjects by cascades for them\n const cascadesSubjectBuilder = new CascadesSubjectBuilder(subjects);\n subjects.forEach(subject => {\n // next step we build list of subjects we will operate with\n // these subjects are subjects that we need to insert or update alongside with main persisted entity\n cascadesSubjectBuilder.build(subject, this.mode);\n });\n // console.timeEnd(\"building cascades...\");\n\n // load database entities for all subjects we have\n // next step is to load database entities for all operate subjects\n // console.time(\"loading...\");\n await new SubjectDatabaseEntityLoader(queryRunner, subjects).load(this.mode);\n // console.timeEnd(\"loading...\");\n\n // console.time(\"other subjects...\");\n // build all related subjects and change maps\n if (this.mode === \"save\" || this.mode === \"soft-remove\" || this.mode === \"recover\") {\n new OneToManySubjectBuilder(subjects).build();\n new OneToOneInverseSideSubjectBuilder(subjects).build();\n new ManyToManySubjectBuilder(subjects).build();\n } else {\n subjects.forEach(subject => {\n if (subject.mustBeRemoved) {\n new ManyToManySubjectBuilder(subjects).buildForAllRemoval(subject);\n }\n });\n }\n // console.timeEnd(\"other subjects...\");\n // console.timeEnd(\"building subjects...\");\n // console.log(\"subjects\", subjects);\n\n // create a subject executor\n return new SubjectExecutor(queryRunner, subjects, this.options);\n }));\n // console.timeEnd(\"building subject executors...\");\n\n // make sure we have at least one executable operation before we create a transaction and proceed\n // if we don't have operations it means we don't really need to update or remove something\n const executorsWithExecutableOperations = executors.filter(executor => executor.hasExecutableOperations);\n if (executorsWithExecutableOperations.length === 0)\n return;\n\n // start execute queries in a transaction\n // if transaction is already opened in this query runner then we don't touch it\n // if its not opened yet then we open it here, and once we finish - we close it\n let isTransactionStartedByUs = false;\n try {\n\n // open transaction if its not opened yet\n if (!queryRunner.isTransactionActive) {\n if (!this.options || this.options.transaction !== false) { // start transaction until it was not explicitly disabled\n isTransactionStartedByUs = true;\n await queryRunner.startTransaction();\n }\n }\n\n // execute all persistence operations for all entities we have\n // console.time(\"executing subject executors...\");\n for (const executor of executorsWithExecutableOperations) {\n await executor.execute();\n }\n // console.timeEnd(\"executing subject executors...\");\n\n // commit transaction if it was started by us\n // console.time(\"commit\");\n if (isTransactionStartedByUs === true)\n await queryRunner.commitTransaction();\n // console.timeEnd(\"commit\");\n\n } catch (error) {\n\n // rollback transaction if it was started by us\n if (isTransactionStartedByUs) {\n try {\n await queryRunner.rollbackTransaction();\n } catch (rollbackError) { }\n }\n throw error;\n }\n\n } finally {\n\n // release query runner only if its created by us\n if (!this.queryRunner)\n await queryRunner.release();\n }\n });\n }\n\n}\n"],"sourceRoot":".."}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import { __read, __spread } from "tslib";
|
|
2
2
|
import { OrmUtils } from "../util/OrmUtils";
|
|
3
3
|
/**
|
|
4
4
|
* Subject is a subject of persistence.
|
|
@@ -89,7 +89,7 @@ var Subject = /** @class */ (function () {
|
|
|
89
89
|
if (options.identifier !== undefined)
|
|
90
90
|
this.identifier = options.identifier;
|
|
91
91
|
if (options.changeMaps !== undefined)
|
|
92
|
-
(_a = this.changeMaps).push.apply(_a,
|
|
92
|
+
(_a = this.changeMaps).push.apply(_a, __spread(options.changeMaps));
|
|
93
93
|
this.recompute();
|
|
94
94
|
}
|
|
95
95
|
Object.defineProperty(Subject.prototype, "mustBeInserted", {
|
|
@@ -221,7 +221,8 @@ var Subject = /** @class */ (function () {
|
|
|
221
221
|
if (this.parentSubject) {
|
|
222
222
|
this.metadata.primaryColumns.forEach(function (primaryColumn) {
|
|
223
223
|
if (primaryColumn.relationMetadata && primaryColumn.relationMetadata.inverseEntityMetadata === _this.parentSubject.metadata) {
|
|
224
|
-
primaryColumn.
|
|
224
|
+
var value = primaryColumn.referencedColumn.getEntityValue(_this.parentSubject.entity);
|
|
225
|
+
primaryColumn.setEntityValue(_this.entityWithFulfilledIds, value);
|
|
225
226
|
}
|
|
226
227
|
});
|
|
227
228
|
}
|