taon-typeorm 18.0.18 → 18.0.20
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/assets/shared/shared_folder_info.txt +1 -1
- package/browser/README.md +24 -24
- package/browser/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +1 -1
- package/browser/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +1 -1
- package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +1 -1
- package/browser/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +1 -1
- package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +1 -1
- package/browser/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +1 -1
- package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +1 -1
- package/browser/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +1 -1
- package/browser/esm2022/lib/typeorm/index.mjs +1 -3
- package/browser/fesm2022/taon-typeorm.mjs.map +1 -1
- package/client/README.md +24 -24
- package/client/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +1 -1
- package/client/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +1 -1
- package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +1 -1
- package/client/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +1 -1
- package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +1 -1
- package/client/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +1 -1
- package/client/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +1 -1
- package/client/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +1 -1
- package/client/esm2022/lib/typeorm/index.mjs +1 -3
- package/client/fesm2022/taon-typeorm.mjs.map +1 -1
- package/index.js +15 -2
- package/index.js.map +1 -1
- package/lib/build-info._auto-generated_.js.map +1 -1
- package/lib/index._auto-generated_.d.ts +1 -0
- package/lib/index._auto-generated_.js.map +1 -1
- package/lib/index.js +15 -2
- package/lib/index.js.map +1 -1
- package/lib/typeorm/cache/DbQueryResultCache.js +178 -231
- package/lib/typeorm/cache/DbQueryResultCache.js.map +1 -1
- package/lib/typeorm/cache/QueryResultCache.js.map +1 -1
- package/lib/typeorm/cache/QueryResultCacheFactory.js +11 -11
- package/lib/typeorm/cache/QueryResultCacheFactory.js.map +1 -1
- package/lib/typeorm/cache/QueryResultCacheOptions.js.map +1 -1
- package/lib/typeorm/cache/RedisQueryResultCache.js +121 -149
- package/lib/typeorm/cache/RedisQueryResultCache.js.map +1 -1
- package/lib/typeorm/cli-ts-node-commonjs.js.map +1 -1
- package/lib/typeorm/cli-ts-node-esm.js +7 -5
- package/lib/typeorm/cli-ts-node-esm.js.map +1 -1
- package/lib/typeorm/cli.d.ts +1 -1
- package/lib/typeorm/cli.js +15 -16
- package/lib/typeorm/cli.js.map +1 -1
- package/lib/typeorm/commands/CacheClearCommand.js +37 -65
- package/lib/typeorm/commands/CacheClearCommand.js.map +1 -1
- package/lib/typeorm/commands/CommandUtils.js +57 -112
- package/lib/typeorm/commands/CommandUtils.js.map +1 -1
- package/lib/typeorm/commands/EntityCreateCommand.js +35 -47
- package/lib/typeorm/commands/EntityCreateCommand.js.map +1 -1
- package/lib/typeorm/commands/InitCommand.js +397 -168
- package/lib/typeorm/commands/InitCommand.js.map +1 -1
- package/lib/typeorm/commands/MigrationCreateCommand.js +58 -52
- package/lib/typeorm/commands/MigrationCreateCommand.js.map +1 -1
- package/lib/typeorm/commands/MigrationGenerateCommand.js +141 -138
- package/lib/typeorm/commands/MigrationGenerateCommand.js.map +1 -1
- package/lib/typeorm/commands/MigrationRevertCommand.js +49 -77
- package/lib/typeorm/commands/MigrationRevertCommand.js.map +1 -1
- package/lib/typeorm/commands/MigrationRunCommand.js +52 -82
- package/lib/typeorm/commands/MigrationRunCommand.js.map +1 -1
- package/lib/typeorm/commands/MigrationShowCommand.js +32 -60
- package/lib/typeorm/commands/MigrationShowCommand.js.map +1 -1
- package/lib/typeorm/commands/QueryCommand.js +47 -83
- package/lib/typeorm/commands/QueryCommand.js.map +1 -1
- package/lib/typeorm/commands/SchemaDropCommand.js +33 -61
- package/lib/typeorm/commands/SchemaDropCommand.js.map +1 -1
- package/lib/typeorm/commands/SchemaLogCommand.js +57 -81
- package/lib/typeorm/commands/SchemaLogCommand.js.map +1 -1
- package/lib/typeorm/commands/SchemaSyncCommand.js +33 -61
- package/lib/typeorm/commands/SchemaSyncCommand.js.map +1 -1
- package/lib/typeorm/commands/SubscriberCreateCommand.js +35 -47
- package/lib/typeorm/commands/SubscriberCreateCommand.js.map +1 -1
- package/lib/typeorm/commands/VersionCommand.js +38 -54
- package/lib/typeorm/commands/VersionCommand.js.map +1 -1
- package/lib/typeorm/common/DeepPartial.js.map +1 -1
- package/lib/typeorm/common/EntityTarget.js.map +1 -1
- package/lib/typeorm/common/MixedList.js.map +1 -1
- package/lib/typeorm/common/NonNever.js.map +1 -1
- package/lib/typeorm/common/ObjectLiteral.js.map +1 -1
- package/lib/typeorm/common/ObjectType.js.map +1 -1
- package/lib/typeorm/common/RelationType.js.map +1 -1
- package/lib/typeorm/connection/BaseConnectionOptions.js.map +1 -1
- package/lib/typeorm/connection/Connection.js +3 -9
- package/lib/typeorm/connection/Connection.js.map +1 -1
- package/lib/typeorm/connection/ConnectionManager.js +23 -31
- package/lib/typeorm/connection/ConnectionManager.js.map +1 -1
- package/lib/typeorm/connection/ConnectionMetadataBuilder.js +48 -78
- package/lib/typeorm/connection/ConnectionMetadataBuilder.js.map +1 -1
- package/lib/typeorm/connection/ConnectionOptions.js.map +1 -1
- package/lib/typeorm/connection/ConnectionOptionsReader.js +146 -214
- package/lib/typeorm/connection/ConnectionOptionsReader.js.map +1 -1
- package/lib/typeorm/connection/options-reader/ConnectionOptionsEnvReader.js +50 -58
- package/lib/typeorm/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
- package/lib/typeorm/connection/options-reader/ConnectionOptionsXmlReader.js +45 -58
- package/lib/typeorm/connection/options-reader/ConnectionOptionsXmlReader.js.map +1 -1
- package/lib/typeorm/connection/options-reader/ConnectionOptionsYmlReader.js +14 -23
- package/lib/typeorm/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
- package/lib/typeorm/constants.js.map +1 -1
- package/lib/typeorm/container.js +9 -12
- package/lib/typeorm/container.js.map +1 -1
- package/lib/typeorm/data-source/BaseDataSourceOptions.js.map +1 -1
- package/lib/typeorm/data-source/DataSource.js +320 -478
- package/lib/typeorm/data-source/DataSource.js.map +1 -1
- package/lib/typeorm/data-source/DataSourceOptions.js.map +1 -1
- package/lib/typeorm/data-source/index.js +16 -3
- package/lib/typeorm/data-source/index.js.map +1 -1
- package/lib/typeorm/decorator/Check.js +5 -5
- package/lib/typeorm/decorator/Check.js.map +1 -1
- package/lib/typeorm/decorator/EntityRepository.js +1 -1
- package/lib/typeorm/decorator/EntityRepository.js.map +1 -1
- package/lib/typeorm/decorator/Exclusion.js +5 -5
- package/lib/typeorm/decorator/Exclusion.js.map +1 -1
- package/lib/typeorm/decorator/Generated.js +2 -3
- package/lib/typeorm/decorator/Generated.js.map +1 -1
- package/lib/typeorm/decorator/Index.js +5 -5
- package/lib/typeorm/decorator/Index.js.map +1 -1
- package/lib/typeorm/decorator/Unique.js +8 -8
- package/lib/typeorm/decorator/Unique.js.map +1 -1
- package/lib/typeorm/decorator/columns/Column.js +4 -4
- package/lib/typeorm/decorator/columns/Column.js.map +1 -1
- package/lib/typeorm/decorator/columns/CreateDateColumn.js +1 -1
- package/lib/typeorm/decorator/columns/CreateDateColumn.js.map +1 -1
- package/lib/typeorm/decorator/columns/DeleteDateColumn.js +1 -1
- package/lib/typeorm/decorator/columns/DeleteDateColumn.js.map +1 -1
- package/lib/typeorm/decorator/columns/ObjectIdColumn.js +1 -1
- package/lib/typeorm/decorator/columns/ObjectIdColumn.js.map +1 -1
- package/lib/typeorm/decorator/columns/PrimaryColumn.js +5 -5
- package/lib/typeorm/decorator/columns/PrimaryColumn.js.map +1 -1
- package/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.js +4 -4
- package/lib/typeorm/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
- package/lib/typeorm/decorator/columns/UpdateDateColumn.js +1 -1
- package/lib/typeorm/decorator/columns/UpdateDateColumn.js.map +1 -1
- package/lib/typeorm/decorator/columns/VersionColumn.js +1 -1
- package/lib/typeorm/decorator/columns/VersionColumn.js.map +1 -1
- package/lib/typeorm/decorator/columns/ViewColumn.js +1 -1
- package/lib/typeorm/decorator/columns/ViewColumn.js.map +1 -1
- package/lib/typeorm/decorator/columns/VirtualColumn.js +5 -5
- package/lib/typeorm/decorator/columns/VirtualColumn.js.map +1 -1
- package/lib/typeorm/decorator/entity/ChildEntity.js +1 -1
- package/lib/typeorm/decorator/entity/ChildEntity.js.map +1 -1
- package/lib/typeorm/decorator/entity/Entity.js +4 -4
- package/lib/typeorm/decorator/entity/Entity.js.map +1 -1
- package/lib/typeorm/decorator/entity/TableInheritance.js +1 -1
- package/lib/typeorm/decorator/entity/TableInheritance.js.map +1 -1
- package/lib/typeorm/decorator/entity-view/ViewEntity.js +4 -4
- package/lib/typeorm/decorator/entity-view/ViewEntity.js.map +1 -1
- package/lib/typeorm/decorator/listeners/AfterInsert.js +2 -2
- package/lib/typeorm/decorator/listeners/AfterInsert.js.map +1 -1
- package/lib/typeorm/decorator/listeners/AfterLoad.js +2 -2
- package/lib/typeorm/decorator/listeners/AfterLoad.js.map +1 -1
- package/lib/typeorm/decorator/listeners/AfterRecover.js +2 -2
- package/lib/typeorm/decorator/listeners/AfterRecover.js.map +1 -1
- package/lib/typeorm/decorator/listeners/AfterRemove.js +2 -2
- package/lib/typeorm/decorator/listeners/AfterRemove.js.map +1 -1
- package/lib/typeorm/decorator/listeners/AfterSoftRemove.js +2 -2
- package/lib/typeorm/decorator/listeners/AfterSoftRemove.js.map +1 -1
- package/lib/typeorm/decorator/listeners/AfterUpdate.js +2 -2
- package/lib/typeorm/decorator/listeners/AfterUpdate.js.map +1 -1
- package/lib/typeorm/decorator/listeners/BeforeInsert.js +2 -2
- package/lib/typeorm/decorator/listeners/BeforeInsert.js.map +1 -1
- package/lib/typeorm/decorator/listeners/BeforeRecover.js +2 -2
- package/lib/typeorm/decorator/listeners/BeforeRecover.js.map +1 -1
- package/lib/typeorm/decorator/listeners/BeforeRemove.js +2 -2
- package/lib/typeorm/decorator/listeners/BeforeRemove.js.map +1 -1
- package/lib/typeorm/decorator/listeners/BeforeSoftRemove.js +2 -2
- package/lib/typeorm/decorator/listeners/BeforeSoftRemove.js.map +1 -1
- package/lib/typeorm/decorator/listeners/BeforeUpdate.js +2 -2
- package/lib/typeorm/decorator/listeners/BeforeUpdate.js.map +1 -1
- package/lib/typeorm/decorator/listeners/EventSubscriber.js +1 -1
- package/lib/typeorm/decorator/listeners/EventSubscriber.js.map +1 -1
- package/lib/typeorm/decorator/options/ColumnCommonOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ColumnEmbeddedOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ColumnEnumOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ColumnHstoreOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ColumnNumericOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ColumnOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ColumnWithLengthOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ColumnWithWidthOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/EntityOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/IndexOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/JoinColumnOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/JoinTableMultipleColumnsOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/JoinTableOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/PrimaryGeneratedColumnIdentityOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/PrimaryGeneratedColumnNumericOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/PrimaryGeneratedColumnUUIDOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/RelationOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/SpatialColumnOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/TransactionOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/UniqueOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ValueTransformer.js.map +1 -1
- package/lib/typeorm/decorator/options/ViewColumnOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/ViewEntityOptions.js.map +1 -1
- package/lib/typeorm/decorator/options/VirtualColumnOptions.js.map +1 -1
- package/lib/typeorm/decorator/relations/JoinColumn.js +3 -3
- package/lib/typeorm/decorator/relations/JoinColumn.js.map +1 -1
- package/lib/typeorm/decorator/relations/JoinTable.js +1 -1
- package/lib/typeorm/decorator/relations/JoinTable.js.map +1 -1
- package/lib/typeorm/decorator/relations/ManyToMany.js +5 -5
- package/lib/typeorm/decorator/relations/ManyToMany.js.map +1 -1
- package/lib/typeorm/decorator/relations/ManyToOne.js +5 -5
- package/lib/typeorm/decorator/relations/ManyToOne.js.map +1 -1
- package/lib/typeorm/decorator/relations/OneToMany.js +3 -3
- package/lib/typeorm/decorator/relations/OneToMany.js.map +1 -1
- package/lib/typeorm/decorator/relations/OneToOne.js +5 -5
- package/lib/typeorm/decorator/relations/OneToOne.js.map +1 -1
- package/lib/typeorm/decorator/relations/RelationCount.js +1 -1
- package/lib/typeorm/decorator/relations/RelationCount.js.map +1 -1
- package/lib/typeorm/decorator/relations/RelationId.js +1 -1
- package/lib/typeorm/decorator/relations/RelationId.js.map +1 -1
- package/lib/typeorm/decorator/tree/Tree.js +1 -1
- package/lib/typeorm/decorator/tree/Tree.js.map +1 -1
- package/lib/typeorm/decorator/tree/TreeChildren.js +4 -4
- package/lib/typeorm/decorator/tree/TreeChildren.js.map +1 -1
- package/lib/typeorm/decorator/tree/TreeLevelColumn.js +1 -1
- package/lib/typeorm/decorator/tree/TreeLevelColumn.js.map +1 -1
- package/lib/typeorm/decorator/tree/TreeParent.js +4 -4
- package/lib/typeorm/decorator/tree/TreeParent.js.map +1 -1
- package/lib/typeorm/driver/Driver.js.map +1 -1
- package/lib/typeorm/driver/DriverFactory.js +24 -27
- package/lib/typeorm/driver/DriverFactory.js.map +1 -1
- package/lib/typeorm/driver/DriverUtils.js +78 -126
- package/lib/typeorm/driver/DriverUtils.js.map +1 -1
- package/lib/typeorm/driver/Query.js +6 -5
- package/lib/typeorm/driver/Query.js.map +1 -1
- package/lib/typeorm/driver/SqlInMemory.js +4 -7
- package/lib/typeorm/driver/SqlInMemory.js.map +1 -1
- package/lib/typeorm/driver/aurora-mysql/AuroraMysqlConnection.js +9 -12
- package/lib/typeorm/driver/aurora-mysql/AuroraMysqlConnection.js.map +1 -1
- package/lib/typeorm/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js.map +1 -1
- package/lib/typeorm/driver/aurora-mysql/AuroraMysqlConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/aurora-mysql/AuroraMysqlDriver.js +392 -399
- package/lib/typeorm/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/lib/typeorm/driver/aurora-mysql/AuroraMysqlQueryRunner.js +1320 -2084
- package/lib/typeorm/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/aurora-postgres/AuroraPostgresConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/aurora-postgres/AuroraPostgresDriver.js +50 -78
- package/lib/typeorm/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
- package/lib/typeorm/driver/aurora-postgres/AuroraPostgresQueryRunner.js +89 -160
- package/lib/typeorm/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/better-sqlite3/BetterSqlite3Driver.js +78 -152
- package/lib/typeorm/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
- package/lib/typeorm/driver/better-sqlite3/BetterSqlite3QueryRunner.js +96 -155
- package/lib/typeorm/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
- package/lib/typeorm/driver/capacitor/CapacitorConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/capacitor/CapacitorDriver.js +44 -89
- package/lib/typeorm/driver/capacitor/CapacitorDriver.js.map +1 -1
- package/lib/typeorm/driver/capacitor/CapacitorQueryRunner.js +70 -122
- package/lib/typeorm/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/cockroachdb/CockroachConnectionCredentialsOptions.js.map +1 -1
- package/lib/typeorm/driver/cockroachdb/CockroachConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/cockroachdb/CockroachDriver.js +368 -404
- package/lib/typeorm/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/lib/typeorm/driver/cockroachdb/CockroachQueryRunner.js +1752 -2862
- package/lib/typeorm/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/cordova/CordovaConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/cordova/CordovaDriver.js +36 -58
- package/lib/typeorm/driver/cordova/CordovaDriver.js.map +1 -1
- package/lib/typeorm/driver/cordova/CordovaQueryRunner.js +86 -164
- package/lib/typeorm/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/expo/ExpoConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/expo/ExpoDriver.js +34 -44
- package/lib/typeorm/driver/expo/ExpoDriver.js.map +1 -1
- package/lib/typeorm/driver/expo/ExpoQueryRunner.js +114 -204
- package/lib/typeorm/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/mongodb/MongoConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/mongodb/MongoDriver.js +269 -243
- package/lib/typeorm/driver/mongodb/MongoDriver.js.map +1 -1
- package/lib/typeorm/driver/mongodb/MongoQueryRunner.js +357 -793
- package/lib/typeorm/driver/mongodb/MongoQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/mongodb/typings.js.map +1 -1
- package/lib/typeorm/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
- package/lib/typeorm/driver/mysql/MysqlConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/mysql/MysqlDriver.js +475 -480
- package/lib/typeorm/driver/mysql/MysqlDriver.js.map +1 -1
- package/lib/typeorm/driver/mysql/MysqlQueryRunner.js +1692 -2466
- package/lib/typeorm/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/nativescript/NativescriptConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/nativescript/NativescriptDriver.js +46 -50
- package/lib/typeorm/driver/nativescript/NativescriptDriver.js.map +1 -1
- package/lib/typeorm/driver/nativescript/NativescriptQueryRunner.js +62 -101
- package/lib/typeorm/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/oracle/OracleConnectionCredentialsOptions.js.map +1 -1
- package/lib/typeorm/driver/oracle/OracleConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/oracle/OracleDriver.js +345 -377
- package/lib/typeorm/driver/oracle/OracleDriver.js.map +1 -1
- package/lib/typeorm/driver/oracle/OracleQueryRunner.js +1484 -2384
- package/lib/typeorm/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/postgres/PostgresConnectionCredentialsOptions.js.map +1 -1
- package/lib/typeorm/driver/postgres/PostgresConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/postgres/PostgresDriver.js +574 -690
- package/lib/typeorm/driver/postgres/PostgresDriver.js.map +1 -1
- package/lib/typeorm/driver/postgres/PostgresQueryRunner.js +2153 -3379
- package/lib/typeorm/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/react-native/ReactNativeConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/react-native/ReactNativeDriver.js +34 -44
- package/lib/typeorm/driver/react-native/ReactNativeDriver.js.map +1 -1
- package/lib/typeorm/driver/react-native/ReactNativeQueryRunner.js +60 -94
- package/lib/typeorm/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/sap/SapConnectionCredentialsOptions.js.map +1 -1
- package/lib/typeorm/driver/sap/SapConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/sap/SapDriver.js +310 -305
- package/lib/typeorm/driver/sap/SapDriver.js.map +1 -1
- package/lib/typeorm/driver/sap/SapQueryRunner.js +1635 -2561
- package/lib/typeorm/driver/sap/SapQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/spanner/SpannerConnectionCredentialsOptions.js.map +1 -1
- package/lib/typeorm/driver/spanner/SpannerConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/spanner/SpannerDriver.js +250 -236
- package/lib/typeorm/driver/spanner/SpannerDriver.js.map +1 -1
- package/lib/typeorm/driver/spanner/SpannerQueryRunner.js +1136 -2168
- package/lib/typeorm/driver/spanner/SpannerQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/sqlite/SqliteConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/sqlite/SqliteDriver.js +82 -169
- package/lib/typeorm/driver/sqlite/SqliteDriver.js.map +1 -1
- package/lib/typeorm/driver/sqlite/SqliteQueryRunner.js +78 -122
- package/lib/typeorm/driver/sqlite/SqliteQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.js +280 -268
- package/lib/typeorm/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +1158 -1990
- package/lib/typeorm/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/sqljs/SqljsConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/sqljs/SqljsDriver.js +187 -253
- package/lib/typeorm/driver/sqljs/SqljsDriver.js.map +1 -1
- package/lib/typeorm/driver/sqljs/SqljsQueryRunner.js +88 -147
- package/lib/typeorm/driver/sqljs/SqljsQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/MssqlParameter.js +10 -13
- package/lib/typeorm/driver/sqlserver/MssqlParameter.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/SqlServerConnectionOptions.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/SqlServerDriver.js +352 -372
- package/lib/typeorm/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/SqlServerQueryRunner.js +1979 -3068
- package/lib/typeorm/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/authentication/DefaultAuthentication.js.map +1 -1
- package/lib/typeorm/driver/sqlserver/authentication/NtlmAuthentication.js.map +1 -1
- package/lib/typeorm/driver/types/ColumnTypes.js.map +1 -1
- package/lib/typeorm/driver/types/CteCapabilities.js.map +1 -1
- package/lib/typeorm/driver/types/DataTypeDefaults.js.map +1 -1
- package/lib/typeorm/driver/types/DatabaseType.js.map +1 -1
- package/lib/typeorm/driver/types/IsolationLevel.js.map +1 -1
- package/lib/typeorm/driver/types/MappedColumnTypes.js.map +1 -1
- package/lib/typeorm/driver/types/MetadataTableType.js.map +1 -1
- package/lib/typeorm/driver/types/ReplicationMode.js.map +1 -1
- package/lib/typeorm/driver/types/UpsertType.js.map +1 -1
- package/lib/typeorm/entity-manager/EntityManager.js +351 -469
- package/lib/typeorm/entity-manager/EntityManager.js.map +1 -1
- package/lib/typeorm/entity-manager/EntityManagerFactory.js +7 -10
- package/lib/typeorm/entity-manager/EntityManagerFactory.js.map +1 -1
- package/lib/typeorm/entity-manager/MongoEntityManager.js +371 -487
- package/lib/typeorm/entity-manager/MongoEntityManager.js.map +1 -1
- package/lib/typeorm/entity-manager/SqljsEntityManager.js +16 -37
- package/lib/typeorm/entity-manager/SqljsEntityManager.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchema.js +5 -5
- package/lib/typeorm/entity-schema/EntitySchema.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaCheckOptions.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.js +17 -5
- package/lib/typeorm/entity-schema/EntitySchemaEmbeddedColumnOptions.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.js +11 -14
- package/lib/typeorm/entity-schema/EntitySchemaEmbeddedError.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaExclusionOptions.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaIndexOptions.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaOptions.js +82 -5
- package/lib/typeorm/entity-schema/EntitySchemaOptions.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaRelationIdOptions.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaRelationOptions.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaTransformer.js +51 -68
- package/lib/typeorm/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/lib/typeorm/entity-schema/EntitySchemaUniqueOptions.js.map +1 -1
- package/lib/typeorm/error/AlreadyHasActiveConnectionError.js +6 -9
- package/lib/typeorm/error/AlreadyHasActiveConnectionError.js.map +1 -1
- package/lib/typeorm/error/CannotAttachTreeChildrenEntityError.js +6 -9
- package/lib/typeorm/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
- package/lib/typeorm/error/CannotConnectAlreadyConnectedError.js +5 -8
- package/lib/typeorm/error/CannotConnectAlreadyConnectedError.js.map +1 -1
- package/lib/typeorm/error/CannotCreateEntityIdMapError.js +7 -11
- package/lib/typeorm/error/CannotCreateEntityIdMapError.js.map +1 -1
- package/lib/typeorm/error/CannotDetermineEntityError.js +6 -9
- package/lib/typeorm/error/CannotDetermineEntityError.js.map +1 -1
- package/lib/typeorm/error/CannotExecuteNotConnectedError.js +5 -8
- package/lib/typeorm/error/CannotExecuteNotConnectedError.js.map +1 -1
- package/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.js +5 -8
- package/lib/typeorm/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
- package/lib/typeorm/error/CannotReflectMethodParameterTypeError.js +7 -10
- package/lib/typeorm/error/CannotReflectMethodParameterTypeError.js.map +1 -1
- package/lib/typeorm/error/CircularRelationsError.js +6 -9
- package/lib/typeorm/error/CircularRelationsError.js.map +1 -1
- package/lib/typeorm/error/ColumnTypeUndefinedError.js +8 -11
- package/lib/typeorm/error/ColumnTypeUndefinedError.js.map +1 -1
- package/lib/typeorm/error/ConnectionIsNotSetError.js +5 -8
- package/lib/typeorm/error/ConnectionIsNotSetError.js.map +1 -1
- package/lib/typeorm/error/ConnectionNotFoundError.js +5 -8
- package/lib/typeorm/error/ConnectionNotFoundError.js.map +1 -1
- package/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.js +7 -10
- package/lib/typeorm/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
- package/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.js +7 -10
- package/lib/typeorm/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
- package/lib/typeorm/error/CustomRepositoryNotFoundError.js +7 -10
- package/lib/typeorm/error/CustomRepositoryNotFoundError.js.map +1 -1
- package/lib/typeorm/error/DataTypeNotSupportedError.js +7 -11
- package/lib/typeorm/error/DataTypeNotSupportedError.js.map +1 -1
- package/lib/typeorm/error/DriverOptionNotSetError.js +6 -9
- package/lib/typeorm/error/DriverOptionNotSetError.js.map +1 -1
- package/lib/typeorm/error/DriverPackageNotInstalledError.js +6 -9
- package/lib/typeorm/error/DriverPackageNotInstalledError.js.map +1 -1
- package/lib/typeorm/error/EntityMetadataNotFoundError.js +10 -14
- package/lib/typeorm/error/EntityMetadataNotFoundError.js.map +1 -1
- package/lib/typeorm/error/EntityNotFoundError.js +13 -17
- package/lib/typeorm/error/EntityNotFoundError.js.map +1 -1
- package/lib/typeorm/error/EntityPropertyNotFoundError.js +7 -11
- package/lib/typeorm/error/EntityPropertyNotFoundError.js.map +1 -1
- package/lib/typeorm/error/FindRelationsNotFoundError.js +9 -13
- package/lib/typeorm/error/FindRelationsNotFoundError.js.map +1 -1
- package/lib/typeorm/error/ForbiddenTransactionModeOverrideError.js +6 -9
- package/lib/typeorm/error/ForbiddenTransactionModeOverrideError.js.map +1 -1
- package/lib/typeorm/error/InitializedRelationError.js +7 -10
- package/lib/typeorm/error/InitializedRelationError.js.map +1 -1
- package/lib/typeorm/error/InsertValuesMissingError.js +6 -9
- package/lib/typeorm/error/InsertValuesMissingError.js.map +1 -1
- package/lib/typeorm/error/LimitOnUpdateNotSupportedError.js +5 -8
- package/lib/typeorm/error/LimitOnUpdateNotSupportedError.js.map +1 -1
- package/lib/typeorm/error/LockNotSupportedOnGivenDriverError.js +5 -8
- package/lib/typeorm/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
- package/lib/typeorm/error/MetadataAlreadyExistsError.js +6 -9
- package/lib/typeorm/error/MetadataAlreadyExistsError.js.map +1 -1
- package/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.js +6 -9
- package/lib/typeorm/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
- package/lib/typeorm/error/MissingDeleteDateColumnError.js +5 -8
- package/lib/typeorm/error/MissingDeleteDateColumnError.js.map +1 -1
- package/lib/typeorm/error/MissingDriverError.js +6 -10
- package/lib/typeorm/error/MissingDriverError.js.map +1 -1
- package/lib/typeorm/error/MissingJoinColumnError.js +12 -16
- package/lib/typeorm/error/MissingJoinColumnError.js.map +1 -1
- package/lib/typeorm/error/MissingJoinTableError.js +12 -16
- package/lib/typeorm/error/MissingJoinTableError.js.map +1 -1
- package/lib/typeorm/error/MissingPrimaryColumnError.js +6 -9
- package/lib/typeorm/error/MissingPrimaryColumnError.js.map +1 -1
- package/lib/typeorm/error/MustBeEntityError.js +5 -8
- package/lib/typeorm/error/MustBeEntityError.js.map +1 -1
- package/lib/typeorm/error/NamingStrategyNotFoundError.js +9 -13
- package/lib/typeorm/error/NamingStrategyNotFoundError.js.map +1 -1
- package/lib/typeorm/error/NestedSetMultipleRootError.js +5 -8
- package/lib/typeorm/error/NestedSetMultipleRootError.js.map +1 -1
- package/lib/typeorm/error/NoConnectionForRepositoryError.js +6 -9
- package/lib/typeorm/error/NoConnectionForRepositoryError.js.map +1 -1
- package/lib/typeorm/error/NoConnectionOptionError.js +6 -9
- package/lib/typeorm/error/NoConnectionOptionError.js.map +1 -1
- package/lib/typeorm/error/NoNeedToReleaseEntityManagerError.js +7 -10
- package/lib/typeorm/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
- package/lib/typeorm/error/NoVersionOrUpdateDateColumnError.js +5 -8
- package/lib/typeorm/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
- package/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.js +7 -10
- package/lib/typeorm/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
- package/lib/typeorm/error/OptimisticLockCanNotBeUsedError.js +5 -8
- package/lib/typeorm/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
- package/lib/typeorm/error/OptimisticLockVersionMismatchError.js +5 -8
- package/lib/typeorm/error/OptimisticLockVersionMismatchError.js.map +1 -1
- package/lib/typeorm/error/PersistedEntityNotFoundError.js +5 -8
- package/lib/typeorm/error/PersistedEntityNotFoundError.js.map +1 -1
- package/lib/typeorm/error/PessimisticLockTransactionRequiredError.js +5 -8
- package/lib/typeorm/error/PessimisticLockTransactionRequiredError.js.map +1 -1
- package/lib/typeorm/error/PrimaryColumnCannotBeNullableError.js +6 -9
- package/lib/typeorm/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
- package/lib/typeorm/error/QueryFailedError.js +18 -17
- package/lib/typeorm/error/QueryFailedError.js.map +1 -1
- package/lib/typeorm/error/QueryRunnerAlreadyReleasedError.js +5 -8
- package/lib/typeorm/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
- package/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.js +6 -9
- package/lib/typeorm/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
- package/lib/typeorm/error/RepositoryNotTreeError.js +9 -13
- package/lib/typeorm/error/RepositoryNotTreeError.js.map +1 -1
- package/lib/typeorm/error/ReturningStatementNotSupportedError.js +5 -8
- package/lib/typeorm/error/ReturningStatementNotSupportedError.js.map +1 -1
- package/lib/typeorm/error/SubjectRemovedAndUpdatedError.js +6 -9
- package/lib/typeorm/error/SubjectRemovedAndUpdatedError.js.map +1 -1
- package/lib/typeorm/error/SubjectWithoutIdentifierError.js +5 -8
- package/lib/typeorm/error/SubjectWithoutIdentifierError.js.map +1 -1
- package/lib/typeorm/error/TransactionAlreadyStartedError.js +5 -8
- package/lib/typeorm/error/TransactionAlreadyStartedError.js.map +1 -1
- package/lib/typeorm/error/TransactionNotStartedError.js +5 -8
- package/lib/typeorm/error/TransactionNotStartedError.js.map +1 -1
- package/lib/typeorm/error/TreeRepositoryNotSupportedError.js +5 -8
- package/lib/typeorm/error/TreeRepositoryNotSupportedError.js.map +1 -1
- package/lib/typeorm/error/TypeORMError.js +9 -18
- package/lib/typeorm/error/TypeORMError.js.map +1 -1
- package/lib/typeorm/error/UpdateValuesMissingError.js +5 -8
- package/lib/typeorm/error/UpdateValuesMissingError.js.map +1 -1
- package/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.js +6 -9
- package/lib/typeorm/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
- package/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.js +7 -10
- package/lib/typeorm/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
- package/lib/typeorm/error/UsingJoinTableIsNotAllowedError.js +7 -10
- package/lib/typeorm/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
- package/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.js +7 -10
- package/lib/typeorm/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
- package/lib/typeorm/error/index.js +75 -62
- package/lib/typeorm/error/index.js.map +1 -1
- package/lib/typeorm/find-options/EqualOperator.js +6 -10
- package/lib/typeorm/find-options/EqualOperator.js.map +1 -1
- package/lib/typeorm/find-options/FindManyOptions.js.map +1 -1
- package/lib/typeorm/find-options/FindOneOptions.js.map +1 -1
- package/lib/typeorm/find-options/FindOperator.js +90 -94
- package/lib/typeorm/find-options/FindOperator.js.map +1 -1
- package/lib/typeorm/find-options/FindOperatorType.js.map +1 -1
- package/lib/typeorm/find-options/FindOptionsOrder.js.map +1 -1
- package/lib/typeorm/find-options/FindOptionsRelations.js.map +1 -1
- package/lib/typeorm/find-options/FindOptionsSelect.js.map +1 -1
- package/lib/typeorm/find-options/FindOptionsUtils.js +56 -87
- package/lib/typeorm/find-options/FindOptionsUtils.js.map +1 -1
- package/lib/typeorm/find-options/FindOptionsWhere.js.map +1 -1
- package/lib/typeorm/find-options/FindTreeOptions.js.map +1 -1
- package/lib/typeorm/find-options/JoinOptions.js.map +1 -1
- package/lib/typeorm/find-options/OrderByCondition.js.map +1 -1
- package/lib/typeorm/find-options/mongodb/MongoFindManyOptions.js.map +1 -1
- package/lib/typeorm/find-options/mongodb/MongoFindOneOptions.js.map +1 -1
- package/lib/typeorm/find-options/operator/And.js +2 -6
- package/lib/typeorm/find-options/operator/And.js.map +1 -1
- package/lib/typeorm/find-options/operator/Any.js +1 -1
- package/lib/typeorm/find-options/operator/Any.js.map +1 -1
- package/lib/typeorm/find-options/operator/ArrayContainedBy.js +1 -1
- package/lib/typeorm/find-options/operator/ArrayContainedBy.js.map +1 -1
- package/lib/typeorm/find-options/operator/ArrayContains.js +1 -1
- package/lib/typeorm/find-options/operator/ArrayContains.js.map +1 -1
- package/lib/typeorm/find-options/operator/ArrayOverlap.js +1 -1
- package/lib/typeorm/find-options/operator/ArrayOverlap.js.map +1 -1
- package/lib/typeorm/find-options/operator/Between.js +1 -1
- package/lib/typeorm/find-options/operator/Between.js.map +1 -1
- package/lib/typeorm/find-options/operator/Equal.js +1 -1
- package/lib/typeorm/find-options/operator/Equal.js.map +1 -1
- package/lib/typeorm/find-options/operator/ILike.js +1 -1
- package/lib/typeorm/find-options/operator/ILike.js.map +1 -1
- package/lib/typeorm/find-options/operator/In.js +1 -1
- package/lib/typeorm/find-options/operator/In.js.map +1 -1
- package/lib/typeorm/find-options/operator/IsNull.js +1 -1
- package/lib/typeorm/find-options/operator/IsNull.js.map +1 -1
- package/lib/typeorm/find-options/operator/LessThan.js +1 -1
- package/lib/typeorm/find-options/operator/LessThan.js.map +1 -1
- package/lib/typeorm/find-options/operator/LessThanOrEqual.js +1 -1
- package/lib/typeorm/find-options/operator/LessThanOrEqual.js.map +1 -1
- package/lib/typeorm/find-options/operator/Like.js +1 -1
- package/lib/typeorm/find-options/operator/Like.js.map +1 -1
- package/lib/typeorm/find-options/operator/MoreThan.js +1 -1
- package/lib/typeorm/find-options/operator/MoreThan.js.map +1 -1
- package/lib/typeorm/find-options/operator/MoreThanOrEqual.js +1 -1
- package/lib/typeorm/find-options/operator/MoreThanOrEqual.js.map +1 -1
- package/lib/typeorm/find-options/operator/Not.js +1 -1
- package/lib/typeorm/find-options/operator/Not.js.map +1 -1
- package/lib/typeorm/find-options/operator/Raw.js +1 -1
- package/lib/typeorm/find-options/operator/Raw.js.map +1 -1
- package/lib/typeorm/globals.js +33 -99
- package/lib/typeorm/globals.js.map +1 -1
- package/lib/typeorm/index.d.ts +0 -1
- package/lib/typeorm/index.js +136 -126
- package/lib/typeorm/index.js.map +1 -1
- package/lib/typeorm/logger/AdvancedConsoleLogger.js +26 -26
- package/lib/typeorm/logger/AdvancedConsoleLogger.js.map +1 -1
- package/lib/typeorm/logger/DebugLogger.js +24 -27
- package/lib/typeorm/logger/DebugLogger.js.map +1 -1
- package/lib/typeorm/logger/FileLogger.js +31 -30
- package/lib/typeorm/logger/FileLogger.js.map +1 -1
- package/lib/typeorm/logger/Logger.js.map +1 -1
- package/lib/typeorm/logger/LoggerFactory.js +9 -12
- package/lib/typeorm/logger/LoggerFactory.js.map +1 -1
- package/lib/typeorm/logger/LoggerOptions.js.map +1 -1
- package/lib/typeorm/logger/SimpleConsoleLogger.js +25 -25
- package/lib/typeorm/logger/SimpleConsoleLogger.js.map +1 -1
- package/lib/typeorm/metadata/CheckMetadata.js +30 -6
- package/lib/typeorm/metadata/CheckMetadata.js.map +1 -1
- package/lib/typeorm/metadata/ColumnMetadata.js +343 -199
- package/lib/typeorm/metadata/ColumnMetadata.js.map +1 -1
- package/lib/typeorm/metadata/EmbeddedMetadata.js +174 -153
- package/lib/typeorm/metadata/EmbeddedMetadata.js.map +1 -1
- package/lib/typeorm/metadata/EntityListenerMetadata.js +35 -15
- package/lib/typeorm/metadata/EntityListenerMetadata.js.map +1 -1
- package/lib/typeorm/metadata/EntityMetadata.js +516 -372
- package/lib/typeorm/metadata/EntityMetadata.js.map +1 -1
- package/lib/typeorm/metadata/ExclusionMetadata.js +30 -6
- package/lib/typeorm/metadata/ExclusionMetadata.js.map +1 -1
- package/lib/typeorm/metadata/ForeignKeyMetadata.js +60 -24
- package/lib/typeorm/metadata/ForeignKeyMetadata.js.map +1 -1
- package/lib/typeorm/metadata/IndexMetadata.js +119 -73
- package/lib/typeorm/metadata/IndexMetadata.js.map +1 -1
- package/lib/typeorm/metadata/RelationCountMetadata.js +40 -10
- package/lib/typeorm/metadata/RelationCountMetadata.js.map +1 -1
- package/lib/typeorm/metadata/RelationIdMetadata.js +47 -18
- package/lib/typeorm/metadata/RelationIdMetadata.js.map +1 -1
- package/lib/typeorm/metadata/RelationMetadata.js +270 -187
- package/lib/typeorm/metadata/RelationMetadata.js.map +1 -1
- package/lib/typeorm/metadata/UniqueMetadata.js +72 -47
- package/lib/typeorm/metadata/UniqueMetadata.js.map +1 -1
- package/lib/typeorm/metadata/types/ClosureTreeOptions.js.map +1 -1
- package/lib/typeorm/metadata/types/DeferrableType.js.map +1 -1
- package/lib/typeorm/metadata/types/EventListenerTypes.js +13 -16
- package/lib/typeorm/metadata/types/EventListenerTypes.js.map +1 -1
- package/lib/typeorm/metadata/types/OnDeleteType.js.map +1 -1
- package/lib/typeorm/metadata/types/OnUpdateType.js.map +1 -1
- package/lib/typeorm/metadata/types/PropertyTypeInFunction.js.map +1 -1
- package/lib/typeorm/metadata/types/RelationTypeInFunction.js.map +1 -1
- package/lib/typeorm/metadata/types/RelationTypes.js.map +1 -1
- package/lib/typeorm/metadata/types/TableTypes.js.map +1 -1
- package/lib/typeorm/metadata/types/TreeTypes.js.map +1 -1
- package/lib/typeorm/metadata-args/CheckMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/ColumnMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/DiscriminatorValueMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/EmbeddedMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/EntityListenerMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/EntityRepositoryMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/EntitySubscriberMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/ExclusionMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/GeneratedMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/IndexMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/InheritanceMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/JoinColumnMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/JoinTableMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/MetadataArgsStorage.js +108 -113
- package/lib/typeorm/metadata-args/MetadataArgsStorage.js.map +1 -1
- package/lib/typeorm/metadata-args/NamingStrategyMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/RelationCountMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/RelationIdMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/RelationMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/TableMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/TransactionEntityMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/TransactionRepositoryMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/TreeMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/UniqueMetadataArgs.js.map +1 -1
- package/lib/typeorm/metadata-args/types/ColumnMode.js.map +1 -1
- package/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +14 -15
- package/lib/typeorm/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
- package/lib/typeorm/metadata-builder/EntityMetadataBuilder.js +291 -347
- package/lib/typeorm/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/lib/typeorm/metadata-builder/EntityMetadataValidator.js +63 -77
- package/lib/typeorm/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.js +64 -69
- package/lib/typeorm/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/lib/typeorm/metadata-builder/MetadataUtils.js +12 -15
- package/lib/typeorm/metadata-builder/MetadataUtils.js.map +1 -1
- package/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.js +43 -49
- package/lib/typeorm/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/lib/typeorm/migration/Migration.js +23 -4
- package/lib/typeorm/migration/Migration.js.map +1 -1
- package/lib/typeorm/migration/MigrationExecutor.js +432 -691
- package/lib/typeorm/migration/MigrationExecutor.js.map +1 -1
- package/lib/typeorm/migration/MigrationInterface.js.map +1 -1
- package/lib/typeorm/naming-strategy/DefaultNamingStrategy.js +80 -84
- package/lib/typeorm/naming-strategy/DefaultNamingStrategy.js.map +1 -1
- package/lib/typeorm/naming-strategy/NamingStrategyInterface.js.map +1 -1
- package/lib/typeorm/persistence/EntityPersistExecutor.js +154 -212
- package/lib/typeorm/persistence/EntityPersistExecutor.js.map +1 -1
- package/lib/typeorm/persistence/Subject.js +162 -149
- package/lib/typeorm/persistence/Subject.js.map +1 -1
- package/lib/typeorm/persistence/SubjectChangeMap.js.map +1 -1
- package/lib/typeorm/persistence/SubjectChangedColumnsComputer.js +29 -35
- package/lib/typeorm/persistence/SubjectChangedColumnsComputer.js.map +1 -1
- package/lib/typeorm/persistence/SubjectDatabaseEntityLoader.js +99 -130
- package/lib/typeorm/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/lib/typeorm/persistence/SubjectExecutor.js +635 -879
- package/lib/typeorm/persistence/SubjectExecutor.js.map +1 -1
- package/lib/typeorm/persistence/SubjectTopoligicalSorter.js +62 -58
- package/lib/typeorm/persistence/SubjectTopoligicalSorter.js.map +1 -1
- package/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.js +16 -19
- package/lib/typeorm/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
- package/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.js +50 -53
- package/lib/typeorm/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
- package/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.js +28 -33
- package/lib/typeorm/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
- package/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +19 -20
- package/lib/typeorm/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
- package/lib/typeorm/persistence/tree/ClosureSubjectExecutor.js +202 -271
- package/lib/typeorm/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
- package/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.js +79 -121
- package/lib/typeorm/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
- package/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.js +220 -353
- package/lib/typeorm/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
- package/lib/typeorm/platform/PlatformTools.js +66 -78
- package/lib/typeorm/platform/PlatformTools.js.map +1 -1
- package/lib/typeorm/query-builder/Alias.js +31 -32
- package/lib/typeorm/query-builder/Alias.js.map +1 -1
- package/lib/typeorm/query-builder/Brackets.js +8 -5
- package/lib/typeorm/query-builder/Brackets.js.map +1 -1
- package/lib/typeorm/query-builder/DeleteQueryBuilder.js +96 -120
- package/lib/typeorm/query-builder/DeleteQueryBuilder.js.map +1 -1
- package/lib/typeorm/query-builder/InsertOrUpdateOptions.js.map +1 -1
- package/lib/typeorm/query-builder/InsertQueryBuilder.js +321 -367
- package/lib/typeorm/query-builder/InsertQueryBuilder.js.map +1 -1
- package/lib/typeorm/query-builder/JoinAttribute.js +175 -206
- package/lib/typeorm/query-builder/JoinAttribute.js.map +1 -1
- package/lib/typeorm/query-builder/JoinOptions.js.map +1 -1
- package/lib/typeorm/query-builder/NotBrackets.js +4 -11
- package/lib/typeorm/query-builder/NotBrackets.js.map +1 -1
- package/lib/typeorm/query-builder/QueryBuilder.js +400 -646
- package/lib/typeorm/query-builder/QueryBuilder.js.map +1 -1
- package/lib/typeorm/query-builder/QueryBuilderCte.js.map +1 -1
- package/lib/typeorm/query-builder/QueryBuilderUtils.js +5 -9
- package/lib/typeorm/query-builder/QueryBuilderUtils.js.map +1 -1
- package/lib/typeorm/query-builder/QueryExpressionMap.js +304 -233
- package/lib/typeorm/query-builder/QueryExpressionMap.js.map +1 -1
- package/lib/typeorm/query-builder/QueryPartialEntity.js.map +1 -1
- package/lib/typeorm/query-builder/RelationIdLoader.js +166 -189
- package/lib/typeorm/query-builder/RelationIdLoader.js.map +1 -1
- package/lib/typeorm/query-builder/RelationLoader.js +81 -94
- package/lib/typeorm/query-builder/RelationLoader.js.map +1 -1
- package/lib/typeorm/query-builder/RelationQueryBuilder.js +91 -127
- package/lib/typeorm/query-builder/RelationQueryBuilder.js.map +1 -1
- package/lib/typeorm/query-builder/RelationRemover.js +121 -124
- package/lib/typeorm/query-builder/RelationRemover.js.map +1 -1
- package/lib/typeorm/query-builder/RelationUpdater.js +130 -148
- package/lib/typeorm/query-builder/RelationUpdater.js.map +1 -1
- package/lib/typeorm/query-builder/ReturningResultsEntityUpdator.js +131 -159
- package/lib/typeorm/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
- package/lib/typeorm/query-builder/SelectQuery.js.map +1 -1
- package/lib/typeorm/query-builder/SelectQueryBuilder.js +955 -1211
- package/lib/typeorm/query-builder/SelectQueryBuilder.js.map +1 -1
- package/lib/typeorm/query-builder/SelectQueryBuilderOption.js.map +1 -1
- package/lib/typeorm/query-builder/SoftDeleteQueryBuilder.js +155 -194
- package/lib/typeorm/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/lib/typeorm/query-builder/UpdateQueryBuilder.js +204 -246
- package/lib/typeorm/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/lib/typeorm/query-builder/WhereClause.js.map +1 -1
- package/lib/typeorm/query-builder/WhereExpressionBuilder.js.map +1 -1
- package/lib/typeorm/query-builder/relation-count/RelationCountAttribute.js +85 -98
- package/lib/typeorm/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
- package/lib/typeorm/query-builder/relation-count/RelationCountLoadResult.js.map +1 -1
- package/lib/typeorm/query-builder/relation-count/RelationCountLoader.js +153 -172
- package/lib/typeorm/query-builder/relation-count/RelationCountLoader.js.map +1 -1
- package/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js +16 -17
- package/lib/typeorm/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
- package/lib/typeorm/query-builder/relation-id/RelationIdAttribute.js +93 -107
- package/lib/typeorm/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
- package/lib/typeorm/query-builder/relation-id/RelationIdLoadResult.js.map +1 -1
- package/lib/typeorm/query-builder/relation-id/RelationIdLoader.js +259 -267
- package/lib/typeorm/query-builder/relation-id/RelationIdLoader.js.map +1 -1
- package/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js +16 -17
- package/lib/typeorm/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
- package/lib/typeorm/query-builder/result/DeleteResult.js +14 -8
- package/lib/typeorm/query-builder/result/DeleteResult.js.map +1 -1
- package/lib/typeorm/query-builder/result/InsertResult.js +19 -18
- package/lib/typeorm/query-builder/result/InsertResult.js.map +1 -1
- package/lib/typeorm/query-builder/result/UpdateResult.js +24 -18
- package/lib/typeorm/query-builder/result/UpdateResult.js.map +1 -1
- package/lib/typeorm/query-builder/transformer/DocumentToEntityTransformer.js +24 -26
- package/lib/typeorm/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
- package/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +77 -112
- package/lib/typeorm/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
- package/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.js +16 -22
- package/lib/typeorm/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
- package/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.js +117 -132
- package/lib/typeorm/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
- package/lib/typeorm/query-runner/BaseQueryRunner.js +227 -393
- package/lib/typeorm/query-runner/BaseQueryRunner.js.map +1 -1
- package/lib/typeorm/query-runner/QueryLock.js +19 -32
- package/lib/typeorm/query-runner/QueryLock.js.map +1 -1
- package/lib/typeorm/query-runner/QueryResult.js +14 -9
- package/lib/typeorm/query-runner/QueryResult.js.map +1 -1
- package/lib/typeorm/query-runner/QueryRunner.js.map +1 -1
- package/lib/typeorm/repository/AbstractRepository.js +46 -50
- package/lib/typeorm/repository/AbstractRepository.js.map +1 -1
- package/lib/typeorm/repository/BaseEntity.js +106 -123
- package/lib/typeorm/repository/BaseEntity.js.map +1 -1
- package/lib/typeorm/repository/EntityId.js.map +1 -1
- package/lib/typeorm/repository/FindTreesOptions.js.map +1 -1
- package/lib/typeorm/repository/MongoRepository.js +109 -135
- package/lib/typeorm/repository/MongoRepository.js.map +1 -1
- package/lib/typeorm/repository/RemoveOptions.js.map +1 -1
- package/lib/typeorm/repository/Repository.js +108 -140
- package/lib/typeorm/repository/Repository.js.map +1 -1
- package/lib/typeorm/repository/SaveOptions.js.map +1 -1
- package/lib/typeorm/repository/TreeRepository.js +107 -154
- package/lib/typeorm/repository/TreeRepository.js.map +1 -1
- package/lib/typeorm/repository/UpsertOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/MongoSchemaBuilder.js +30 -42
- package/lib/typeorm/schema-builder/MongoSchemaBuilder.js.map +1 -1
- package/lib/typeorm/schema-builder/RdbmsSchemaBuilder.js +727 -1938
- package/lib/typeorm/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/lib/typeorm/schema-builder/SchemaBuilder.js.map +1 -1
- package/lib/typeorm/schema-builder/options/TableCheckOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/options/TableColumnOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/options/TableExclusionOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/options/TableIndexOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/options/TableOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/options/TableUniqueOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/options/ViewOptions.js.map +1 -1
- package/lib/typeorm/schema-builder/table/Table.js +160 -157
- package/lib/typeorm/schema-builder/table/Table.js.map +1 -1
- package/lib/typeorm/schema-builder/table/TableCheck.js +24 -15
- package/lib/typeorm/schema-builder/table/TableCheck.js.map +1 -1
- package/lib/typeorm/schema-builder/table/TableColumn.js +123 -41
- package/lib/typeorm/schema-builder/table/TableColumn.js.map +1 -1
- package/lib/typeorm/schema-builder/table/TableExclusion.js +19 -9
- package/lib/typeorm/schema-builder/table/TableExclusion.js.map +1 -1
- package/lib/typeorm/schema-builder/table/TableForeignKey.js +52 -20
- package/lib/typeorm/schema-builder/table/TableForeignKey.js.map +1 -1
- package/lib/typeorm/schema-builder/table/TableIndex.js +52 -16
- package/lib/typeorm/schema-builder/table/TableIndex.js.map +1 -1
- package/lib/typeorm/schema-builder/table/TableUnique.js +26 -16
- package/lib/typeorm/schema-builder/table/TableUnique.js.map +1 -1
- package/lib/typeorm/schema-builder/util/TableUtils.js +5 -8
- package/lib/typeorm/schema-builder/util/TableUtils.js.map +1 -1
- package/lib/typeorm/schema-builder/util/ViewUtils.js +4 -7
- package/lib/typeorm/schema-builder/util/ViewUtils.js.map +1 -1
- package/lib/typeorm/schema-builder/view/View.js +32 -10
- package/lib/typeorm/schema-builder/view/View.js.map +1 -1
- package/lib/typeorm/subscriber/Broadcaster.js +180 -216
- package/lib/typeorm/subscriber/Broadcaster.js.map +1 -1
- package/lib/typeorm/subscriber/BroadcasterResult.js +16 -29
- package/lib/typeorm/subscriber/BroadcasterResult.js.map +1 -1
- package/lib/typeorm/subscriber/EntitySubscriberInterface.js.map +1 -1
- package/lib/typeorm/subscriber/event/InsertEvent.js.map +1 -1
- package/lib/typeorm/subscriber/event/LoadEvent.js.map +1 -1
- package/lib/typeorm/subscriber/event/RecoverEvent.js.map +1 -1
- package/lib/typeorm/subscriber/event/RemoveEvent.js.map +1 -1
- package/lib/typeorm/subscriber/event/SoftRemoveEvent.js.map +1 -1
- package/lib/typeorm/subscriber/event/TransactionCommitEvent.js.map +1 -1
- package/lib/typeorm/subscriber/event/TransactionRollbackEvent.js.map +1 -1
- package/lib/typeorm/subscriber/event/TransactionStartEvent.js.map +1 -1
- package/lib/typeorm/subscriber/event/UpdateEvent.js.map +1 -1
- package/lib/typeorm/util/ApplyValueTransformers.js +9 -12
- package/lib/typeorm/util/ApplyValueTransformers.js.map +1 -1
- package/lib/typeorm/util/DateUtils.js +44 -53
- package/lib/typeorm/util/DateUtils.js.map +1 -1
- package/lib/typeorm/util/DepGraph.js +50 -53
- package/lib/typeorm/util/DepGraph.js.map +1 -1
- package/lib/typeorm/util/DirectoryExportedClassesLoader.js +48 -70
- package/lib/typeorm/util/DirectoryExportedClassesLoader.js.map +1 -1
- package/lib/typeorm/util/ImportUtils.js +43 -65
- package/lib/typeorm/util/ImportUtils.js.map +1 -1
- package/lib/typeorm/util/InstanceChecker.js +64 -67
- package/lib/typeorm/util/InstanceChecker.js.map +1 -1
- package/lib/typeorm/util/ObjectUtils.js +13 -42
- package/lib/typeorm/util/ObjectUtils.js.map +1 -1
- package/lib/typeorm/util/OrmUtils.js +91 -158
- package/lib/typeorm/util/OrmUtils.js.map +1 -1
- package/lib/typeorm/util/PathUtils.js +8 -8
- package/lib/typeorm/util/PathUtils.js.map +1 -1
- package/lib/typeorm/util/RandomGenerator.js +22 -25
- package/lib/typeorm/util/RandomGenerator.js.map +1 -1
- package/lib/typeorm/util/StringUtils.js +17 -21
- package/lib/typeorm/util/StringUtils.js.map +1 -1
- package/lib/typeorm/util/TreeRepositoryUtils.js +27 -30
- package/lib/typeorm/util/TreeRepositoryUtils.js.map +1 -1
- package/lib/typeorm/util/VersionUtils.js +9 -13
- package/lib/typeorm/util/VersionUtils.js.map +1 -1
- package/lib/typeorm/util/escapeRegExp.js +2 -2
- package/lib/typeorm/util/escapeRegExp.js.map +1 -1
- package/migrations/index.js +15 -2
- package/migrations/index.js.map +1 -1
- package/migrations/migrations_index._auto-generated_.d.ts +1 -0
- package/migrations/migrations_index._auto-generated_.js.map +1 -1
- package/package.json +8 -44
- package/src.d.ts +1 -1
- package/taon.jsonc +7 -34
- package/tmp-environment.json +8 -370
- package/websql/README.md +24 -24
- package/websql/esm2022/lib/typeorm/driver/cordova/CordovaDriver.mjs +1 -1
- package/websql/esm2022/lib/typeorm/driver/cordova/CordovaQueryRunner.mjs +1 -1
- package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptDriver.mjs +1 -1
- package/websql/esm2022/lib/typeorm/driver/nativescript/NativescriptQueryRunner.mjs +1 -1
- package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeDriver.mjs +1 -1
- package/websql/esm2022/lib/typeorm/driver/react-native/ReactNativeQueryRunner.mjs +1 -1
- package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsDriver.mjs +1 -1
- package/websql/esm2022/lib/typeorm/driver/sqljs/SqljsQueryRunner.mjs +1 -1
- package/websql/esm2022/lib/typeorm/index.mjs +1 -3
- package/websql/fesm2022/taon-typeorm.mjs.map +1 -1
- package/browser/package.json +0 -25
- package/websql/package.json +0 -25
|
@@ -1,54 +1,68 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SubjectExecutor = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
var InstanceChecker_1 = require("../util/InstanceChecker");
|
|
4
|
+
const SubjectTopoligicalSorter_1 = require("./SubjectTopoligicalSorter");
|
|
5
|
+
const SubjectChangedColumnsComputer_1 = require("./SubjectChangedColumnsComputer");
|
|
6
|
+
const SubjectWithoutIdentifierError_1 = require("../error/SubjectWithoutIdentifierError");
|
|
7
|
+
const SubjectRemovedAndUpdatedError_1 = require("../error/SubjectRemovedAndUpdatedError");
|
|
8
|
+
const BroadcasterResult_1 = require("../subscriber/BroadcasterResult");
|
|
9
|
+
const NestedSetSubjectExecutor_1 = require("./tree/NestedSetSubjectExecutor");
|
|
10
|
+
const ClosureSubjectExecutor_1 = require("./tree/ClosureSubjectExecutor");
|
|
11
|
+
const MaterializedPathSubjectExecutor_1 = require("./tree/MaterializedPathSubjectExecutor");
|
|
12
|
+
const OrmUtils_1 = require("../util/OrmUtils");
|
|
13
|
+
const ObjectUtils_1 = require("../util/ObjectUtils");
|
|
14
|
+
const InstanceChecker_1 = require("../util/InstanceChecker");
|
|
16
15
|
/**
|
|
17
16
|
* Executes all database operations (inserts, updated, deletes) that must be executed
|
|
18
17
|
* with given persistence subjects.
|
|
19
18
|
*/
|
|
20
|
-
|
|
19
|
+
class SubjectExecutor {
|
|
20
|
+
// -------------------------------------------------------------------------
|
|
21
|
+
// Public Properties
|
|
22
|
+
// -------------------------------------------------------------------------
|
|
23
|
+
/**
|
|
24
|
+
* Indicates if executor has any operations to execute (e.g. has insert / update / delete operations to be executed).
|
|
25
|
+
*/
|
|
26
|
+
hasExecutableOperations = false;
|
|
27
|
+
// -------------------------------------------------------------------------
|
|
28
|
+
// Protected Properties
|
|
29
|
+
// -------------------------------------------------------------------------
|
|
30
|
+
/**
|
|
31
|
+
* QueryRunner used to execute all queries with a given subjects.
|
|
32
|
+
*/
|
|
33
|
+
queryRunner;
|
|
34
|
+
/**
|
|
35
|
+
* Persistence options.
|
|
36
|
+
*/
|
|
37
|
+
options;
|
|
38
|
+
/**
|
|
39
|
+
* All subjects that needs to be operated.
|
|
40
|
+
*/
|
|
41
|
+
allSubjects;
|
|
42
|
+
/**
|
|
43
|
+
* Subjects that must be inserted.
|
|
44
|
+
*/
|
|
45
|
+
insertSubjects = [];
|
|
46
|
+
/**
|
|
47
|
+
* Subjects that must be updated.
|
|
48
|
+
*/
|
|
49
|
+
updateSubjects = [];
|
|
50
|
+
/**
|
|
51
|
+
* Subjects that must be removed.
|
|
52
|
+
*/
|
|
53
|
+
removeSubjects = [];
|
|
54
|
+
/**
|
|
55
|
+
* Subjects that must be soft-removed.
|
|
56
|
+
*/
|
|
57
|
+
softRemoveSubjects = [];
|
|
58
|
+
/**
|
|
59
|
+
* Subjects that must be recovered.
|
|
60
|
+
*/
|
|
61
|
+
recoverSubjects = [];
|
|
21
62
|
// -------------------------------------------------------------------------
|
|
22
63
|
// Constructor
|
|
23
64
|
// -------------------------------------------------------------------------
|
|
24
|
-
|
|
25
|
-
// -------------------------------------------------------------------------
|
|
26
|
-
// Public Properties
|
|
27
|
-
// -------------------------------------------------------------------------
|
|
28
|
-
/**
|
|
29
|
-
* Indicates if executor has any operations to execute (e.g. has insert / update / delete operations to be executed).
|
|
30
|
-
*/
|
|
31
|
-
this.hasExecutableOperations = false;
|
|
32
|
-
/**
|
|
33
|
-
* Subjects that must be inserted.
|
|
34
|
-
*/
|
|
35
|
-
this.insertSubjects = [];
|
|
36
|
-
/**
|
|
37
|
-
* Subjects that must be updated.
|
|
38
|
-
*/
|
|
39
|
-
this.updateSubjects = [];
|
|
40
|
-
/**
|
|
41
|
-
* Subjects that must be removed.
|
|
42
|
-
*/
|
|
43
|
-
this.removeSubjects = [];
|
|
44
|
-
/**
|
|
45
|
-
* Subjects that must be soft-removed.
|
|
46
|
-
*/
|
|
47
|
-
this.softRemoveSubjects = [];
|
|
48
|
-
/**
|
|
49
|
-
* Subjects that must be recovered.
|
|
50
|
-
*/
|
|
51
|
-
this.recoverSubjects = [];
|
|
65
|
+
constructor(queryRunner, subjects, options) {
|
|
52
66
|
this.queryRunner = queryRunner;
|
|
53
67
|
this.allSubjects = subjects;
|
|
54
68
|
this.options = options;
|
|
@@ -62,892 +76,636 @@ var SubjectExecutor = /** @class */ (function () {
|
|
|
62
76
|
* Executes all operations over given array of subjects.
|
|
63
77
|
* Executes queries using given query runner.
|
|
64
78
|
*/
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
];
|
|
130
|
-
case 5:
|
|
131
|
-
_a.sent();
|
|
132
|
-
// console.timeEnd(".removal");
|
|
133
|
-
// recompute soft-remove operations
|
|
134
|
-
this.softRemoveSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeSoftRemoved; });
|
|
135
|
-
// execute soft-remove operations
|
|
136
|
-
return [4 /*yield*/, this.executeSoftRemoveOperations()
|
|
137
|
-
// recompute recover operations
|
|
138
|
-
];
|
|
139
|
-
case 6:
|
|
140
|
-
// execute soft-remove operations
|
|
141
|
-
_a.sent();
|
|
142
|
-
// recompute recover operations
|
|
143
|
-
this.recoverSubjects = this.allSubjects.filter(function (subject) { return subject.mustBeRecovered; });
|
|
144
|
-
// execute recover operations
|
|
145
|
-
return [4 /*yield*/, this.executeRecoverOperations()
|
|
146
|
-
// update all special columns in persisted entities, like inserted id or remove ids from the removed entities
|
|
147
|
-
// console.time(".updateSpecialColumnsInPersistedEntities");
|
|
148
|
-
];
|
|
149
|
-
case 7:
|
|
150
|
-
// execute recover operations
|
|
151
|
-
_a.sent();
|
|
152
|
-
// update all special columns in persisted entities, like inserted id or remove ids from the removed entities
|
|
153
|
-
// console.time(".updateSpecialColumnsInPersistedEntities");
|
|
154
|
-
return [4 /*yield*/, this.updateSpecialColumnsInPersistedEntities()
|
|
155
|
-
// console.timeEnd(".updateSpecialColumnsInPersistedEntities");
|
|
156
|
-
// finally broadcast "after" events after we finish insert / update / remove operations
|
|
157
|
-
];
|
|
158
|
-
case 8:
|
|
159
|
-
// update all special columns in persisted entities, like inserted id or remove ids from the removed entities
|
|
160
|
-
// console.time(".updateSpecialColumnsInPersistedEntities");
|
|
161
|
-
_a.sent();
|
|
162
|
-
if (!(!this.options || this.options.listeners !== false)) return [3 /*break*/, 10];
|
|
163
|
-
// console.time(".broadcastAfterEventsForAll");
|
|
164
|
-
broadcasterResult = this.broadcastAfterEventsForAll();
|
|
165
|
-
if (!(broadcasterResult.promises.length > 0)) return [3 /*break*/, 10];
|
|
166
|
-
return [4 /*yield*/, Promise.all(broadcasterResult.promises)
|
|
167
|
-
// console.timeEnd(".broadcastAfterEventsForAll");
|
|
168
|
-
];
|
|
169
|
-
case 9:
|
|
170
|
-
_a.sent();
|
|
171
|
-
_a.label = 10;
|
|
172
|
-
case 10: return [2 /*return*/];
|
|
173
|
-
}
|
|
174
|
-
});
|
|
175
|
-
});
|
|
176
|
-
};
|
|
79
|
+
async execute() {
|
|
80
|
+
// console.time("SubjectExecutor.execute");
|
|
81
|
+
// broadcast "before" events before we start insert / update / remove operations
|
|
82
|
+
let broadcasterResult = undefined;
|
|
83
|
+
if (!this.options || this.options.listeners !== false) {
|
|
84
|
+
// console.time(".broadcastBeforeEventsForAll");
|
|
85
|
+
broadcasterResult = this.broadcastBeforeEventsForAll();
|
|
86
|
+
if (broadcasterResult.promises.length > 0)
|
|
87
|
+
await Promise.all(broadcasterResult.promises);
|
|
88
|
+
// console.timeEnd(".broadcastBeforeEventsForAll");
|
|
89
|
+
}
|
|
90
|
+
// since event listeners and subscribers can call save methods and/or trigger entity changes we need to recompute operational subjects
|
|
91
|
+
// recompute only in the case if any listener or subscriber was really executed
|
|
92
|
+
if (broadcasterResult && broadcasterResult.count > 0) {
|
|
93
|
+
// console.time(".recompute");
|
|
94
|
+
this.insertSubjects.forEach((subject) => subject.recompute());
|
|
95
|
+
this.updateSubjects.forEach((subject) => subject.recompute());
|
|
96
|
+
this.removeSubjects.forEach((subject) => subject.recompute());
|
|
97
|
+
this.softRemoveSubjects.forEach((subject) => subject.recompute());
|
|
98
|
+
this.recoverSubjects.forEach((subject) => subject.recompute());
|
|
99
|
+
this.recompute();
|
|
100
|
+
// console.timeEnd(".recompute");
|
|
101
|
+
}
|
|
102
|
+
// make sure our insert subjects are sorted (using topological sorting) to make cascade inserts work properly
|
|
103
|
+
// console.timeEnd("prepare");
|
|
104
|
+
// execute all insert operations
|
|
105
|
+
// console.time(".insertion");
|
|
106
|
+
this.insertSubjects = new SubjectTopoligicalSorter_1.SubjectTopoligicalSorter(this.insertSubjects).sort("insert");
|
|
107
|
+
await this.executeInsertOperations();
|
|
108
|
+
// console.timeEnd(".insertion");
|
|
109
|
+
// recompute update operations since insertion can create updation operations for the
|
|
110
|
+
// properties it wasn't able to handle on its own (referenced columns)
|
|
111
|
+
this.updateSubjects = this.allSubjects.filter((subject) => subject.mustBeUpdated);
|
|
112
|
+
// execute update operations
|
|
113
|
+
// console.time(".updation");
|
|
114
|
+
await this.executeUpdateOperations();
|
|
115
|
+
// console.timeEnd(".updation");
|
|
116
|
+
// make sure our remove subjects are sorted (using topological sorting) when multiple entities are passed for the removal
|
|
117
|
+
// console.time(".removal");
|
|
118
|
+
this.removeSubjects = new SubjectTopoligicalSorter_1.SubjectTopoligicalSorter(this.removeSubjects).sort("delete");
|
|
119
|
+
await this.executeRemoveOperations();
|
|
120
|
+
// console.timeEnd(".removal");
|
|
121
|
+
// recompute soft-remove operations
|
|
122
|
+
this.softRemoveSubjects = this.allSubjects.filter((subject) => subject.mustBeSoftRemoved);
|
|
123
|
+
// execute soft-remove operations
|
|
124
|
+
await this.executeSoftRemoveOperations();
|
|
125
|
+
// recompute recover operations
|
|
126
|
+
this.recoverSubjects = this.allSubjects.filter((subject) => subject.mustBeRecovered);
|
|
127
|
+
// execute recover operations
|
|
128
|
+
await this.executeRecoverOperations();
|
|
129
|
+
// update all special columns in persisted entities, like inserted id or remove ids from the removed entities
|
|
130
|
+
// console.time(".updateSpecialColumnsInPersistedEntities");
|
|
131
|
+
await this.updateSpecialColumnsInPersistedEntities();
|
|
132
|
+
// console.timeEnd(".updateSpecialColumnsInPersistedEntities");
|
|
133
|
+
// finally broadcast "after" events after we finish insert / update / remove operations
|
|
134
|
+
if (!this.options || this.options.listeners !== false) {
|
|
135
|
+
// console.time(".broadcastAfterEventsForAll");
|
|
136
|
+
broadcasterResult = this.broadcastAfterEventsForAll();
|
|
137
|
+
if (broadcasterResult.promises.length > 0)
|
|
138
|
+
await Promise.all(broadcasterResult.promises);
|
|
139
|
+
// console.timeEnd(".broadcastAfterEventsForAll");
|
|
140
|
+
}
|
|
141
|
+
// console.timeEnd("SubjectExecutor.execute");
|
|
142
|
+
}
|
|
177
143
|
// -------------------------------------------------------------------------
|
|
178
144
|
// Protected Methods
|
|
179
145
|
// -------------------------------------------------------------------------
|
|
180
146
|
/**
|
|
181
147
|
* Validates all given subjects.
|
|
182
148
|
*/
|
|
183
|
-
|
|
184
|
-
this.allSubjects.forEach(
|
|
149
|
+
validate() {
|
|
150
|
+
this.allSubjects.forEach((subject) => {
|
|
185
151
|
if (subject.mustBeUpdated && subject.mustBeRemoved)
|
|
186
152
|
throw new SubjectRemovedAndUpdatedError_1.SubjectRemovedAndUpdatedError(subject);
|
|
187
153
|
});
|
|
188
|
-
}
|
|
154
|
+
}
|
|
189
155
|
/**
|
|
190
156
|
* Performs entity re-computations - finds changed columns, re-builds insert/update/remove subjects.
|
|
191
157
|
*/
|
|
192
|
-
|
|
158
|
+
recompute() {
|
|
193
159
|
new SubjectChangedColumnsComputer_1.SubjectChangedColumnsComputer().compute(this.allSubjects);
|
|
194
|
-
this.insertSubjects = this.allSubjects.filter(
|
|
195
|
-
this.updateSubjects = this.allSubjects.filter(
|
|
196
|
-
this.removeSubjects = this.allSubjects.filter(
|
|
197
|
-
this.softRemoveSubjects = this.allSubjects.filter(
|
|
198
|
-
this.recoverSubjects = this.allSubjects.filter(
|
|
160
|
+
this.insertSubjects = this.allSubjects.filter((subject) => subject.mustBeInserted);
|
|
161
|
+
this.updateSubjects = this.allSubjects.filter((subject) => subject.mustBeUpdated);
|
|
162
|
+
this.removeSubjects = this.allSubjects.filter((subject) => subject.mustBeRemoved);
|
|
163
|
+
this.softRemoveSubjects = this.allSubjects.filter((subject) => subject.mustBeSoftRemoved);
|
|
164
|
+
this.recoverSubjects = this.allSubjects.filter((subject) => subject.mustBeRecovered);
|
|
199
165
|
this.hasExecutableOperations =
|
|
200
166
|
this.insertSubjects.length > 0 ||
|
|
201
167
|
this.updateSubjects.length > 0 ||
|
|
202
168
|
this.removeSubjects.length > 0 ||
|
|
203
169
|
this.softRemoveSubjects.length > 0 ||
|
|
204
170
|
this.recoverSubjects.length > 0;
|
|
205
|
-
}
|
|
171
|
+
}
|
|
206
172
|
/**
|
|
207
173
|
* Broadcasts "BEFORE_INSERT", "BEFORE_UPDATE", "BEFORE_REMOVE", "BEFORE_SOFT_REMOVE", "BEFORE_RECOVER" events for all given subjects.
|
|
208
174
|
*/
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
var result = new BroadcasterResult_1.BroadcasterResult();
|
|
175
|
+
broadcastBeforeEventsForAll() {
|
|
176
|
+
const result = new BroadcasterResult_1.BroadcasterResult();
|
|
212
177
|
if (this.insertSubjects.length)
|
|
213
|
-
this.insertSubjects.forEach(
|
|
214
|
-
return _this.queryRunner.broadcaster.broadcastBeforeInsertEvent(result, subject.metadata, subject.entity);
|
|
215
|
-
});
|
|
178
|
+
this.insertSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastBeforeInsertEvent(result, subject.metadata, subject.entity));
|
|
216
179
|
if (this.updateSubjects.length)
|
|
217
|
-
this.updateSubjects.forEach(
|
|
218
|
-
return _this.queryRunner.broadcaster.broadcastBeforeUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations);
|
|
219
|
-
});
|
|
180
|
+
this.updateSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastBeforeUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations));
|
|
220
181
|
if (this.removeSubjects.length)
|
|
221
|
-
this.removeSubjects.forEach(
|
|
222
|
-
return _this.queryRunner.broadcaster.broadcastBeforeRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity);
|
|
223
|
-
});
|
|
182
|
+
this.removeSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastBeforeRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity));
|
|
224
183
|
if (this.softRemoveSubjects.length)
|
|
225
|
-
this.softRemoveSubjects.forEach(
|
|
226
|
-
return _this.queryRunner.broadcaster.broadcastBeforeSoftRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity);
|
|
227
|
-
});
|
|
184
|
+
this.softRemoveSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastBeforeSoftRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity));
|
|
228
185
|
if (this.recoverSubjects.length)
|
|
229
|
-
this.recoverSubjects.forEach(
|
|
230
|
-
return _this.queryRunner.broadcaster.broadcastBeforeRecoverEvent(result, subject.metadata, subject.entity, subject.databaseEntity);
|
|
231
|
-
});
|
|
186
|
+
this.recoverSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastBeforeRecoverEvent(result, subject.metadata, subject.entity, subject.databaseEntity));
|
|
232
187
|
return result;
|
|
233
|
-
}
|
|
188
|
+
}
|
|
234
189
|
/**
|
|
235
190
|
* Broadcasts "AFTER_INSERT", "AFTER_UPDATE", "AFTER_REMOVE", "AFTER_SOFT_REMOVE", "AFTER_RECOVER" events for all given subjects.
|
|
236
191
|
* Returns void if there wasn't any listener or subscriber executed.
|
|
237
192
|
* Note: this method has a performance-optimized code organization.
|
|
238
193
|
*/
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
var result = new BroadcasterResult_1.BroadcasterResult();
|
|
194
|
+
broadcastAfterEventsForAll() {
|
|
195
|
+
const result = new BroadcasterResult_1.BroadcasterResult();
|
|
242
196
|
if (this.insertSubjects.length)
|
|
243
|
-
this.insertSubjects.forEach(
|
|
244
|
-
return _this.queryRunner.broadcaster.broadcastAfterInsertEvent(result, subject.metadata, subject.entity);
|
|
245
|
-
});
|
|
197
|
+
this.insertSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastAfterInsertEvent(result, subject.metadata, subject.entity));
|
|
246
198
|
if (this.updateSubjects.length)
|
|
247
|
-
this.updateSubjects.forEach(
|
|
248
|
-
return _this.queryRunner.broadcaster.broadcastAfterUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations);
|
|
249
|
-
});
|
|
199
|
+
this.updateSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastAfterUpdateEvent(result, subject.metadata, subject.entity, subject.databaseEntity, subject.diffColumns, subject.diffRelations));
|
|
250
200
|
if (this.removeSubjects.length)
|
|
251
|
-
this.removeSubjects.forEach(
|
|
252
|
-
return _this.queryRunner.broadcaster.broadcastAfterRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity);
|
|
253
|
-
});
|
|
201
|
+
this.removeSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastAfterRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity));
|
|
254
202
|
if (this.softRemoveSubjects.length)
|
|
255
|
-
this.softRemoveSubjects.forEach(
|
|
256
|
-
return _this.queryRunner.broadcaster.broadcastAfterSoftRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity);
|
|
257
|
-
});
|
|
203
|
+
this.softRemoveSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastAfterSoftRemoveEvent(result, subject.metadata, subject.entity, subject.databaseEntity));
|
|
258
204
|
if (this.recoverSubjects.length)
|
|
259
|
-
this.recoverSubjects.forEach(
|
|
260
|
-
return _this.queryRunner.broadcaster.broadcastAfterRecoverEvent(result, subject.metadata, subject.entity, subject.databaseEntity);
|
|
261
|
-
});
|
|
205
|
+
this.recoverSubjects.forEach((subject) => this.queryRunner.broadcaster.broadcastAfterRecoverEvent(result, subject.metadata, subject.entity, subject.databaseEntity));
|
|
262
206
|
return result;
|
|
263
|
-
}
|
|
207
|
+
}
|
|
264
208
|
/**
|
|
265
209
|
* Executes insert operations.
|
|
266
210
|
*/
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
case 6:
|
|
399
|
-
_f.sent();
|
|
400
|
-
_f.label = 7;
|
|
401
|
-
case 7: return [2 /*return*/];
|
|
402
|
-
}
|
|
403
|
-
});
|
|
404
|
-
};
|
|
405
|
-
_e.label = 5;
|
|
406
|
-
case 5:
|
|
407
|
-
_e.trys.push([5, 10, 11, 12]);
|
|
408
|
-
singleInsertSubjects_1 = (e_2 = void 0, tslib_1.__values(singleInsertSubjects)), singleInsertSubjects_1_1 = singleInsertSubjects_1.next();
|
|
409
|
-
_e.label = 6;
|
|
410
|
-
case 6:
|
|
411
|
-
if (!!singleInsertSubjects_1_1.done) return [3 /*break*/, 9];
|
|
412
|
-
subject = singleInsertSubjects_1_1.value;
|
|
413
|
-
return [5 /*yield**/, _loop_2(subject)];
|
|
414
|
-
case 7:
|
|
415
|
-
_e.sent();
|
|
416
|
-
_e.label = 8;
|
|
417
|
-
case 8:
|
|
418
|
-
singleInsertSubjects_1_1 = singleInsertSubjects_1.next();
|
|
419
|
-
return [3 /*break*/, 6];
|
|
420
|
-
case 9: return [3 /*break*/, 12];
|
|
421
|
-
case 10:
|
|
422
|
-
e_2_1 = _e.sent();
|
|
423
|
-
e_2 = { error: e_2_1 };
|
|
424
|
-
return [3 /*break*/, 12];
|
|
425
|
-
case 11:
|
|
426
|
-
try {
|
|
427
|
-
if (singleInsertSubjects_1_1 && !singleInsertSubjects_1_1.done && (_d = singleInsertSubjects_1.return)) _d.call(singleInsertSubjects_1);
|
|
428
|
-
}
|
|
429
|
-
finally { if (e_2) throw e_2.error; }
|
|
430
|
-
return [7 /*endfinally*/];
|
|
431
|
-
case 12:
|
|
432
|
-
subjects.forEach(function (subject) {
|
|
433
|
-
if (subject.generatedMap) {
|
|
434
|
-
subject.metadata.columns.forEach(function (column) {
|
|
435
|
-
var value = column.getEntityValue(subject.generatedMap);
|
|
436
|
-
if (value !== undefined && value !== null) {
|
|
437
|
-
var preparedValue = _this.queryRunner.connection.driver.prepareHydratedValue(value, column);
|
|
438
|
-
column.setEntityValue(subject.generatedMap, preparedValue);
|
|
439
|
-
}
|
|
440
|
-
});
|
|
441
|
-
}
|
|
442
|
-
});
|
|
443
|
-
return [2 /*return*/];
|
|
444
|
-
}
|
|
445
|
-
});
|
|
446
|
-
};
|
|
447
|
-
this_1 = this;
|
|
448
|
-
_c.label = 1;
|
|
449
|
-
case 1:
|
|
450
|
-
_c.trys.push([1, 6, 7, 8]);
|
|
451
|
-
groupedInsertSubjectKeys_1 = tslib_1.__values(groupedInsertSubjectKeys), groupedInsertSubjectKeys_1_1 = groupedInsertSubjectKeys_1.next();
|
|
452
|
-
_c.label = 2;
|
|
453
|
-
case 2:
|
|
454
|
-
if (!!groupedInsertSubjectKeys_1_1.done) return [3 /*break*/, 5];
|
|
455
|
-
groupName = groupedInsertSubjectKeys_1_1.value;
|
|
456
|
-
return [5 /*yield**/, _loop_1(groupName)];
|
|
457
|
-
case 3:
|
|
458
|
-
_c.sent();
|
|
459
|
-
_c.label = 4;
|
|
460
|
-
case 4:
|
|
461
|
-
groupedInsertSubjectKeys_1_1 = groupedInsertSubjectKeys_1.next();
|
|
462
|
-
return [3 /*break*/, 2];
|
|
463
|
-
case 5: return [3 /*break*/, 8];
|
|
464
|
-
case 6:
|
|
465
|
-
e_1_1 = _c.sent();
|
|
466
|
-
e_1 = { error: e_1_1 };
|
|
467
|
-
return [3 /*break*/, 8];
|
|
468
|
-
case 7:
|
|
469
|
-
try {
|
|
470
|
-
if (groupedInsertSubjectKeys_1_1 && !groupedInsertSubjectKeys_1_1.done && (_b = groupedInsertSubjectKeys_1.return)) _b.call(groupedInsertSubjectKeys_1);
|
|
211
|
+
async executeInsertOperations() {
|
|
212
|
+
// group insertion subjects to make bulk insertions
|
|
213
|
+
const [groupedInsertSubjects, groupedInsertSubjectKeys] = this.groupBulkSubjects(this.insertSubjects, "insert");
|
|
214
|
+
// then we run insertion in the sequential order which is important since we have an ordered subjects
|
|
215
|
+
for (const groupName of groupedInsertSubjectKeys) {
|
|
216
|
+
const subjects = groupedInsertSubjects[groupName];
|
|
217
|
+
// we must separately insert entities which does not have any values to insert
|
|
218
|
+
// because its not possible to insert multiple entities with only default values in bulk
|
|
219
|
+
const bulkInsertMaps = [];
|
|
220
|
+
const bulkInsertSubjects = [];
|
|
221
|
+
const singleInsertSubjects = [];
|
|
222
|
+
if (this.queryRunner.connection.driver.options.type === "mongodb") {
|
|
223
|
+
subjects.forEach((subject) => {
|
|
224
|
+
if (subject.metadata.createDateColumn && subject.entity) {
|
|
225
|
+
subject.entity[subject.metadata.createDateColumn.databaseName] = new Date();
|
|
226
|
+
}
|
|
227
|
+
if (subject.metadata.updateDateColumn && subject.entity) {
|
|
228
|
+
subject.entity[subject.metadata.updateDateColumn.databaseName] = new Date();
|
|
229
|
+
}
|
|
230
|
+
subject.createValueSetAndPopChangeMap();
|
|
231
|
+
bulkInsertSubjects.push(subject);
|
|
232
|
+
bulkInsertMaps.push(subject.entity);
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
else if (this.queryRunner.connection.driver.options.type === "oracle") {
|
|
236
|
+
subjects.forEach((subject) => {
|
|
237
|
+
singleInsertSubjects.push(subject);
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
else {
|
|
241
|
+
subjects.forEach((subject) => {
|
|
242
|
+
// we do not insert in bulk in following cases:
|
|
243
|
+
// - when there is no values in insert (only defaults are inserted), since we cannot use DEFAULT VALUES expression for multiple inserted rows
|
|
244
|
+
// - when entity is a tree table, since tree tables require extra operation per each inserted row
|
|
245
|
+
// - when oracle is used, since oracle's bulk insertion is very bad
|
|
246
|
+
if (subject.changeMaps.length === 0 ||
|
|
247
|
+
subject.metadata.treeType ||
|
|
248
|
+
this.queryRunner.connection.driver.options.type ===
|
|
249
|
+
"oracle" ||
|
|
250
|
+
this.queryRunner.connection.driver.options.type ===
|
|
251
|
+
"sap") {
|
|
252
|
+
singleInsertSubjects.push(subject);
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
bulkInsertSubjects.push(subject);
|
|
256
|
+
bulkInsertMaps.push(subject.createValueSetAndPopChangeMap());
|
|
257
|
+
}
|
|
258
|
+
});
|
|
259
|
+
}
|
|
260
|
+
// for mongodb we have a bit different insertion logic
|
|
261
|
+
if (
|
|
262
|
+
//#region @backend
|
|
263
|
+
InstanceChecker_1.InstanceChecker.isMongoEntityManager(this.queryRunner.manager)
|
|
264
|
+
//#endregion
|
|
265
|
+
/* */
|
|
266
|
+
/* */
|
|
267
|
+
/* */
|
|
268
|
+
/* */
|
|
269
|
+
/* */
|
|
270
|
+
) {
|
|
271
|
+
//#region @backend
|
|
272
|
+
const insertResult = await this.queryRunner.manager.insert(subjects[0].metadata.target, bulkInsertMaps);
|
|
273
|
+
subjects.forEach((subject, index) => {
|
|
274
|
+
subject.identifier = insertResult.identifiers[index];
|
|
275
|
+
subject.generatedMap = insertResult.generatedMaps[index];
|
|
276
|
+
subject.insertedValueSet = bulkInsertMaps[index];
|
|
277
|
+
});
|
|
278
|
+
//#endregion
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
// here we execute our insertion query
|
|
282
|
+
// we need to enable entity updation because we DO need to have updated insertedMap
|
|
283
|
+
// which is not same object as our entity that's why we don't need to worry about our entity to get dirty
|
|
284
|
+
// also, we disable listeners because we call them on our own in persistence layer
|
|
285
|
+
if (bulkInsertMaps.length > 0) {
|
|
286
|
+
const insertResult = await this.queryRunner.manager
|
|
287
|
+
.createQueryBuilder()
|
|
288
|
+
.insert()
|
|
289
|
+
.into(subjects[0].metadata.target)
|
|
290
|
+
.values(bulkInsertMaps)
|
|
291
|
+
.updateEntity(this.options && this.options.reload === false
|
|
292
|
+
? false
|
|
293
|
+
: true)
|
|
294
|
+
.callListeners(false)
|
|
295
|
+
.execute();
|
|
296
|
+
bulkInsertSubjects.forEach((subject, index) => {
|
|
297
|
+
subject.identifier = insertResult.identifiers[index];
|
|
298
|
+
subject.generatedMap = insertResult.generatedMaps[index];
|
|
299
|
+
subject.insertedValueSet = bulkInsertMaps[index];
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
// insert subjects which must be inserted in separate requests (all default values)
|
|
303
|
+
if (singleInsertSubjects.length > 0) {
|
|
304
|
+
for (const subject of singleInsertSubjects) {
|
|
305
|
+
subject.insertedValueSet =
|
|
306
|
+
subject.createValueSetAndPopChangeMap(); // important to have because query builder sets inserted values into it
|
|
307
|
+
// for nested set we execute additional queries
|
|
308
|
+
if (subject.metadata.treeType === "nested-set")
|
|
309
|
+
await new NestedSetSubjectExecutor_1.NestedSetSubjectExecutor(this.queryRunner).insert(subject);
|
|
310
|
+
await this.queryRunner.manager
|
|
311
|
+
.createQueryBuilder()
|
|
312
|
+
.insert()
|
|
313
|
+
.into(subject.metadata.target)
|
|
314
|
+
.values(subject.insertedValueSet)
|
|
315
|
+
.updateEntity(this.options && this.options.reload === false
|
|
316
|
+
? false
|
|
317
|
+
: true)
|
|
318
|
+
.callListeners(false)
|
|
319
|
+
.execute()
|
|
320
|
+
.then((insertResult) => {
|
|
321
|
+
subject.identifier = insertResult.identifiers[0];
|
|
322
|
+
subject.generatedMap =
|
|
323
|
+
insertResult.generatedMaps[0];
|
|
324
|
+
});
|
|
325
|
+
// for tree tables we execute additional queries
|
|
326
|
+
if (subject.metadata.treeType === "closure-table") {
|
|
327
|
+
await new ClosureSubjectExecutor_1.ClosureSubjectExecutor(this.queryRunner).insert(subject);
|
|
328
|
+
}
|
|
329
|
+
else if (subject.metadata.treeType === "materialized-path") {
|
|
330
|
+
await new MaterializedPathSubjectExecutor_1.MaterializedPathSubjectExecutor(this.queryRunner).insert(subject);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
subjects.forEach((subject) => {
|
|
336
|
+
if (subject.generatedMap) {
|
|
337
|
+
subject.metadata.columns.forEach((column) => {
|
|
338
|
+
const value = column.getEntityValue(subject.generatedMap);
|
|
339
|
+
if (value !== undefined && value !== null) {
|
|
340
|
+
const preparedValue = this.queryRunner.connection.driver.prepareHydratedValue(value, column);
|
|
341
|
+
column.setEntityValue(subject.generatedMap, preparedValue);
|
|
471
342
|
}
|
|
472
|
-
|
|
473
|
-
return [7 /*endfinally*/];
|
|
474
|
-
case 8: return [2 /*return*/];
|
|
343
|
+
});
|
|
475
344
|
}
|
|
476
345
|
});
|
|
477
|
-
}
|
|
478
|
-
}
|
|
346
|
+
}
|
|
347
|
+
}
|
|
479
348
|
/**
|
|
480
349
|
* Updates all given subjects in the database.
|
|
481
350
|
*/
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
else {
|
|
557
|
-
// in this case identifier is just conditions object to update by
|
|
558
|
-
updateQueryBuilder.where(subject.identifier);
|
|
559
|
-
}
|
|
560
|
-
return [4 /*yield*/, updateQueryBuilder.execute()];
|
|
561
|
-
case 10:
|
|
562
|
-
updateResult = _b.sent();
|
|
563
|
-
updateGeneratedMap_1 = updateResult.generatedMaps[0];
|
|
564
|
-
if (updateGeneratedMap_1) {
|
|
565
|
-
subject.metadata.columns.forEach(function (column) {
|
|
566
|
-
var value = column.getEntityValue(updateGeneratedMap_1);
|
|
567
|
-
if (value !== undefined && value !== null) {
|
|
568
|
-
var preparedValue = _this.queryRunner.connection.driver.prepareHydratedValue(value, column);
|
|
569
|
-
column.setEntityValue(updateGeneratedMap_1, preparedValue);
|
|
570
|
-
}
|
|
571
|
-
});
|
|
572
|
-
if (!subject.generatedMap) {
|
|
573
|
-
subject.generatedMap = {};
|
|
574
|
-
}
|
|
575
|
-
Object.assign(subject.generatedMap, updateGeneratedMap_1);
|
|
576
|
-
}
|
|
577
|
-
_b.label = 11;
|
|
578
|
-
case 11: return [2 /*return*/];
|
|
579
|
-
}
|
|
580
|
-
});
|
|
581
|
-
}); };
|
|
582
|
-
nestedSetSubjects = [];
|
|
583
|
-
remainingSubjects = [];
|
|
584
|
-
try {
|
|
585
|
-
for (_a = tslib_1.__values(this.updateSubjects), _b = _a.next(); !_b.done; _b = _a.next()) {
|
|
586
|
-
subject = _b.value;
|
|
587
|
-
if (subject.metadata.treeType === "nested-set") {
|
|
588
|
-
nestedSetSubjects.push(subject);
|
|
589
|
-
}
|
|
590
|
-
else {
|
|
591
|
-
remainingSubjects.push(subject);
|
|
592
|
-
}
|
|
593
|
-
}
|
|
594
|
-
}
|
|
595
|
-
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
596
|
-
finally {
|
|
597
|
-
try {
|
|
598
|
-
if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
|
|
599
|
-
}
|
|
600
|
-
finally { if (e_3) throw e_3.error; }
|
|
351
|
+
async executeUpdateOperations() {
|
|
352
|
+
const updateSubject = async (subject) => {
|
|
353
|
+
if (!subject.identifier)
|
|
354
|
+
throw new SubjectWithoutIdentifierError_1.SubjectWithoutIdentifierError(subject);
|
|
355
|
+
// for mongodb we have a bit different updation logic
|
|
356
|
+
if (
|
|
357
|
+
//#region @backend
|
|
358
|
+
InstanceChecker_1.InstanceChecker.isMongoEntityManager(this.queryRunner.manager)
|
|
359
|
+
//#endregion
|
|
360
|
+
/* */
|
|
361
|
+
/* */
|
|
362
|
+
/* */
|
|
363
|
+
/* */
|
|
364
|
+
/* */
|
|
365
|
+
) {
|
|
366
|
+
//#region @backend
|
|
367
|
+
const partialEntity = this.cloneMongoSubjectEntity(subject);
|
|
368
|
+
if (subject.metadata.objectIdColumn &&
|
|
369
|
+
subject.metadata.objectIdColumn.propertyName) {
|
|
370
|
+
delete partialEntity[subject.metadata.objectIdColumn.propertyName];
|
|
371
|
+
}
|
|
372
|
+
if (subject.metadata.createDateColumn &&
|
|
373
|
+
subject.metadata.createDateColumn.propertyName) {
|
|
374
|
+
delete partialEntity[subject.metadata.createDateColumn.propertyName];
|
|
375
|
+
}
|
|
376
|
+
if (subject.metadata.updateDateColumn &&
|
|
377
|
+
subject.metadata.updateDateColumn.propertyName) {
|
|
378
|
+
partialEntity[subject.metadata.updateDateColumn.propertyName] = new Date();
|
|
379
|
+
}
|
|
380
|
+
const manager = this.queryRunner.manager;
|
|
381
|
+
await manager.update(subject.metadata.target, subject.identifier, partialEntity);
|
|
382
|
+
//#endregion
|
|
383
|
+
}
|
|
384
|
+
else {
|
|
385
|
+
const updateMap = subject.createValueSetAndPopChangeMap();
|
|
386
|
+
// for tree tables we execute additional queries
|
|
387
|
+
switch (subject.metadata.treeType) {
|
|
388
|
+
case "nested-set":
|
|
389
|
+
await new NestedSetSubjectExecutor_1.NestedSetSubjectExecutor(this.queryRunner).update(subject);
|
|
390
|
+
break;
|
|
391
|
+
case "closure-table":
|
|
392
|
+
await new ClosureSubjectExecutor_1.ClosureSubjectExecutor(this.queryRunner).update(subject);
|
|
393
|
+
break;
|
|
394
|
+
case "materialized-path":
|
|
395
|
+
await new MaterializedPathSubjectExecutor_1.MaterializedPathSubjectExecutor(this.queryRunner).update(subject);
|
|
396
|
+
break;
|
|
397
|
+
}
|
|
398
|
+
// here we execute our updation query
|
|
399
|
+
// we need to enable entity updation because we update a subject identifier
|
|
400
|
+
// which is not same object as our entity that's why we don't need to worry about our entity to get dirty
|
|
401
|
+
// also, we disable listeners because we call them on our own in persistence layer
|
|
402
|
+
const updateQueryBuilder = this.queryRunner.manager
|
|
403
|
+
.createQueryBuilder()
|
|
404
|
+
.update(subject.metadata.target)
|
|
405
|
+
.set(updateMap)
|
|
406
|
+
.updateEntity(this.options && this.options.reload === false
|
|
407
|
+
? false
|
|
408
|
+
: true)
|
|
409
|
+
.callListeners(false);
|
|
410
|
+
if (subject.entity) {
|
|
411
|
+
updateQueryBuilder.whereEntity(subject.identifier);
|
|
412
|
+
}
|
|
413
|
+
else {
|
|
414
|
+
// in this case identifier is just conditions object to update by
|
|
415
|
+
updateQueryBuilder.where(subject.identifier);
|
|
416
|
+
}
|
|
417
|
+
const updateResult = await updateQueryBuilder.execute();
|
|
418
|
+
let updateGeneratedMap = updateResult.generatedMaps[0];
|
|
419
|
+
if (updateGeneratedMap) {
|
|
420
|
+
subject.metadata.columns.forEach((column) => {
|
|
421
|
+
const value = column.getEntityValue(updateGeneratedMap);
|
|
422
|
+
if (value !== undefined && value !== null) {
|
|
423
|
+
const preparedValue = this.queryRunner.connection.driver.prepareHydratedValue(value, column);
|
|
424
|
+
column.setEntityValue(updateGeneratedMap, preparedValue);
|
|
601
425
|
}
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
case 0:
|
|
608
|
-
_b.trys.push([0, 7, 8, 9]);
|
|
609
|
-
nestedSetSubjects_1 = tslib_1.__values(nestedSetSubjects), nestedSetSubjects_1_1 = nestedSetSubjects_1.next();
|
|
610
|
-
_b.label = 1;
|
|
611
|
-
case 1:
|
|
612
|
-
if (!!nestedSetSubjects_1_1.done) return [3 /*break*/, 6];
|
|
613
|
-
subject = nestedSetSubjects_1_1.value;
|
|
614
|
-
_b.label = 2;
|
|
615
|
-
case 2:
|
|
616
|
-
_b.trys.push([2, 4, , 5]);
|
|
617
|
-
return [4 /*yield*/, updateSubject(subject)];
|
|
618
|
-
case 3:
|
|
619
|
-
_b.sent();
|
|
620
|
-
return [3 /*break*/, 5];
|
|
621
|
-
case 4:
|
|
622
|
-
error_1 = _b.sent();
|
|
623
|
-
fail(error_1);
|
|
624
|
-
return [3 /*break*/, 5];
|
|
625
|
-
case 5:
|
|
626
|
-
nestedSetSubjects_1_1 = nestedSetSubjects_1.next();
|
|
627
|
-
return [3 /*break*/, 1];
|
|
628
|
-
case 6: return [3 /*break*/, 9];
|
|
629
|
-
case 7:
|
|
630
|
-
e_4_1 = _b.sent();
|
|
631
|
-
e_4 = { error: e_4_1 };
|
|
632
|
-
return [3 /*break*/, 9];
|
|
633
|
-
case 8:
|
|
634
|
-
try {
|
|
635
|
-
if (nestedSetSubjects_1_1 && !nestedSetSubjects_1_1.done && (_a = nestedSetSubjects_1.return)) _a.call(nestedSetSubjects_1);
|
|
636
|
-
}
|
|
637
|
-
finally { if (e_4) throw e_4.error; }
|
|
638
|
-
return [7 /*endfinally*/];
|
|
639
|
-
case 9:
|
|
640
|
-
ok();
|
|
641
|
-
return [2 /*return*/];
|
|
642
|
-
}
|
|
643
|
-
});
|
|
644
|
-
}); });
|
|
645
|
-
// Run all remaining subjects in parallel
|
|
646
|
-
return [4 /*yield*/, Promise.all(tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(remainingSubjects.map(updateSubject)), false), [
|
|
647
|
-
nestedSetPromise,
|
|
648
|
-
], false))];
|
|
649
|
-
case 1:
|
|
650
|
-
// Run all remaining subjects in parallel
|
|
651
|
-
_d.sent();
|
|
652
|
-
return [2 /*return*/];
|
|
426
|
+
});
|
|
427
|
+
if (!subject.generatedMap) {
|
|
428
|
+
subject.generatedMap = {};
|
|
429
|
+
}
|
|
430
|
+
Object.assign(subject.generatedMap, updateGeneratedMap);
|
|
653
431
|
}
|
|
654
|
-
}
|
|
432
|
+
}
|
|
433
|
+
};
|
|
434
|
+
// Nested sets need to be updated one by one
|
|
435
|
+
// Split array in two, one with nested set subjects and the other with the remaining subjects
|
|
436
|
+
const nestedSetSubjects = [];
|
|
437
|
+
const remainingSubjects = [];
|
|
438
|
+
for (const subject of this.updateSubjects) {
|
|
439
|
+
if (subject.metadata.treeType === "nested-set") {
|
|
440
|
+
nestedSetSubjects.push(subject);
|
|
441
|
+
}
|
|
442
|
+
else {
|
|
443
|
+
remainingSubjects.push(subject);
|
|
444
|
+
}
|
|
445
|
+
}
|
|
446
|
+
// Run nested set updates one by one
|
|
447
|
+
const nestedSetPromise = new Promise(async (ok, fail) => {
|
|
448
|
+
for (const subject of nestedSetSubjects) {
|
|
449
|
+
try {
|
|
450
|
+
await updateSubject(subject);
|
|
451
|
+
}
|
|
452
|
+
catch (error) {
|
|
453
|
+
fail(error);
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
ok();
|
|
655
457
|
});
|
|
656
|
-
|
|
458
|
+
// Run all remaining subjects in parallel
|
|
459
|
+
await Promise.all([
|
|
460
|
+
...remainingSubjects.map(updateSubject),
|
|
461
|
+
nestedSetPromise,
|
|
462
|
+
]);
|
|
463
|
+
}
|
|
657
464
|
/**
|
|
658
465
|
* Removes all given subjects from the database.
|
|
659
466
|
*
|
|
660
467
|
* todo: we need to apply topological sort here as well
|
|
661
468
|
*/
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
case 1:
|
|
672
|
-
_d.trys.push([1, 13, 14, 15]);
|
|
673
|
-
groupedRemoveSubjectKeys_1 = tslib_1.__values(groupedRemoveSubjectKeys), groupedRemoveSubjectKeys_1_1 = groupedRemoveSubjectKeys_1.next();
|
|
674
|
-
_d.label = 2;
|
|
675
|
-
case 2:
|
|
676
|
-
if (!!groupedRemoveSubjectKeys_1_1.done) return [3 /*break*/, 12];
|
|
677
|
-
groupName = groupedRemoveSubjectKeys_1_1.value;
|
|
678
|
-
subjects = groupedRemoveSubjects[groupName];
|
|
679
|
-
deleteMaps = subjects.map(function (subject) {
|
|
680
|
-
if (!subject.identifier)
|
|
681
|
-
throw new SubjectWithoutIdentifierError_1.SubjectWithoutIdentifierError(subject);
|
|
682
|
-
return subject.identifier;
|
|
683
|
-
});
|
|
684
|
-
if (!
|
|
685
|
-
//#region @backend
|
|
686
|
-
InstanceChecker_1.InstanceChecker.isMongoEntityManager(this.queryRunner.manager))
|
|
687
|
-
//#region @backend
|
|
688
|
-
return [3 /*break*/, 4];
|
|
689
|
-
manager = this.queryRunner.manager;
|
|
690
|
-
return [4 /*yield*/, manager.delete(subjects[0].metadata.target, deleteMaps)
|
|
691
|
-
//#endregion
|
|
692
|
-
];
|
|
693
|
-
case 3:
|
|
694
|
-
_d.sent();
|
|
695
|
-
return [3 /*break*/, 11];
|
|
696
|
-
case 4:
|
|
697
|
-
_b = subjects[0].metadata.treeType;
|
|
698
|
-
switch (_b) {
|
|
699
|
-
case "nested-set": return [3 /*break*/, 5];
|
|
700
|
-
case "closure-table": return [3 /*break*/, 7];
|
|
701
|
-
}
|
|
702
|
-
return [3 /*break*/, 9];
|
|
703
|
-
case 5: return [4 /*yield*/, new NestedSetSubjectExecutor_1.NestedSetSubjectExecutor(this.queryRunner).remove(subjects)];
|
|
704
|
-
case 6:
|
|
705
|
-
_d.sent();
|
|
706
|
-
return [3 /*break*/, 9];
|
|
707
|
-
case 7: return [4 /*yield*/, new ClosureSubjectExecutor_1.ClosureSubjectExecutor(this.queryRunner).remove(subjects)];
|
|
708
|
-
case 8:
|
|
709
|
-
_d.sent();
|
|
710
|
-
return [3 /*break*/, 9];
|
|
711
|
-
case 9:
|
|
712
|
-
// here we execute our deletion query
|
|
713
|
-
// we don't need to specify entities and set update entity to true since the only thing query builder
|
|
714
|
-
// will do for use is a primary keys deletion which is handled by us later once persistence is finished
|
|
715
|
-
// also, we disable listeners because we call them on our own in persistence layer
|
|
716
|
-
return [4 /*yield*/, this.queryRunner.manager
|
|
717
|
-
.createQueryBuilder()
|
|
718
|
-
.delete()
|
|
719
|
-
.from(subjects[0].metadata.target)
|
|
720
|
-
.where(deleteMaps)
|
|
721
|
-
.callListeners(false)
|
|
722
|
-
.execute()];
|
|
723
|
-
case 10:
|
|
724
|
-
// here we execute our deletion query
|
|
725
|
-
// we don't need to specify entities and set update entity to true since the only thing query builder
|
|
726
|
-
// will do for use is a primary keys deletion which is handled by us later once persistence is finished
|
|
727
|
-
// also, we disable listeners because we call them on our own in persistence layer
|
|
728
|
-
_d.sent();
|
|
729
|
-
_d.label = 11;
|
|
730
|
-
case 11:
|
|
731
|
-
groupedRemoveSubjectKeys_1_1 = groupedRemoveSubjectKeys_1.next();
|
|
732
|
-
return [3 /*break*/, 2];
|
|
733
|
-
case 12: return [3 /*break*/, 15];
|
|
734
|
-
case 13:
|
|
735
|
-
e_5_1 = _d.sent();
|
|
736
|
-
e_5 = { error: e_5_1 };
|
|
737
|
-
return [3 /*break*/, 15];
|
|
738
|
-
case 14:
|
|
739
|
-
try {
|
|
740
|
-
if (groupedRemoveSubjectKeys_1_1 && !groupedRemoveSubjectKeys_1_1.done && (_c = groupedRemoveSubjectKeys_1.return)) _c.call(groupedRemoveSubjectKeys_1);
|
|
741
|
-
}
|
|
742
|
-
finally { if (e_5) throw e_5.error; }
|
|
743
|
-
return [7 /*endfinally*/];
|
|
744
|
-
case 15: return [2 /*return*/];
|
|
745
|
-
}
|
|
469
|
+
async executeRemoveOperations() {
|
|
470
|
+
// group insertion subjects to make bulk insertions
|
|
471
|
+
const [groupedRemoveSubjects, groupedRemoveSubjectKeys] = this.groupBulkSubjects(this.removeSubjects, "delete");
|
|
472
|
+
for (const groupName of groupedRemoveSubjectKeys) {
|
|
473
|
+
const subjects = groupedRemoveSubjects[groupName];
|
|
474
|
+
const deleteMaps = subjects.map((subject) => {
|
|
475
|
+
if (!subject.identifier)
|
|
476
|
+
throw new SubjectWithoutIdentifierError_1.SubjectWithoutIdentifierError(subject);
|
|
477
|
+
return subject.identifier;
|
|
746
478
|
});
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
479
|
+
// for mongodb we have a bit different updation logic
|
|
480
|
+
if (
|
|
481
|
+
//#region @backend
|
|
482
|
+
InstanceChecker_1.InstanceChecker.isMongoEntityManager(this.queryRunner.manager)
|
|
483
|
+
//#endregion
|
|
484
|
+
/* */
|
|
485
|
+
/* */
|
|
486
|
+
/* */
|
|
487
|
+
/* */
|
|
488
|
+
/* */
|
|
489
|
+
) {
|
|
490
|
+
//#region @backend
|
|
491
|
+
const manager = this.queryRunner.manager;
|
|
492
|
+
await manager.delete(subjects[0].metadata.target, deleteMaps);
|
|
493
|
+
//#endregion
|
|
758
494
|
}
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
495
|
+
else {
|
|
496
|
+
// for tree tables we execute additional queries
|
|
497
|
+
switch (subjects[0].metadata.treeType) {
|
|
498
|
+
case "nested-set":
|
|
499
|
+
await new NestedSetSubjectExecutor_1.NestedSetSubjectExecutor(this.queryRunner).remove(subjects);
|
|
500
|
+
break;
|
|
501
|
+
case "closure-table":
|
|
502
|
+
await new ClosureSubjectExecutor_1.ClosureSubjectExecutor(this.queryRunner).remove(subjects);
|
|
503
|
+
break;
|
|
763
504
|
}
|
|
764
|
-
|
|
505
|
+
// here we execute our deletion query
|
|
506
|
+
// we don't need to specify entities and set update entity to true since the only thing query builder
|
|
507
|
+
// will do for use is a primary keys deletion which is handled by us later once persistence is finished
|
|
508
|
+
// also, we disable listeners because we call them on our own in persistence layer
|
|
509
|
+
await this.queryRunner.manager
|
|
510
|
+
.createQueryBuilder()
|
|
511
|
+
.delete()
|
|
512
|
+
.from(subjects[0].metadata.target)
|
|
513
|
+
.where(deleteMaps)
|
|
514
|
+
.callListeners(false)
|
|
515
|
+
.execute();
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
cloneMongoSubjectEntity(subject) {
|
|
520
|
+
const target = {};
|
|
521
|
+
if (subject.entity) {
|
|
522
|
+
for (const column of subject.metadata.columns) {
|
|
523
|
+
OrmUtils_1.OrmUtils.mergeDeep(target, column.getEntityValueMap(subject.entity));
|
|
765
524
|
}
|
|
766
525
|
}
|
|
767
526
|
return target;
|
|
768
|
-
}
|
|
527
|
+
}
|
|
769
528
|
/**
|
|
770
529
|
* Soft-removes all given subjects in the database.
|
|
771
530
|
*/
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
subject.metadata.objectIdColumn.propertyName) {
|
|
793
|
-
delete partialEntity[subject.metadata.objectIdColumn.propertyName];
|
|
794
|
-
}
|
|
795
|
-
if (subject.metadata.createDateColumn &&
|
|
796
|
-
subject.metadata.createDateColumn.propertyName) {
|
|
797
|
-
delete partialEntity[subject.metadata.createDateColumn.propertyName];
|
|
798
|
-
}
|
|
799
|
-
if (subject.metadata.updateDateColumn &&
|
|
800
|
-
subject.metadata.updateDateColumn.propertyName) {
|
|
801
|
-
partialEntity[subject.metadata.updateDateColumn.propertyName] = new Date();
|
|
802
|
-
}
|
|
803
|
-
if (subject.metadata.deleteDateColumn &&
|
|
804
|
-
subject.metadata.deleteDateColumn.propertyName) {
|
|
805
|
-
partialEntity[subject.metadata.deleteDateColumn.propertyName] = new Date();
|
|
806
|
-
}
|
|
807
|
-
manager = this.queryRunner.manager;
|
|
808
|
-
return [4 /*yield*/, manager.update(subject.metadata.target, subject.identifier, partialEntity)];
|
|
809
|
-
case 1:
|
|
810
|
-
//#endregion
|
|
811
|
-
/* */
|
|
812
|
-
/* */
|
|
813
|
-
updateResult = _a.sent();
|
|
814
|
-
return [3 /*break*/, 4];
|
|
815
|
-
case 2:
|
|
816
|
-
softDeleteQueryBuilder = this.queryRunner.manager
|
|
817
|
-
.createQueryBuilder()
|
|
818
|
-
.softDelete()
|
|
819
|
-
.from(subject.metadata.target)
|
|
820
|
-
.updateEntity(this.options && this.options.reload === false
|
|
821
|
-
? false
|
|
822
|
-
: true)
|
|
823
|
-
.callListeners(false);
|
|
824
|
-
if (subject.entity) {
|
|
825
|
-
softDeleteQueryBuilder.whereEntity(subject.identifier);
|
|
826
|
-
}
|
|
827
|
-
else {
|
|
828
|
-
// in this case identifier is just conditions object to update by
|
|
829
|
-
softDeleteQueryBuilder.where(subject.identifier);
|
|
830
|
-
}
|
|
831
|
-
return [4 /*yield*/, softDeleteQueryBuilder.execute()];
|
|
832
|
-
case 3:
|
|
833
|
-
updateResult = _a.sent();
|
|
834
|
-
_a.label = 4;
|
|
835
|
-
case 4:
|
|
836
|
-
subject.generatedMap = updateResult.generatedMaps[0];
|
|
837
|
-
if (subject.generatedMap) {
|
|
838
|
-
subject.metadata.columns.forEach(function (column) {
|
|
839
|
-
var value = column.getEntityValue(subject.generatedMap);
|
|
840
|
-
if (value !== undefined && value !== null) {
|
|
841
|
-
var preparedValue = _this.queryRunner.connection.driver.prepareHydratedValue(value, column);
|
|
842
|
-
column.setEntityValue(subject.generatedMap, preparedValue);
|
|
843
|
-
}
|
|
844
|
-
});
|
|
845
|
-
}
|
|
846
|
-
return [2 /*return*/];
|
|
847
|
-
}
|
|
848
|
-
});
|
|
849
|
-
}); }))];
|
|
850
|
-
case 1:
|
|
851
|
-
_a.sent();
|
|
852
|
-
return [2 /*return*/];
|
|
531
|
+
async executeSoftRemoveOperations() {
|
|
532
|
+
await Promise.all(this.softRemoveSubjects.map(async (subject) => {
|
|
533
|
+
if (!subject.identifier)
|
|
534
|
+
throw new SubjectWithoutIdentifierError_1.SubjectWithoutIdentifierError(subject);
|
|
535
|
+
let updateResult;
|
|
536
|
+
// for mongodb we have a bit different updation logic
|
|
537
|
+
if (
|
|
538
|
+
//#region @backend
|
|
539
|
+
InstanceChecker_1.InstanceChecker.isMongoEntityManager(this.queryRunner.manager)
|
|
540
|
+
//#endregion
|
|
541
|
+
/* */
|
|
542
|
+
/* */
|
|
543
|
+
/* */
|
|
544
|
+
/* */
|
|
545
|
+
/* */
|
|
546
|
+
) {
|
|
547
|
+
const partialEntity = this.cloneMongoSubjectEntity(subject);
|
|
548
|
+
if (subject.metadata.objectIdColumn &&
|
|
549
|
+
subject.metadata.objectIdColumn.propertyName) {
|
|
550
|
+
delete partialEntity[subject.metadata.objectIdColumn.propertyName];
|
|
853
551
|
}
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
552
|
+
if (subject.metadata.createDateColumn &&
|
|
553
|
+
subject.metadata.createDateColumn.propertyName) {
|
|
554
|
+
delete partialEntity[subject.metadata.createDateColumn.propertyName];
|
|
555
|
+
}
|
|
556
|
+
if (subject.metadata.updateDateColumn &&
|
|
557
|
+
subject.metadata.updateDateColumn.propertyName) {
|
|
558
|
+
partialEntity[subject.metadata.updateDateColumn.propertyName] = new Date();
|
|
559
|
+
}
|
|
560
|
+
if (subject.metadata.deleteDateColumn &&
|
|
561
|
+
subject.metadata.deleteDateColumn.propertyName) {
|
|
562
|
+
partialEntity[subject.metadata.deleteDateColumn.propertyName] = new Date();
|
|
563
|
+
}
|
|
564
|
+
let manager
|
|
565
|
+
//#region @backend
|
|
566
|
+
= this.queryRunner.manager;
|
|
567
|
+
//#endregion
|
|
568
|
+
/* */
|
|
569
|
+
/* */
|
|
570
|
+
updateResult = await manager.update(subject.metadata.target, subject.identifier, partialEntity);
|
|
571
|
+
}
|
|
572
|
+
else {
|
|
573
|
+
// here we execute our soft-deletion query
|
|
574
|
+
// we need to enable entity soft-deletion because we update a subject identifier
|
|
575
|
+
// which is not same object as our entity that's why we don't need to worry about our entity to get dirty
|
|
576
|
+
// also, we disable listeners because we call them on our own in persistence layer
|
|
577
|
+
const softDeleteQueryBuilder = this.queryRunner.manager
|
|
578
|
+
.createQueryBuilder()
|
|
579
|
+
.softDelete()
|
|
580
|
+
.from(subject.metadata.target)
|
|
581
|
+
.updateEntity(this.options && this.options.reload === false
|
|
582
|
+
? false
|
|
583
|
+
: true)
|
|
584
|
+
.callListeners(false);
|
|
585
|
+
if (subject.entity) {
|
|
586
|
+
softDeleteQueryBuilder.whereEntity(subject.identifier);
|
|
587
|
+
}
|
|
588
|
+
else {
|
|
589
|
+
// in this case identifier is just conditions object to update by
|
|
590
|
+
softDeleteQueryBuilder.where(subject.identifier);
|
|
591
|
+
}
|
|
592
|
+
updateResult = await softDeleteQueryBuilder.execute();
|
|
593
|
+
}
|
|
594
|
+
subject.generatedMap = updateResult.generatedMaps[0];
|
|
595
|
+
if (subject.generatedMap) {
|
|
596
|
+
subject.metadata.columns.forEach((column) => {
|
|
597
|
+
const value = column.getEntityValue(subject.generatedMap);
|
|
598
|
+
if (value !== undefined && value !== null) {
|
|
599
|
+
const preparedValue = this.queryRunner.connection.driver.prepareHydratedValue(value, column);
|
|
600
|
+
column.setEntityValue(subject.generatedMap, preparedValue);
|
|
601
|
+
}
|
|
602
|
+
});
|
|
603
|
+
}
|
|
604
|
+
// experiments, remove probably, need to implement tree tables children removal
|
|
605
|
+
// if (subject.updatedRelationMaps.length > 0) {
|
|
606
|
+
// await Promise.all(subject.updatedRelationMaps.map(async updatedRelation => {
|
|
607
|
+
// if (!updatedRelation.relation.isTreeParent) return;
|
|
608
|
+
// if (!updatedRelation.value !== null) return;
|
|
609
|
+
//
|
|
610
|
+
// if (subject.metadata.treeType === "closure-table") {
|
|
611
|
+
// await new ClosureSubjectExecutor(this.queryRunner).deleteChildrenOf(subject);
|
|
612
|
+
// }
|
|
613
|
+
// }));
|
|
614
|
+
// }
|
|
615
|
+
}));
|
|
616
|
+
}
|
|
857
617
|
/**
|
|
858
618
|
* Recovers all given subjects in the database.
|
|
859
619
|
*/
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
delete partialEntity[subject.metadata.objectIdColumn.propertyName];
|
|
882
|
-
}
|
|
883
|
-
if (subject.metadata.createDateColumn &&
|
|
884
|
-
subject.metadata.createDateColumn.propertyName) {
|
|
885
|
-
delete partialEntity[subject.metadata.createDateColumn.propertyName];
|
|
886
|
-
}
|
|
887
|
-
if (subject.metadata.updateDateColumn &&
|
|
888
|
-
subject.metadata.updateDateColumn.propertyName) {
|
|
889
|
-
partialEntity[subject.metadata.updateDateColumn.propertyName] = new Date();
|
|
890
|
-
}
|
|
891
|
-
if (subject.metadata.deleteDateColumn &&
|
|
892
|
-
subject.metadata.deleteDateColumn.propertyName) {
|
|
893
|
-
partialEntity[subject.metadata.deleteDateColumn.propertyName] = null;
|
|
894
|
-
}
|
|
895
|
-
manager = this.queryRunner
|
|
896
|
-
.manager;
|
|
897
|
-
return [4 /*yield*/, manager.update(subject.metadata.target, subject.identifier, partialEntity)
|
|
898
|
-
//#endregion
|
|
899
|
-
];
|
|
900
|
-
case 1:
|
|
901
|
-
updateResult = _a.sent();
|
|
902
|
-
return [3 /*break*/, 4];
|
|
903
|
-
case 2:
|
|
904
|
-
softDeleteQueryBuilder = this.queryRunner.manager
|
|
905
|
-
.createQueryBuilder()
|
|
906
|
-
.restore()
|
|
907
|
-
.from(subject.metadata.target)
|
|
908
|
-
.updateEntity(this.options && this.options.reload === false
|
|
909
|
-
? false
|
|
910
|
-
: true)
|
|
911
|
-
.callListeners(false);
|
|
912
|
-
if (subject.entity) {
|
|
913
|
-
softDeleteQueryBuilder.whereEntity(subject.identifier);
|
|
914
|
-
}
|
|
915
|
-
else {
|
|
916
|
-
// in this case identifier is just conditions object to update by
|
|
917
|
-
softDeleteQueryBuilder.where(subject.identifier);
|
|
918
|
-
}
|
|
919
|
-
return [4 /*yield*/, softDeleteQueryBuilder.execute()];
|
|
920
|
-
case 3:
|
|
921
|
-
updateResult = _a.sent();
|
|
922
|
-
_a.label = 4;
|
|
923
|
-
case 4:
|
|
924
|
-
subject.generatedMap = updateResult.generatedMaps[0];
|
|
925
|
-
if (subject.generatedMap) {
|
|
926
|
-
subject.metadata.columns.forEach(function (column) {
|
|
927
|
-
var value = column.getEntityValue(subject.generatedMap);
|
|
928
|
-
if (value !== undefined && value !== null) {
|
|
929
|
-
var preparedValue = _this.queryRunner.connection.driver.prepareHydratedValue(value, column);
|
|
930
|
-
column.setEntityValue(subject.generatedMap, preparedValue);
|
|
931
|
-
}
|
|
932
|
-
});
|
|
933
|
-
}
|
|
934
|
-
return [2 /*return*/];
|
|
935
|
-
}
|
|
936
|
-
});
|
|
937
|
-
}); }))];
|
|
938
|
-
case 1:
|
|
939
|
-
_a.sent();
|
|
940
|
-
return [2 /*return*/];
|
|
620
|
+
async executeRecoverOperations() {
|
|
621
|
+
await Promise.all(this.recoverSubjects.map(async (subject) => {
|
|
622
|
+
if (!subject.identifier)
|
|
623
|
+
throw new SubjectWithoutIdentifierError_1.SubjectWithoutIdentifierError(subject);
|
|
624
|
+
let updateResult;
|
|
625
|
+
// for mongodb we have a bit different updation logic
|
|
626
|
+
if (
|
|
627
|
+
//#region @backend
|
|
628
|
+
InstanceChecker_1.InstanceChecker.isMongoEntityManager(this.queryRunner.manager)
|
|
629
|
+
//#endregion
|
|
630
|
+
/* */
|
|
631
|
+
/* */
|
|
632
|
+
/* */
|
|
633
|
+
/* */
|
|
634
|
+
/* */
|
|
635
|
+
) {
|
|
636
|
+
//#region @backend
|
|
637
|
+
const partialEntity = this.cloneMongoSubjectEntity(subject);
|
|
638
|
+
if (subject.metadata.objectIdColumn &&
|
|
639
|
+
subject.metadata.objectIdColumn.propertyName) {
|
|
640
|
+
delete partialEntity[subject.metadata.objectIdColumn.propertyName];
|
|
941
641
|
}
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
642
|
+
if (subject.metadata.createDateColumn &&
|
|
643
|
+
subject.metadata.createDateColumn.propertyName) {
|
|
644
|
+
delete partialEntity[subject.metadata.createDateColumn.propertyName];
|
|
645
|
+
}
|
|
646
|
+
if (subject.metadata.updateDateColumn &&
|
|
647
|
+
subject.metadata.updateDateColumn.propertyName) {
|
|
648
|
+
partialEntity[subject.metadata.updateDateColumn.propertyName] = new Date();
|
|
649
|
+
}
|
|
650
|
+
if (subject.metadata.deleteDateColumn &&
|
|
651
|
+
subject.metadata.deleteDateColumn.propertyName) {
|
|
652
|
+
partialEntity[subject.metadata.deleteDateColumn.propertyName] = null;
|
|
653
|
+
}
|
|
654
|
+
const manager = this.queryRunner
|
|
655
|
+
.manager;
|
|
656
|
+
updateResult = await manager.update(subject.metadata.target, subject.identifier, partialEntity);
|
|
657
|
+
//#endregion
|
|
658
|
+
}
|
|
659
|
+
else {
|
|
660
|
+
// here we execute our restory query
|
|
661
|
+
// we need to enable entity restory because we update a subject identifier
|
|
662
|
+
// which is not same object as our entity that's why we don't need to worry about our entity to get dirty
|
|
663
|
+
// also, we disable listeners because we call them on our own in persistence layer
|
|
664
|
+
const softDeleteQueryBuilder = this.queryRunner.manager
|
|
665
|
+
.createQueryBuilder()
|
|
666
|
+
.restore()
|
|
667
|
+
.from(subject.metadata.target)
|
|
668
|
+
.updateEntity(this.options && this.options.reload === false
|
|
669
|
+
? false
|
|
670
|
+
: true)
|
|
671
|
+
.callListeners(false);
|
|
672
|
+
if (subject.entity) {
|
|
673
|
+
softDeleteQueryBuilder.whereEntity(subject.identifier);
|
|
674
|
+
}
|
|
675
|
+
else {
|
|
676
|
+
// in this case identifier is just conditions object to update by
|
|
677
|
+
softDeleteQueryBuilder.where(subject.identifier);
|
|
678
|
+
}
|
|
679
|
+
updateResult = await softDeleteQueryBuilder.execute();
|
|
680
|
+
}
|
|
681
|
+
subject.generatedMap = updateResult.generatedMaps[0];
|
|
682
|
+
if (subject.generatedMap) {
|
|
683
|
+
subject.metadata.columns.forEach((column) => {
|
|
684
|
+
const value = column.getEntityValue(subject.generatedMap);
|
|
685
|
+
if (value !== undefined && value !== null) {
|
|
686
|
+
const preparedValue = this.queryRunner.connection.driver.prepareHydratedValue(value, column);
|
|
687
|
+
column.setEntityValue(subject.generatedMap, preparedValue);
|
|
688
|
+
}
|
|
689
|
+
});
|
|
690
|
+
}
|
|
691
|
+
// experiments, remove probably, need to implement tree tables children removal
|
|
692
|
+
// if (subject.updatedRelationMaps.length > 0) {
|
|
693
|
+
// await Promise.all(subject.updatedRelationMaps.map(async updatedRelation => {
|
|
694
|
+
// if (!updatedRelation.relation.isTreeParent) return;
|
|
695
|
+
// if (!updatedRelation.value !== null) return;
|
|
696
|
+
//
|
|
697
|
+
// if (subject.metadata.treeType === "closure-table") {
|
|
698
|
+
// await new ClosureSubjectExecutor(this.queryRunner).deleteChildrenOf(subject);
|
|
699
|
+
// }
|
|
700
|
+
// }));
|
|
701
|
+
// }
|
|
702
|
+
}));
|
|
703
|
+
}
|
|
945
704
|
/**
|
|
946
705
|
* Updates all special columns of the saving entities (create date, update date, version, etc.).
|
|
947
706
|
* Also updates nullable columns and columns with default values.
|
|
948
707
|
*/
|
|
949
|
-
|
|
950
|
-
var _this = this;
|
|
708
|
+
updateSpecialColumnsInPersistedEntities() {
|
|
951
709
|
// update inserted entity properties
|
|
952
710
|
if (this.insertSubjects.length)
|
|
953
711
|
this.updateSpecialColumnsInInsertedAndUpdatedEntities(this.insertSubjects);
|
|
@@ -962,24 +720,24 @@ var SubjectExecutor = /** @class */ (function () {
|
|
|
962
720
|
this.updateSpecialColumnsInInsertedAndUpdatedEntities(this.recoverSubjects);
|
|
963
721
|
// remove ids from the entities that were removed
|
|
964
722
|
if (this.removeSubjects.length) {
|
|
965
|
-
this.removeSubjects.forEach(
|
|
723
|
+
this.removeSubjects.forEach((subject) => {
|
|
966
724
|
if (!subject.entity)
|
|
967
725
|
return;
|
|
968
|
-
subject.metadata.primaryColumns.forEach(
|
|
726
|
+
subject.metadata.primaryColumns.forEach((primaryColumn) => {
|
|
969
727
|
primaryColumn.setEntityValue(subject.entity, undefined);
|
|
970
728
|
});
|
|
971
729
|
});
|
|
972
730
|
}
|
|
973
731
|
// other post-persist updations
|
|
974
|
-
this.allSubjects.forEach(
|
|
732
|
+
this.allSubjects.forEach((subject) => {
|
|
975
733
|
if (!subject.entity)
|
|
976
734
|
return;
|
|
977
|
-
subject.metadata.relationIds.forEach(
|
|
735
|
+
subject.metadata.relationIds.forEach((relationId) => {
|
|
978
736
|
relationId.setValue(subject.entity);
|
|
979
737
|
});
|
|
980
738
|
//#region @backend
|
|
981
739
|
// mongo _id remove
|
|
982
|
-
if (InstanceChecker_1.InstanceChecker.isMongoEntityManager(
|
|
740
|
+
if (InstanceChecker_1.InstanceChecker.isMongoEntityManager(this.queryRunner.manager)) {
|
|
983
741
|
if (subject.metadata.objectIdColumn &&
|
|
984
742
|
subject.metadata.objectIdColumn.databaseName &&
|
|
985
743
|
subject.metadata.objectIdColumn.databaseName !==
|
|
@@ -989,22 +747,21 @@ var SubjectExecutor = /** @class */ (function () {
|
|
|
989
747
|
}
|
|
990
748
|
//#endregion
|
|
991
749
|
});
|
|
992
|
-
}
|
|
750
|
+
}
|
|
993
751
|
/**
|
|
994
752
|
* Updates all special columns of the saving entities (create date, update date, version, etc.).
|
|
995
753
|
* Also updates nullable columns and columns with default values.
|
|
996
754
|
*/
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
subjects.forEach(function (subject) {
|
|
755
|
+
updateSpecialColumnsInInsertedAndUpdatedEntities(subjects) {
|
|
756
|
+
subjects.forEach((subject) => {
|
|
1000
757
|
if (!subject.entity)
|
|
1001
758
|
return;
|
|
1002
759
|
// set values to "null" for nullable columns that did not have values
|
|
1003
|
-
subject.metadata.columns.forEach(
|
|
760
|
+
subject.metadata.columns.forEach((column) => {
|
|
1004
761
|
// if table inheritance is used make sure this column is not child's column
|
|
1005
762
|
if (subject.metadata.childEntityMetadatas.length > 0 &&
|
|
1006
763
|
subject.metadata.childEntityMetadatas
|
|
1007
|
-
.map(
|
|
764
|
+
.map((metadata) => metadata.target)
|
|
1008
765
|
.indexOf(column.target) !== -1)
|
|
1009
766
|
return;
|
|
1010
767
|
// entities does not have virtual columns
|
|
@@ -1012,14 +769,14 @@ var SubjectExecutor = /** @class */ (function () {
|
|
|
1012
769
|
return;
|
|
1013
770
|
// update nullable columns
|
|
1014
771
|
if (column.isNullable) {
|
|
1015
|
-
|
|
772
|
+
const columnValue = column.getEntityValue(subject.entity);
|
|
1016
773
|
if (columnValue === undefined)
|
|
1017
774
|
column.setEntityValue(subject.entity, null);
|
|
1018
775
|
}
|
|
1019
776
|
// update relational columns
|
|
1020
777
|
if (subject.updatedRelationMaps.length > 0) {
|
|
1021
|
-
subject.updatedRelationMaps.forEach(
|
|
1022
|
-
updatedRelationMap.relation.joinColumns.forEach(
|
|
778
|
+
subject.updatedRelationMaps.forEach((updatedRelationMap) => {
|
|
779
|
+
updatedRelationMap.relation.joinColumns.forEach((column) => {
|
|
1023
780
|
if (column.isVirtual === true)
|
|
1024
781
|
return;
|
|
1025
782
|
column.setEntityValue(subject.entity, ObjectUtils_1.ObjectUtils.isObject(updatedRelationMap.value)
|
|
@@ -1031,9 +788,9 @@ var SubjectExecutor = /** @class */ (function () {
|
|
|
1031
788
|
});
|
|
1032
789
|
// merge into entity all generated values returned by a database
|
|
1033
790
|
if (subject.generatedMap)
|
|
1034
|
-
|
|
791
|
+
this.queryRunner.manager.merge(subject.metadata.target, subject.entity, subject.generatedMap);
|
|
1035
792
|
});
|
|
1036
|
-
}
|
|
793
|
+
}
|
|
1037
794
|
/**
|
|
1038
795
|
* Groups subjects by metadata names (by tables) to make bulk insertions and deletions possible.
|
|
1039
796
|
* However there are some limitations with bulk insertions of data into tables with generated (increment) columns
|
|
@@ -1045,17 +802,17 @@ var SubjectExecutor = /** @class */ (function () {
|
|
|
1045
802
|
* Other drivers like postgres and sql server support RETURNING / OUTPUT statement which allows to return generated
|
|
1046
803
|
* id for each inserted row, that's why bulk insertion is not limited to junction tables in there.
|
|
1047
804
|
*/
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
805
|
+
groupBulkSubjects(subjects, type) {
|
|
806
|
+
const group = {};
|
|
807
|
+
const keys = [];
|
|
808
|
+
const hasReturningDependColumns = subjects.some((subject) => {
|
|
1052
809
|
return subject.metadata.getInsertionReturningColumns().length > 0;
|
|
1053
810
|
});
|
|
1054
|
-
|
|
811
|
+
const groupingAllowed = type === "delete" ||
|
|
1055
812
|
this.queryRunner.connection.driver.isReturningSqlSupported("insert") ||
|
|
1056
813
|
hasReturningDependColumns === false;
|
|
1057
|
-
subjects.forEach(
|
|
1058
|
-
|
|
814
|
+
subjects.forEach((subject, index) => {
|
|
815
|
+
const key = groupingAllowed || subject.metadata.isJunction
|
|
1059
816
|
? subject.metadata.name
|
|
1060
817
|
: subject.metadata.name + "_" + index;
|
|
1061
818
|
if (!group[key]) {
|
|
@@ -1067,8 +824,7 @@ var SubjectExecutor = /** @class */ (function () {
|
|
|
1067
824
|
}
|
|
1068
825
|
});
|
|
1069
826
|
return [group, keys];
|
|
1070
|
-
}
|
|
1071
|
-
|
|
1072
|
-
}());
|
|
827
|
+
}
|
|
828
|
+
}
|
|
1073
829
|
exports.SubjectExecutor = SubjectExecutor;
|
|
1074
830
|
//# sourceMappingURL=SubjectExecutor.js.map
|