typeorm 1.0.0-beta.1 → 1.0.0-beta.2
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/browser/cache/DbQueryResultCache.d.ts +7 -0
- package/browser/cache/DbQueryResultCache.js +12 -4
- package/browser/cache/DbQueryResultCache.js.map +1 -1
- package/browser/cache/RedisQueryResultCache.d.ts +7 -0
- package/browser/cache/RedisQueryResultCache.js +15 -10
- package/browser/cache/RedisQueryResultCache.js.map +1 -1
- package/browser/cli-ts-node-esm.js +2 -2
- package/browser/cli-ts-node-esm.js.map +1 -1
- package/browser/common/RelationType.d.ts +2 -0
- package/browser/common/RelationType.js.map +1 -1
- package/browser/connection/ConnectionMetadataBuilder.d.ts +3 -0
- package/browser/connection/ConnectionMetadataBuilder.js +3 -0
- package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
- package/browser/connection/ConnectionOptionsReader.d.ts +5 -4
- package/browser/connection/ConnectionOptionsReader.js +14 -12
- package/browser/connection/ConnectionOptionsReader.js.map +1 -1
- package/browser/data-source/BaseDataSourceOptions.d.ts +8 -0
- package/browser/data-source/BaseDataSourceOptions.js.map +1 -1
- package/browser/data-source/DataSource.d.ts +20 -1
- package/browser/data-source/DataSource.js +37 -15
- package/browser/data-source/DataSource.js.map +1 -1
- package/browser/decorator/Check.d.ts +2 -0
- package/browser/decorator/Check.js +2 -1
- package/browser/decorator/Check.js.map +1 -1
- package/browser/decorator/Exclusion.d.ts +2 -0
- package/browser/decorator/Exclusion.js +1 -0
- package/browser/decorator/Exclusion.js.map +1 -1
- package/browser/decorator/ForeignKey.d.ts +3 -0
- package/browser/decorator/ForeignKey.js +1 -0
- package/browser/decorator/ForeignKey.js.map +1 -1
- package/browser/decorator/Generated.d.ts +1 -0
- package/browser/decorator/Generated.js +1 -0
- package/browser/decorator/Generated.js.map +1 -1
- package/browser/decorator/Index.d.ts +7 -0
- package/browser/decorator/Index.js +13 -13
- package/browser/decorator/Index.js.map +1 -1
- package/browser/decorator/Unique.d.ts +4 -0
- package/browser/decorator/Unique.js +6 -6
- package/browser/decorator/Unique.js.map +1 -1
- package/browser/decorator/columns/Column.d.ts +11 -0
- package/browser/decorator/columns/Column.js +3 -3
- package/browser/decorator/columns/Column.js.map +1 -1
- package/browser/decorator/columns/CreateDateColumn.d.ts +1 -0
- package/browser/decorator/columns/CreateDateColumn.js +2 -1
- package/browser/decorator/columns/CreateDateColumn.js.map +1 -1
- package/browser/decorator/columns/DeleteDateColumn.d.ts +1 -0
- package/browser/decorator/columns/DeleteDateColumn.js +2 -1
- package/browser/decorator/columns/DeleteDateColumn.js.map +1 -1
- package/browser/decorator/columns/ObjectIdColumn.d.ts +1 -0
- package/browser/decorator/columns/ObjectIdColumn.js +3 -4
- package/browser/decorator/columns/ObjectIdColumn.js.map +1 -1
- package/browser/decorator/columns/PrimaryColumn.d.ts +2 -0
- package/browser/decorator/columns/PrimaryColumn.js +2 -2
- package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
- package/browser/decorator/columns/PrimaryGeneratedColumn.d.ts +4 -0
- package/browser/decorator/columns/PrimaryGeneratedColumn.js +1 -0
- package/browser/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
- package/browser/decorator/columns/UpdateDateColumn.d.ts +1 -0
- package/browser/decorator/columns/UpdateDateColumn.js +2 -1
- package/browser/decorator/columns/UpdateDateColumn.js.map +1 -1
- package/browser/decorator/columns/VersionColumn.d.ts +1 -0
- package/browser/decorator/columns/VersionColumn.js +2 -1
- package/browser/decorator/columns/VersionColumn.js.map +1 -1
- package/browser/decorator/columns/ViewColumn.d.ts +1 -0
- package/browser/decorator/columns/ViewColumn.js +2 -1
- package/browser/decorator/columns/ViewColumn.js.map +1 -1
- package/browser/decorator/columns/VirtualColumn.d.ts +2 -0
- package/browser/decorator/columns/VirtualColumn.js +1 -0
- package/browser/decorator/columns/VirtualColumn.js.map +1 -1
- package/browser/decorator/entity/ChildEntity.d.ts +1 -0
- package/browser/decorator/entity/ChildEntity.js +1 -0
- package/browser/decorator/entity/ChildEntity.js.map +1 -1
- package/browser/decorator/entity/Entity.d.ts +2 -0
- package/browser/decorator/entity/Entity.js +7 -6
- package/browser/decorator/entity/Entity.js.map +1 -1
- package/browser/decorator/entity/TableInheritance.d.ts +1 -0
- package/browser/decorator/entity/TableInheritance.js +3 -2
- package/browser/decorator/entity/TableInheritance.js.map +1 -1
- package/browser/decorator/entity-view/ViewEntity.d.ts +2 -0
- package/browser/decorator/entity-view/ViewEntity.js +4 -3
- package/browser/decorator/entity-view/ViewEntity.js.map +1 -1
- package/browser/decorator/options/ColumnOptions.d.ts +3 -0
- package/browser/decorator/options/ColumnOptions.js.map +1 -1
- package/browser/decorator/options/EntityOptions.d.ts +1 -0
- package/browser/decorator/options/EntityOptions.js.map +1 -1
- package/browser/decorator/options/RelationOptions.d.ts +2 -0
- package/browser/decorator/options/RelationOptions.js.map +1 -1
- package/browser/decorator/options/VirtualColumnOptions.d.ts +1 -0
- package/browser/decorator/options/VirtualColumnOptions.js.map +1 -1
- package/browser/decorator/relations/JoinColumn.d.ts +2 -0
- package/browser/decorator/relations/JoinColumn.js +2 -1
- package/browser/decorator/relations/JoinColumn.js.map +1 -1
- package/browser/decorator/relations/JoinTable.d.ts +2 -0
- package/browser/decorator/relations/JoinTable.js +5 -4
- package/browser/decorator/relations/JoinTable.js.map +1 -1
- package/browser/decorator/relations/ManyToMany.d.ts +2 -0
- package/browser/decorator/relations/ManyToMany.js +2 -2
- package/browser/decorator/relations/ManyToMany.js.map +1 -1
- package/browser/decorator/relations/ManyToOne.d.ts +2 -0
- package/browser/decorator/relations/ManyToOne.js +3 -3
- package/browser/decorator/relations/ManyToOne.js.map +1 -1
- package/browser/decorator/relations/OneToMany.d.ts +1 -0
- package/browser/decorator/relations/OneToMany.js +3 -3
- package/browser/decorator/relations/OneToMany.js.map +1 -1
- package/browser/decorator/relations/OneToOne.d.ts +2 -0
- package/browser/decorator/relations/OneToOne.js +3 -3
- package/browser/decorator/relations/OneToOne.js.map +1 -1
- package/browser/decorator/relations/RelationId.d.ts +1 -0
- package/browser/decorator/relations/RelationId.js +1 -0
- package/browser/decorator/relations/RelationId.js.map +1 -1
- package/browser/decorator/tree/Tree.d.ts +1 -0
- package/browser/decorator/tree/Tree.js +1 -0
- package/browser/decorator/tree/Tree.js.map +1 -1
- package/browser/decorator/tree/TreeChildren.d.ts +1 -0
- package/browser/decorator/tree/TreeChildren.js +3 -3
- package/browser/decorator/tree/TreeChildren.js.map +1 -1
- package/browser/decorator/tree/TreeParent.d.ts +1 -0
- package/browser/decorator/tree/TreeParent.js +3 -3
- package/browser/decorator/tree/TreeParent.js.map +1 -1
- package/browser/driver/Driver.d.ts +5 -0
- package/browser/driver/Driver.js.map +1 -1
- package/browser/driver/DriverFactory.d.ts +1 -0
- package/browser/driver/DriverFactory.js +1 -0
- package/browser/driver/DriverFactory.js.map +1 -1
- package/browser/driver/DriverUtils.d.ts +7 -0
- package/browser/driver/DriverUtils.js +34 -21
- package/browser/driver/DriverUtils.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.d.ts +1 -0
- package/browser/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlDataSourceOptions.d.ts +1 -0
- package/browser/driver/aurora-mysql/AuroraMysqlDataSourceOptions.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.d.ts +37 -0
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.js +53 -16
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +64 -0
- package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js +90 -30
- package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
- package/browser/driver/aurora-postgres/AuroraPostgresDriver.d.ts +13 -0
- package/browser/driver/aurora-postgres/AuroraPostgresDriver.js +26 -5
- package/browser/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
- package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.d.ts +3 -0
- package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js +27 -1
- package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
- package/browser/driver/better-sqlite3/BetterSqlite3DataSourceOptions.d.ts +1 -0
- package/browser/driver/better-sqlite3/BetterSqlite3DataSourceOptions.js.map +1 -1
- package/browser/driver/better-sqlite3/BetterSqlite3Driver.d.ts +3 -0
- package/browser/driver/better-sqlite3/BetterSqlite3Driver.js +5 -3
- package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.d.ts +1 -0
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js +1 -0
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
- package/browser/driver/capacitor/CapacitorDriver.d.ts +1 -0
- package/browser/driver/capacitor/CapacitorDriver.js +3 -3
- package/browser/driver/capacitor/CapacitorDriver.js.map +1 -1
- package/browser/driver/capacitor/CapacitorQueryRunner.d.ts +2 -0
- package/browser/driver/capacitor/CapacitorQueryRunner.js +4 -2
- package/browser/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachDataSourceOptions.d.ts +1 -0
- package/browser/driver/cockroachdb/CockroachDataSourceOptions.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachDriver.d.ts +35 -0
- package/browser/driver/cockroachdb/CockroachDriver.js +64 -29
- package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +74 -0
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +143 -119
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/cordova/CordovaDriver.d.ts +6 -0
- package/browser/driver/cordova/CordovaDriver.js +14 -4
- package/browser/driver/cordova/CordovaDriver.js.map +1 -1
- package/browser/driver/cordova/CordovaQueryRunner.d.ts +2 -0
- package/browser/driver/cordova/CordovaQueryRunner.js +3 -1
- package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/browser/driver/expo/ExpoDriver.js +1 -2
- package/browser/driver/expo/ExpoDriver.js.map +1 -1
- package/browser/driver/mongodb/MongoDriver.d.ts +25 -0
- package/browser/driver/mongodb/MongoDriver.js +35 -6
- package/browser/driver/mongodb/MongoDriver.js.map +1 -1
- package/browser/driver/mongodb/MongoQueryRunner.d.ts +84 -0
- package/browser/driver/mongodb/MongoQueryRunner.js +102 -18
- package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
- package/browser/driver/mongodb/bson.typings.d.ts +1 -0
- package/browser/driver/mongodb/bson.typings.js.map +1 -1
- package/browser/driver/mysql/MysqlConnectionCredentialsOptions.d.ts +1 -0
- package/browser/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
- package/browser/driver/mysql/MysqlDataSourceOptions.d.ts +2 -0
- package/browser/driver/mysql/MysqlDataSourceOptions.js.map +1 -1
- package/browser/driver/mysql/MysqlDriver.d.ts +37 -0
- package/browser/driver/mysql/MysqlDriver.js +57 -17
- package/browser/driver/mysql/MysqlDriver.js.map +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.d.ts +64 -0
- package/browser/driver/mysql/MysqlQueryRunner.js +140 -111
- package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/browser/driver/nativescript/NativescriptDriver.d.ts +1 -0
- package/browser/driver/nativescript/NativescriptDriver.js +3 -4
- package/browser/driver/nativescript/NativescriptDriver.js.map +1 -1
- package/browser/driver/nativescript/NativescriptQueryRunner.d.ts +2 -0
- package/browser/driver/nativescript/NativescriptQueryRunner.js +3 -1
- package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/browser/driver/oracle/OracleDriver.d.ts +32 -0
- package/browser/driver/oracle/OracleDriver.js +48 -15
- package/browser/driver/oracle/OracleDriver.js.map +1 -1
- package/browser/driver/oracle/OracleQueryRunner.d.ts +66 -0
- package/browser/driver/oracle/OracleQueryRunner.js +119 -83
- package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/browser/driver/postgres/PostgresDataSourceOptions.d.ts +2 -0
- package/browser/driver/postgres/PostgresDataSourceOptions.js.map +1 -1
- package/browser/driver/postgres/PostgresDriver.d.ts +37 -0
- package/browser/driver/postgres/PostgresDriver.js +67 -31
- package/browser/driver/postgres/PostgresDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.d.ts +81 -0
- package/browser/driver/postgres/PostgresQueryRunner.js +152 -121
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/react-native/ReactNativeDriver.d.ts +29 -0
- package/browser/driver/react-native/ReactNativeDriver.js +45 -12
- package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
- package/browser/driver/react-native/ReactNativeQueryRunner.d.ts +2 -0
- package/browser/driver/react-native/ReactNativeQueryRunner.js +3 -1
- package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/browser/driver/sap/SapDataSourceOptions.d.ts +1 -0
- package/browser/driver/sap/SapDataSourceOptions.js.map +1 -1
- package/browser/driver/sap/SapDriver.d.ts +30 -0
- package/browser/driver/sap/SapDriver.js +45 -11
- package/browser/driver/sap/SapDriver.js.map +1 -1
- package/browser/driver/sap/SapQueryRunner.d.ts +66 -0
- package/browser/driver/sap/SapQueryRunner.js +101 -56
- package/browser/driver/sap/SapQueryRunner.js.map +1 -1
- package/browser/driver/spanner/SpannerDataSourceOptions.d.ts +1 -0
- package/browser/driver/spanner/SpannerDataSourceOptions.js.map +1 -1
- package/browser/driver/spanner/SpannerDriver.d.ts +33 -0
- package/browser/driver/spanner/SpannerDriver.js +50 -10
- package/browser/driver/spanner/SpannerDriver.js.map +1 -1
- package/browser/driver/spanner/SpannerQueryRunner.d.ts +64 -0
- package/browser/driver/spanner/SpannerQueryRunner.js +89 -32
- package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +30 -0
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +43 -77
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +59 -0
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +89 -45
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqljs/SqljsDriver.d.ts +5 -0
- package/browser/driver/sqljs/SqljsDriver.js +8 -4
- package/browser/driver/sqljs/SqljsDriver.js.map +1 -1
- package/browser/driver/sqljs/SqljsQueryRunner.d.ts +1 -0
- package/browser/driver/sqljs/SqljsQueryRunner.js +1 -0
- package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/MssqlParameter.d.ts +1 -0
- package/browser/driver/sqlserver/MssqlParameter.js +1 -0
- package/browser/driver/sqlserver/MssqlParameter.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerDataSourceOptions.d.ts +14 -5
- package/browser/driver/sqlserver/SqlServerDataSourceOptions.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.d.ts +42 -0
- package/browser/driver/sqlserver/SqlServerDriver.js +100 -26
- package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +76 -10
- package/browser/driver/sqlserver/SqlServerQueryRunner.js +160 -163
- package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/browser/driver/types/IsolationLevel.d.ts +2 -1
- package/browser/driver/types/IsolationLevel.js +8 -0
- package/browser/driver/types/IsolationLevel.js.map +1 -1
- package/browser/driver/validate-isolation-level.d.ts +9 -0
- package/browser/driver/validate-isolation-level.js +23 -0
- package/browser/driver/validate-isolation-level.js.map +1 -0
- package/browser/entity-manager/EntityManager.d.ts +38 -1
- package/browser/entity-manager/EntityManager.js +58 -12
- package/browser/entity-manager/EntityManager.js.map +1 -1
- package/browser/entity-manager/EntityManagerFactory.d.ts +1 -0
- package/browser/entity-manager/EntityManagerFactory.js +1 -0
- package/browser/entity-manager/EntityManagerFactory.js.map +1 -1
- package/browser/entity-manager/MongoEntityManager.d.ts +54 -1
- package/browser/entity-manager/MongoEntityManager.js +103 -12
- package/browser/entity-manager/MongoEntityManager.js.map +1 -1
- package/browser/entity-manager/SqljsEntityManager.d.ts +2 -0
- package/browser/entity-manager/SqljsEntityManager.js +2 -0
- package/browser/entity-manager/SqljsEntityManager.js.map +1 -1
- package/browser/entity-schema/EntitySchemaColumnOptions.d.ts +1 -0
- package/browser/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaOptions.d.ts +1 -0
- package/browser/entity-schema/EntitySchemaOptions.js.map +1 -1
- package/browser/entity-schema/EntitySchemaTransformer.d.ts +1 -0
- package/browser/entity-schema/EntitySchemaTransformer.js +25 -26
- package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/browser/error/InitializedRelationError.d.ts +1 -0
- package/browser/error/InitializedRelationError.js +1 -0
- package/browser/error/InitializedRelationError.js.map +1 -1
- package/browser/find-options/FindOptionsUtils.d.ts +7 -0
- package/browser/find-options/FindOptionsUtils.js +7 -0
- package/browser/find-options/FindOptionsUtils.js.map +1 -1
- package/browser/find-options/OrderByCondition.d.ts +2 -1
- package/browser/find-options/OrderByCondition.js.map +1 -1
- package/browser/find-options/operator/Any.d.ts +4 -1
- package/browser/find-options/operator/Any.js +4 -1
- package/browser/find-options/operator/Any.js.map +1 -1
- package/browser/find-options/operator/ArrayContainedBy.d.ts +4 -1
- package/browser/find-options/operator/ArrayContainedBy.js +4 -1
- package/browser/find-options/operator/ArrayContainedBy.js.map +1 -1
- package/browser/find-options/operator/ArrayContains.d.ts +4 -1
- package/browser/find-options/operator/ArrayContains.js +4 -1
- package/browser/find-options/operator/ArrayContains.js.map +1 -1
- package/browser/find-options/operator/ArrayOverlap.d.ts +4 -1
- package/browser/find-options/operator/ArrayOverlap.js +4 -1
- package/browser/find-options/operator/ArrayOverlap.js.map +1 -1
- package/browser/find-options/operator/Between.d.ts +4 -1
- package/browser/find-options/operator/Between.js +4 -1
- package/browser/find-options/operator/Between.js.map +1 -1
- package/browser/find-options/operator/Equal.d.ts +6 -3
- package/browser/find-options/operator/Equal.js +6 -3
- package/browser/find-options/operator/Equal.js.map +1 -1
- package/browser/find-options/operator/ILike.d.ts +4 -1
- package/browser/find-options/operator/ILike.js +4 -1
- package/browser/find-options/operator/ILike.js.map +1 -1
- package/browser/find-options/operator/In.d.ts +4 -1
- package/browser/find-options/operator/In.js +4 -1
- package/browser/find-options/operator/In.js.map +1 -1
- package/browser/find-options/operator/IsNull.d.ts +4 -1
- package/browser/find-options/operator/IsNull.js +4 -1
- package/browser/find-options/operator/IsNull.js.map +1 -1
- package/browser/find-options/operator/JsonContains.d.ts +4 -1
- package/browser/find-options/operator/JsonContains.js +4 -1
- package/browser/find-options/operator/JsonContains.js.map +1 -1
- package/browser/find-options/operator/LessThan.d.ts +4 -1
- package/browser/find-options/operator/LessThan.js +4 -1
- package/browser/find-options/operator/LessThan.js.map +1 -1
- package/browser/find-options/operator/LessThanOrEqual.d.ts +4 -1
- package/browser/find-options/operator/LessThanOrEqual.js +4 -1
- package/browser/find-options/operator/LessThanOrEqual.js.map +1 -1
- package/browser/find-options/operator/Like.d.ts +4 -1
- package/browser/find-options/operator/Like.js +4 -1
- package/browser/find-options/operator/Like.js.map +1 -1
- package/browser/find-options/operator/MoreThan.d.ts +4 -1
- package/browser/find-options/operator/MoreThan.js +4 -1
- package/browser/find-options/operator/MoreThan.js.map +1 -1
- package/browser/find-options/operator/MoreThanOrEqual.d.ts +4 -1
- package/browser/find-options/operator/MoreThanOrEqual.js +4 -1
- package/browser/find-options/operator/MoreThanOrEqual.js.map +1 -1
- package/browser/find-options/operator/Not.d.ts +4 -1
- package/browser/find-options/operator/Not.js +4 -1
- package/browser/find-options/operator/Not.js.map +1 -1
- package/browser/find-options/operator/Raw.d.ts +12 -3
- package/browser/find-options/operator/Raw.js.map +1 -1
- package/browser/globals.js +1 -2
- package/browser/globals.js.map +1 -1
- package/browser/logger/AbstractLogger.d.ts +9 -0
- package/browser/logger/AbstractLogger.js +10 -2
- package/browser/logger/AbstractLogger.js.map +1 -1
- package/browser/logger/AdvancedConsoleLogger.d.ts +1 -0
- package/browser/logger/AdvancedConsoleLogger.js +1 -0
- package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
- package/browser/logger/DebugLogger.d.ts +2 -0
- package/browser/logger/DebugLogger.js +3 -1
- package/browser/logger/DebugLogger.js.map +1 -1
- package/browser/logger/FileLogger.d.ts +13 -2
- package/browser/logger/FileLogger.js +4 -5
- package/browser/logger/FileLogger.js.map +1 -1
- package/browser/logger/FormattedConsoleLogger.d.ts +1 -0
- package/browser/logger/FormattedConsoleLogger.js +1 -0
- package/browser/logger/FormattedConsoleLogger.js.map +1 -1
- package/browser/logger/LoggerFactory.d.ts +1 -0
- package/browser/logger/LoggerFactory.js +1 -0
- package/browser/logger/LoggerFactory.js.map +1 -1
- package/browser/logger/LoggerOptions.d.ts +0 -9
- package/browser/logger/LoggerOptions.js.map +1 -1
- package/browser/logger/SimpleConsoleLogger.d.ts +1 -0
- package/browser/logger/SimpleConsoleLogger.js +1 -0
- package/browser/logger/SimpleConsoleLogger.js.map +1 -1
- package/browser/metadata/CheckMetadata.d.ts +1 -0
- package/browser/metadata/CheckMetadata.js +4 -3
- package/browser/metadata/CheckMetadata.js.map +1 -1
- package/browser/metadata/ColumnMetadata.d.ts +8 -5
- package/browser/metadata/ColumnMetadata.js +17 -25
- package/browser/metadata/ColumnMetadata.js.map +1 -1
- package/browser/metadata/EmbeddedMetadata.d.ts +1 -0
- package/browser/metadata/EmbeddedMetadata.js +1 -0
- package/browser/metadata/EmbeddedMetadata.js.map +1 -1
- package/browser/metadata/EntityListenerMetadata.d.ts +3 -0
- package/browser/metadata/EntityListenerMetadata.js +3 -0
- package/browser/metadata/EntityListenerMetadata.js.map +1 -1
- package/browser/metadata/EntityMetadata.d.ts +25 -5
- package/browser/metadata/EntityMetadata.js +32 -12
- package/browser/metadata/EntityMetadata.js.map +1 -1
- package/browser/metadata/ExclusionMetadata.d.ts +1 -0
- package/browser/metadata/ExclusionMetadata.js +4 -3
- package/browser/metadata/ExclusionMetadata.js.map +1 -1
- package/browser/metadata/ForeignKeyMetadata.d.ts +1 -0
- package/browser/metadata/ForeignKeyMetadata.js +6 -5
- package/browser/metadata/ForeignKeyMetadata.js.map +1 -1
- package/browser/metadata/IndexMetadata.d.ts +1 -0
- package/browser/metadata/IndexMetadata.js +4 -3
- package/browser/metadata/IndexMetadata.js.map +1 -1
- package/browser/metadata/RelationIdMetadata.d.ts +1 -0
- package/browser/metadata/RelationIdMetadata.js +1 -0
- package/browser/metadata/RelationIdMetadata.js.map +1 -1
- package/browser/metadata/RelationMetadata.d.ts +8 -0
- package/browser/metadata/RelationMetadata.js +15 -15
- package/browser/metadata/RelationMetadata.js.map +1 -1
- package/browser/metadata/UniqueMetadata.d.ts +1 -0
- package/browser/metadata/UniqueMetadata.js +4 -3
- package/browser/metadata/UniqueMetadata.js.map +1 -1
- package/browser/metadata-args/MetadataArgsStorage.d.ts +4 -0
- package/browser/metadata-args/MetadataArgsStorage.js +4 -0
- package/browser/metadata-args/MetadataArgsStorage.js.map +1 -1
- package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.d.ts +1 -0
- package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +7 -11
- package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataBuilder.d.ts +7 -0
- package/browser/metadata-builder/EntityMetadataBuilder.js +11 -6
- package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataValidator.d.ts +4 -0
- package/browser/metadata-builder/EntityMetadataValidator.js +6 -43
- package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.d.ts +3 -0
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +39 -20
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/MetadataUtils.d.ts +3 -0
- package/browser/metadata-builder/MetadataUtils.js +4 -1
- package/browser/metadata-builder/MetadataUtils.js.map +1 -1
- package/browser/metadata-builder/RelationJoinColumnBuilder.d.ts +3 -0
- package/browser/metadata-builder/RelationJoinColumnBuilder.js +17 -1
- package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/browser/migration/MigrationExecutor.d.ts +9 -0
- package/browser/migration/MigrationExecutor.js +16 -7
- package/browser/migration/MigrationExecutor.js.map +1 -1
- package/browser/naming-strategy/DefaultNamingStrategy.d.ts +3 -0
- package/browser/naming-strategy/DefaultNamingStrategy.js +13 -10
- package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
- package/browser/naming-strategy/NamingStrategyInterface.d.ts +2 -0
- package/browser/naming-strategy/NamingStrategyInterface.js.map +1 -1
- package/browser/persistence/EntityPersistExecutor.js +2 -4
- package/browser/persistence/EntityPersistExecutor.js.map +1 -1
- package/browser/persistence/Subject.js +4 -6
- package/browser/persistence/Subject.js.map +1 -1
- package/browser/persistence/SubjectChangedColumnsComputer.d.ts +3 -0
- package/browser/persistence/SubjectChangedColumnsComputer.js +3 -0
- package/browser/persistence/SubjectChangedColumnsComputer.js.map +1 -1
- package/browser/persistence/SubjectDatabaseEntityLoader.d.ts +1 -0
- package/browser/persistence/SubjectDatabaseEntityLoader.js +3 -1
- package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/browser/persistence/SubjectExecutor.d.ts +2 -0
- package/browser/persistence/SubjectExecutor.js +15 -27
- package/browser/persistence/SubjectExecutor.js.map +1 -1
- package/browser/persistence/SubjectTopologicalSorter.d.ts +4 -0
- package/browser/persistence/SubjectTopologicalSorter.js +4 -0
- package/browser/persistence/SubjectTopologicalSorter.js.map +1 -1
- package/browser/persistence/subject-builder/CascadesSubjectBuilder.d.ts +2 -0
- package/browser/persistence/subject-builder/CascadesSubjectBuilder.js +37 -11
- package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
- package/browser/persistence/subject-builder/ManyToManySubjectBuilder.d.ts +11 -8
- package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js +15 -13
- package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
- package/browser/persistence/subject-builder/OneToManySubjectBuilder.d.ts +9 -10
- package/browser/persistence/subject-builder/OneToManySubjectBuilder.js +30 -24
- package/browser/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
- package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.d.ts +9 -10
- package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +9 -10
- package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
- package/browser/persistence/tree/ClosureSubjectExecutor.d.ts +4 -0
- package/browser/persistence/tree/ClosureSubjectExecutor.js +10 -8
- package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
- package/browser/persistence/tree/MaterializedPathSubjectExecutor.d.ts +2 -0
- package/browser/persistence/tree/MaterializedPathSubjectExecutor.js +8 -6
- package/browser/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
- package/browser/persistence/tree/NestedSetSubjectExecutor.d.ts +5 -0
- package/browser/persistence/tree/NestedSetSubjectExecutor.js +10 -5
- package/browser/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
- package/browser/platform/PlatformTools.d.ts +9 -0
- package/browser/platform/PlatformTools.js +10 -1
- package/browser/platform/PlatformTools.js.map +1 -1
- package/browser/query-builder/Alias.js +1 -1
- package/browser/query-builder/Alias.js.map +1 -1
- package/browser/query-builder/Brackets.d.ts +1 -0
- package/browser/query-builder/Brackets.js +1 -0
- package/browser/query-builder/Brackets.js.map +1 -1
- package/browser/query-builder/DeleteQueryBuilder.d.ts +7 -0
- package/browser/query-builder/DeleteQueryBuilder.js +9 -0
- package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
- package/browser/query-builder/InsertQueryBuilder.d.ts +9 -0
- package/browser/query-builder/InsertQueryBuilder.js +14 -8
- package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
- package/browser/query-builder/JoinAttribute.js +3 -3
- package/browser/query-builder/JoinAttribute.js.map +1 -1
- package/browser/query-builder/QueryBuilder.d.ts +25 -4
- package/browser/query-builder/QueryBuilder.js +58 -15
- package/browser/query-builder/QueryBuilder.js.map +1 -1
- package/browser/query-builder/QueryBuilderUtils.d.ts +1 -0
- package/browser/query-builder/QueryBuilderUtils.js +1 -0
- package/browser/query-builder/QueryBuilderUtils.js.map +1 -1
- package/browser/query-builder/QueryExpressionMap.d.ts +5 -0
- package/browser/query-builder/QueryExpressionMap.js +4 -1
- package/browser/query-builder/QueryExpressionMap.js.map +1 -1
- package/browser/query-builder/RelationIdLoader.d.ts +6 -35
- package/browser/query-builder/RelationIdLoader.js +19 -43
- package/browser/query-builder/RelationIdLoader.js.map +1 -1
- package/browser/query-builder/RelationLoader.d.ts +11 -2
- package/browser/query-builder/RelationLoader.js +20 -17
- package/browser/query-builder/RelationLoader.js.map +1 -1
- package/browser/query-builder/RelationQueryBuilder.d.ts +5 -0
- package/browser/query-builder/RelationQueryBuilder.js +5 -0
- package/browser/query-builder/RelationQueryBuilder.js.map +1 -1
- package/browser/query-builder/RelationRemover.d.ts +1 -0
- package/browser/query-builder/RelationRemover.js +1 -0
- package/browser/query-builder/RelationRemover.js.map +1 -1
- package/browser/query-builder/RelationUpdater.d.ts +1 -0
- package/browser/query-builder/RelationUpdater.js +1 -0
- package/browser/query-builder/RelationUpdater.js.map +1 -1
- package/browser/query-builder/ReturningResultsEntityUpdator.d.ts +2 -0
- package/browser/query-builder/ReturningResultsEntityUpdator.js +3 -1
- package/browser/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
- package/browser/query-builder/SelectQueryBuilder.d.ts +31 -8
- package/browser/query-builder/SelectQueryBuilder.js +98 -70
- package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
- package/browser/query-builder/SoftDeleteQueryBuilder.d.ts +11 -0
- package/browser/query-builder/SoftDeleteQueryBuilder.js +17 -0
- package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/browser/query-builder/UpdateQueryBuilder.d.ts +11 -0
- package/browser/query-builder/UpdateQueryBuilder.js +18 -1
- package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/browser/query-builder/relation-id/RelationIdAttribute.js +5 -5
- package/browser/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
- package/browser/query-builder/relation-id/RelationIdLoader.d.ts +2 -1
- package/browser/query-builder/relation-id/RelationIdLoader.js +6 -3
- package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
- package/browser/query-builder/transformer/DocumentToEntityTransformer.js +3 -16
- package/browser/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
- package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +2 -4
- package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
- package/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.d.ts +1 -0
- package/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js +1 -0
- package/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +6 -0
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +6 -7
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
- package/browser/query-runner/BaseQueryRunner.d.ts +21 -1
- package/browser/query-runner/BaseQueryRunner.js +36 -49
- package/browser/query-runner/BaseQueryRunner.js.map +1 -1
- package/browser/query-runner/QueryRunner.d.ts +5 -1
- package/browser/query-runner/QueryRunner.js.map +1 -1
- package/browser/repository/BaseEntity.d.ts +32 -0
- package/browser/repository/BaseEntity.js +36 -0
- package/browser/repository/BaseEntity.js.map +1 -1
- package/browser/repository/MongoRepository.d.ts +39 -0
- package/browser/repository/MongoRepository.js +41 -2
- package/browser/repository/MongoRepository.js.map +1 -1
- package/browser/repository/Repository.d.ts +37 -1
- package/browser/repository/Repository.js +43 -2
- package/browser/repository/Repository.js.map +1 -1
- package/browser/repository/TreeRepository.d.ts +11 -0
- package/browser/repository/TreeRepository.js +12 -1
- package/browser/repository/TreeRepository.js.map +1 -1
- package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +6 -4
- package/browser/schema-builder/RdbmsSchemaBuilder.js +10 -13
- package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/browser/schema-builder/table/Table.d.ts +17 -0
- package/browser/schema-builder/table/Table.js +19 -2
- package/browser/schema-builder/table/Table.js.map +1 -1
- package/browser/schema-builder/table/TableCheck.d.ts +1 -0
- package/browser/schema-builder/table/TableCheck.js +1 -0
- package/browser/schema-builder/table/TableCheck.js.map +1 -1
- package/browser/schema-builder/table/TableColumn.js +7 -7
- package/browser/schema-builder/table/TableColumn.js.map +1 -1
- package/browser/schema-builder/table/TableExclusion.d.ts +1 -0
- package/browser/schema-builder/table/TableExclusion.js +1 -0
- package/browser/schema-builder/table/TableExclusion.js.map +1 -1
- package/browser/schema-builder/table/TableForeignKey.d.ts +1 -0
- package/browser/schema-builder/table/TableForeignKey.js +1 -0
- package/browser/schema-builder/table/TableForeignKey.js.map +1 -1
- package/browser/schema-builder/table/TableIndex.d.ts +1 -0
- package/browser/schema-builder/table/TableIndex.js +2 -1
- package/browser/schema-builder/table/TableIndex.js.map +1 -1
- package/browser/schema-builder/table/TableUnique.d.ts +1 -0
- package/browser/schema-builder/table/TableUnique.js +1 -0
- package/browser/schema-builder/table/TableUnique.js.map +1 -1
- package/browser/schema-builder/util/ViewUtils.d.ts +1 -0
- package/browser/schema-builder/util/ViewUtils.js +1 -0
- package/browser/schema-builder/util/ViewUtils.js.map +1 -1
- package/browser/schema-builder/view/View.d.ts +3 -0
- package/browser/schema-builder/view/View.js +3 -0
- package/browser/schema-builder/view/View.js.map +1 -1
- package/browser/subscriber/Broadcaster.d.ts +20 -0
- package/browser/subscriber/Broadcaster.js +25 -6
- package/browser/subscriber/Broadcaster.js.map +1 -1
- package/browser/subscriber/event/BaseEvent.d.ts +1 -0
- package/browser/subscriber/event/BaseEvent.js.map +1 -1
- package/browser/util/DateUtils.d.ts +15 -0
- package/browser/util/DateUtils.js +15 -0
- package/browser/util/DateUtils.js.map +1 -1
- package/browser/util/DepGraph.d.ts +10 -0
- package/browser/util/DepGraph.js +11 -0
- package/browser/util/DepGraph.js.map +1 -1
- package/browser/util/DirectoryExportedClassesLoader.d.ts +1 -0
- package/browser/util/DirectoryExportedClassesLoader.js +1 -0
- package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
- package/browser/util/ObjectUtils.d.ts +6 -0
- package/browser/util/ObjectUtils.js +4 -0
- package/browser/util/ObjectUtils.js.map +1 -1
- package/browser/util/OrmUtils.d.ts +14 -0
- package/browser/util/OrmUtils.js +18 -6
- package/browser/util/OrmUtils.js.map +1 -1
- package/browser/util/PathUtils.d.ts +2 -0
- package/browser/util/PathUtils.js +2 -0
- package/browser/util/PathUtils.js.map +1 -1
- package/browser/util/RandomGenerator.d.ts +2 -0
- package/browser/util/RandomGenerator.js +2 -0
- package/browser/util/RandomGenerator.js.map +1 -1
- package/browser/util/StringUtils.d.ts +11 -4
- package/browser/util/StringUtils.js +15 -7
- package/browser/util/StringUtils.js.map +1 -1
- package/browser/util/TreeRepositoryUtils.js +2 -2
- package/browser/util/TreeRepositoryUtils.js.map +1 -1
- package/cache/DbQueryResultCache.d.ts +7 -0
- package/cache/DbQueryResultCache.js +12 -4
- package/cache/DbQueryResultCache.js.map +1 -1
- package/cache/RedisQueryResultCache.d.ts +7 -0
- package/cache/RedisQueryResultCache.js +15 -10
- package/cache/RedisQueryResultCache.js.map +1 -1
- package/cli-ts-node-esm.js +2 -2
- package/cli-ts-node-esm.js.map +1 -1
- package/commands/CacheClearCommand.js +1 -1
- package/commands/CacheClearCommand.js.map +1 -1
- package/commands/CommandUtils.d.ts +4 -0
- package/commands/CommandUtils.js +4 -0
- package/commands/CommandUtils.js.map +1 -1
- package/commands/EntityCreateCommand.d.ts +1 -0
- package/commands/EntityCreateCommand.js +1 -0
- package/commands/EntityCreateCommand.js.map +1 -1
- package/commands/InitCommand.d.ts +10 -0
- package/commands/InitCommand.js +16 -9
- package/commands/InitCommand.js.map +1 -1
- package/commands/MigrationCreateCommand.d.ts +2 -0
- package/commands/MigrationCreateCommand.js +2 -0
- package/commands/MigrationCreateCommand.js.map +1 -1
- package/commands/MigrationGenerateCommand.d.ts +3 -0
- package/commands/MigrationGenerateCommand.js +4 -1
- package/commands/MigrationGenerateCommand.js.map +1 -1
- package/commands/MigrationRevertCommand.js +1 -1
- package/commands/MigrationRevertCommand.js.map +1 -1
- package/commands/MigrationRunCommand.js +1 -1
- package/commands/MigrationRunCommand.js.map +1 -1
- package/commands/MigrationShowCommand.js +1 -1
- package/commands/MigrationShowCommand.js.map +1 -1
- package/commands/QueryCommand.js +1 -1
- package/commands/QueryCommand.js.map +1 -1
- package/commands/SchemaDropCommand.js +1 -1
- package/commands/SchemaDropCommand.js.map +1 -1
- package/commands/SchemaSyncCommand.js +1 -1
- package/commands/SchemaSyncCommand.js.map +1 -1
- package/commands/SubscriberCreateCommand.d.ts +1 -0
- package/commands/SubscriberCreateCommand.js +1 -0
- package/commands/SubscriberCreateCommand.js.map +1 -1
- package/commands/VersionCommand.js +2 -2
- package/commands/VersionCommand.js.map +1 -1
- package/common/RelationType.d.ts +2 -0
- package/common/RelationType.js.map +1 -1
- package/connection/ConnectionMetadataBuilder.d.ts +3 -0
- package/connection/ConnectionMetadataBuilder.js +3 -0
- package/connection/ConnectionMetadataBuilder.js.map +1 -1
- package/connection/ConnectionOptionsReader.d.ts +5 -4
- package/connection/ConnectionOptionsReader.js +14 -12
- package/connection/ConnectionOptionsReader.js.map +1 -1
- package/data-source/BaseDataSourceOptions.d.ts +8 -0
- package/data-source/BaseDataSourceOptions.js.map +1 -1
- package/data-source/DataSource.d.ts +20 -1
- package/data-source/DataSource.js +37 -15
- package/data-source/DataSource.js.map +1 -1
- package/decorator/Check.d.ts +2 -0
- package/decorator/Check.js +2 -1
- package/decorator/Check.js.map +1 -1
- package/decorator/Exclusion.d.ts +2 -0
- package/decorator/Exclusion.js +1 -0
- package/decorator/Exclusion.js.map +1 -1
- package/decorator/ForeignKey.d.ts +3 -0
- package/decorator/ForeignKey.js +1 -0
- package/decorator/ForeignKey.js.map +1 -1
- package/decorator/Generated.d.ts +1 -0
- package/decorator/Generated.js +1 -0
- package/decorator/Generated.js.map +1 -1
- package/decorator/Index.d.ts +7 -0
- package/decorator/Index.js +13 -13
- package/decorator/Index.js.map +1 -1
- package/decorator/Unique.d.ts +4 -0
- package/decorator/Unique.js +6 -6
- package/decorator/Unique.js.map +1 -1
- package/decorator/columns/Column.d.ts +11 -0
- package/decorator/columns/Column.js +3 -3
- package/decorator/columns/Column.js.map +1 -1
- package/decorator/columns/CreateDateColumn.d.ts +1 -0
- package/decorator/columns/CreateDateColumn.js +2 -1
- package/decorator/columns/CreateDateColumn.js.map +1 -1
- package/decorator/columns/DeleteDateColumn.d.ts +1 -0
- package/decorator/columns/DeleteDateColumn.js +2 -1
- package/decorator/columns/DeleteDateColumn.js.map +1 -1
- package/decorator/columns/ObjectIdColumn.d.ts +1 -0
- package/decorator/columns/ObjectIdColumn.js +3 -4
- package/decorator/columns/ObjectIdColumn.js.map +1 -1
- package/decorator/columns/PrimaryColumn.d.ts +2 -0
- package/decorator/columns/PrimaryColumn.js +2 -2
- package/decorator/columns/PrimaryColumn.js.map +1 -1
- package/decorator/columns/PrimaryGeneratedColumn.d.ts +4 -0
- package/decorator/columns/PrimaryGeneratedColumn.js +1 -0
- package/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
- package/decorator/columns/UpdateDateColumn.d.ts +1 -0
- package/decorator/columns/UpdateDateColumn.js +2 -1
- package/decorator/columns/UpdateDateColumn.js.map +1 -1
- package/decorator/columns/VersionColumn.d.ts +1 -0
- package/decorator/columns/VersionColumn.js +2 -1
- package/decorator/columns/VersionColumn.js.map +1 -1
- package/decorator/columns/ViewColumn.d.ts +1 -0
- package/decorator/columns/ViewColumn.js +2 -1
- package/decorator/columns/ViewColumn.js.map +1 -1
- package/decorator/columns/VirtualColumn.d.ts +2 -0
- package/decorator/columns/VirtualColumn.js +1 -0
- package/decorator/columns/VirtualColumn.js.map +1 -1
- package/decorator/entity/ChildEntity.d.ts +1 -0
- package/decorator/entity/ChildEntity.js +1 -0
- package/decorator/entity/ChildEntity.js.map +1 -1
- package/decorator/entity/Entity.d.ts +2 -0
- package/decorator/entity/Entity.js +7 -6
- package/decorator/entity/Entity.js.map +1 -1
- package/decorator/entity/TableInheritance.d.ts +1 -0
- package/decorator/entity/TableInheritance.js +3 -2
- package/decorator/entity/TableInheritance.js.map +1 -1
- package/decorator/entity-view/ViewEntity.d.ts +2 -0
- package/decorator/entity-view/ViewEntity.js +4 -3
- package/decorator/entity-view/ViewEntity.js.map +1 -1
- package/decorator/options/ColumnOptions.d.ts +3 -0
- package/decorator/options/ColumnOptions.js.map +1 -1
- package/decorator/options/EntityOptions.d.ts +1 -0
- package/decorator/options/EntityOptions.js.map +1 -1
- package/decorator/options/RelationOptions.d.ts +2 -0
- package/decorator/options/RelationOptions.js.map +1 -1
- package/decorator/options/VirtualColumnOptions.d.ts +1 -0
- package/decorator/options/VirtualColumnOptions.js.map +1 -1
- package/decorator/relations/JoinColumn.d.ts +2 -0
- package/decorator/relations/JoinColumn.js +2 -1
- package/decorator/relations/JoinColumn.js.map +1 -1
- package/decorator/relations/JoinTable.d.ts +2 -0
- package/decorator/relations/JoinTable.js +5 -4
- package/decorator/relations/JoinTable.js.map +1 -1
- package/decorator/relations/ManyToMany.d.ts +2 -0
- package/decorator/relations/ManyToMany.js +2 -2
- package/decorator/relations/ManyToMany.js.map +1 -1
- package/decorator/relations/ManyToOne.d.ts +2 -0
- package/decorator/relations/ManyToOne.js +3 -3
- package/decorator/relations/ManyToOne.js.map +1 -1
- package/decorator/relations/OneToMany.d.ts +1 -0
- package/decorator/relations/OneToMany.js +3 -3
- package/decorator/relations/OneToMany.js.map +1 -1
- package/decorator/relations/OneToOne.d.ts +2 -0
- package/decorator/relations/OneToOne.js +3 -3
- package/decorator/relations/OneToOne.js.map +1 -1
- package/decorator/relations/RelationId.d.ts +1 -0
- package/decorator/relations/RelationId.js +1 -0
- package/decorator/relations/RelationId.js.map +1 -1
- package/decorator/tree/Tree.d.ts +1 -0
- package/decorator/tree/Tree.js +1 -0
- package/decorator/tree/Tree.js.map +1 -1
- package/decorator/tree/TreeChildren.d.ts +1 -0
- package/decorator/tree/TreeChildren.js +3 -3
- package/decorator/tree/TreeChildren.js.map +1 -1
- package/decorator/tree/TreeParent.d.ts +1 -0
- package/decorator/tree/TreeParent.js +3 -3
- package/decorator/tree/TreeParent.js.map +1 -1
- package/driver/Driver.d.ts +5 -0
- package/driver/Driver.js.map +1 -1
- package/driver/DriverFactory.d.ts +1 -0
- package/driver/DriverFactory.js +1 -0
- package/driver/DriverFactory.js.map +1 -1
- package/driver/DriverUtils.d.ts +7 -0
- package/driver/DriverUtils.js +34 -21
- package/driver/DriverUtils.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.d.ts +1 -0
- package/driver/aurora-mysql/AuroraMysqlConnectionCredentialsOptions.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlDataSourceOptions.d.ts +1 -0
- package/driver/aurora-mysql/AuroraMysqlDataSourceOptions.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlDriver.d.ts +37 -0
- package/driver/aurora-mysql/AuroraMysqlDriver.js +53 -16
- package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlQueryRunner.d.ts +64 -0
- package/driver/aurora-mysql/AuroraMysqlQueryRunner.js +90 -30
- package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
- package/driver/aurora-postgres/AuroraPostgresDriver.d.ts +13 -0
- package/driver/aurora-postgres/AuroraPostgresDriver.js +26 -5
- package/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
- package/driver/aurora-postgres/AuroraPostgresQueryRunner.d.ts +3 -0
- package/driver/aurora-postgres/AuroraPostgresQueryRunner.js +27 -1
- package/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
- package/driver/better-sqlite3/BetterSqlite3DataSourceOptions.d.ts +1 -0
- package/driver/better-sqlite3/BetterSqlite3DataSourceOptions.js.map +1 -1
- package/driver/better-sqlite3/BetterSqlite3Driver.d.ts +3 -0
- package/driver/better-sqlite3/BetterSqlite3Driver.js +5 -3
- package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.d.ts +1 -0
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +1 -0
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
- package/driver/capacitor/CapacitorDriver.d.ts +1 -0
- package/driver/capacitor/CapacitorDriver.js +3 -3
- package/driver/capacitor/CapacitorDriver.js.map +1 -1
- package/driver/capacitor/CapacitorQueryRunner.d.ts +2 -0
- package/driver/capacitor/CapacitorQueryRunner.js +4 -2
- package/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
- package/driver/cockroachdb/CockroachDataSourceOptions.d.ts +1 -0
- package/driver/cockroachdb/CockroachDataSourceOptions.js.map +1 -1
- package/driver/cockroachdb/CockroachDriver.d.ts +35 -0
- package/driver/cockroachdb/CockroachDriver.js +64 -29
- package/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.d.ts +74 -0
- package/driver/cockroachdb/CockroachQueryRunner.js +143 -119
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/cordova/CordovaDriver.d.ts +6 -0
- package/driver/cordova/CordovaDriver.js +14 -4
- package/driver/cordova/CordovaDriver.js.map +1 -1
- package/driver/cordova/CordovaQueryRunner.d.ts +2 -0
- package/driver/cordova/CordovaQueryRunner.js +3 -1
- package/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/driver/expo/ExpoDriver.js +1 -2
- package/driver/expo/ExpoDriver.js.map +1 -1
- package/driver/mongodb/MongoDriver.d.ts +25 -0
- package/driver/mongodb/MongoDriver.js +35 -6
- package/driver/mongodb/MongoDriver.js.map +1 -1
- package/driver/mongodb/MongoQueryRunner.d.ts +84 -0
- package/driver/mongodb/MongoQueryRunner.js +102 -18
- package/driver/mongodb/MongoQueryRunner.js.map +1 -1
- package/driver/mongodb/bson.typings.d.ts +1 -0
- package/driver/mongodb/bson.typings.js.map +1 -1
- package/driver/mysql/MysqlConnectionCredentialsOptions.d.ts +1 -0
- package/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
- package/driver/mysql/MysqlDataSourceOptions.d.ts +2 -0
- package/driver/mysql/MysqlDataSourceOptions.js.map +1 -1
- package/driver/mysql/MysqlDriver.d.ts +37 -0
- package/driver/mysql/MysqlDriver.js +57 -17
- package/driver/mysql/MysqlDriver.js.map +1 -1
- package/driver/mysql/MysqlQueryRunner.d.ts +64 -0
- package/driver/mysql/MysqlQueryRunner.js +140 -111
- package/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/driver/nativescript/NativescriptDriver.d.ts +1 -0
- package/driver/nativescript/NativescriptDriver.js +3 -4
- package/driver/nativescript/NativescriptDriver.js.map +1 -1
- package/driver/nativescript/NativescriptQueryRunner.d.ts +2 -0
- package/driver/nativescript/NativescriptQueryRunner.js +3 -1
- package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/driver/oracle/OracleDriver.d.ts +32 -0
- package/driver/oracle/OracleDriver.js +48 -15
- package/driver/oracle/OracleDriver.js.map +1 -1
- package/driver/oracle/OracleQueryRunner.d.ts +66 -0
- package/driver/oracle/OracleQueryRunner.js +119 -83
- package/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/driver/postgres/PostgresDataSourceOptions.d.ts +2 -0
- package/driver/postgres/PostgresDataSourceOptions.js.map +1 -1
- package/driver/postgres/PostgresDriver.d.ts +37 -0
- package/driver/postgres/PostgresDriver.js +67 -31
- package/driver/postgres/PostgresDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.d.ts +81 -0
- package/driver/postgres/PostgresQueryRunner.js +152 -121
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/react-native/ReactNativeDriver.d.ts +29 -0
- package/driver/react-native/ReactNativeDriver.js +45 -12
- package/driver/react-native/ReactNativeDriver.js.map +1 -1
- package/driver/react-native/ReactNativeQueryRunner.d.ts +2 -0
- package/driver/react-native/ReactNativeQueryRunner.js +3 -1
- package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/driver/sap/SapDataSourceOptions.d.ts +1 -0
- package/driver/sap/SapDataSourceOptions.js.map +1 -1
- package/driver/sap/SapDriver.d.ts +30 -0
- package/driver/sap/SapDriver.js +45 -11
- package/driver/sap/SapDriver.js.map +1 -1
- package/driver/sap/SapQueryRunner.d.ts +66 -0
- package/driver/sap/SapQueryRunner.js +101 -56
- package/driver/sap/SapQueryRunner.js.map +1 -1
- package/driver/spanner/SpannerDataSourceOptions.d.ts +1 -0
- package/driver/spanner/SpannerDataSourceOptions.js.map +1 -1
- package/driver/spanner/SpannerDriver.d.ts +33 -0
- package/driver/spanner/SpannerDriver.js +50 -10
- package/driver/spanner/SpannerDriver.js.map +1 -1
- package/driver/spanner/SpannerQueryRunner.d.ts +64 -0
- package/driver/spanner/SpannerQueryRunner.js +89 -32
- package/driver/spanner/SpannerQueryRunner.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +30 -0
- package/driver/sqlite-abstract/AbstractSqliteDriver.js +43 -77
- package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.d.ts +59 -0
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +89 -45
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/driver/sqljs/SqljsDriver.d.ts +5 -0
- package/driver/sqljs/SqljsDriver.js +8 -4
- package/driver/sqljs/SqljsDriver.js.map +1 -1
- package/driver/sqljs/SqljsQueryRunner.d.ts +1 -0
- package/driver/sqljs/SqljsQueryRunner.js +1 -0
- package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
- package/driver/sqlserver/MssqlParameter.d.ts +1 -0
- package/driver/sqlserver/MssqlParameter.js +1 -0
- package/driver/sqlserver/MssqlParameter.js.map +1 -1
- package/driver/sqlserver/SqlServerDataSourceOptions.d.ts +14 -5
- package/driver/sqlserver/SqlServerDataSourceOptions.js.map +1 -1
- package/driver/sqlserver/SqlServerDriver.d.ts +42 -0
- package/driver/sqlserver/SqlServerDriver.js +100 -26
- package/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/driver/sqlserver/SqlServerQueryRunner.d.ts +76 -10
- package/driver/sqlserver/SqlServerQueryRunner.js +160 -163
- package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/driver/types/IsolationLevel.d.ts +2 -1
- package/driver/types/IsolationLevel.js +8 -0
- package/driver/types/IsolationLevel.js.map +1 -1
- package/driver/validate-isolation-level.d.ts +9 -0
- package/driver/validate-isolation-level.js +23 -0
- package/driver/validate-isolation-level.js.map +1 -0
- package/entity-manager/EntityManager.d.ts +38 -1
- package/entity-manager/EntityManager.js +58 -12
- package/entity-manager/EntityManager.js.map +1 -1
- package/entity-manager/EntityManagerFactory.d.ts +1 -0
- package/entity-manager/EntityManagerFactory.js +1 -0
- package/entity-manager/EntityManagerFactory.js.map +1 -1
- package/entity-manager/MongoEntityManager.d.ts +54 -1
- package/entity-manager/MongoEntityManager.js +103 -12
- package/entity-manager/MongoEntityManager.js.map +1 -1
- package/entity-manager/SqljsEntityManager.d.ts +2 -0
- package/entity-manager/SqljsEntityManager.js +2 -0
- package/entity-manager/SqljsEntityManager.js.map +1 -1
- package/entity-schema/EntitySchemaColumnOptions.d.ts +1 -0
- package/entity-schema/EntitySchemaColumnOptions.js.map +1 -1
- package/entity-schema/EntitySchemaOptions.d.ts +1 -0
- package/entity-schema/EntitySchemaOptions.js.map +1 -1
- package/entity-schema/EntitySchemaTransformer.d.ts +1 -0
- package/entity-schema/EntitySchemaTransformer.js +25 -26
- package/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/error/InitializedRelationError.d.ts +1 -0
- package/error/InitializedRelationError.js +1 -0
- package/error/InitializedRelationError.js.map +1 -1
- package/find-options/FindOptionsUtils.d.ts +7 -0
- package/find-options/FindOptionsUtils.js +7 -0
- package/find-options/FindOptionsUtils.js.map +1 -1
- package/find-options/OrderByCondition.d.ts +2 -1
- package/find-options/OrderByCondition.js.map +1 -1
- package/find-options/operator/Any.d.ts +4 -1
- package/find-options/operator/Any.js +4 -1
- package/find-options/operator/Any.js.map +1 -1
- package/find-options/operator/ArrayContainedBy.d.ts +4 -1
- package/find-options/operator/ArrayContainedBy.js +4 -1
- package/find-options/operator/ArrayContainedBy.js.map +1 -1
- package/find-options/operator/ArrayContains.d.ts +4 -1
- package/find-options/operator/ArrayContains.js +4 -1
- package/find-options/operator/ArrayContains.js.map +1 -1
- package/find-options/operator/ArrayOverlap.d.ts +4 -1
- package/find-options/operator/ArrayOverlap.js +4 -1
- package/find-options/operator/ArrayOverlap.js.map +1 -1
- package/find-options/operator/Between.d.ts +4 -1
- package/find-options/operator/Between.js +4 -1
- package/find-options/operator/Between.js.map +1 -1
- package/find-options/operator/Equal.d.ts +6 -3
- package/find-options/operator/Equal.js +6 -3
- package/find-options/operator/Equal.js.map +1 -1
- package/find-options/operator/ILike.d.ts +4 -1
- package/find-options/operator/ILike.js +4 -1
- package/find-options/operator/ILike.js.map +1 -1
- package/find-options/operator/In.d.ts +4 -1
- package/find-options/operator/In.js +4 -1
- package/find-options/operator/In.js.map +1 -1
- package/find-options/operator/IsNull.d.ts +4 -1
- package/find-options/operator/IsNull.js +4 -1
- package/find-options/operator/IsNull.js.map +1 -1
- package/find-options/operator/JsonContains.d.ts +4 -1
- package/find-options/operator/JsonContains.js +4 -1
- package/find-options/operator/JsonContains.js.map +1 -1
- package/find-options/operator/LessThan.d.ts +4 -1
- package/find-options/operator/LessThan.js +4 -1
- package/find-options/operator/LessThan.js.map +1 -1
- package/find-options/operator/LessThanOrEqual.d.ts +4 -1
- package/find-options/operator/LessThanOrEqual.js +4 -1
- package/find-options/operator/LessThanOrEqual.js.map +1 -1
- package/find-options/operator/Like.d.ts +4 -1
- package/find-options/operator/Like.js +4 -1
- package/find-options/operator/Like.js.map +1 -1
- package/find-options/operator/MoreThan.d.ts +4 -1
- package/find-options/operator/MoreThan.js +4 -1
- package/find-options/operator/MoreThan.js.map +1 -1
- package/find-options/operator/MoreThanOrEqual.d.ts +4 -1
- package/find-options/operator/MoreThanOrEqual.js +4 -1
- package/find-options/operator/MoreThanOrEqual.js.map +1 -1
- package/find-options/operator/Not.d.ts +4 -1
- package/find-options/operator/Not.js +4 -1
- package/find-options/operator/Not.js.map +1 -1
- package/find-options/operator/Raw.d.ts +12 -3
- package/find-options/operator/Raw.js.map +1 -1
- package/globals.js +1 -2
- package/globals.js.map +1 -1
- package/logger/AbstractLogger.d.ts +9 -0
- package/logger/AbstractLogger.js +10 -2
- package/logger/AbstractLogger.js.map +1 -1
- package/logger/AdvancedConsoleLogger.d.ts +1 -0
- package/logger/AdvancedConsoleLogger.js +1 -0
- package/logger/AdvancedConsoleLogger.js.map +1 -1
- package/logger/DebugLogger.d.ts +2 -0
- package/logger/DebugLogger.js +3 -1
- package/logger/DebugLogger.js.map +1 -1
- package/logger/FileLogger.d.ts +13 -2
- package/logger/FileLogger.js +4 -5
- package/logger/FileLogger.js.map +1 -1
- package/logger/FormattedConsoleLogger.d.ts +1 -0
- package/logger/FormattedConsoleLogger.js +1 -0
- package/logger/FormattedConsoleLogger.js.map +1 -1
- package/logger/LoggerFactory.d.ts +1 -0
- package/logger/LoggerFactory.js +1 -0
- package/logger/LoggerFactory.js.map +1 -1
- package/logger/LoggerOptions.d.ts +0 -9
- package/logger/LoggerOptions.js.map +1 -1
- package/logger/SimpleConsoleLogger.d.ts +1 -0
- package/logger/SimpleConsoleLogger.js +1 -0
- package/logger/SimpleConsoleLogger.js.map +1 -1
- package/metadata/CheckMetadata.d.ts +1 -0
- package/metadata/CheckMetadata.js +4 -3
- package/metadata/CheckMetadata.js.map +1 -1
- package/metadata/ColumnMetadata.d.ts +8 -5
- package/metadata/ColumnMetadata.js +17 -25
- package/metadata/ColumnMetadata.js.map +1 -1
- package/metadata/EmbeddedMetadata.d.ts +1 -0
- package/metadata/EmbeddedMetadata.js +1 -0
- package/metadata/EmbeddedMetadata.js.map +1 -1
- package/metadata/EntityListenerMetadata.d.ts +3 -0
- package/metadata/EntityListenerMetadata.js +3 -0
- package/metadata/EntityListenerMetadata.js.map +1 -1
- package/metadata/EntityMetadata.d.ts +25 -5
- package/metadata/EntityMetadata.js +32 -12
- package/metadata/EntityMetadata.js.map +1 -1
- package/metadata/ExclusionMetadata.d.ts +1 -0
- package/metadata/ExclusionMetadata.js +4 -3
- package/metadata/ExclusionMetadata.js.map +1 -1
- package/metadata/ForeignKeyMetadata.d.ts +1 -0
- package/metadata/ForeignKeyMetadata.js +6 -5
- package/metadata/ForeignKeyMetadata.js.map +1 -1
- package/metadata/IndexMetadata.d.ts +1 -0
- package/metadata/IndexMetadata.js +4 -3
- package/metadata/IndexMetadata.js.map +1 -1
- package/metadata/RelationIdMetadata.d.ts +1 -0
- package/metadata/RelationIdMetadata.js +1 -0
- package/metadata/RelationIdMetadata.js.map +1 -1
- package/metadata/RelationMetadata.d.ts +8 -0
- package/metadata/RelationMetadata.js +15 -15
- package/metadata/RelationMetadata.js.map +1 -1
- package/metadata/UniqueMetadata.d.ts +1 -0
- package/metadata/UniqueMetadata.js +4 -3
- package/metadata/UniqueMetadata.js.map +1 -1
- package/metadata-args/MetadataArgsStorage.d.ts +4 -0
- package/metadata-args/MetadataArgsStorage.js +4 -0
- package/metadata-args/MetadataArgsStorage.js.map +1 -1
- package/metadata-builder/ClosureJunctionEntityMetadataBuilder.d.ts +1 -0
- package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +7 -11
- package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/EntityMetadataBuilder.d.ts +7 -0
- package/metadata-builder/EntityMetadataBuilder.js +11 -6
- package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/EntityMetadataValidator.d.ts +4 -0
- package/metadata-builder/EntityMetadataValidator.js +6 -43
- package/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/metadata-builder/JunctionEntityMetadataBuilder.d.ts +3 -0
- package/metadata-builder/JunctionEntityMetadataBuilder.js +39 -20
- package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/MetadataUtils.d.ts +3 -0
- package/metadata-builder/MetadataUtils.js +4 -1
- package/metadata-builder/MetadataUtils.js.map +1 -1
- package/metadata-builder/RelationJoinColumnBuilder.d.ts +3 -0
- package/metadata-builder/RelationJoinColumnBuilder.js +17 -1
- package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/migration/MigrationExecutor.d.ts +9 -0
- package/migration/MigrationExecutor.js +16 -7
- package/migration/MigrationExecutor.js.map +1 -1
- package/naming-strategy/DefaultNamingStrategy.d.ts +3 -0
- package/naming-strategy/DefaultNamingStrategy.js +13 -10
- package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
- package/naming-strategy/NamingStrategyInterface.d.ts +2 -0
- package/naming-strategy/NamingStrategyInterface.js.map +1 -1
- package/package.json +6 -2
- package/persistence/EntityPersistExecutor.js +2 -4
- package/persistence/EntityPersistExecutor.js.map +1 -1
- package/persistence/Subject.js +4 -6
- package/persistence/Subject.js.map +1 -1
- package/persistence/SubjectChangedColumnsComputer.d.ts +3 -0
- package/persistence/SubjectChangedColumnsComputer.js +3 -0
- package/persistence/SubjectChangedColumnsComputer.js.map +1 -1
- package/persistence/SubjectDatabaseEntityLoader.d.ts +1 -0
- package/persistence/SubjectDatabaseEntityLoader.js +3 -1
- package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/persistence/SubjectExecutor.d.ts +2 -0
- package/persistence/SubjectExecutor.js +15 -27
- package/persistence/SubjectExecutor.js.map +1 -1
- package/persistence/SubjectTopologicalSorter.d.ts +4 -0
- package/persistence/SubjectTopologicalSorter.js +4 -0
- package/persistence/SubjectTopologicalSorter.js.map +1 -1
- package/persistence/subject-builder/CascadesSubjectBuilder.d.ts +2 -0
- package/persistence/subject-builder/CascadesSubjectBuilder.js +37 -11
- package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
- package/persistence/subject-builder/ManyToManySubjectBuilder.d.ts +11 -8
- package/persistence/subject-builder/ManyToManySubjectBuilder.js +15 -13
- package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
- package/persistence/subject-builder/OneToManySubjectBuilder.d.ts +9 -10
- package/persistence/subject-builder/OneToManySubjectBuilder.js +30 -24
- package/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
- package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.d.ts +9 -10
- package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +9 -10
- package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
- package/persistence/tree/ClosureSubjectExecutor.d.ts +4 -0
- package/persistence/tree/ClosureSubjectExecutor.js +10 -8
- package/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
- package/persistence/tree/MaterializedPathSubjectExecutor.d.ts +2 -0
- package/persistence/tree/MaterializedPathSubjectExecutor.js +8 -6
- package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
- package/persistence/tree/NestedSetSubjectExecutor.d.ts +5 -0
- package/persistence/tree/NestedSetSubjectExecutor.js +10 -5
- package/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
- package/platform/PlatformTools.d.ts +9 -0
- package/platform/PlatformTools.js +10 -1
- package/platform/PlatformTools.js.map +1 -1
- package/query-builder/Alias.js +1 -1
- package/query-builder/Alias.js.map +1 -1
- package/query-builder/Brackets.d.ts +1 -0
- package/query-builder/Brackets.js +1 -0
- package/query-builder/Brackets.js.map +1 -1
- package/query-builder/DeleteQueryBuilder.d.ts +7 -0
- package/query-builder/DeleteQueryBuilder.js +9 -0
- package/query-builder/DeleteQueryBuilder.js.map +1 -1
- package/query-builder/InsertQueryBuilder.d.ts +9 -0
- package/query-builder/InsertQueryBuilder.js +14 -8
- package/query-builder/InsertQueryBuilder.js.map +1 -1
- package/query-builder/JoinAttribute.js +3 -3
- package/query-builder/JoinAttribute.js.map +1 -1
- package/query-builder/QueryBuilder.d.ts +25 -4
- package/query-builder/QueryBuilder.js +58 -15
- package/query-builder/QueryBuilder.js.map +1 -1
- package/query-builder/QueryBuilderUtils.d.ts +1 -0
- package/query-builder/QueryBuilderUtils.js +1 -0
- package/query-builder/QueryBuilderUtils.js.map +1 -1
- package/query-builder/QueryExpressionMap.d.ts +5 -0
- package/query-builder/QueryExpressionMap.js +4 -1
- package/query-builder/QueryExpressionMap.js.map +1 -1
- package/query-builder/RelationIdLoader.d.ts +6 -35
- package/query-builder/RelationIdLoader.js +19 -43
- package/query-builder/RelationIdLoader.js.map +1 -1
- package/query-builder/RelationLoader.d.ts +11 -2
- package/query-builder/RelationLoader.js +20 -17
- package/query-builder/RelationLoader.js.map +1 -1
- package/query-builder/RelationQueryBuilder.d.ts +5 -0
- package/query-builder/RelationQueryBuilder.js +5 -0
- package/query-builder/RelationQueryBuilder.js.map +1 -1
- package/query-builder/RelationRemover.d.ts +1 -0
- package/query-builder/RelationRemover.js +1 -0
- package/query-builder/RelationRemover.js.map +1 -1
- package/query-builder/RelationUpdater.d.ts +1 -0
- package/query-builder/RelationUpdater.js +1 -0
- package/query-builder/RelationUpdater.js.map +1 -1
- package/query-builder/ReturningResultsEntityUpdator.d.ts +2 -0
- package/query-builder/ReturningResultsEntityUpdator.js +3 -1
- package/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
- package/query-builder/SelectQueryBuilder.d.ts +31 -8
- package/query-builder/SelectQueryBuilder.js +98 -70
- package/query-builder/SelectQueryBuilder.js.map +1 -1
- package/query-builder/SoftDeleteQueryBuilder.d.ts +11 -0
- package/query-builder/SoftDeleteQueryBuilder.js +17 -0
- package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/query-builder/UpdateQueryBuilder.d.ts +11 -0
- package/query-builder/UpdateQueryBuilder.js +18 -1
- package/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/query-builder/relation-id/RelationIdAttribute.js +5 -5
- package/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
- package/query-builder/relation-id/RelationIdLoader.d.ts +2 -1
- package/query-builder/relation-id/RelationIdLoader.js +6 -3
- package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
- package/query-builder/transformer/DocumentToEntityTransformer.js +3 -16
- package/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
- package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +2 -4
- package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
- package/query-builder/transformer/PlainObjectToNewEntityTransformer.d.ts +1 -0
- package/query-builder/transformer/PlainObjectToNewEntityTransformer.js +1 -0
- package/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +6 -0
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +6 -7
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
- package/query-runner/BaseQueryRunner.d.ts +21 -1
- package/query-runner/BaseQueryRunner.js +36 -49
- package/query-runner/BaseQueryRunner.js.map +1 -1
- package/query-runner/QueryRunner.d.ts +5 -1
- package/query-runner/QueryRunner.js.map +1 -1
- package/repository/BaseEntity.d.ts +32 -0
- package/repository/BaseEntity.js +36 -0
- package/repository/BaseEntity.js.map +1 -1
- package/repository/MongoRepository.d.ts +39 -0
- package/repository/MongoRepository.js +41 -2
- package/repository/MongoRepository.js.map +1 -1
- package/repository/Repository.d.ts +37 -1
- package/repository/Repository.js +43 -2
- package/repository/Repository.js.map +1 -1
- package/repository/TreeRepository.d.ts +11 -0
- package/repository/TreeRepository.js +12 -1
- package/repository/TreeRepository.js.map +1 -1
- package/schema-builder/RdbmsSchemaBuilder.d.ts +6 -4
- package/schema-builder/RdbmsSchemaBuilder.js +10 -13
- package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/schema-builder/table/Table.d.ts +17 -0
- package/schema-builder/table/Table.js +19 -2
- package/schema-builder/table/Table.js.map +1 -1
- package/schema-builder/table/TableCheck.d.ts +1 -0
- package/schema-builder/table/TableCheck.js +1 -0
- package/schema-builder/table/TableCheck.js.map +1 -1
- package/schema-builder/table/TableColumn.js +7 -7
- package/schema-builder/table/TableColumn.js.map +1 -1
- package/schema-builder/table/TableExclusion.d.ts +1 -0
- package/schema-builder/table/TableExclusion.js +1 -0
- package/schema-builder/table/TableExclusion.js.map +1 -1
- package/schema-builder/table/TableForeignKey.d.ts +1 -0
- package/schema-builder/table/TableForeignKey.js +1 -0
- package/schema-builder/table/TableForeignKey.js.map +1 -1
- package/schema-builder/table/TableIndex.d.ts +1 -0
- package/schema-builder/table/TableIndex.js +2 -1
- package/schema-builder/table/TableIndex.js.map +1 -1
- package/schema-builder/table/TableUnique.d.ts +1 -0
- package/schema-builder/table/TableUnique.js +1 -0
- package/schema-builder/table/TableUnique.js.map +1 -1
- package/schema-builder/util/ViewUtils.d.ts +1 -0
- package/schema-builder/util/ViewUtils.js +1 -0
- package/schema-builder/util/ViewUtils.js.map +1 -1
- package/schema-builder/view/View.d.ts +3 -0
- package/schema-builder/view/View.js +3 -0
- package/schema-builder/view/View.js.map +1 -1
- package/subscriber/Broadcaster.d.ts +20 -0
- package/subscriber/Broadcaster.js +25 -6
- package/subscriber/Broadcaster.js.map +1 -1
- package/subscriber/event/BaseEvent.d.ts +1 -0
- package/subscriber/event/BaseEvent.js.map +1 -1
- package/util/DateUtils.d.ts +15 -0
- package/util/DateUtils.js +15 -0
- package/util/DateUtils.js.map +1 -1
- package/util/DepGraph.d.ts +10 -0
- package/util/DepGraph.js +11 -0
- package/util/DepGraph.js.map +1 -1
- package/util/DirectoryExportedClassesLoader.d.ts +1 -0
- package/util/DirectoryExportedClassesLoader.js +1 -0
- package/util/DirectoryExportedClassesLoader.js.map +1 -1
- package/util/ObjectUtils.d.ts +6 -0
- package/util/ObjectUtils.js +4 -0
- package/util/ObjectUtils.js.map +1 -1
- package/util/OrmUtils.d.ts +14 -0
- package/util/OrmUtils.js +18 -6
- package/util/OrmUtils.js.map +1 -1
- package/util/PathUtils.d.ts +2 -0
- package/util/PathUtils.js +2 -0
- package/util/PathUtils.js.map +1 -1
- package/util/RandomGenerator.d.ts +2 -0
- package/util/RandomGenerator.js +2 -0
- package/util/RandomGenerator.js.map +1 -1
- package/util/StringUtils.d.ts +11 -4
- package/util/StringUtils.js +15 -7
- package/util/StringUtils.js.map +1 -1
- package/util/TreeRepositoryUtils.js +2 -2
- package/util/TreeRepositoryUtils.js.map +1 -1
|
@@ -12,6 +12,7 @@ export declare class RelationLoader {
|
|
|
12
12
|
constructor(dataSource: DataSource);
|
|
13
13
|
/**
|
|
14
14
|
* Loads relation data for the given entity and its relation.
|
|
15
|
+
*
|
|
15
16
|
* @param relation
|
|
16
17
|
* @param entityOrEntities
|
|
17
18
|
* @param queryRunner
|
|
@@ -24,8 +25,11 @@ export declare class RelationLoader {
|
|
|
24
25
|
*
|
|
25
26
|
* (ow) post.category<=>category.post
|
|
26
27
|
* loaded: category from post
|
|
27
|
-
*
|
|
28
|
-
*
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* SELECT category.id AS category_id, category.name AS category_name FROM category category
|
|
31
|
+
* INNER JOIN post Post ON Post.category=category.id WHERE Post.id=1
|
|
32
|
+
*
|
|
29
33
|
* @param relation
|
|
30
34
|
* @param entityOrEntities
|
|
31
35
|
* @param queryRunner
|
|
@@ -39,6 +43,7 @@ export declare class RelationLoader {
|
|
|
39
43
|
* SELECT post
|
|
40
44
|
* FROM post post
|
|
41
45
|
* WHERE post.[joinColumn.name] = entity[joinColumn.referencedColumn]
|
|
46
|
+
*
|
|
42
47
|
* @param relation
|
|
43
48
|
* @param entityOrEntities
|
|
44
49
|
* @param queryRunner
|
|
@@ -54,6 +59,7 @@ export declare class RelationLoader {
|
|
|
54
59
|
* INNER JOIN post_categories post_categories
|
|
55
60
|
* ON post_categories.postId = :postId
|
|
56
61
|
* AND post_categories.categoryId = category.id
|
|
62
|
+
*
|
|
57
63
|
* @param relation
|
|
58
64
|
* @param entityOrEntities
|
|
59
65
|
* @param queryRunner
|
|
@@ -69,6 +75,7 @@ export declare class RelationLoader {
|
|
|
69
75
|
* INNER JOIN post_categories post_categories
|
|
70
76
|
* ON post_categories.postId = post.id
|
|
71
77
|
* AND post_categories.categoryId = post_categories.categoryId
|
|
78
|
+
*
|
|
72
79
|
* @param relation
|
|
73
80
|
* @param entityOrEntities
|
|
74
81
|
* @param queryRunner
|
|
@@ -79,6 +86,7 @@ export declare class RelationLoader {
|
|
|
79
86
|
/**
|
|
80
87
|
* Applies eager relation loading to the given query builder based on the
|
|
81
88
|
* configured relation load strategy.
|
|
89
|
+
*
|
|
82
90
|
* @param qb
|
|
83
91
|
* @param loadEagerRelations
|
|
84
92
|
*/
|
|
@@ -86,6 +94,7 @@ export declare class RelationLoader {
|
|
|
86
94
|
/**
|
|
87
95
|
* Wraps given entity and creates getters/setters for its given relation
|
|
88
96
|
* to be able to lazily load data when accessing this relation.
|
|
97
|
+
*
|
|
89
98
|
* @param relation
|
|
90
99
|
* @param entity
|
|
91
100
|
* @param queryRunner
|
|
@@ -19,6 +19,7 @@ class RelationLoader {
|
|
|
19
19
|
// -------------------------------------------------------------------------
|
|
20
20
|
/**
|
|
21
21
|
* Loads relation data for the given entity and its relation.
|
|
22
|
+
*
|
|
22
23
|
* @param relation
|
|
23
24
|
* @param entityOrEntities
|
|
24
25
|
* @param queryRunner
|
|
@@ -27,7 +28,7 @@ class RelationLoader {
|
|
|
27
28
|
*/
|
|
28
29
|
load(relation, entityOrEntities, queryRunner, queryBuilder, loadEagerRelations) {
|
|
29
30
|
// todo: check all places where it uses non array
|
|
30
|
-
if (queryRunner
|
|
31
|
+
if (queryRunner?.isReleased)
|
|
31
32
|
queryRunner = undefined; // get new one if already closed
|
|
32
33
|
if (relation.isManyToOne || relation.isOneToOneOwner) {
|
|
33
34
|
return this.loadManyToOneOrOneToOneOwner(relation, entityOrEntities, queryRunner, queryBuilder, loadEagerRelations);
|
|
@@ -48,8 +49,11 @@ class RelationLoader {
|
|
|
48
49
|
*
|
|
49
50
|
* (ow) post.category<=>category.post
|
|
50
51
|
* loaded: category from post
|
|
51
|
-
*
|
|
52
|
-
*
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* SELECT category.id AS category_id, category.name AS category_name FROM category category
|
|
55
|
+
* INNER JOIN post Post ON Post.category=category.id WHERE Post.id=1
|
|
56
|
+
*
|
|
53
57
|
* @param relation
|
|
54
58
|
* @param entityOrEntities
|
|
55
59
|
* @param queryRunner
|
|
@@ -60,9 +64,8 @@ class RelationLoader {
|
|
|
60
64
|
const entities = Array.isArray(entityOrEntities)
|
|
61
65
|
? entityOrEntities
|
|
62
66
|
: [entityOrEntities];
|
|
63
|
-
const qb = queryBuilder
|
|
64
|
-
|
|
65
|
-
: this.dataSource
|
|
67
|
+
const qb = queryBuilder ??
|
|
68
|
+
this.dataSource
|
|
66
69
|
.createQueryBuilder(queryRunner)
|
|
67
70
|
.select(relation.propertyName)
|
|
68
71
|
.from(relation.type, relation.propertyName);
|
|
@@ -114,7 +117,6 @@ class RelationLoader {
|
|
|
114
117
|
}
|
|
115
118
|
this.applyEagerRelations(qb, loadEagerRelations);
|
|
116
119
|
return qb.getMany();
|
|
117
|
-
// return qb.getOne(); todo: fix all usages
|
|
118
120
|
}
|
|
119
121
|
/**
|
|
120
122
|
* Loads data for one-to-many and one-to-one not owner relations.
|
|
@@ -122,6 +124,7 @@ class RelationLoader {
|
|
|
122
124
|
* SELECT post
|
|
123
125
|
* FROM post post
|
|
124
126
|
* WHERE post.[joinColumn.name] = entity[joinColumn.referencedColumn]
|
|
127
|
+
*
|
|
125
128
|
* @param relation
|
|
126
129
|
* @param entityOrEntities
|
|
127
130
|
* @param queryRunner
|
|
@@ -133,9 +136,8 @@ class RelationLoader {
|
|
|
133
136
|
? entityOrEntities
|
|
134
137
|
: [entityOrEntities];
|
|
135
138
|
const columns = relation.inverseRelation.joinColumns;
|
|
136
|
-
const qb = queryBuilder
|
|
137
|
-
|
|
138
|
-
: this.dataSource
|
|
139
|
+
const qb = queryBuilder ??
|
|
140
|
+
this.dataSource
|
|
139
141
|
.createQueryBuilder(queryRunner)
|
|
140
142
|
.select(relation.propertyName)
|
|
141
143
|
.from(relation.inverseRelation.entityMetadata.target, relation.propertyName);
|
|
@@ -169,7 +171,6 @@ class RelationLoader {
|
|
|
169
171
|
}
|
|
170
172
|
this.applyEagerRelations(qb, loadEagerRelations);
|
|
171
173
|
return qb.getMany();
|
|
172
|
-
// return relation.isOneToMany ? qb.getMany() : qb.getOne(); todo: fix all usages
|
|
173
174
|
}
|
|
174
175
|
/**
|
|
175
176
|
* Loads data for many-to-many owner relations.
|
|
@@ -179,6 +180,7 @@ class RelationLoader {
|
|
|
179
180
|
* INNER JOIN post_categories post_categories
|
|
180
181
|
* ON post_categories.postId = :postId
|
|
181
182
|
* AND post_categories.categoryId = category.id
|
|
183
|
+
*
|
|
182
184
|
* @param relation
|
|
183
185
|
* @param entityOrEntities
|
|
184
186
|
* @param queryRunner
|
|
@@ -193,9 +195,8 @@ class RelationLoader {
|
|
|
193
195
|
parameters[joinColumn.propertyName] = entities.map((entity) => joinColumn.referencedColumn.getEntityValue(entity, true));
|
|
194
196
|
return parameters;
|
|
195
197
|
}, {});
|
|
196
|
-
const qb = queryBuilder
|
|
197
|
-
|
|
198
|
-
: this.dataSource
|
|
198
|
+
const qb = queryBuilder ??
|
|
199
|
+
this.dataSource
|
|
199
200
|
.createQueryBuilder(queryRunner)
|
|
200
201
|
.select(relation.propertyName)
|
|
201
202
|
.from(relation.type, relation.propertyName);
|
|
@@ -219,6 +220,7 @@ class RelationLoader {
|
|
|
219
220
|
* INNER JOIN post_categories post_categories
|
|
220
221
|
* ON post_categories.postId = post.id
|
|
221
222
|
* AND post_categories.categoryId = post_categories.categoryId
|
|
223
|
+
*
|
|
222
224
|
* @param relation
|
|
223
225
|
* @param entityOrEntities
|
|
224
226
|
* @param queryRunner
|
|
@@ -229,9 +231,8 @@ class RelationLoader {
|
|
|
229
231
|
const entities = Array.isArray(entityOrEntities)
|
|
230
232
|
? entityOrEntities
|
|
231
233
|
: [entityOrEntities];
|
|
232
|
-
const qb = queryBuilder
|
|
233
|
-
|
|
234
|
-
: this.dataSource
|
|
234
|
+
const qb = queryBuilder ??
|
|
235
|
+
this.dataSource
|
|
235
236
|
.createQueryBuilder(queryRunner)
|
|
236
237
|
.select(relation.propertyName)
|
|
237
238
|
.from(relation.type, relation.propertyName);
|
|
@@ -254,6 +255,7 @@ class RelationLoader {
|
|
|
254
255
|
/**
|
|
255
256
|
* Applies eager relation loading to the given query builder based on the
|
|
256
257
|
* configured relation load strategy.
|
|
258
|
+
*
|
|
257
259
|
* @param qb
|
|
258
260
|
* @param loadEagerRelations
|
|
259
261
|
*/
|
|
@@ -273,6 +275,7 @@ class RelationLoader {
|
|
|
273
275
|
/**
|
|
274
276
|
* Wraps given entity and creates getters/setters for its given relation
|
|
275
277
|
* to be able to lazily load data when accessing this relation.
|
|
278
|
+
*
|
|
276
279
|
* @param relation
|
|
277
280
|
* @param entity
|
|
278
281
|
* @param queryRunner
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RelationLoader.js","sourceRoot":"../build/browser/src/","sources":["query-builder/RelationLoader.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DataSource } from \"../data-source/DataSource\"\nimport type { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport type { QueryRunner } from \"../query-runner/QueryRunner\"\nimport type { RelationMetadata } from \"../metadata/RelationMetadata\"\nimport { DriverUtils } from \"../driver/DriverUtils\"\nimport { FindOptionsUtils } from \"../find-options/FindOptionsUtils\"\nimport type { SelectQueryBuilder } from \"./SelectQueryBuilder\"\n\n/**\n * Loads relation data for entities and provides lazy-load wrappers\n * via getters/setters.\n */\nexport class RelationLoader {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private dataSource: DataSource) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Loads relation data for the given entity and its relation.\n * @param relation\n * @param entityOrEntities\n * @param queryRunner\n * @param queryBuilder\n * @param loadEagerRelations\n */\n load(\n relation: RelationMetadata,\n entityOrEntities: ObjectLiteral | ObjectLiteral[],\n queryRunner?: QueryRunner,\n queryBuilder?: SelectQueryBuilder<any>,\n loadEagerRelations?: boolean,\n ): Promise<any[]> {\n // todo: check all places where it uses non array\n if (queryRunner && queryRunner.isReleased) queryRunner = undefined // get new one if already closed\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n return this.loadManyToOneOrOneToOneOwner(\n relation,\n entityOrEntities,\n queryRunner,\n queryBuilder,\n loadEagerRelations,\n )\n } else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n return this.loadOneToManyOrOneToOneNotOwner(\n relation,\n entityOrEntities,\n queryRunner,\n queryBuilder,\n loadEagerRelations,\n )\n } else if (relation.isManyToManyOwner) {\n return this.loadManyToManyOwner(\n relation,\n entityOrEntities,\n queryRunner,\n queryBuilder,\n loadEagerRelations,\n )\n } else {\n // many-to-many non owner\n return this.loadManyToManyNotOwner(\n relation,\n entityOrEntities,\n queryRunner,\n queryBuilder,\n loadEagerRelations,\n )\n }\n }\n\n /**\n * Loads data for many-to-one and one-to-one owner relations.\n *\n * (ow) post.category<=>category.post\n * loaded: category from post\n * example: SELECT category.id AS category_id, category.name AS category_name FROM category category\n * INNER JOIN post Post ON Post.category=category.id WHERE Post.id=1\n * @param relation\n * @param entityOrEntities\n * @param queryRunner\n * @param queryBuilder\n * @param loadEagerRelations\n */\n loadManyToOneOrOneToOneOwner(\n relation: RelationMetadata,\n entityOrEntities: ObjectLiteral | ObjectLiteral[],\n queryRunner?: QueryRunner,\n queryBuilder?: SelectQueryBuilder<any>,\n loadEagerRelations?: boolean,\n ): Promise<any> {\n const entities = Array.isArray(entityOrEntities)\n ? entityOrEntities\n : [entityOrEntities]\n\n const qb = queryBuilder\n ? queryBuilder\n : this.dataSource\n .createQueryBuilder(queryRunner)\n .select(relation.propertyName)\n .from(relation.type, relation.propertyName)\n\n const mainAlias = qb.expressionMap.mainAlias!.name\n\n // For self-referencing relations the entity name already exists\n // as an alias, so we need to generate a unique join alias name.\n const baseName = relation.entityMetadata.name\n let joinAliasName = DriverUtils.buildAlias(\n this.dataSource.driver,\n { shorten: true },\n baseName,\n )\n let suffix = 1\n while (\n qb.expressionMap.aliases.some(({ name }) => name === joinAliasName)\n ) {\n joinAliasName = DriverUtils.buildAlias(\n this.dataSource.driver,\n { shorten: true },\n baseName,\n String(suffix++),\n )\n }\n\n const columns = relation.entityMetadata.primaryColumns\n const joinColumns = relation.isOwning\n ? relation.joinColumns\n : relation.inverseRelation!.joinColumns\n const conditions = joinColumns\n .map((joinColumn) => {\n return `${joinAliasName}.${\n joinColumn.propertyName\n } = ${mainAlias}.${joinColumn.referencedColumn!.propertyName}`\n })\n .join(\" AND \")\n\n qb.innerJoin(\n relation.entityMetadata.target as Function,\n joinAliasName,\n conditions,\n )\n\n if (columns.length === 1) {\n qb.where(\n `${joinAliasName}.${columns[0].propertyPath} IN (:...${\n joinAliasName + \"_\" + columns[0].propertyName\n })`,\n )\n qb.setParameter(\n joinAliasName + \"_\" + columns[0].propertyName,\n entities.map((entity) =>\n columns[0].getEntityValue(entity, true),\n ),\n )\n } else {\n const condition = entities\n .map((entity, entityIndex) => {\n return columns\n .map((column, columnIndex) => {\n const paramName =\n joinAliasName +\n \"_entity_\" +\n entityIndex +\n \"_\" +\n columnIndex\n qb.setParameter(\n paramName,\n column.getEntityValue(entity, true),\n )\n return (\n joinAliasName +\n \".\" +\n column.propertyPath +\n \" = :\" +\n paramName\n )\n })\n .join(\" AND \")\n })\n .map((condition) => \"(\" + condition + \")\")\n .join(\" OR \")\n qb.where(condition)\n }\n\n this.applyEagerRelations(qb, loadEagerRelations)\n\n return qb.getMany()\n // return qb.getOne(); todo: fix all usages\n }\n\n /**\n * Loads data for one-to-many and one-to-one not owner relations.\n *\n * SELECT post\n * FROM post post\n * WHERE post.[joinColumn.name] = entity[joinColumn.referencedColumn]\n * @param relation\n * @param entityOrEntities\n * @param queryRunner\n * @param queryBuilder\n * @param loadEagerRelations\n */\n loadOneToManyOrOneToOneNotOwner(\n relation: RelationMetadata,\n entityOrEntities: ObjectLiteral | ObjectLiteral[],\n queryRunner?: QueryRunner,\n queryBuilder?: SelectQueryBuilder<any>,\n loadEagerRelations?: boolean,\n ): Promise<any> {\n const entities = Array.isArray(entityOrEntities)\n ? entityOrEntities\n : [entityOrEntities]\n const columns = relation.inverseRelation!.joinColumns\n const qb = queryBuilder\n ? queryBuilder\n : this.dataSource\n .createQueryBuilder(queryRunner)\n .select(relation.propertyName)\n .from(\n relation.inverseRelation!.entityMetadata.target,\n relation.propertyName,\n )\n\n const aliasName = qb.expressionMap.mainAlias!.name\n\n if (columns.length === 1) {\n qb.where(\n `${aliasName}.${columns[0].propertyPath} IN (:...${\n aliasName + \"_\" + columns[0].propertyName\n })`,\n )\n qb.setParameter(\n aliasName + \"_\" + columns[0].propertyName,\n entities.map((entity) =>\n columns[0].referencedColumn!.getEntityValue(entity, true),\n ),\n )\n } else {\n const condition = entities\n .map((entity, entityIndex) => {\n return columns\n .map((column, columnIndex) => {\n const paramName =\n aliasName +\n \"_entity_\" +\n entityIndex +\n \"_\" +\n columnIndex\n qb.setParameter(\n paramName,\n column.referencedColumn!.getEntityValue(\n entity,\n true,\n ),\n )\n return (\n aliasName +\n \".\" +\n column.propertyPath +\n \" = :\" +\n paramName\n )\n })\n .join(\" AND \")\n })\n .map((condition) => \"(\" + condition + \")\")\n .join(\" OR \")\n qb.where(condition)\n }\n\n this.applyEagerRelations(qb, loadEagerRelations)\n\n return qb.getMany()\n // return relation.isOneToMany ? qb.getMany() : qb.getOne(); todo: fix all usages\n }\n\n /**\n * Loads data for many-to-many owner relations.\n *\n * SELECT category\n * FROM category category\n * INNER JOIN post_categories post_categories\n * ON post_categories.postId = :postId\n * AND post_categories.categoryId = category.id\n * @param relation\n * @param entityOrEntities\n * @param queryRunner\n * @param queryBuilder\n * @param loadEagerRelations\n */\n loadManyToManyOwner(\n relation: RelationMetadata,\n entityOrEntities: ObjectLiteral | ObjectLiteral[],\n queryRunner?: QueryRunner,\n queryBuilder?: SelectQueryBuilder<any>,\n loadEagerRelations?: boolean,\n ): Promise<any> {\n const entities = Array.isArray(entityOrEntities)\n ? entityOrEntities\n : [entityOrEntities]\n const parameters = relation.joinColumns.reduce(\n (parameters, joinColumn) => {\n parameters[joinColumn.propertyName] = entities.map((entity) =>\n joinColumn.referencedColumn!.getEntityValue(entity, true),\n )\n return parameters\n },\n {} as ObjectLiteral,\n )\n\n const qb = queryBuilder\n ? queryBuilder\n : this.dataSource\n .createQueryBuilder(queryRunner)\n .select(relation.propertyName)\n .from(relation.type, relation.propertyName)\n\n const mainAlias = qb.expressionMap.mainAlias!.name\n const joinAlias = relation.junctionEntityMetadata!.tableName\n const joinColumnConditions = relation.joinColumns.map((joinColumn) => {\n return `${joinAlias}.${joinColumn.propertyName} IN (:...${joinColumn.propertyName})`\n })\n const inverseJoinColumnConditions = relation.inverseJoinColumns.map(\n (inverseJoinColumn) => {\n return `${joinAlias}.${\n inverseJoinColumn.propertyName\n }=${mainAlias}.${\n inverseJoinColumn.referencedColumn!.propertyName\n }`\n },\n )\n\n qb.innerJoin(\n joinAlias,\n joinAlias,\n [...joinColumnConditions, ...inverseJoinColumnConditions].join(\n \" AND \",\n ),\n ).setParameters(parameters)\n\n this.applyEagerRelations(qb, loadEagerRelations)\n\n return qb.getMany()\n }\n\n /**\n * Loads data for many-to-many not owner relations.\n *\n * SELECT post\n * FROM post post\n * INNER JOIN post_categories post_categories\n * ON post_categories.postId = post.id\n * AND post_categories.categoryId = post_categories.categoryId\n * @param relation\n * @param entityOrEntities\n * @param queryRunner\n * @param queryBuilder\n * @param loadEagerRelations\n */\n loadManyToManyNotOwner(\n relation: RelationMetadata,\n entityOrEntities: ObjectLiteral | ObjectLiteral[],\n queryRunner?: QueryRunner,\n queryBuilder?: SelectQueryBuilder<any>,\n loadEagerRelations?: boolean,\n ): Promise<any> {\n const entities = Array.isArray(entityOrEntities)\n ? entityOrEntities\n : [entityOrEntities]\n\n const qb = queryBuilder\n ? queryBuilder\n : this.dataSource\n .createQueryBuilder(queryRunner)\n .select(relation.propertyName)\n .from(relation.type, relation.propertyName)\n\n const mainAlias = qb.expressionMap.mainAlias!.name\n const joinAlias = relation.junctionEntityMetadata!.tableName\n const joinColumnConditions = relation.inverseRelation!.joinColumns.map(\n (joinColumn) => {\n return `${joinAlias}.${\n joinColumn.propertyName\n } = ${mainAlias}.${joinColumn.referencedColumn!.propertyName}`\n },\n )\n const inverseJoinColumnConditions =\n relation.inverseRelation!.inverseJoinColumns.map(\n (inverseJoinColumn) => {\n return `${joinAlias}.${inverseJoinColumn.propertyName} IN (:...${inverseJoinColumn.propertyName})`\n },\n )\n const parameters = relation.inverseRelation!.inverseJoinColumns.reduce(\n (parameters, joinColumn) => {\n parameters[joinColumn.propertyName] = entities.map((entity) =>\n joinColumn.referencedColumn!.getEntityValue(entity, true),\n )\n return parameters\n },\n {} as ObjectLiteral,\n )\n\n qb.innerJoin(\n joinAlias,\n joinAlias,\n [...joinColumnConditions, ...inverseJoinColumnConditions].join(\n \" AND \",\n ),\n ).setParameters(parameters)\n\n this.applyEagerRelations(qb, loadEagerRelations)\n\n return qb.getMany()\n }\n\n /**\n * Applies eager relation loading to the given query builder based on the\n * configured relation load strategy.\n * @param qb\n * @param loadEagerRelations\n */\n private applyEagerRelations(\n qb: SelectQueryBuilder<any>,\n loadEagerRelations?: boolean,\n ): void {\n if (loadEagerRelations === false) return\n\n const mainAlias = qb.expressionMap.mainAlias\n if (!mainAlias) return\n\n if (qb.expressionMap.relationLoadStrategy === \"query\") {\n qb.concatRelationMetadata(...mainAlias.metadata.eagerRelations)\n } else {\n FindOptionsUtils.joinEagerRelations(\n qb,\n qb.alias,\n mainAlias.metadata,\n )\n }\n }\n\n /**\n * Wraps given entity and creates getters/setters for its given relation\n * to be able to lazily load data when accessing this relation.\n * @param relation\n * @param entity\n * @param queryRunner\n */\n enableLazyLoad(\n relation: RelationMetadata,\n entity: ObjectLiteral,\n queryRunner?: QueryRunner,\n ) {\n const relationLoader = this\n const dataIndex = \"__\" + relation.propertyName + \"__\" // in what property of the entity loaded data will be stored\n const promiseIndex = \"__promise_\" + relation.propertyName + \"__\" // in what property of the entity loading promise will be stored\n const resolveIndex = \"__has_\" + relation.propertyName + \"__\" // indicates if relation data already was loaded or not, we need this flag if loaded data is empty\n\n const setData = (entity: ObjectLiteral, value: any) => {\n entity[dataIndex] = value\n entity[resolveIndex] = true\n delete entity[promiseIndex]\n return value\n }\n const setPromise = (entity: ObjectLiteral, value: Promise<any>) => {\n delete entity[resolveIndex]\n delete entity[dataIndex]\n entity[promiseIndex] = value\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n value.then(\n // ensure different value is not assigned yet\n (result) =>\n entity[promiseIndex] === value\n ? setData(entity, result)\n : result,\n )\n return value\n }\n\n Object.defineProperty(entity, relation.propertyName, {\n get: function () {\n if (\n this[resolveIndex] === true ||\n this[dataIndex] !== undefined\n )\n // if related data already was loaded then simply return it\n return Promise.resolve(this[dataIndex])\n\n if (this[promiseIndex])\n // if related data is loading then return a promise relationLoader loads it\n return this[promiseIndex]\n\n // nothing is loaded yet, load relation data and save it in the model once they are loaded\n const loader = relationLoader\n .load(relation, this, queryRunner)\n .then((result) =>\n relation.isOneToOne || relation.isManyToOne\n ? result.length === 0\n ? null\n : result[0]\n : result,\n )\n return setPromise(this, loader)\n },\n set: function (value: any | Promise<any>) {\n if (value instanceof Promise) {\n // if set data is a promise then wait for its resolve and save in the object\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n setPromise(this, value)\n } else {\n // if its direct data set (non promise, probably not safe-typed)\n setData(this, value)\n }\n },\n configurable: true,\n enumerable: false,\n })\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"RelationLoader.js","sourceRoot":"../build/browser/src/","sources":["query-builder/RelationLoader.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DataSource } from \"../data-source/DataSource\"\nimport type { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport type { QueryRunner } from \"../query-runner/QueryRunner\"\nimport type { RelationMetadata } from \"../metadata/RelationMetadata\"\nimport { DriverUtils } from \"../driver/DriverUtils\"\nimport { FindOptionsUtils } from \"../find-options/FindOptionsUtils\"\nimport type { SelectQueryBuilder } from \"./SelectQueryBuilder\"\n\n/**\n * Loads relation data for entities and provides lazy-load wrappers\n * via getters/setters.\n */\nexport class RelationLoader {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private dataSource: DataSource) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Loads relation data for the given entity and its relation.\n *\n * @param relation\n * @param entityOrEntities\n * @param queryRunner\n * @param queryBuilder\n * @param loadEagerRelations\n */\n load(\n relation: RelationMetadata,\n entityOrEntities: ObjectLiteral | ObjectLiteral[],\n queryRunner?: QueryRunner,\n queryBuilder?: SelectQueryBuilder<any>,\n loadEagerRelations?: boolean,\n ): Promise<any[]> {\n // todo: check all places where it uses non array\n if (queryRunner?.isReleased) queryRunner = undefined // get new one if already closed\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n return this.loadManyToOneOrOneToOneOwner(\n relation,\n entityOrEntities,\n queryRunner,\n queryBuilder,\n loadEagerRelations,\n )\n } else if (relation.isOneToMany || relation.isOneToOneNotOwner) {\n return this.loadOneToManyOrOneToOneNotOwner(\n relation,\n entityOrEntities,\n queryRunner,\n queryBuilder,\n loadEagerRelations,\n )\n } else if (relation.isManyToManyOwner) {\n return this.loadManyToManyOwner(\n relation,\n entityOrEntities,\n queryRunner,\n queryBuilder,\n loadEagerRelations,\n )\n } else {\n // many-to-many non owner\n return this.loadManyToManyNotOwner(\n relation,\n entityOrEntities,\n queryRunner,\n queryBuilder,\n loadEagerRelations,\n )\n }\n }\n\n /**\n * Loads data for many-to-one and one-to-one owner relations.\n *\n * (ow) post.category<=>category.post\n * loaded: category from post\n *\n * @example\n * SELECT category.id AS category_id, category.name AS category_name FROM category category\n * INNER JOIN post Post ON Post.category=category.id WHERE Post.id=1\n *\n * @param relation\n * @param entityOrEntities\n * @param queryRunner\n * @param queryBuilder\n * @param loadEagerRelations\n */\n loadManyToOneOrOneToOneOwner(\n relation: RelationMetadata,\n entityOrEntities: ObjectLiteral | ObjectLiteral[],\n queryRunner?: QueryRunner,\n queryBuilder?: SelectQueryBuilder<any>,\n loadEagerRelations?: boolean,\n ): Promise<any> {\n const entities = Array.isArray(entityOrEntities)\n ? entityOrEntities\n : [entityOrEntities]\n\n const qb =\n queryBuilder ??\n this.dataSource\n .createQueryBuilder(queryRunner)\n .select(relation.propertyName)\n .from(relation.type, relation.propertyName)\n\n const mainAlias = qb.expressionMap.mainAlias!.name\n\n // For self-referencing relations the entity name already exists\n // as an alias, so we need to generate a unique join alias name.\n const baseName = relation.entityMetadata.name\n let joinAliasName = DriverUtils.buildAlias(\n this.dataSource.driver,\n { shorten: true },\n baseName,\n )\n let suffix = 1\n while (\n qb.expressionMap.aliases.some(({ name }) => name === joinAliasName)\n ) {\n joinAliasName = DriverUtils.buildAlias(\n this.dataSource.driver,\n { shorten: true },\n baseName,\n String(suffix++),\n )\n }\n\n const columns = relation.entityMetadata.primaryColumns\n const joinColumns = relation.isOwning\n ? relation.joinColumns\n : relation.inverseRelation!.joinColumns\n const conditions = joinColumns\n .map((joinColumn) => {\n return `${joinAliasName}.${\n joinColumn.propertyName\n } = ${mainAlias}.${joinColumn.referencedColumn!.propertyName}`\n })\n .join(\" AND \")\n\n qb.innerJoin(\n relation.entityMetadata.target as Function,\n joinAliasName,\n conditions,\n )\n\n if (columns.length === 1) {\n qb.where(\n `${joinAliasName}.${columns[0].propertyPath} IN (:...${\n joinAliasName + \"_\" + columns[0].propertyName\n })`,\n )\n qb.setParameter(\n joinAliasName + \"_\" + columns[0].propertyName,\n entities.map((entity) =>\n columns[0].getEntityValue(entity, true),\n ),\n )\n } else {\n const condition = entities\n .map((entity, entityIndex) => {\n return columns\n .map((column, columnIndex) => {\n const paramName =\n joinAliasName +\n \"_entity_\" +\n entityIndex +\n \"_\" +\n columnIndex\n qb.setParameter(\n paramName,\n column.getEntityValue(entity, true),\n )\n return (\n joinAliasName +\n \".\" +\n column.propertyPath +\n \" = :\" +\n paramName\n )\n })\n .join(\" AND \")\n })\n .map((condition) => \"(\" + condition + \")\")\n .join(\" OR \")\n qb.where(condition)\n }\n\n this.applyEagerRelations(qb, loadEagerRelations)\n\n return qb.getMany()\n }\n\n /**\n * Loads data for one-to-many and one-to-one not owner relations.\n *\n * SELECT post\n * FROM post post\n * WHERE post.[joinColumn.name] = entity[joinColumn.referencedColumn]\n *\n * @param relation\n * @param entityOrEntities\n * @param queryRunner\n * @param queryBuilder\n * @param loadEagerRelations\n */\n loadOneToManyOrOneToOneNotOwner(\n relation: RelationMetadata,\n entityOrEntities: ObjectLiteral | ObjectLiteral[],\n queryRunner?: QueryRunner,\n queryBuilder?: SelectQueryBuilder<any>,\n loadEagerRelations?: boolean,\n ): Promise<any> {\n const entities = Array.isArray(entityOrEntities)\n ? entityOrEntities\n : [entityOrEntities]\n const columns = relation.inverseRelation!.joinColumns\n const qb =\n queryBuilder ??\n this.dataSource\n .createQueryBuilder(queryRunner)\n .select(relation.propertyName)\n .from(\n relation.inverseRelation!.entityMetadata.target,\n relation.propertyName,\n )\n\n const aliasName = qb.expressionMap.mainAlias!.name\n\n if (columns.length === 1) {\n qb.where(\n `${aliasName}.${columns[0].propertyPath} IN (:...${\n aliasName + \"_\" + columns[0].propertyName\n })`,\n )\n qb.setParameter(\n aliasName + \"_\" + columns[0].propertyName,\n entities.map((entity) =>\n columns[0].referencedColumn!.getEntityValue(entity, true),\n ),\n )\n } else {\n const condition = entities\n .map((entity, entityIndex) => {\n return columns\n .map((column, columnIndex) => {\n const paramName =\n aliasName +\n \"_entity_\" +\n entityIndex +\n \"_\" +\n columnIndex\n qb.setParameter(\n paramName,\n column.referencedColumn!.getEntityValue(\n entity,\n true,\n ),\n )\n return (\n aliasName +\n \".\" +\n column.propertyPath +\n \" = :\" +\n paramName\n )\n })\n .join(\" AND \")\n })\n .map((condition) => \"(\" + condition + \")\")\n .join(\" OR \")\n qb.where(condition)\n }\n\n this.applyEagerRelations(qb, loadEagerRelations)\n\n return qb.getMany()\n }\n\n /**\n * Loads data for many-to-many owner relations.\n *\n * SELECT category\n * FROM category category\n * INNER JOIN post_categories post_categories\n * ON post_categories.postId = :postId\n * AND post_categories.categoryId = category.id\n *\n * @param relation\n * @param entityOrEntities\n * @param queryRunner\n * @param queryBuilder\n * @param loadEagerRelations\n */\n loadManyToManyOwner(\n relation: RelationMetadata,\n entityOrEntities: ObjectLiteral | ObjectLiteral[],\n queryRunner?: QueryRunner,\n queryBuilder?: SelectQueryBuilder<any>,\n loadEagerRelations?: boolean,\n ): Promise<any> {\n const entities = Array.isArray(entityOrEntities)\n ? entityOrEntities\n : [entityOrEntities]\n const parameters = relation.joinColumns.reduce(\n (parameters, joinColumn) => {\n parameters[joinColumn.propertyName] = entities.map((entity) =>\n joinColumn.referencedColumn!.getEntityValue(entity, true),\n )\n return parameters\n },\n {} as ObjectLiteral,\n )\n\n const qb =\n queryBuilder ??\n this.dataSource\n .createQueryBuilder(queryRunner)\n .select(relation.propertyName)\n .from(relation.type, relation.propertyName)\n\n const mainAlias = qb.expressionMap.mainAlias!.name\n const joinAlias = relation.junctionEntityMetadata!.tableName\n const joinColumnConditions = relation.joinColumns.map((joinColumn) => {\n return `${joinAlias}.${joinColumn.propertyName} IN (:...${joinColumn.propertyName})`\n })\n const inverseJoinColumnConditions = relation.inverseJoinColumns.map(\n (inverseJoinColumn) => {\n return `${joinAlias}.${\n inverseJoinColumn.propertyName\n }=${mainAlias}.${\n inverseJoinColumn.referencedColumn!.propertyName\n }`\n },\n )\n\n qb.innerJoin(\n joinAlias,\n joinAlias,\n [...joinColumnConditions, ...inverseJoinColumnConditions].join(\n \" AND \",\n ),\n ).setParameters(parameters)\n\n this.applyEagerRelations(qb, loadEagerRelations)\n\n return qb.getMany()\n }\n\n /**\n * Loads data for many-to-many not owner relations.\n *\n * SELECT post\n * FROM post post\n * INNER JOIN post_categories post_categories\n * ON post_categories.postId = post.id\n * AND post_categories.categoryId = post_categories.categoryId\n *\n * @param relation\n * @param entityOrEntities\n * @param queryRunner\n * @param queryBuilder\n * @param loadEagerRelations\n */\n loadManyToManyNotOwner(\n relation: RelationMetadata,\n entityOrEntities: ObjectLiteral | ObjectLiteral[],\n queryRunner?: QueryRunner,\n queryBuilder?: SelectQueryBuilder<any>,\n loadEagerRelations?: boolean,\n ): Promise<any> {\n const entities = Array.isArray(entityOrEntities)\n ? entityOrEntities\n : [entityOrEntities]\n\n const qb =\n queryBuilder ??\n this.dataSource\n .createQueryBuilder(queryRunner)\n .select(relation.propertyName)\n .from(relation.type, relation.propertyName)\n\n const mainAlias = qb.expressionMap.mainAlias!.name\n const joinAlias = relation.junctionEntityMetadata!.tableName\n const joinColumnConditions = relation.inverseRelation!.joinColumns.map(\n (joinColumn) => {\n return `${joinAlias}.${\n joinColumn.propertyName\n } = ${mainAlias}.${joinColumn.referencedColumn!.propertyName}`\n },\n )\n const inverseJoinColumnConditions =\n relation.inverseRelation!.inverseJoinColumns.map(\n (inverseJoinColumn) => {\n return `${joinAlias}.${inverseJoinColumn.propertyName} IN (:...${inverseJoinColumn.propertyName})`\n },\n )\n const parameters = relation.inverseRelation!.inverseJoinColumns.reduce(\n (parameters, joinColumn) => {\n parameters[joinColumn.propertyName] = entities.map((entity) =>\n joinColumn.referencedColumn!.getEntityValue(entity, true),\n )\n return parameters\n },\n {} as ObjectLiteral,\n )\n\n qb.innerJoin(\n joinAlias,\n joinAlias,\n [...joinColumnConditions, ...inverseJoinColumnConditions].join(\n \" AND \",\n ),\n ).setParameters(parameters)\n\n this.applyEagerRelations(qb, loadEagerRelations)\n\n return qb.getMany()\n }\n\n /**\n * Applies eager relation loading to the given query builder based on the\n * configured relation load strategy.\n *\n * @param qb\n * @param loadEagerRelations\n */\n private applyEagerRelations(\n qb: SelectQueryBuilder<any>,\n loadEagerRelations?: boolean,\n ): void {\n if (loadEagerRelations === false) return\n\n const mainAlias = qb.expressionMap.mainAlias\n if (!mainAlias) return\n\n if (qb.expressionMap.relationLoadStrategy === \"query\") {\n qb.concatRelationMetadata(...mainAlias.metadata.eagerRelations)\n } else {\n FindOptionsUtils.joinEagerRelations(\n qb,\n qb.alias,\n mainAlias.metadata,\n )\n }\n }\n\n /**\n * Wraps given entity and creates getters/setters for its given relation\n * to be able to lazily load data when accessing this relation.\n *\n * @param relation\n * @param entity\n * @param queryRunner\n */\n enableLazyLoad(\n relation: RelationMetadata,\n entity: ObjectLiteral,\n queryRunner?: QueryRunner,\n ) {\n const relationLoader = this\n const dataIndex = \"__\" + relation.propertyName + \"__\" // in what property of the entity loaded data will be stored\n const promiseIndex = \"__promise_\" + relation.propertyName + \"__\" // in what property of the entity loading promise will be stored\n const resolveIndex = \"__has_\" + relation.propertyName + \"__\" // indicates if relation data already was loaded or not, we need this flag if loaded data is empty\n\n const setData = (entity: ObjectLiteral, value: any) => {\n entity[dataIndex] = value\n entity[resolveIndex] = true\n delete entity[promiseIndex]\n return value\n }\n const setPromise = (entity: ObjectLiteral, value: Promise<any>) => {\n delete entity[resolveIndex]\n delete entity[dataIndex]\n entity[promiseIndex] = value\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n value.then(\n // ensure different value is not assigned yet\n (result) =>\n entity[promiseIndex] === value\n ? setData(entity, result)\n : result,\n )\n return value\n }\n\n Object.defineProperty(entity, relation.propertyName, {\n get: function () {\n if (\n this[resolveIndex] === true ||\n this[dataIndex] !== undefined\n )\n // if related data already was loaded then simply return it\n return Promise.resolve(this[dataIndex])\n\n if (this[promiseIndex])\n // if related data is loading then return a promise relationLoader loads it\n return this[promiseIndex]\n\n // nothing is loaded yet, load relation data and save it in the model once they are loaded\n const loader = relationLoader\n .load(relation, this, queryRunner)\n .then((result) =>\n relation.isOneToOne || relation.isManyToOne\n ? result.length === 0\n ? null\n : result[0]\n : result,\n )\n return setPromise(this, loader)\n },\n set: function (value: any | Promise<any>) {\n if (value instanceof Promise) {\n // if set data is a promise then wait for its resolve and save in the object\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n setPromise(this, value)\n } else {\n // if its direct data set (non promise, probably not safe-typed)\n setData(this, value)\n }\n },\n configurable: true,\n enumerable: false,\n })\n }\n}\n"]}
|
|
@@ -13,6 +13,7 @@ export declare class RelationQueryBuilder<Entity extends ObjectLiteral> extends
|
|
|
13
13
|
getQuery(): string;
|
|
14
14
|
/**
|
|
15
15
|
* Sets entity (target) which relations will be updated.
|
|
16
|
+
*
|
|
16
17
|
* @param entity
|
|
17
18
|
*/
|
|
18
19
|
of(entity: any | any[]): this;
|
|
@@ -21,6 +22,7 @@ export declare class RelationQueryBuilder<Entity extends ObjectLiteral> extends
|
|
|
21
22
|
* Value can be entity, entity id or entity id map (if entity has composite ids).
|
|
22
23
|
* Works only for many-to-one and one-to-one relations.
|
|
23
24
|
* For many-to-many and one-to-many relations use #add and #remove methods instead.
|
|
25
|
+
*
|
|
24
26
|
* @param value
|
|
25
27
|
*/
|
|
26
28
|
set(value: any): Promise<void>;
|
|
@@ -30,6 +32,7 @@ export declare class RelationQueryBuilder<Entity extends ObjectLiteral> extends
|
|
|
30
32
|
* Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).
|
|
31
33
|
* Works only for many-to-many and one-to-many relations.
|
|
32
34
|
* For many-to-one and one-to-one use #set method instead.
|
|
35
|
+
*
|
|
33
36
|
* @param value
|
|
34
37
|
*/
|
|
35
38
|
add(value: any | any[]): Promise<void>;
|
|
@@ -39,6 +42,7 @@ export declare class RelationQueryBuilder<Entity extends ObjectLiteral> extends
|
|
|
39
42
|
* Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).
|
|
40
43
|
* Works only for many-to-many and one-to-many relations.
|
|
41
44
|
* For many-to-one and one-to-one use #set method instead.
|
|
45
|
+
*
|
|
42
46
|
* @param value
|
|
43
47
|
*/
|
|
44
48
|
remove(value: any | any[]): Promise<void>;
|
|
@@ -48,6 +52,7 @@ export declare class RelationQueryBuilder<Entity extends ObjectLiteral> extends
|
|
|
48
52
|
* Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).
|
|
49
53
|
* Works only for many-to-many and one-to-many relations.
|
|
50
54
|
* For many-to-one and one-to-one use #set method instead.
|
|
55
|
+
*
|
|
51
56
|
* @param added
|
|
52
57
|
* @param removed
|
|
53
58
|
*/
|
|
@@ -30,6 +30,7 @@ class RelationQueryBuilder extends QueryBuilder_1.QueryBuilder {
|
|
|
30
30
|
// -------------------------------------------------------------------------
|
|
31
31
|
/**
|
|
32
32
|
* Sets entity (target) which relations will be updated.
|
|
33
|
+
*
|
|
33
34
|
* @param entity
|
|
34
35
|
*/
|
|
35
36
|
of(entity) {
|
|
@@ -41,6 +42,7 @@ class RelationQueryBuilder extends QueryBuilder_1.QueryBuilder {
|
|
|
41
42
|
* Value can be entity, entity id or entity id map (if entity has composite ids).
|
|
42
43
|
* Works only for many-to-one and one-to-one relations.
|
|
43
44
|
* For many-to-many and one-to-many relations use #add and #remove methods instead.
|
|
45
|
+
*
|
|
44
46
|
* @param value
|
|
45
47
|
*/
|
|
46
48
|
async set(value) {
|
|
@@ -67,6 +69,7 @@ class RelationQueryBuilder extends QueryBuilder_1.QueryBuilder {
|
|
|
67
69
|
* Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).
|
|
68
70
|
* Works only for many-to-many and one-to-many relations.
|
|
69
71
|
* For many-to-one and one-to-one use #set method instead.
|
|
72
|
+
*
|
|
70
73
|
* @param value
|
|
71
74
|
*/
|
|
72
75
|
async add(value) {
|
|
@@ -95,6 +98,7 @@ class RelationQueryBuilder extends QueryBuilder_1.QueryBuilder {
|
|
|
95
98
|
* Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).
|
|
96
99
|
* Works only for many-to-many and one-to-many relations.
|
|
97
100
|
* For many-to-one and one-to-one use #set method instead.
|
|
101
|
+
*
|
|
98
102
|
* @param value
|
|
99
103
|
*/
|
|
100
104
|
async remove(value) {
|
|
@@ -117,6 +121,7 @@ class RelationQueryBuilder extends QueryBuilder_1.QueryBuilder {
|
|
|
117
121
|
* Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).
|
|
118
122
|
* Works only for many-to-many and one-to-many relations.
|
|
119
123
|
* For many-to-one and one-to-one use #set method instead.
|
|
124
|
+
*
|
|
120
125
|
* @param added
|
|
121
126
|
* @param removed
|
|
122
127
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RelationQueryBuilder.js","sourceRoot":"../build/browser/src/","sources":["query-builder/RelationQueryBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import { QueryBuilder } from \"./QueryBuilder\"\nimport { RelationUpdater } from \"./RelationUpdater\"\nimport { RelationRemover } from \"./RelationRemover\"\nimport { TypeORMError } from \"../error\"\nimport { ObjectUtils } from \"../util/ObjectUtils\"\nimport type { ObjectLiteral } from \"../common/ObjectLiteral\"\n\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nexport class RelationQueryBuilder<\n Entity extends ObjectLiteral,\n> extends QueryBuilder<Entity> {\n readonly \"@instanceof\" = Symbol.for(\"RelationQueryBuilder\")\n\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets generated SQL query without parameters being replaced.\n */\n getQuery(): string {\n return \"\"\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Sets entity (target) which relations will be updated.\n * @param entity\n */\n of(entity: any | any[]): this {\n this.expressionMap.of = entity\n return this\n }\n\n /**\n * Sets entity relation's value.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Works only for many-to-one and one-to-one relations.\n * For many-to-many and one-to-many relations use #add and #remove methods instead.\n * @param value\n */\n async set(value: any): Promise<void> {\n const relation = this.expressionMap.relationMetadata\n\n if (!this.expressionMap.of)\n // todo: move this check before relation query builder creation?\n throw new TypeORMError(\n `Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.`,\n )\n\n if (relation.isManyToMany || relation.isOneToMany)\n throw new TypeORMError(\n `Set operation is only supported for many-to-one and one-to-one relations. ` +\n `However given \"${relation.propertyPath}\" has ${relation.relationType} relation. ` +\n `Use .add() method instead.`,\n )\n\n // if there are multiple join columns then user must send id map as \"value\" argument. check if he really did it\n if (\n relation.joinColumns &&\n relation.joinColumns.length > 1 &&\n (!ObjectUtils.isObject(value) ||\n Object.keys(value).length < relation.joinColumns.length)\n )\n throw new TypeORMError(\n `Value to be set into the relation must be a map of relation ids, for example: .set({ firstName: \"...\", lastName: \"...\" })`,\n )\n\n const updater = new RelationUpdater(this, this.expressionMap)\n return updater.update(value)\n }\n\n /**\n * Adds (binds) given value to entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n * @param value\n */\n async add(value: any | any[]): Promise<void> {\n if (Array.isArray(value) && value.length === 0) return\n\n const relation = this.expressionMap.relationMetadata\n\n if (!this.expressionMap.of)\n // todo: move this check before relation query builder creation?\n throw new TypeORMError(\n `Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.`,\n )\n\n if (relation.isManyToOne || relation.isOneToOne)\n throw new TypeORMError(\n `Add operation is only supported for many-to-many and one-to-many relations. ` +\n `However given \"${relation.propertyPath}\" has ${relation.relationType} relation. ` +\n `Use .set() method instead.`,\n )\n\n // if there are multiple join columns then user must send id map as \"value\" argument. check if he really did it\n if (\n relation.joinColumns &&\n relation.joinColumns.length > 1 &&\n (!ObjectUtils.isObject(value) ||\n Object.keys(value).length < relation.joinColumns.length)\n )\n throw new TypeORMError(\n `Value to be set into the relation must be a map of relation ids, for example: .set({ firstName: \"...\", lastName: \"...\" })`,\n )\n\n const updater = new RelationUpdater(this, this.expressionMap)\n return updater.update(value)\n }\n\n /**\n * Removes (unbinds) given value from entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n * @param value\n */\n async remove(value: any | any[]): Promise<void> {\n if (Array.isArray(value) && value.length === 0) return\n\n const relation = this.expressionMap.relationMetadata\n\n if (!this.expressionMap.of)\n // todo: move this check before relation query builder creation?\n throw new TypeORMError(\n `Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.`,\n )\n\n if (relation.isManyToOne || relation.isOneToOne)\n throw new TypeORMError(\n `Add operation is only supported for many-to-many and one-to-many relations. ` +\n `However given \"${relation.propertyPath}\" has ${relation.relationType} relation. ` +\n `Use .set(null) method instead.`,\n )\n\n const remover = new RelationRemover(this, this.expressionMap)\n return remover.remove(value)\n }\n\n /**\n * Adds (binds) and removes (unbinds) given values to/from entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n * @param added\n * @param removed\n */\n async addAndRemove(\n added: any | any[],\n removed: any | any[],\n ): Promise<void> {\n await this.remove(removed)\n await this.add(added)\n }\n\n /**\n * Loads a single entity (relational) from the relation.\n * You can also provide id of relational entity to filter by.\n */\n async loadOne<T = any>(): Promise<T | undefined> {\n return this.loadMany<T>().then((results) => results[0])\n }\n\n /**\n * Loads many entities (relational) from the relation.\n * You can also provide ids of relational entities to filter by.\n */\n async loadMany<T = any>(): Promise<T[]> {\n let of = this.expressionMap.of\n if (!ObjectUtils.isObject(of)) {\n const metadata = this.expressionMap.mainAlias!.metadata\n if (metadata.hasMultiplePrimaryKeys)\n throw new TypeORMError(\n `Cannot load entity because only one primary key was specified, however entity contains multiple primary keys`,\n )\n\n of = metadata.primaryColumns[0].createValueMap(of)\n }\n\n return this.dataSource.relationLoader.load(\n this.expressionMap.relationMetadata,\n of,\n this.queryRunner,\n )\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"RelationQueryBuilder.js","sourceRoot":"../build/browser/src/","sources":["query-builder/RelationQueryBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["import { QueryBuilder } from \"./QueryBuilder\"\nimport { RelationUpdater } from \"./RelationUpdater\"\nimport { RelationRemover } from \"./RelationRemover\"\nimport { TypeORMError } from \"../error\"\nimport { ObjectUtils } from \"../util/ObjectUtils\"\nimport type { ObjectLiteral } from \"../common/ObjectLiteral\"\n\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nexport class RelationQueryBuilder<\n Entity extends ObjectLiteral,\n> extends QueryBuilder<Entity> {\n readonly \"@instanceof\" = Symbol.for(\"RelationQueryBuilder\")\n\n // -------------------------------------------------------------------------\n // Public Implemented Methods\n // -------------------------------------------------------------------------\n\n /**\n * Gets generated SQL query without parameters being replaced.\n */\n getQuery(): string {\n return \"\"\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Sets entity (target) which relations will be updated.\n *\n * @param entity\n */\n of(entity: any | any[]): this {\n this.expressionMap.of = entity\n return this\n }\n\n /**\n * Sets entity relation's value.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Works only for many-to-one and one-to-one relations.\n * For many-to-many and one-to-many relations use #add and #remove methods instead.\n *\n * @param value\n */\n async set(value: any): Promise<void> {\n const relation = this.expressionMap.relationMetadata\n\n if (!this.expressionMap.of)\n // todo: move this check before relation query builder creation?\n throw new TypeORMError(\n `Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.`,\n )\n\n if (relation.isManyToMany || relation.isOneToMany)\n throw new TypeORMError(\n `Set operation is only supported for many-to-one and one-to-one relations. ` +\n `However given \"${relation.propertyPath}\" has ${relation.relationType} relation. ` +\n `Use .add() method instead.`,\n )\n\n // if there are multiple join columns then user must send id map as \"value\" argument. check if he really did it\n if (\n relation.joinColumns &&\n relation.joinColumns.length > 1 &&\n (!ObjectUtils.isObject(value) ||\n Object.keys(value).length < relation.joinColumns.length)\n )\n throw new TypeORMError(\n `Value to be set into the relation must be a map of relation ids, for example: .set({ firstName: \"...\", lastName: \"...\" })`,\n )\n\n const updater = new RelationUpdater(this, this.expressionMap)\n return updater.update(value)\n }\n\n /**\n * Adds (binds) given value to entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n *\n * @param value\n */\n async add(value: any | any[]): Promise<void> {\n if (Array.isArray(value) && value.length === 0) return\n\n const relation = this.expressionMap.relationMetadata\n\n if (!this.expressionMap.of)\n // todo: move this check before relation query builder creation?\n throw new TypeORMError(\n `Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.`,\n )\n\n if (relation.isManyToOne || relation.isOneToOne)\n throw new TypeORMError(\n `Add operation is only supported for many-to-many and one-to-many relations. ` +\n `However given \"${relation.propertyPath}\" has ${relation.relationType} relation. ` +\n `Use .set() method instead.`,\n )\n\n // if there are multiple join columns then user must send id map as \"value\" argument. check if he really did it\n if (\n relation.joinColumns &&\n relation.joinColumns.length > 1 &&\n (!ObjectUtils.isObject(value) ||\n Object.keys(value).length < relation.joinColumns.length)\n )\n throw new TypeORMError(\n `Value to be set into the relation must be a map of relation ids, for example: .set({ firstName: \"...\", lastName: \"...\" })`,\n )\n\n const updater = new RelationUpdater(this, this.expressionMap)\n return updater.update(value)\n }\n\n /**\n * Removes (unbinds) given value from entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n *\n * @param value\n */\n async remove(value: any | any[]): Promise<void> {\n if (Array.isArray(value) && value.length === 0) return\n\n const relation = this.expressionMap.relationMetadata\n\n if (!this.expressionMap.of)\n // todo: move this check before relation query builder creation?\n throw new TypeORMError(\n `Entity whose relation needs to be set is not set. Use .of method to define whose relation you want to set.`,\n )\n\n if (relation.isManyToOne || relation.isOneToOne)\n throw new TypeORMError(\n `Add operation is only supported for many-to-many and one-to-many relations. ` +\n `However given \"${relation.propertyPath}\" has ${relation.relationType} relation. ` +\n `Use .set(null) method instead.`,\n )\n\n const remover = new RelationRemover(this, this.expressionMap)\n return remover.remove(value)\n }\n\n /**\n * Adds (binds) and removes (unbinds) given values to/from entity relation.\n * Value can be entity, entity id or entity id map (if entity has composite ids).\n * Value also can be array of entities, array of entity ids or array of entity id maps (if entity has composite ids).\n * Works only for many-to-many and one-to-many relations.\n * For many-to-one and one-to-one use #set method instead.\n *\n * @param added\n * @param removed\n */\n async addAndRemove(\n added: any | any[],\n removed: any | any[],\n ): Promise<void> {\n await this.remove(removed)\n await this.add(added)\n }\n\n /**\n * Loads a single entity (relational) from the relation.\n * You can also provide id of relational entity to filter by.\n */\n async loadOne<T = any>(): Promise<T | undefined> {\n return this.loadMany<T>().then((results) => results[0])\n }\n\n /**\n * Loads many entities (relational) from the relation.\n * You can also provide ids of relational entities to filter by.\n */\n async loadMany<T = any>(): Promise<T[]> {\n let of = this.expressionMap.of\n if (!ObjectUtils.isObject(of)) {\n const metadata = this.expressionMap.mainAlias!.metadata\n if (metadata.hasMultiplePrimaryKeys)\n throw new TypeORMError(\n `Cannot load entity because only one primary key was specified, however entity contains multiple primary keys`,\n )\n\n of = metadata.primaryColumns[0].createValueMap(of)\n }\n\n return this.dataSource.relationLoader.load(\n this.expressionMap.relationMetadata,\n of,\n this.queryRunner,\n )\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RelationRemover.js","sourceRoot":"../build/browser/src/","sources":["query-builder/RelationRemover.ts"],"names":[],"mappings":"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","sourcesContent":["import type { QueryBuilder } from \"./QueryBuilder\"\nimport type { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport type { QueryExpressionMap } from \"./QueryExpressionMap\"\nimport { ObjectUtils } from \"../util/ObjectUtils\"\n\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nexport class RelationRemover {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected queryBuilder: QueryBuilder<any>,\n protected expressionMap: QueryExpressionMap,\n ) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs remove operation on a relation.\n * @param value\n */\n async remove(value: any | any[]): Promise<void> {\n const relation = this.expressionMap.relationMetadata\n\n if (relation.isOneToMany) {\n // if (this.expressionMap.of instanceof Array)\n // throw new TypeORMError(`You cannot update relations of multiple entities with the same related object. Provide a single entity into .of method.`);\n\n // DELETE FROM post WHERE post.categoryId = of AND post.id = id\n const ofs = Array.isArray(this.expressionMap.of)\n ? this.expressionMap.of\n : [this.expressionMap.of]\n const values = Array.isArray(value) ? value : [value]\n\n const updateSet: ObjectLiteral = {}\n relation.inverseRelation!.joinColumns.forEach((column) => {\n updateSet[column.propertyName] = null\n })\n\n const parameters: ObjectLiteral = {}\n const conditions: string[] = []\n ofs.forEach((of, ofIndex) => {\n conditions.push(\n ...values.map((value, valueIndex) => {\n return [\n ...relation.inverseRelation!.joinColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"joinColumn_\" +\n ofIndex +\n \"_\" +\n valueIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(of)\n ? column.referencedColumn!.getEntityValue(\n of,\n )\n : of\n return `${column.propertyPath} = :${parameterName}`\n },\n ),\n ...relation.inverseRelation!.entityMetadata.primaryColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"primaryColumn_\" +\n valueIndex +\n \"_\" +\n valueIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(value)\n ? column.getEntityValue(value)\n : value\n return `${column.propertyPath} = :${parameterName}`\n },\n ),\n ].join(\" AND \")\n }),\n )\n })\n const condition = conditions\n .map((str) => \"(\" + str + \")\")\n .join(\" OR \")\n if (!condition) return\n\n await this.queryBuilder\n .createQueryBuilder()\n .update(relation.inverseEntityMetadata.target)\n .set(updateSet)\n .where(condition)\n .setParameters(parameters)\n .execute()\n } else {\n // many to many\n\n const junctionMetadata = relation.junctionEntityMetadata!\n const ofs = Array.isArray(this.expressionMap.of)\n ? this.expressionMap.of\n : [this.expressionMap.of]\n const values = Array.isArray(value) ? value : [value]\n const firstColumnValues = relation.isManyToManyOwner ? ofs : values\n const secondColumnValues = relation.isManyToManyOwner ? values : ofs\n\n const parameters: ObjectLiteral = {}\n const conditions: string[] = []\n firstColumnValues.forEach((firstColumnVal, firstColumnValIndex) => {\n conditions.push(\n ...secondColumnValues.map(\n (secondColumnVal, secondColumnValIndex) => {\n return [\n ...junctionMetadata.ownerColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"firstValue_\" +\n firstColumnValIndex +\n \"_\" +\n secondColumnValIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(firstColumnVal)\n ? column.referencedColumn!.getEntityValue(\n firstColumnVal,\n )\n : firstColumnVal\n return `${column.databaseName} = :${parameterName}`\n },\n ),\n ...junctionMetadata.inverseColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"secondValue_\" +\n firstColumnValIndex +\n \"_\" +\n secondColumnValIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(\n secondColumnVal,\n )\n ? column.referencedColumn!.getEntityValue(\n secondColumnVal,\n )\n : secondColumnVal\n return `${column.databaseName} = :${parameterName}`\n },\n ),\n ].join(\" AND \")\n },\n ),\n )\n })\n const condition = conditions\n .map((str) => \"(\" + str + \")\")\n .join(\" OR \")\n\n await this.queryBuilder\n .createQueryBuilder()\n .delete()\n .from(junctionMetadata.tableName)\n .where(condition)\n .setParameters(parameters)\n .execute()\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"RelationRemover.js","sourceRoot":"../build/browser/src/","sources":["query-builder/RelationRemover.ts"],"names":[],"mappings":"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","sourcesContent":["import type { QueryBuilder } from \"./QueryBuilder\"\nimport type { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport type { QueryExpressionMap } from \"./QueryExpressionMap\"\nimport { ObjectUtils } from \"../util/ObjectUtils\"\n\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nexport class RelationRemover {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected queryBuilder: QueryBuilder<any>,\n protected expressionMap: QueryExpressionMap,\n ) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs remove operation on a relation.\n *\n * @param value\n */\n async remove(value: any | any[]): Promise<void> {\n const relation = this.expressionMap.relationMetadata\n\n if (relation.isOneToMany) {\n // if (this.expressionMap.of instanceof Array)\n // throw new TypeORMError(`You cannot update relations of multiple entities with the same related object. Provide a single entity into .of method.`);\n\n // DELETE FROM post WHERE post.categoryId = of AND post.id = id\n const ofs = Array.isArray(this.expressionMap.of)\n ? this.expressionMap.of\n : [this.expressionMap.of]\n const values = Array.isArray(value) ? value : [value]\n\n const updateSet: ObjectLiteral = {}\n relation.inverseRelation!.joinColumns.forEach((column) => {\n updateSet[column.propertyName] = null\n })\n\n const parameters: ObjectLiteral = {}\n const conditions: string[] = []\n ofs.forEach((of, ofIndex) => {\n conditions.push(\n ...values.map((value, valueIndex) => {\n return [\n ...relation.inverseRelation!.joinColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"joinColumn_\" +\n ofIndex +\n \"_\" +\n valueIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(of)\n ? column.referencedColumn!.getEntityValue(\n of,\n )\n : of\n return `${column.propertyPath} = :${parameterName}`\n },\n ),\n ...relation.inverseRelation!.entityMetadata.primaryColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"primaryColumn_\" +\n valueIndex +\n \"_\" +\n valueIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(value)\n ? column.getEntityValue(value)\n : value\n return `${column.propertyPath} = :${parameterName}`\n },\n ),\n ].join(\" AND \")\n }),\n )\n })\n const condition = conditions\n .map((str) => \"(\" + str + \")\")\n .join(\" OR \")\n if (!condition) return\n\n await this.queryBuilder\n .createQueryBuilder()\n .update(relation.inverseEntityMetadata.target)\n .set(updateSet)\n .where(condition)\n .setParameters(parameters)\n .execute()\n } else {\n // many to many\n\n const junctionMetadata = relation.junctionEntityMetadata!\n const ofs = Array.isArray(this.expressionMap.of)\n ? this.expressionMap.of\n : [this.expressionMap.of]\n const values = Array.isArray(value) ? value : [value]\n const firstColumnValues = relation.isManyToManyOwner ? ofs : values\n const secondColumnValues = relation.isManyToManyOwner ? values : ofs\n\n const parameters: ObjectLiteral = {}\n const conditions: string[] = []\n firstColumnValues.forEach((firstColumnVal, firstColumnValIndex) => {\n conditions.push(\n ...secondColumnValues.map(\n (secondColumnVal, secondColumnValIndex) => {\n return [\n ...junctionMetadata.ownerColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"firstValue_\" +\n firstColumnValIndex +\n \"_\" +\n secondColumnValIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(firstColumnVal)\n ? column.referencedColumn!.getEntityValue(\n firstColumnVal,\n )\n : firstColumnVal\n return `${column.databaseName} = :${parameterName}`\n },\n ),\n ...junctionMetadata.inverseColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"secondValue_\" +\n firstColumnValIndex +\n \"_\" +\n secondColumnValIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(\n secondColumnVal,\n )\n ? column.referencedColumn!.getEntityValue(\n secondColumnVal,\n )\n : secondColumnVal\n return `${column.databaseName} = :${parameterName}`\n },\n ),\n ].join(\" AND \")\n },\n ),\n )\n })\n const condition = conditions\n .map((str) => \"(\" + str + \")\")\n .join(\" OR \")\n\n await this.queryBuilder\n .createQueryBuilder()\n .delete()\n .from(junctionMetadata.tableName)\n .where(condition)\n .setParameters(parameters)\n .execute()\n }\n }\n}\n"]}
|