typeorm 0.2.28 → 0.2.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +54 -49
- package/browser/cache/QueryResultCache.js +1 -1
- package/browser/cache/QueryResultCacheOptions.js +1 -1
- package/browser/common/DeepPartial.js +1 -1
- package/browser/common/EntityFieldsNames.d.ts +6 -0
- package/browser/common/EntityFieldsNames.js +3 -0
- package/browser/common/EntityFieldsNames.js.map +1 -0
- package/browser/common/EntityTarget.js +1 -1
- package/browser/common/ObjectLiteral.js +1 -1
- package/browser/common/ObjectType.js +1 -1
- package/browser/connection/BaseConnectionOptions.js +1 -1
- package/browser/connection/Connection.d.ts +2 -2
- package/browser/connection/Connection.js +4 -2
- package/browser/connection/Connection.js.map +1 -1
- package/browser/connection/ConnectionMetadataBuilder.js +5 -5
- package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
- package/browser/connection/ConnectionOptions.js +1 -1
- package/browser/connection/ConnectionOptionsReader.d.ts +3 -3
- package/browser/connection/ConnectionOptionsReader.js +30 -30
- package/browser/connection/ConnectionOptionsReader.js.map +1 -1
- package/browser/connection/options-reader/ConnectionOptionsEnvReader.js +1 -1
- package/browser/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
- package/browser/connection/options-reader/ConnectionOptionsYmlReader.js +1 -1
- package/browser/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
- package/browser/decorator/columns/PrimaryColumn.d.ts +9 -2
- package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
- package/browser/decorator/entity/ChildEntity.js +1 -1
- package/browser/decorator/entity/ChildEntity.js.map +1 -1
- package/browser/decorator/options/ColumnCommonOptions.js +1 -1
- package/browser/decorator/options/ColumnEmbeddedOptions.js +1 -1
- package/browser/decorator/options/ColumnEnumOptions.js +1 -1
- package/browser/decorator/options/ColumnHstoreOptions.js +1 -1
- package/browser/decorator/options/ColumnNumericOptions.js +1 -1
- package/browser/decorator/options/ColumnOptions.js +1 -1
- package/browser/decorator/options/ColumnWithLengthOptions.js +1 -1
- package/browser/decorator/options/ColumnWithWidthOptions.js +1 -1
- package/browser/decorator/options/EntityOptions.js +1 -1
- package/browser/decorator/options/IndexOptions.js +1 -1
- package/browser/decorator/options/JoinColumnOptions.js +1 -1
- package/browser/decorator/options/JoinTableMultipleColumnsOptions.js +1 -1
- package/browser/decorator/options/JoinTableOptions.js +1 -1
- package/browser/decorator/options/PrimaryGeneratedColumnNumericOptions.js +1 -1
- package/browser/decorator/options/PrimaryGeneratedColumnUUIDOptions.js +1 -1
- package/browser/decorator/options/RelationOptions.d.ts +10 -0
- package/browser/decorator/options/RelationOptions.js +1 -1
- package/browser/decorator/options/RelationOptions.js.map +1 -1
- package/browser/decorator/options/SpatialColumnOptions.js +1 -1
- package/browser/decorator/options/TransactionOptions.js +1 -1
- package/browser/decorator/options/ValueTransformer.js +1 -1
- package/browser/decorator/options/ViewColumnOptions.js +1 -1
- package/browser/decorator/options/ViewEntityOptions.js +1 -1
- package/browser/decorator/relations/ManyToOne.d.ts +6 -6
- package/browser/decorator/relations/ManyToOne.js +5 -5
- package/browser/decorator/relations/ManyToOne.js.map +1 -1
- package/browser/decorator/relations/OneToMany.d.ts +3 -2
- package/browser/decorator/relations/OneToMany.js +4 -3
- package/browser/decorator/relations/OneToMany.js.map +1 -1
- package/browser/decorator/transaction/Transaction.d.ts +1 -1
- package/browser/decorator/transaction/Transaction.js +6 -6
- package/browser/decorator/transaction/Transaction.js.map +1 -1
- package/browser/decorator/tree/Tree.d.ts +2 -1
- package/browser/decorator/tree/Tree.js +3 -2
- package/browser/decorator/tree/Tree.js.map +1 -1
- package/browser/driver/Driver.d.ts +1 -1
- package/browser/driver/Driver.js +1 -1
- package/browser/driver/Driver.js.map +1 -1
- package/browser/driver/DriverFactory.js.map +1 -1
- package/browser/driver/DriverUtils.d.ts +10 -0
- package/browser/driver/DriverUtils.js +99 -12
- package/browser/driver/DriverUtils.js.map +1 -1
- package/browser/driver/aurora-data-api/AuroraDataApiConnectionCredentialsOptions.js +1 -1
- package/browser/driver/aurora-data-api/AuroraDataApiConnectionOptions.d.ts +1 -0
- package/browser/driver/aurora-data-api/AuroraDataApiConnectionOptions.js +1 -1
- package/browser/driver/aurora-data-api/AuroraDataApiConnectionOptions.js.map +1 -1
- package/browser/driver/aurora-data-api/AuroraDataApiDriver.d.ts +3 -3
- package/browser/driver/aurora-data-api/AuroraDataApiDriver.js +15 -6
- package/browser/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
- package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.d.ts +6 -1
- package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js +72 -11
- package/browser/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
- package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.d.ts +2 -0
- package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.js +1 -1
- package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.js.map +1 -1
- package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.d.ts +10 -1
- package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js +26 -2
- package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js.map +1 -1
- package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.d.ts +2 -1
- package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +59 -11
- package/browser/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
- package/browser/driver/better-sqlite3/BetterSqlite3ConnectionOptions.js +1 -1
- package/browser/driver/cockroachdb/CockroachConnectionCredentialsOptions.js +1 -1
- package/browser/driver/cockroachdb/CockroachConnectionOptions.js +1 -1
- package/browser/driver/cockroachdb/CockroachDriver.d.ts +1 -1
- package/browser/driver/cockroachdb/CockroachDriver.js +6 -9
- package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.d.ts +4 -0
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +112 -42
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/cordova/CordovaConnectionOptions.js +1 -1
- package/browser/driver/expo/ExpoConnectionOptions.js +1 -1
- package/browser/driver/expo/ExpoQueryRunner.js +72 -14
- package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/browser/driver/mongodb/MongoConnectionOptions.d.ts +8 -0
- package/browser/driver/mongodb/MongoConnectionOptions.js +1 -1
- package/browser/driver/mongodb/MongoConnectionOptions.js.map +1 -1
- package/browser/driver/mongodb/MongoDriver.d.ts +8 -4
- package/browser/driver/mongodb/MongoDriver.js +26 -14
- package/browser/driver/mongodb/MongoDriver.js.map +1 -1
- package/browser/driver/mongodb/MongoQueryRunner.d.ts +3 -3
- package/browser/driver/mongodb/MongoQueryRunner.js.map +1 -1
- package/browser/driver/mysql/MysqlConnectionCredentialsOptions.d.ts +4 -0
- package/browser/driver/mysql/MysqlConnectionCredentialsOptions.js +1 -1
- package/browser/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
- package/browser/driver/mysql/MysqlConnectionOptions.js +1 -1
- package/browser/driver/mysql/MysqlDriver.d.ts +2 -2
- package/browser/driver/mysql/MysqlDriver.js +15 -14
- package/browser/driver/mysql/MysqlDriver.js.map +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.d.ts +4 -0
- package/browser/driver/mysql/MysqlQueryRunner.js +118 -43
- package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/browser/driver/nativescript/NativescriptConnectionOptions.js +1 -1
- package/browser/driver/oracle/OracleConnectionCredentialsOptions.js +1 -1
- package/browser/driver/oracle/OracleConnectionOptions.d.ts +4 -0
- package/browser/driver/oracle/OracleConnectionOptions.js +1 -1
- package/browser/driver/oracle/OracleConnectionOptions.js.map +1 -1
- package/browser/driver/oracle/OracleDriver.d.ts +1 -1
- package/browser/driver/oracle/OracleDriver.js +28 -3
- package/browser/driver/oracle/OracleDriver.js.map +1 -1
- package/browser/driver/oracle/OracleQueryRunner.js +53 -7
- package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/browser/driver/postgres/PostgresConnectionCredentialsOptions.js +1 -1
- package/browser/driver/postgres/PostgresConnectionOptions.d.ts +4 -0
- package/browser/driver/postgres/PostgresConnectionOptions.js +1 -1
- package/browser/driver/postgres/PostgresConnectionOptions.js.map +1 -1
- package/browser/driver/postgres/PostgresDriver.d.ts +2 -2
- package/browser/driver/postgres/PostgresDriver.js +63 -29
- package/browser/driver/postgres/PostgresDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.d.ts +9 -1
- package/browser/driver/postgres/PostgresQueryRunner.js +335 -211
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/react-native/ReactNativeConnectionOptions.js +1 -1
- package/browser/driver/react-native/ReactNativeDriver.js +1 -2
- package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
- package/browser/driver/sap/SapConnectionCredentialsOptions.js +1 -1
- package/browser/driver/sap/SapConnectionOptions.js +1 -1
- package/browser/driver/sap/SapDriver.d.ts +1 -1
- package/browser/driver/sap/SapDriver.js.map +1 -1
- package/browser/driver/sap/SapQueryRunner.js +58 -10
- package/browser/driver/sap/SapQueryRunner.js.map +1 -1
- package/browser/driver/sqlite/SqliteConnectionOptions.js +1 -1
- package/browser/driver/sqlite/SqliteQueryRunner.js +4 -0
- package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +4 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +55 -8
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqljs/SqljsConnectionOptions.js +1 -1
- package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +18 -2
- package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.js +1 -1
- package/browser/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerConnectionOptions.js +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.d.ts +2 -2
- package/browser/driver/sqlserver/SqlServerDriver.js +33 -8
- package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.d.ts +1 -0
- package/browser/driver/sqlserver/SqlServerQueryRunner.js +166 -86
- package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.d.ts +10 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js +3 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.d.ts +20 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js +3 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.d.ts +16 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js +3 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.d.ts +17 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js +3 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.d.ts +17 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js +3 -0
- package/browser/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js.map +1 -0
- package/browser/driver/sqlserver/authentication/DefaultAuthentication.d.ts +13 -0
- package/browser/driver/sqlserver/authentication/DefaultAuthentication.js +3 -0
- package/browser/driver/sqlserver/authentication/DefaultAuthentication.js.map +1 -0
- package/browser/driver/sqlserver/authentication/NtlmAuthentication.d.ts +19 -0
- package/browser/driver/sqlserver/authentication/NtlmAuthentication.js +3 -0
- package/browser/driver/sqlserver/authentication/NtlmAuthentication.js.map +1 -0
- package/browser/driver/types/ColumnTypes.d.ts +1 -1
- package/browser/driver/types/ColumnTypes.js +1 -1
- package/browser/driver/types/ColumnTypes.js.map +1 -1
- package/browser/driver/types/DataTypeDefaults.js +1 -1
- package/browser/driver/types/DatabaseType.js +1 -1
- package/browser/driver/types/IsolationLevel.js +1 -1
- package/browser/driver/types/MappedColumnTypes.js +1 -1
- package/browser/driver/types/ReplicationMode.js +1 -1
- package/browser/entity-manager/EntityManager.d.ts +16 -2
- package/browser/entity-manager/EntityManager.js +5 -16
- package/browser/entity-manager/EntityManager.js.map +1 -1
- package/browser/entity-manager/MongoEntityManager.d.ts +1 -4
- package/browser/entity-manager/MongoEntityManager.js +53 -48
- package/browser/entity-manager/MongoEntityManager.js.map +1 -1
- package/browser/entity-schema/EntitySchemaCheckOptions.js +1 -1
- package/browser/entity-schema/EntitySchemaColumnOptions.js +1 -1
- package/browser/entity-schema/EntitySchemaExclusionOptions.js +1 -1
- package/browser/entity-schema/EntitySchemaIndexOptions.js +1 -1
- package/browser/entity-schema/EntitySchemaRelationOptions.js +1 -1
- package/browser/entity-schema/EntitySchemaUniqueOptions.js +1 -1
- package/browser/error/index.d.ts +61 -0
- package/browser/error/index.js +63 -0
- package/browser/error/index.js.map +1 -0
- package/browser/find-options/FindConditions.js +1 -1
- package/browser/find-options/FindManyOptions.js +1 -1
- package/browser/find-options/FindOneOptions.d.ts +10 -2
- package/browser/find-options/FindOneOptions.js +1 -1
- package/browser/find-options/FindOneOptions.js.map +1 -1
- package/browser/find-options/FindOperator.d.ts +25 -6
- package/browser/find-options/FindOperator.js +32 -6
- package/browser/find-options/FindOperator.js.map +1 -1
- package/browser/find-options/FindOperatorType.d.ts +1 -1
- package/browser/find-options/FindOperatorType.js +1 -1
- package/browser/find-options/FindOperatorType.js.map +1 -1
- package/browser/find-options/FindOptionsUtils.js +15 -2
- package/browser/find-options/FindOptionsUtils.js.map +1 -1
- package/browser/find-options/JoinOptions.d.ts +16 -4
- package/browser/find-options/JoinOptions.js +1 -1
- package/browser/find-options/JoinOptions.js.map +1 -1
- package/browser/find-options/OrderByCondition.js +1 -1
- package/browser/find-options/operator/ILike.d.ts +6 -0
- package/browser/find-options/operator/ILike.js +10 -0
- package/browser/find-options/operator/ILike.js.map +1 -0
- package/browser/find-options/operator/Raw.d.ts +14 -2
- package/browser/find-options/operator/Raw.js +5 -6
- package/browser/find-options/operator/Raw.js.map +1 -1
- package/browser/index.d.ts +3 -1
- package/browser/index.js +25 -1
- package/browser/index.js.map +1 -1
- package/browser/logger/AdvancedConsoleLogger.d.ts +2 -1
- package/browser/logger/FileLogger.d.ts +2 -2
- package/browser/logger/Logger.d.ts +1 -1
- package/browser/logger/Logger.js +1 -1
- package/browser/logger/Logger.js.map +1 -1
- package/browser/logger/LoggerOptions.js +1 -1
- package/browser/logger/SimpleConsoleLogger.d.ts +2 -1
- package/browser/metadata/ColumnMetadata.d.ts +1 -1
- package/browser/metadata/ColumnMetadata.js +23 -15
- package/browser/metadata/ColumnMetadata.js.map +1 -1
- package/browser/metadata/EmbeddedMetadata.js +2 -2
- package/browser/metadata/EmbeddedMetadata.js.map +1 -1
- package/browser/metadata/EntityMetadata.d.ts +5 -0
- package/browser/metadata/EntityMetadata.js +3 -2
- package/browser/metadata/EntityMetadata.js.map +1 -1
- package/browser/metadata/RelationMetadata.d.ts +15 -0
- package/browser/metadata/RelationMetadata.js +23 -7
- package/browser/metadata/RelationMetadata.js.map +1 -1
- package/browser/metadata/types/ClosureTreeOptions.d.ts +10 -0
- package/browser/metadata/types/ClosureTreeOptions.js +3 -0
- package/browser/metadata/types/ClosureTreeOptions.js.map +1 -0
- package/browser/metadata/types/DeferrableType.js +1 -1
- package/browser/metadata/types/EventListenerTypes.d.ts +7 -7
- package/browser/metadata/types/EventListenerTypes.js.map +1 -1
- package/browser/metadata/types/OnDeleteType.js +1 -1
- package/browser/metadata/types/OnUpdateType.js +1 -1
- package/browser/metadata/types/PropertyTypeInFunction.js +1 -1
- package/browser/metadata/types/RelationTypeInFunction.js +1 -1
- package/browser/metadata/types/RelationTypes.js +1 -1
- package/browser/metadata/types/TableTypes.js +1 -1
- package/browser/metadata/types/TreeTypes.js +1 -1
- package/browser/metadata-args/CheckMetadataArgs.js +1 -1
- package/browser/metadata-args/ColumnMetadataArgs.js +1 -1
- package/browser/metadata-args/DiscriminatorValueMetadataArgs.js +1 -1
- package/browser/metadata-args/EmbeddedMetadataArgs.js +1 -1
- package/browser/metadata-args/EntityListenerMetadataArgs.js +1 -1
- package/browser/metadata-args/EntityRepositoryMetadataArgs.js +1 -1
- package/browser/metadata-args/EntitySubscriberMetadataArgs.js +1 -1
- package/browser/metadata-args/ExclusionMetadataArgs.js +1 -1
- package/browser/metadata-args/GeneratedMetadataArgs.js +1 -1
- package/browser/metadata-args/IndexMetadataArgs.js +1 -1
- package/browser/metadata-args/InheritanceMetadataArgs.js +1 -1
- package/browser/metadata-args/JoinColumnMetadataArgs.js +1 -1
- package/browser/metadata-args/JoinTableMetadataArgs.js +1 -1
- package/browser/metadata-args/NamingStrategyMetadataArgs.js +1 -1
- package/browser/metadata-args/RelationCountMetadataArgs.js +1 -1
- package/browser/metadata-args/RelationIdMetadataArgs.js +1 -1
- package/browser/metadata-args/RelationMetadataArgs.js +1 -1
- package/browser/metadata-args/TableMetadataArgs.js +1 -1
- package/browser/metadata-args/TransactionEntityMetadataArgs.js +1 -1
- package/browser/metadata-args/TransactionRepositoryMetadataArgs.js +1 -1
- package/browser/metadata-args/TreeMetadataArgs.d.ts +5 -0
- package/browser/metadata-args/TreeMetadataArgs.js +1 -1
- package/browser/metadata-args/TreeMetadataArgs.js.map +1 -1
- package/browser/metadata-args/UniqueMetadataArgs.js +1 -1
- package/browser/metadata-args/types/ColumnMode.js +1 -1
- package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +5 -3
- package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataBuilder.js +26 -16
- package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataValidator.js +10 -5
- package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +8 -4
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/RelationJoinColumnBuilder.d.ts +1 -0
- package/browser/metadata-builder/RelationJoinColumnBuilder.js +8 -6
- package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/browser/migration/MigrationExecutor.js +5 -5
- package/browser/migration/MigrationInterface.js +1 -1
- package/browser/naming-strategy/DefaultNamingStrategy.d.ts +1 -1
- package/browser/naming-strategy/DefaultNamingStrategy.js +9 -8
- package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
- package/browser/naming-strategy/NamingStrategyInterface.d.ts +6 -1
- package/browser/naming-strategy/NamingStrategyInterface.js +1 -1
- package/browser/naming-strategy/NamingStrategyInterface.js.map +1 -1
- package/browser/persistence/EntityPersistExecutor.js +55 -52
- package/browser/persistence/EntityPersistExecutor.js.map +1 -1
- package/browser/persistence/Subject.d.ts +4 -4
- package/browser/persistence/Subject.js +8 -7
- package/browser/persistence/Subject.js.map +1 -1
- package/browser/persistence/SubjectChangeMap.js +1 -1
- package/browser/persistence/SubjectChangedColumnsComputer.js +3 -1
- package/browser/persistence/SubjectChangedColumnsComputer.js.map +1 -1
- package/browser/persistence/SubjectDatabaseEntityLoader.js +2 -2
- package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/browser/persistence/SubjectExecutor.js +30 -26
- package/browser/persistence/SubjectExecutor.js.map +1 -1
- package/browser/persistence/SubjectTopoligicalSorter.js +6 -6
- package/browser/persistence/SubjectTopoligicalSorter.js.map +1 -1
- package/browser/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
- package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js +2 -0
- package/browser/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
- package/browser/persistence/subject-builder/OneToManySubjectBuilder.js +9 -4
- package/browser/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
- package/browser/persistence/tree/ClosureSubjectExecutor.d.ts +1 -1
- package/browser/persistence/tree/ClosureSubjectExecutor.js +7 -7
- package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
- package/browser/query-builder/Alias.d.ts +4 -3
- package/browser/query-builder/Alias.js +3 -3
- package/browser/query-builder/DeleteQueryBuilder.js +7 -2
- package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
- package/browser/query-builder/InsertQueryBuilder.d.ts +6 -0
- package/browser/query-builder/InsertQueryBuilder.js +63 -14
- package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
- package/browser/query-builder/JoinAttribute.d.ts +10 -10
- package/browser/query-builder/JoinAttribute.js +10 -10
- package/browser/query-builder/JoinOptions.js +1 -1
- package/browser/query-builder/QueryBuilder.d.ts +8 -1
- package/browser/query-builder/QueryBuilder.js +172 -37
- package/browser/query-builder/QueryBuilder.js.map +1 -1
- package/browser/query-builder/QueryBuilderUtils.js.map +1 -1
- package/browser/query-builder/QueryExpressionMap.d.ts +10 -2
- package/browser/query-builder/QueryExpressionMap.js +4 -2
- package/browser/query-builder/QueryExpressionMap.js.map +1 -1
- package/browser/query-builder/QueryPartialEntity.js +1 -1
- package/browser/query-builder/RelationLoader.js +4 -4
- package/browser/query-builder/RelationLoader.js.map +1 -1
- package/browser/query-builder/RelationQueryBuilder.js +1 -1
- package/browser/query-builder/RelationQueryBuilder.js.map +1 -1
- package/browser/query-builder/RelationRemover.js +11 -11
- package/browser/query-builder/RelationRemover.js.map +1 -1
- package/browser/query-builder/SelectQuery.js +1 -1
- package/browser/query-builder/SelectQueryBuilder.d.ts +7 -6
- package/browser/query-builder/SelectQueryBuilder.js +129 -67
- package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
- package/browser/query-builder/SelectQueryBuilderOption.js +1 -1
- package/browser/query-builder/UpdateQueryBuilder.js +6 -1
- package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/browser/query-builder/WhereExpression.js +1 -1
- package/browser/query-builder/relation-count/RelationCountAttribute.d.ts +7 -7
- package/browser/query-builder/relation-count/RelationCountAttribute.js +7 -7
- package/browser/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
- package/browser/query-builder/relation-count/RelationCountLoadResult.js +1 -1
- package/browser/query-builder/relation-count/RelationCountLoader.js +2 -1
- package/browser/query-builder/relation-count/RelationCountLoader.js.map +1 -1
- package/browser/query-builder/relation-id/RelationIdAttribute.d.ts +8 -8
- package/browser/query-builder/relation-id/RelationIdAttribute.js +8 -8
- package/browser/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
- package/browser/query-builder/relation-id/RelationIdLoadResult.js +1 -1
- package/browser/query-builder/relation-id/RelationIdLoader.js +62 -12
- package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
- package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +3 -3
- package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +10 -7
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
- package/browser/query-runner/BaseQueryRunner.js +3 -3
- package/browser/query-runner/BaseQueryRunner.js.map +1 -1
- package/browser/query-runner/QueryRunner.d.ts +1 -1
- package/browser/query-runner/QueryRunner.js +1 -1
- package/browser/query-runner/QueryRunner.js.map +1 -1
- package/browser/repository/AbstractRepository.d.ts +2 -2
- package/browser/repository/AbstractRepository.js +2 -2
- package/browser/repository/BaseEntity.d.ts +1 -1
- package/browser/repository/BaseEntity.js +3 -3
- package/browser/repository/BaseEntity.js.map +1 -1
- package/browser/repository/EntityId.js +1 -1
- package/browser/repository/RemoveOptions.js +1 -1
- package/browser/repository/Repository.d.ts +4 -4
- package/browser/repository/Repository.js +3 -3
- package/browser/repository/Repository.js.map +1 -1
- package/browser/repository/SaveOptions.js +1 -1
- package/browser/repository/TreeRepository.js +3 -3
- package/browser/repository/TreeRepository.js.map +1 -1
- package/browser/schema-builder/RdbmsSchemaBuilder.d.ts +2 -2
- package/browser/schema-builder/RdbmsSchemaBuilder.js +80 -79
- package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/browser/schema-builder/SchemaBuilder.js +1 -1
- package/browser/schema-builder/options/TableCheckOptions.js +1 -1
- package/browser/schema-builder/options/TableColumnOptions.js +1 -1
- package/browser/schema-builder/options/TableExclusionOptions.js +1 -1
- package/browser/schema-builder/options/TableForeignKeyOptions.js +1 -1
- package/browser/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
- package/browser/schema-builder/options/TableIndexOptions.js +1 -1
- package/browser/schema-builder/options/TableOptions.js +1 -1
- package/browser/schema-builder/options/TableUniqueOptions.js +1 -1
- package/browser/schema-builder/options/ViewOptions.js +1 -1
- package/browser/schema-builder/table/Table.d.ts +1 -1
- package/browser/schema-builder/table/Table.js +1 -1
- package/browser/schema-builder/table/TableCheck.js +2 -2
- package/browser/schema-builder/table/TableCheck.js.map +1 -1
- package/browser/schema-builder/table/TableForeignKey.js +3 -3
- package/browser/schema-builder/table/TableForeignKey.js.map +1 -1
- package/browser/schema-builder/table/TableIndex.js +2 -2
- package/browser/schema-builder/table/TableIndex.js.map +1 -1
- package/browser/schema-builder/table/TableUnique.js +2 -2
- package/browser/schema-builder/table/TableUnique.js.map +1 -1
- package/browser/subscriber/Broadcaster.d.ts +24 -0
- package/browser/subscriber/Broadcaster.js +120 -0
- package/browser/subscriber/Broadcaster.js.map +1 -1
- package/browser/subscriber/EntitySubscriberInterface.d.ts +27 -0
- package/browser/subscriber/EntitySubscriberInterface.js +1 -1
- package/browser/subscriber/EntitySubscriberInterface.js.map +1 -1
- package/browser/subscriber/event/InsertEvent.js +1 -1
- package/browser/subscriber/event/LoadEvent.js +1 -1
- package/browser/subscriber/event/RemoveEvent.js +1 -1
- package/browser/subscriber/event/TransactionCommitEvent.d.ts +22 -0
- package/browser/subscriber/event/TransactionCommitEvent.js +3 -0
- package/browser/subscriber/event/TransactionCommitEvent.js.map +1 -0
- package/browser/subscriber/event/TransactionRollbackEvent.d.ts +22 -0
- package/browser/subscriber/event/TransactionRollbackEvent.js +3 -0
- package/browser/subscriber/event/TransactionRollbackEvent.js.map +1 -0
- package/browser/subscriber/event/TransactionStartEvent.d.ts +22 -0
- package/browser/subscriber/event/TransactionStartEvent.js +3 -0
- package/browser/subscriber/event/TransactionStartEvent.js.map +1 -0
- package/browser/subscriber/event/UpdateEvent.js +1 -1
- package/browser/util/DateUtils.d.ts +1 -1
- package/browser/util/DateUtils.js +1 -7
- package/browser/util/DateUtils.js.map +1 -1
- package/browser/util/OrmUtils.d.ts +1 -1
- package/browser/util/OrmUtils.js +2 -2
- package/browser/util/OrmUtils.js.map +1 -1
- package/browser/util/StringUtils.js.map +1 -1
- package/cache/DbQueryResultCache.js +1 -0
- package/cache/DbQueryResultCache.js.map +1 -1
- package/cache/QueryResultCacheFactory.js +1 -0
- package/cache/QueryResultCacheFactory.js.map +1 -1
- package/cache/RedisQueryResultCache.js +1 -0
- package/cache/RedisQueryResultCache.js.map +1 -1
- package/cli.js +2 -2
- package/cli.js.map +1 -1
- package/commands/CacheClearCommand.js +1 -0
- package/commands/CacheClearCommand.js.map +1 -1
- package/commands/CommandUtils.js +1 -0
- package/commands/CommandUtils.js.map +1 -1
- package/commands/EntityCreateCommand.js +6 -2
- package/commands/EntityCreateCommand.js.map +1 -1
- package/commands/InitCommand.d.ts +3 -0
- package/commands/InitCommand.js +37 -6
- package/commands/InitCommand.js.map +1 -1
- package/commands/MigrationCreateCommand.d.ts +6 -0
- package/commands/MigrationCreateCommand.js +23 -4
- package/commands/MigrationCreateCommand.js.map +1 -1
- package/commands/MigrationGenerateCommand.d.ts +10 -0
- package/commands/MigrationGenerateCommand.js +72 -34
- package/commands/MigrationGenerateCommand.js.map +1 -1
- package/commands/MigrationRevertCommand.js +1 -0
- package/commands/MigrationRevertCommand.js.map +1 -1
- package/commands/MigrationRunCommand.js +1 -0
- package/commands/MigrationRunCommand.js.map +1 -1
- package/commands/MigrationShowCommand.js +1 -0
- package/commands/MigrationShowCommand.js.map +1 -1
- package/commands/QueryCommand.d.ts +2 -0
- package/commands/QueryCommand.js +17 -6
- package/commands/QueryCommand.js.map +1 -1
- package/commands/SchemaDropCommand.js +1 -0
- package/commands/SchemaDropCommand.js.map +1 -1
- package/commands/SchemaLogCommand.js +1 -0
- package/commands/SchemaLogCommand.js.map +1 -1
- package/commands/SchemaSyncCommand.js +1 -0
- package/commands/SchemaSyncCommand.js.map +1 -1
- package/commands/SubscriberCreateCommand.js +6 -2
- package/commands/SubscriberCreateCommand.js.map +1 -1
- package/commands/VersionCommand.js +1 -0
- package/commands/VersionCommand.js.map +1 -1
- package/common/EntityFieldsNames.d.ts +6 -0
- package/common/EntityFieldsNames.js +4 -0
- package/common/EntityFieldsNames.js.map +1 -0
- package/connection/Connection.d.ts +2 -2
- package/connection/Connection.js +5 -2
- package/connection/Connection.js.map +1 -1
- package/connection/ConnectionManager.js +1 -0
- package/connection/ConnectionManager.js.map +1 -1
- package/connection/ConnectionMetadataBuilder.js +5 -4
- package/connection/ConnectionMetadataBuilder.js.map +1 -1
- package/connection/ConnectionOptionsReader.d.ts +3 -3
- package/connection/ConnectionOptionsReader.js +31 -30
- package/connection/ConnectionOptionsReader.js.map +1 -1
- package/connection/options-reader/ConnectionOptionsEnvReader.js +2 -1
- package/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
- package/connection/options-reader/ConnectionOptionsXmlReader.js +1 -0
- package/connection/options-reader/ConnectionOptionsXmlReader.js.map +1 -1
- package/connection/options-reader/ConnectionOptionsYmlReader.js +2 -1
- package/connection/options-reader/ConnectionOptionsYmlReader.js.map +1 -1
- package/container.js +1 -0
- package/container.js.map +1 -1
- package/decorator/Check.js +1 -0
- package/decorator/Check.js.map +1 -1
- package/decorator/EntityRepository.js +1 -0
- package/decorator/EntityRepository.js.map +1 -1
- package/decorator/Exclusion.js +1 -0
- package/decorator/Exclusion.js.map +1 -1
- package/decorator/Generated.js +1 -0
- package/decorator/Generated.js.map +1 -1
- package/decorator/Index.js +1 -0
- package/decorator/Index.js.map +1 -1
- package/decorator/Unique.js +1 -0
- package/decorator/Unique.js.map +1 -1
- package/decorator/columns/Column.js +1 -0
- package/decorator/columns/Column.js.map +1 -1
- package/decorator/columns/CreateDateColumn.js +1 -0
- package/decorator/columns/CreateDateColumn.js.map +1 -1
- package/decorator/columns/DeleteDateColumn.js +1 -0
- package/decorator/columns/DeleteDateColumn.js.map +1 -1
- package/decorator/columns/ObjectIdColumn.js +1 -0
- package/decorator/columns/ObjectIdColumn.js.map +1 -1
- package/decorator/columns/PrimaryColumn.d.ts +9 -2
- package/decorator/columns/PrimaryColumn.js +1 -0
- package/decorator/columns/PrimaryColumn.js.map +1 -1
- package/decorator/columns/PrimaryGeneratedColumn.js +1 -0
- package/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
- package/decorator/columns/UpdateDateColumn.js +1 -0
- package/decorator/columns/UpdateDateColumn.js.map +1 -1
- package/decorator/columns/VersionColumn.js +1 -0
- package/decorator/columns/VersionColumn.js.map +1 -1
- package/decorator/columns/ViewColumn.js +1 -0
- package/decorator/columns/ViewColumn.js.map +1 -1
- package/decorator/entity/ChildEntity.js +2 -1
- package/decorator/entity/ChildEntity.js.map +1 -1
- package/decorator/entity/Entity.js +1 -0
- package/decorator/entity/Entity.js.map +1 -1
- package/decorator/entity/TableInheritance.js +1 -0
- package/decorator/entity/TableInheritance.js.map +1 -1
- package/decorator/entity-view/ViewEntity.js +1 -0
- package/decorator/entity-view/ViewEntity.js.map +1 -1
- package/decorator/listeners/AfterInsert.js +1 -0
- package/decorator/listeners/AfterInsert.js.map +1 -1
- package/decorator/listeners/AfterLoad.js +1 -0
- package/decorator/listeners/AfterLoad.js.map +1 -1
- package/decorator/listeners/AfterRemove.js +1 -0
- package/decorator/listeners/AfterRemove.js.map +1 -1
- package/decorator/listeners/AfterUpdate.js +1 -0
- package/decorator/listeners/AfterUpdate.js.map +1 -1
- package/decorator/listeners/BeforeInsert.js +1 -0
- package/decorator/listeners/BeforeInsert.js.map +1 -1
- package/decorator/listeners/BeforeRemove.js +1 -0
- package/decorator/listeners/BeforeRemove.js.map +1 -1
- package/decorator/listeners/BeforeUpdate.js +1 -0
- package/decorator/listeners/BeforeUpdate.js.map +1 -1
- package/decorator/listeners/EventSubscriber.js +1 -0
- package/decorator/listeners/EventSubscriber.js.map +1 -1
- package/decorator/options/RelationOptions.d.ts +10 -0
- package/decorator/options/RelationOptions.js.map +1 -1
- package/decorator/relations/JoinColumn.js +1 -0
- package/decorator/relations/JoinColumn.js.map +1 -1
- package/decorator/relations/JoinTable.js +1 -0
- package/decorator/relations/JoinTable.js.map +1 -1
- package/decorator/relations/ManyToMany.js +1 -0
- package/decorator/relations/ManyToMany.js.map +1 -1
- package/decorator/relations/ManyToOne.d.ts +6 -6
- package/decorator/relations/ManyToOne.js +6 -5
- package/decorator/relations/ManyToOne.js.map +1 -1
- package/decorator/relations/OneToMany.d.ts +3 -2
- package/decorator/relations/OneToMany.js +5 -3
- package/decorator/relations/OneToMany.js.map +1 -1
- package/decorator/relations/OneToOne.js +1 -0
- package/decorator/relations/OneToOne.js.map +1 -1
- package/decorator/relations/RelationCount.js +1 -0
- package/decorator/relations/RelationCount.js.map +1 -1
- package/decorator/relations/RelationId.js +1 -0
- package/decorator/relations/RelationId.js.map +1 -1
- package/decorator/transaction/Transaction.d.ts +1 -1
- package/decorator/transaction/Transaction.js +6 -5
- package/decorator/transaction/Transaction.js.map +1 -1
- package/decorator/transaction/TransactionManager.js +1 -0
- package/decorator/transaction/TransactionManager.js.map +1 -1
- package/decorator/transaction/TransactionRepository.js +1 -0
- package/decorator/transaction/TransactionRepository.js.map +1 -1
- package/decorator/tree/Tree.d.ts +2 -1
- package/decorator/tree/Tree.js +4 -2
- package/decorator/tree/Tree.js.map +1 -1
- package/decorator/tree/TreeChildren.js +1 -0
- package/decorator/tree/TreeChildren.js.map +1 -1
- package/decorator/tree/TreeLevelColumn.js +1 -0
- package/decorator/tree/TreeLevelColumn.js.map +1 -1
- package/decorator/tree/TreeParent.js +1 -0
- package/decorator/tree/TreeParent.js.map +1 -1
- package/driver/Driver.d.ts +1 -1
- package/driver/Driver.js.map +1 -1
- package/driver/DriverFactory.js +1 -0
- package/driver/DriverFactory.js.map +1 -1
- package/driver/DriverUtils.d.ts +10 -0
- package/driver/DriverUtils.js +99 -11
- package/driver/DriverUtils.js.map +1 -1
- package/driver/Query.js +1 -0
- package/driver/Query.js.map +1 -1
- package/driver/SqlInMemory.js +1 -0
- package/driver/SqlInMemory.js.map +1 -1
- package/driver/aurora-data-api/AuroraDataApiConnection.js +1 -0
- package/driver/aurora-data-api/AuroraDataApiConnection.js.map +1 -1
- package/driver/aurora-data-api/AuroraDataApiConnectionOptions.d.ts +1 -0
- package/driver/aurora-data-api/AuroraDataApiConnectionOptions.js.map +1 -1
- package/driver/aurora-data-api/AuroraDataApiDriver.d.ts +3 -3
- package/driver/aurora-data-api/AuroraDataApiDriver.js +16 -6
- package/driver/aurora-data-api/AuroraDataApiDriver.js.map +1 -1
- package/driver/aurora-data-api/AuroraDataApiQueryRunner.d.ts +6 -1
- package/driver/aurora-data-api/AuroraDataApiQueryRunner.js +73 -11
- package/driver/aurora-data-api/AuroraDataApiQueryRunner.js.map +1 -1
- package/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.d.ts +2 -0
- package/driver/aurora-data-api-pg/AuroraDataApiPostgresConnectionOptions.js.map +1 -1
- package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.d.ts +10 -1
- package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js +27 -2
- package/driver/aurora-data-api-pg/AuroraDataApiPostgresDriver.js.map +1 -1
- package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.d.ts +2 -1
- package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js +60 -11
- package/driver/aurora-data-api-pg/AuroraDataApiPostgresQueryRunner.js.map +1 -1
- package/driver/better-sqlite3/BetterSqlite3Driver.js +1 -0
- package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.js +1 -0
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
- package/driver/cockroachdb/CockroachDriver.d.ts +1 -1
- package/driver/cockroachdb/CockroachDriver.js +6 -8
- package/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.d.ts +4 -0
- package/driver/cockroachdb/CockroachQueryRunner.js +113 -42
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/cordova/CordovaDriver.js +1 -0
- package/driver/cordova/CordovaDriver.js.map +1 -1
- package/driver/cordova/CordovaQueryRunner.js +1 -0
- package/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/driver/expo/ExpoDriver.js +1 -0
- package/driver/expo/ExpoDriver.js.map +1 -1
- package/driver/expo/ExpoQueryRunner.js +73 -14
- package/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/driver/mongodb/MongoConnectionOptions.d.ts +8 -0
- package/driver/mongodb/MongoConnectionOptions.js.map +1 -1
- package/driver/mongodb/MongoDriver.d.ts +8 -4
- package/driver/mongodb/MongoDriver.js +27 -14
- package/driver/mongodb/MongoDriver.js.map +1 -1
- package/driver/mongodb/MongoQueryRunner.d.ts +3 -3
- package/driver/mongodb/MongoQueryRunner.js +1 -0
- package/driver/mongodb/MongoQueryRunner.js.map +1 -1
- package/driver/mysql/MysqlConnectionCredentialsOptions.d.ts +4 -0
- package/driver/mysql/MysqlConnectionCredentialsOptions.js.map +1 -1
- package/driver/mysql/MysqlDriver.d.ts +2 -2
- package/driver/mysql/MysqlDriver.js +16 -14
- package/driver/mysql/MysqlDriver.js.map +1 -1
- package/driver/mysql/MysqlQueryRunner.d.ts +4 -0
- package/driver/mysql/MysqlQueryRunner.js +119 -43
- package/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/driver/nativescript/NativescriptDriver.js +1 -0
- package/driver/nativescript/NativescriptDriver.js.map +1 -1
- package/driver/nativescript/NativescriptQueryRunner.js +1 -0
- package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/driver/oracle/OracleConnectionOptions.d.ts +4 -0
- package/driver/oracle/OracleConnectionOptions.js.map +1 -1
- package/driver/oracle/OracleDriver.d.ts +1 -1
- package/driver/oracle/OracleDriver.js +29 -3
- package/driver/oracle/OracleDriver.js.map +1 -1
- package/driver/oracle/OracleQueryRunner.js +54 -7
- package/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/driver/postgres/PostgresConnectionOptions.d.ts +4 -0
- package/driver/postgres/PostgresConnectionOptions.js.map +1 -1
- package/driver/postgres/PostgresDriver.d.ts +2 -2
- package/driver/postgres/PostgresDriver.js +63 -28
- package/driver/postgres/PostgresDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.d.ts +9 -1
- package/driver/postgres/PostgresQueryRunner.js +337 -211
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/react-native/ReactNativeDriver.js +2 -2
- package/driver/react-native/ReactNativeDriver.js.map +1 -1
- package/driver/react-native/ReactNativeQueryRunner.js +1 -0
- package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/driver/sap/SapDriver.d.ts +1 -1
- package/driver/sap/SapDriver.js +1 -0
- package/driver/sap/SapDriver.js.map +1 -1
- package/driver/sap/SapQueryRunner.js +58 -9
- package/driver/sap/SapQueryRunner.js.map +1 -1
- package/driver/sqlite/SqliteDriver.js +1 -0
- package/driver/sqlite/SqliteDriver.js.map +1 -1
- package/driver/sqlite/SqliteQueryRunner.js +5 -0
- package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.d.ts +1 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.js +5 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +56 -8
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/driver/sqljs/SqljsDriver.js +1 -0
- package/driver/sqljs/SqljsDriver.js.map +1 -1
- package/driver/sqljs/SqljsQueryRunner.js +1 -0
- package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
- package/driver/sqlserver/MssqlParameter.js +1 -0
- package/driver/sqlserver/MssqlParameter.js.map +1 -1
- package/driver/sqlserver/SqlServerConnectionCredentialsOptions.d.ts +18 -2
- package/driver/sqlserver/SqlServerConnectionCredentialsOptions.js.map +1 -1
- package/driver/sqlserver/SqlServerDriver.d.ts +2 -2
- package/driver/sqlserver/SqlServerDriver.js +34 -8
- package/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/driver/sqlserver/SqlServerQueryRunner.d.ts +1 -0
- package/driver/sqlserver/SqlServerQueryRunner.js +166 -85
- package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.d.ts +10 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js +4 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryAccessTokenAuthentication.js.map +1 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.d.ts +20 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js +4 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiAppServiceAuthentication.js.map +1 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.d.ts +16 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js +4 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryMsiVmAuthentication.js.map +1 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.d.ts +17 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js +4 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryPasswordAuthentication.js.map +1 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.d.ts +17 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js +4 -0
- package/driver/sqlserver/authentication/AzureActiveDirectoryServicePrincipalSecret.js.map +1 -0
- package/driver/sqlserver/authentication/DefaultAuthentication.d.ts +13 -0
- package/driver/sqlserver/authentication/DefaultAuthentication.js +4 -0
- package/driver/sqlserver/authentication/DefaultAuthentication.js.map +1 -0
- package/driver/sqlserver/authentication/NtlmAuthentication.d.ts +19 -0
- package/driver/sqlserver/authentication/NtlmAuthentication.js +4 -0
- package/driver/sqlserver/authentication/NtlmAuthentication.js.map +1 -0
- package/driver/types/ColumnTypes.d.ts +1 -1
- package/driver/types/ColumnTypes.js.map +1 -1
- package/entity-manager/EntityManager.d.ts +16 -2
- package/entity-manager/EntityManager.js +6 -16
- package/entity-manager/EntityManager.js.map +1 -1
- package/entity-manager/EntityManagerFactory.js +1 -0
- package/entity-manager/EntityManagerFactory.js.map +1 -1
- package/entity-manager/MongoEntityManager.d.ts +1 -4
- package/entity-manager/MongoEntityManager.js +54 -48
- package/entity-manager/MongoEntityManager.js.map +1 -1
- package/entity-manager/SqljsEntityManager.js +1 -0
- package/entity-manager/SqljsEntityManager.js.map +1 -1
- package/entity-schema/EntitySchema.js +1 -0
- package/entity-schema/EntitySchema.js.map +1 -1
- package/entity-schema/EntitySchemaOptions.js +1 -0
- package/entity-schema/EntitySchemaOptions.js.map +1 -1
- package/entity-schema/EntitySchemaTransformer.js +1 -0
- package/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/error/AlreadyHasActiveConnectionError.js +1 -0
- package/error/AlreadyHasActiveConnectionError.js.map +1 -1
- package/error/CannotAttachTreeChildrenEntityError.js +1 -0
- package/error/CannotAttachTreeChildrenEntityError.js.map +1 -1
- package/error/CannotConnectAlreadyConnectedError.js +1 -0
- package/error/CannotConnectAlreadyConnectedError.js.map +1 -1
- package/error/CannotCreateEntityIdMapError.js +1 -0
- package/error/CannotCreateEntityIdMapError.js.map +1 -1
- package/error/CannotDetermineEntityError.js +1 -0
- package/error/CannotDetermineEntityError.js.map +1 -1
- package/error/CannotExecuteNotConnectedError.js +1 -0
- package/error/CannotExecuteNotConnectedError.js.map +1 -1
- package/error/CannotGetEntityManagerNotConnectedError.js +1 -0
- package/error/CannotGetEntityManagerNotConnectedError.js.map +1 -1
- package/error/CannotReflectMethodParameterTypeError.js +1 -0
- package/error/CannotReflectMethodParameterTypeError.js.map +1 -1
- package/error/CircularRelationsError.js +1 -0
- package/error/CircularRelationsError.js.map +1 -1
- package/error/ColumnTypeUndefinedError.js +1 -0
- package/error/ColumnTypeUndefinedError.js.map +1 -1
- package/error/ConnectionIsNotSetError.js +1 -0
- package/error/ConnectionIsNotSetError.js.map +1 -1
- package/error/ConnectionNotFoundError.js +1 -0
- package/error/ConnectionNotFoundError.js.map +1 -1
- package/error/CustomRepositoryCannotInheritRepositoryError.js +1 -0
- package/error/CustomRepositoryCannotInheritRepositoryError.js.map +1 -1
- package/error/CustomRepositoryDoesNotHaveEntityError.js +1 -0
- package/error/CustomRepositoryDoesNotHaveEntityError.js.map +1 -1
- package/error/CustomRepositoryNotFoundError.js +1 -0
- package/error/CustomRepositoryNotFoundError.js.map +1 -1
- package/error/DataTypeNotSupportedError.js +1 -0
- package/error/DataTypeNotSupportedError.js.map +1 -1
- package/error/DriverOptionNotSetError.js +1 -0
- package/error/DriverOptionNotSetError.js.map +1 -1
- package/error/DriverPackageNotInstalledError.js +1 -0
- package/error/DriverPackageNotInstalledError.js.map +1 -1
- package/error/EntityColumnNotFound.js +1 -0
- package/error/EntityColumnNotFound.js.map +1 -1
- package/error/EntityMetadataNotFoundError.js +1 -0
- package/error/EntityMetadataNotFoundError.js.map +1 -1
- package/error/EntityNotFoundError.js +1 -0
- package/error/EntityNotFoundError.js.map +1 -1
- package/error/FindRelationsNotFoundError.js +1 -0
- package/error/FindRelationsNotFoundError.js.map +1 -1
- package/error/InitializedRelationError.js +1 -0
- package/error/InitializedRelationError.js.map +1 -1
- package/error/InsertValuesMissingError.js +1 -0
- package/error/InsertValuesMissingError.js.map +1 -1
- package/error/LimitOnUpdateNotSupportedError.js +1 -0
- package/error/LimitOnUpdateNotSupportedError.js.map +1 -1
- package/error/LockNotSupportedOnGivenDriverError.js +1 -0
- package/error/LockNotSupportedOnGivenDriverError.js.map +1 -1
- package/error/MetadataAlreadyExistsError.js +1 -0
- package/error/MetadataAlreadyExistsError.js.map +1 -1
- package/error/MetadataWithSuchNameAlreadyExistsError.js +1 -0
- package/error/MetadataWithSuchNameAlreadyExistsError.js.map +1 -1
- package/error/MissingDeleteDateColumnError.js +1 -0
- package/error/MissingDeleteDateColumnError.js.map +1 -1
- package/error/MissingDriverError.js +1 -0
- package/error/MissingDriverError.js.map +1 -1
- package/error/MissingJoinColumnError.js +1 -0
- package/error/MissingJoinColumnError.js.map +1 -1
- package/error/MissingJoinTableError.js +1 -0
- package/error/MissingJoinTableError.js.map +1 -1
- package/error/MissingPrimaryColumnError.js +1 -0
- package/error/MissingPrimaryColumnError.js.map +1 -1
- package/error/MustBeEntityError.js +1 -0
- package/error/MustBeEntityError.js.map +1 -1
- package/error/NamingStrategyNotFoundError.js +1 -0
- package/error/NamingStrategyNotFoundError.js.map +1 -1
- package/error/NoConnectionForRepositoryError.js +1 -0
- package/error/NoConnectionForRepositoryError.js.map +1 -1
- package/error/NoConnectionOptionError.js +1 -0
- package/error/NoConnectionOptionError.js.map +1 -1
- package/error/NoNeedToReleaseEntityManagerError.js +1 -0
- package/error/NoNeedToReleaseEntityManagerError.js.map +1 -1
- package/error/NoVersionOrUpdateDateColumnError.js +1 -0
- package/error/NoVersionOrUpdateDateColumnError.js.map +1 -1
- package/error/OffsetWithoutLimitNotSupportedError.js +1 -0
- package/error/OffsetWithoutLimitNotSupportedError.js.map +1 -1
- package/error/OptimisticLockCanNotBeUsedError.js +1 -0
- package/error/OptimisticLockCanNotBeUsedError.js.map +1 -1
- package/error/OptimisticLockVersionMismatchError.js +1 -0
- package/error/OptimisticLockVersionMismatchError.js.map +1 -1
- package/error/PersistedEntityNotFoundError.js +1 -0
- package/error/PersistedEntityNotFoundError.js.map +1 -1
- package/error/PessimisticLockTransactionRequiredError.js +1 -0
- package/error/PessimisticLockTransactionRequiredError.js.map +1 -1
- package/error/PrimaryColumnCannotBeNullableError.js +1 -0
- package/error/PrimaryColumnCannotBeNullableError.js.map +1 -1
- package/error/QueryFailedError.js +1 -0
- package/error/QueryFailedError.js.map +1 -1
- package/error/QueryRunnerAlreadyReleasedError.js +1 -0
- package/error/QueryRunnerAlreadyReleasedError.js.map +1 -1
- package/error/QueryRunnerProviderAlreadyReleasedError.js +1 -0
- package/error/QueryRunnerProviderAlreadyReleasedError.js.map +1 -1
- package/error/RepositoryNotFoundError.js +1 -0
- package/error/RepositoryNotFoundError.js.map +1 -1
- package/error/RepositoryNotTreeError.js +1 -0
- package/error/RepositoryNotTreeError.js.map +1 -1
- package/error/ReturningStatementNotSupportedError.js +1 -0
- package/error/ReturningStatementNotSupportedError.js.map +1 -1
- package/error/SubjectRemovedAndUpdatedError.js +1 -0
- package/error/SubjectRemovedAndUpdatedError.js.map +1 -1
- package/error/SubjectWithoutIdentifierError.js +1 -0
- package/error/SubjectWithoutIdentifierError.js.map +1 -1
- package/error/TransactionAlreadyStartedError.js +1 -0
- package/error/TransactionAlreadyStartedError.js.map +1 -1
- package/error/TransactionNotStartedError.js +1 -0
- package/error/TransactionNotStartedError.js.map +1 -1
- package/error/TreeRepositoryNotSupportedError.js +1 -0
- package/error/TreeRepositoryNotSupportedError.js.map +1 -1
- package/error/UpdateValuesMissingError.js +1 -0
- package/error/UpdateValuesMissingError.js.map +1 -1
- package/error/UsingJoinColumnIsNotAllowedError.js +1 -0
- package/error/UsingJoinColumnIsNotAllowedError.js.map +1 -1
- package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js +1 -0
- package/error/UsingJoinColumnOnlyOnOneSideAllowedError.js.map +1 -1
- package/error/UsingJoinTableIsNotAllowedError.js +1 -0
- package/error/UsingJoinTableIsNotAllowedError.js.map +1 -1
- package/error/UsingJoinTableOnlyOnOneSideAllowedError.js +1 -0
- package/error/UsingJoinTableOnlyOnOneSideAllowedError.js.map +1 -1
- package/error/index.d.ts +61 -0
- package/error/index.js +66 -0
- package/error/index.js.map +1 -0
- package/find-options/FindOneOptions.d.ts +10 -2
- package/find-options/FindOneOptions.js.map +1 -1
- package/find-options/FindOperator.d.ts +25 -6
- package/find-options/FindOperator.js +33 -6
- package/find-options/FindOperator.js.map +1 -1
- package/find-options/FindOperatorType.d.ts +1 -1
- package/find-options/FindOperatorType.js.map +1 -1
- package/find-options/FindOptionsUtils.js +16 -2
- package/find-options/FindOptionsUtils.js.map +1 -1
- package/find-options/JoinOptions.d.ts +16 -4
- package/find-options/JoinOptions.js.map +1 -1
- package/find-options/operator/Any.js +1 -0
- package/find-options/operator/Any.js.map +1 -1
- package/find-options/operator/Between.js +1 -0
- package/find-options/operator/Between.js.map +1 -1
- package/find-options/operator/Equal.js +1 -0
- package/find-options/operator/Equal.js.map +1 -1
- package/find-options/operator/ILike.d.ts +6 -0
- package/find-options/operator/ILike.js +14 -0
- package/find-options/operator/ILike.js.map +1 -0
- package/find-options/operator/In.js +1 -0
- package/find-options/operator/In.js.map +1 -1
- package/find-options/operator/IsNull.js +1 -0
- package/find-options/operator/IsNull.js.map +1 -1
- package/find-options/operator/LessThan.js +1 -0
- package/find-options/operator/LessThan.js.map +1 -1
- package/find-options/operator/LessThanOrEqual.js +1 -0
- package/find-options/operator/LessThanOrEqual.js.map +1 -1
- package/find-options/operator/Like.js +1 -0
- package/find-options/operator/Like.js.map +1 -1
- package/find-options/operator/MoreThan.js +1 -0
- package/find-options/operator/MoreThan.js.map +1 -1
- package/find-options/operator/MoreThanOrEqual.js +1 -0
- package/find-options/operator/MoreThanOrEqual.js.map +1 -1
- package/find-options/operator/Not.js +1 -0
- package/find-options/operator/Not.js.map +1 -1
- package/find-options/operator/Raw.d.ts +14 -2
- package/find-options/operator/Raw.js +6 -6
- package/find-options/operator/Raw.js.map +1 -1
- package/index.d.ts +3 -1
- package/index.js +44 -19
- package/index.js.map +1 -1
- package/logger/AdvancedConsoleLogger.d.ts +2 -1
- package/logger/AdvancedConsoleLogger.js +1 -0
- package/logger/AdvancedConsoleLogger.js.map +1 -1
- package/logger/DebugLogger.js +1 -0
- package/logger/DebugLogger.js.map +1 -1
- package/logger/FileLogger.d.ts +2 -2
- package/logger/FileLogger.js +1 -0
- package/logger/FileLogger.js.map +1 -1
- package/logger/Logger.d.ts +1 -1
- package/logger/Logger.js.map +1 -1
- package/logger/LoggerFactory.js +1 -0
- package/logger/LoggerFactory.js.map +1 -1
- package/logger/SimpleConsoleLogger.d.ts +2 -1
- package/logger/SimpleConsoleLogger.js +1 -0
- package/logger/SimpleConsoleLogger.js.map +1 -1
- package/metadata/CheckMetadata.js +1 -0
- package/metadata/CheckMetadata.js.map +1 -1
- package/metadata/ColumnMetadata.d.ts +1 -1
- package/metadata/ColumnMetadata.js +23 -14
- package/metadata/ColumnMetadata.js.map +1 -1
- package/metadata/EmbeddedMetadata.js +2 -1
- package/metadata/EmbeddedMetadata.js.map +1 -1
- package/metadata/EntityListenerMetadata.js +1 -0
- package/metadata/EntityListenerMetadata.js.map +1 -1
- package/metadata/EntityMetadata.d.ts +5 -0
- package/metadata/EntityMetadata.js +3 -1
- package/metadata/EntityMetadata.js.map +1 -1
- package/metadata/ExclusionMetadata.js +1 -0
- package/metadata/ExclusionMetadata.js.map +1 -1
- package/metadata/ForeignKeyMetadata.js +1 -0
- package/metadata/ForeignKeyMetadata.js.map +1 -1
- package/metadata/IndexMetadata.js +1 -0
- package/metadata/IndexMetadata.js.map +1 -1
- package/metadata/RelationCountMetadata.js +1 -0
- package/metadata/RelationCountMetadata.js.map +1 -1
- package/metadata/RelationIdMetadata.js +1 -0
- package/metadata/RelationIdMetadata.js.map +1 -1
- package/metadata/RelationMetadata.d.ts +15 -0
- package/metadata/RelationMetadata.js +23 -6
- package/metadata/RelationMetadata.js.map +1 -1
- package/metadata/UniqueMetadata.js +1 -0
- package/metadata/UniqueMetadata.js.map +1 -1
- package/metadata/types/ClosureTreeOptions.d.ts +10 -0
- package/metadata/types/ClosureTreeOptions.js +4 -0
- package/metadata/types/ClosureTreeOptions.js.map +1 -0
- package/metadata/types/EventListenerTypes.d.ts +7 -7
- package/metadata/types/EventListenerTypes.js +1 -0
- package/metadata/types/EventListenerTypes.js.map +1 -1
- package/metadata-args/MetadataArgsStorage.js +1 -0
- package/metadata-args/MetadataArgsStorage.js.map +1 -1
- package/metadata-args/TreeMetadataArgs.d.ts +5 -0
- package/metadata-args/TreeMetadataArgs.js.map +1 -1
- package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js +6 -3
- package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/EntityMetadataBuilder.js +26 -15
- package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/EntityMetadataValidator.js +11 -5
- package/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/metadata-builder/JunctionEntityMetadataBuilder.js +8 -3
- package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/MetadataUtils.js +1 -0
- package/metadata-builder/MetadataUtils.js.map +1 -1
- package/metadata-builder/RelationJoinColumnBuilder.d.ts +1 -0
- package/metadata-builder/RelationJoinColumnBuilder.js +9 -6
- package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/migration/Migration.js +1 -0
- package/migration/Migration.js.map +1 -1
- package/migration/MigrationExecutor.js +6 -5
- package/migration/MigrationExecutor.js.map +1 -1
- package/naming-strategy/DefaultNamingStrategy.d.ts +1 -1
- package/naming-strategy/DefaultNamingStrategy.js +9 -7
- package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
- package/naming-strategy/NamingStrategyInterface.d.ts +6 -1
- package/naming-strategy/NamingStrategyInterface.js.map +1 -1
- package/package.json +46 -43
- package/persistence/EntityPersistExecutor.js +56 -52
- package/persistence/EntityPersistExecutor.js.map +1 -1
- package/persistence/Subject.d.ts +4 -4
- package/persistence/Subject.js +8 -6
- package/persistence/Subject.js.map +1 -1
- package/persistence/SubjectChangedColumnsComputer.js +4 -1
- package/persistence/SubjectChangedColumnsComputer.js.map +1 -1
- package/persistence/SubjectDatabaseEntityLoader.js +2 -1
- package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/persistence/SubjectExecutor.js +31 -26
- package/persistence/SubjectExecutor.js.map +1 -1
- package/persistence/SubjectTopoligicalSorter.js +6 -5
- package/persistence/SubjectTopoligicalSorter.js.map +1 -1
- package/persistence/subject-builder/CascadesSubjectBuilder.js +1 -0
- package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
- package/persistence/subject-builder/ManyToManySubjectBuilder.js +3 -0
- package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
- package/persistence/subject-builder/OneToManySubjectBuilder.js +10 -4
- package/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
- package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js +1 -0
- package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
- package/persistence/tree/ClosureSubjectExecutor.d.ts +1 -1
- package/persistence/tree/ClosureSubjectExecutor.js +7 -6
- package/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
- package/persistence/tree/MaterializedPathSubjectExecutor.js +1 -0
- package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
- package/persistence/tree/NestedSetSubjectExecutor.js +1 -0
- package/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
- package/platform/PlatformTools.js +5 -4
- package/platform/PlatformTools.js.map +1 -1
- package/query-builder/Alias.d.ts +4 -3
- package/query-builder/Alias.js +4 -3
- package/query-builder/Alias.js.map +1 -1
- package/query-builder/Brackets.js +1 -0
- package/query-builder/Brackets.js.map +1 -1
- package/query-builder/DeleteQueryBuilder.js +8 -2
- package/query-builder/DeleteQueryBuilder.js.map +1 -1
- package/query-builder/InsertQueryBuilder.d.ts +6 -0
- package/query-builder/InsertQueryBuilder.js +64 -14
- package/query-builder/InsertQueryBuilder.js.map +1 -1
- package/query-builder/JoinAttribute.d.ts +10 -10
- package/query-builder/JoinAttribute.js +11 -10
- package/query-builder/JoinAttribute.js.map +1 -1
- package/query-builder/QueryBuilder.d.ts +8 -1
- package/query-builder/QueryBuilder.js +172 -36
- package/query-builder/QueryBuilder.js.map +1 -1
- package/query-builder/QueryBuilderUtils.js +1 -0
- package/query-builder/QueryBuilderUtils.js.map +1 -1
- package/query-builder/QueryExpressionMap.d.ts +10 -2
- package/query-builder/QueryExpressionMap.js +5 -2
- package/query-builder/QueryExpressionMap.js.map +1 -1
- package/query-builder/RelationIdLoader.js +1 -0
- package/query-builder/RelationIdLoader.js.map +1 -1
- package/query-builder/RelationLoader.js +4 -3
- package/query-builder/RelationLoader.js.map +1 -1
- package/query-builder/RelationQueryBuilder.js +2 -1
- package/query-builder/RelationQueryBuilder.js.map +1 -1
- package/query-builder/RelationRemover.js +11 -10
- package/query-builder/RelationRemover.js.map +1 -1
- package/query-builder/RelationUpdater.js +1 -0
- package/query-builder/RelationUpdater.js.map +1 -1
- package/query-builder/ReturningResultsEntityUpdator.js +1 -0
- package/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
- package/query-builder/SelectQueryBuilder.d.ts +7 -6
- package/query-builder/SelectQueryBuilder.js +129 -66
- package/query-builder/SelectQueryBuilder.js.map +1 -1
- package/query-builder/SoftDeleteQueryBuilder.js +1 -0
- package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/query-builder/UpdateQueryBuilder.js +7 -1
- package/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/query-builder/relation-count/RelationCountAttribute.d.ts +7 -7
- package/query-builder/relation-count/RelationCountAttribute.js +8 -7
- package/query-builder/relation-count/RelationCountAttribute.js.map +1 -1
- package/query-builder/relation-count/RelationCountLoader.js +3 -1
- package/query-builder/relation-count/RelationCountLoader.js.map +1 -1
- package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js +1 -0
- package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
- package/query-builder/relation-id/RelationIdAttribute.d.ts +8 -8
- package/query-builder/relation-id/RelationIdAttribute.js +9 -8
- package/query-builder/relation-id/RelationIdAttribute.js.map +1 -1
- package/query-builder/relation-id/RelationIdLoader.js +62 -11
- package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
- package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js +1 -0
- package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
- package/query-builder/result/DeleteResult.js +1 -0
- package/query-builder/result/DeleteResult.js.map +1 -1
- package/query-builder/result/InsertResult.js +1 -0
- package/query-builder/result/InsertResult.js.map +1 -1
- package/query-builder/result/UpdateResult.js +1 -0
- package/query-builder/result/UpdateResult.js.map +1 -1
- package/query-builder/transformer/DocumentToEntityTransformer.js +1 -0
- package/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
- package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js +4 -3
- package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
- package/query-builder/transformer/PlainObjectToNewEntityTransformer.js +1 -0
- package/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +10 -6
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
- package/query-runner/BaseQueryRunner.js +3 -2
- package/query-runner/BaseQueryRunner.js.map +1 -1
- package/query-runner/QueryRunner.d.ts +1 -1
- package/query-runner/QueryRunner.js.map +1 -1
- package/repository/AbstractRepository.d.ts +2 -2
- package/repository/AbstractRepository.js +3 -2
- package/repository/AbstractRepository.js.map +1 -1
- package/repository/BaseEntity.d.ts +1 -1
- package/repository/BaseEntity.js +3 -2
- package/repository/BaseEntity.js.map +1 -1
- package/repository/MongoRepository.js +1 -0
- package/repository/MongoRepository.js.map +1 -1
- package/repository/Repository.d.ts +4 -4
- package/repository/Repository.js +3 -2
- package/repository/Repository.js.map +1 -1
- package/repository/RepositoryFactory.js +1 -0
- package/repository/RepositoryFactory.js.map +1 -1
- package/repository/TreeRepository.js +4 -3
- package/repository/TreeRepository.js.map +1 -1
- package/schema-builder/MongoSchemaBuilder.js +1 -0
- package/schema-builder/MongoSchemaBuilder.js.map +1 -1
- package/schema-builder/RdbmsSchemaBuilder.d.ts +2 -2
- package/schema-builder/RdbmsSchemaBuilder.js +81 -79
- package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/schema-builder/options/TableForeignKeyOptions.js.map +1 -1
- package/schema-builder/table/Table.d.ts +1 -1
- package/schema-builder/table/Table.js +2 -1
- package/schema-builder/table/Table.js.map +1 -1
- package/schema-builder/table/TableCheck.js +2 -1
- package/schema-builder/table/TableCheck.js.map +1 -1
- package/schema-builder/table/TableColumn.js +1 -0
- package/schema-builder/table/TableColumn.js.map +1 -1
- package/schema-builder/table/TableExclusion.js +1 -0
- package/schema-builder/table/TableExclusion.js.map +1 -1
- package/schema-builder/table/TableForeignKey.js +3 -2
- package/schema-builder/table/TableForeignKey.js.map +1 -1
- package/schema-builder/table/TableIndex.js +2 -1
- package/schema-builder/table/TableIndex.js.map +1 -1
- package/schema-builder/table/TableUnique.js +2 -1
- package/schema-builder/table/TableUnique.js.map +1 -1
- package/schema-builder/util/TableUtils.js +1 -0
- package/schema-builder/util/TableUtils.js.map +1 -1
- package/schema-builder/view/View.js +1 -0
- package/schema-builder/view/View.js.map +1 -1
- package/subscriber/Broadcaster.d.ts +24 -0
- package/subscriber/Broadcaster.js +121 -0
- package/subscriber/Broadcaster.js.map +1 -1
- package/subscriber/BroadcasterResult.js +1 -0
- package/subscriber/BroadcasterResult.js.map +1 -1
- package/subscriber/EntitySubscriberInterface.d.ts +27 -0
- package/subscriber/EntitySubscriberInterface.js.map +1 -1
- package/subscriber/event/TransactionCommitEvent.d.ts +22 -0
- package/subscriber/event/TransactionCommitEvent.js +4 -0
- package/subscriber/event/TransactionCommitEvent.js.map +1 -0
- package/subscriber/event/TransactionRollbackEvent.d.ts +22 -0
- package/subscriber/event/TransactionRollbackEvent.js +4 -0
- package/subscriber/event/TransactionRollbackEvent.js.map +1 -0
- package/subscriber/event/TransactionStartEvent.d.ts +22 -0
- package/subscriber/event/TransactionStartEvent.js +4 -0
- package/subscriber/event/TransactionStartEvent.js.map +1 -0
- package/typeorm-model-shim.js +145 -128
- package/util/ApplyValueTransformers.js +1 -0
- package/util/ApplyValueTransformers.js.map +1 -1
- package/util/DateUtils.d.ts +1 -1
- package/util/DateUtils.js +2 -7
- package/util/DateUtils.js.map +1 -1
- package/util/DepGraph.js +1 -0
- package/util/DepGraph.js.map +1 -1
- package/util/DirectoryExportedClassesLoader.js +1 -0
- package/util/DirectoryExportedClassesLoader.js.map +1 -1
- package/util/ObjectUtils.js +1 -0
- package/util/ObjectUtils.js.map +1 -1
- package/util/OrmUtils.d.ts +1 -1
- package/util/OrmUtils.js +2 -1
- package/util/OrmUtils.js.map +1 -1
- package/util/RandomGenerator.js +1 -0
- package/util/RandomGenerator.js.map +1 -1
- package/util/StringUtils.js +1 -0
- package/util/StringUtils.js.map +1 -1
- package/util/VersionUtils.js +1 -0
- package/util/VersionUtils.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/query-builder/relation-count/RelationCountLoader.ts"],"names":[],"mappings":"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","file":"RelationCountLoader.js","sourcesContent":["import {ColumnMetadata} from \"../../metadata/ColumnMetadata\";\nimport {Connection} from \"../../connection/Connection\";\nimport {RelationCountAttribute} from \"./RelationCountAttribute\";\nimport {RelationCountLoadResult} from \"./RelationCountLoadResult\";\nimport {QueryRunner} from \"../../query-runner/QueryRunner\";\n\nexport class RelationCountLoader {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: Connection,\n protected queryRunner: QueryRunner|undefined,\n protected relationCountAttributes: RelationCountAttribute[]) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n async load(rawEntities: any[]): Promise<RelationCountLoadResult[]> {\n\n const onlyUnique = (value: any, index: number, self: any) => {\n return self.indexOf(value) === index;\n };\n\n const promises = this.relationCountAttributes.map(async relationCountAttr => {\n\n if (relationCountAttr.relation.isOneToMany) {\n // example: Post and Category\n // loadRelationCountAndMap(\"post.categoryCount\", \"post.categories\")\n // we expect it to load array of post ids\n\n // todo(dima): fix issues wit multiple primary keys and remove joinColumns[0]\n const relation = relationCountAttr.relation; // \"category.posts\"\n const inverseRelation = relation.inverseRelation!; // \"post.category\"\n const referenceColumnName = inverseRelation.joinColumns[0].referencedColumn!.propertyName; // post id\n const inverseSideTable = relation.inverseEntityMetadata.target; // Post\n const inverseSideTableName = relation.inverseEntityMetadata.tableName; // post\n const inverseSideTableAlias = relationCountAttr.alias || inverseSideTableName; // if condition (custom query builder factory) is set then relationIdAttr.alias defined\n const inverseSidePropertyName = inverseRelation.propertyName; // \"category\" from \"post.category\"\n\n let referenceColumnValues = rawEntities\n .map(rawEntity => rawEntity[relationCountAttr.parentAlias + \"_\" + referenceColumnName])\n .filter(value => !!value);\n referenceColumnValues = referenceColumnValues.filter(onlyUnique);\n\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (referenceColumnValues.length === 0)\n return { relationCountAttribute: relationCountAttr, results: [] };\n\n // generate query:\n // SELECT category.post as parentId, COUNT(*) AS cnt FROM category category WHERE category.post IN (1, 2) GROUP BY category.post\n const qb = this.connection.createQueryBuilder(this.queryRunner);\n qb.select(inverseSideTableAlias + \".\" + inverseSidePropertyName, \"parentId\")\n .addSelect(\"COUNT(*)\", \"cnt\")\n .from(inverseSideTable, inverseSideTableAlias)\n .where(inverseSideTableAlias + \".\" + inverseSidePropertyName + \" IN (:...ids)\")\n .addGroupBy(inverseSideTableAlias + \".\" + inverseSidePropertyName)\n .setParameter(\"ids\", referenceColumnValues);\n\n // apply condition (custom query builder factory)\n if (relationCountAttr.queryBuilderFactory)\n relationCountAttr.queryBuilderFactory(qb);\n\n return {\n relationCountAttribute: relationCountAttr,\n results: await qb.getRawMany()\n };\n\n } else {\n // example: Post and Category\n // owner side: loadRelationIdAndMap(\"post.categoryIds\", \"post.categories\")\n // inverse side: loadRelationIdAndMap(\"category.postIds\", \"category.posts\")\n // we expect it to load array of post ids\n\n let joinTableColumnName: string;\n let inverseJoinColumnName: string;\n let firstJunctionColumn: ColumnMetadata;\n let secondJunctionColumn: ColumnMetadata;\n\n if (relationCountAttr.relation.isOwning) { // todo fix joinColumns[0] and inverseJoinColumns[0].\n joinTableColumnName = relationCountAttr.relation.joinColumns[0].referencedColumn!.databaseName;\n inverseJoinColumnName = relationCountAttr.relation.inverseJoinColumns[0].referencedColumn!.databaseName;\n firstJunctionColumn = relationCountAttr.relation.junctionEntityMetadata!.columns[0];\n secondJunctionColumn = relationCountAttr.relation.junctionEntityMetadata!.columns[1];\n\n } else {\n joinTableColumnName = relationCountAttr.relation.inverseRelation!.inverseJoinColumns[0].referencedColumn!.databaseName;\n inverseJoinColumnName = relationCountAttr.relation.inverseRelation!.joinColumns[0].referencedColumn!.databaseName;\n firstJunctionColumn = relationCountAttr.relation.junctionEntityMetadata!.columns[1];\n secondJunctionColumn = relationCountAttr.relation.junctionEntityMetadata!.columns[0];\n }\n\n let referenceColumnValues = rawEntities\n .map(rawEntity => rawEntity[relationCountAttr.parentAlias + \"_\" + joinTableColumnName])\n .filter(value => !!value);\n referenceColumnValues = referenceColumnValues.filter(onlyUnique);\n\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (referenceColumnValues.length === 0)\n return { relationCountAttribute: relationCountAttr, results: [] };\n\n const junctionAlias = relationCountAttr.junctionAlias;\n const inverseSideTableName = relationCountAttr.joinInverseSideMetadata.tableName;\n const inverseSideTableAlias = relationCountAttr.alias || inverseSideTableName;\n const junctionTableName = relationCountAttr.relation.junctionEntityMetadata!.tableName;\n \n const condition = junctionAlias + \".\" + firstJunctionColumn.propertyName + \" IN (\" + referenceColumnValues.map(vals => isNaN(vals) ? \"'\" + vals + \"'\" : vals) + \")\" +\n \" AND \" + junctionAlias + \".\" + secondJunctionColumn.propertyName + \" = \" + inverseSideTableAlias + \".\" + inverseJoinColumnName;\n\n const qb = this.connection.createQueryBuilder(this.queryRunner);\n qb.select(junctionAlias + \".\" + firstJunctionColumn.propertyName, \"parentId\")\n .addSelect(\"COUNT(\" + qb.escape(inverseSideTableAlias) + \".\" + qb.escape(inverseJoinColumnName) + \")\", \"cnt\")\n .from(inverseSideTableName, inverseSideTableAlias)\n .innerJoin(junctionTableName, junctionAlias, condition)\n .addGroupBy(junctionAlias + \".\" + firstJunctionColumn.propertyName);\n\n // apply condition (custom query builder factory)\n if (relationCountAttr.queryBuilderFactory)\n relationCountAttr.queryBuilderFactory(qb);\n\n return {\n relationCountAttribute: relationCountAttr,\n results: await qb.getRawMany()\n };\n }\n });\n\n return Promise.all(promises);\n }\n\n}\n"],"sourceRoot":"../.."}
|
|
1
|
+
{"version":3,"sources":["../../src/query-builder/relation-count/RelationCountLoader.ts"],"names":[],"mappings":"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","file":"RelationCountLoader.js","sourcesContent":["import {ColumnMetadata} from \"../../metadata/ColumnMetadata\";\nimport {Connection} from \"../../connection/Connection\";\nimport {RelationCountAttribute} from \"./RelationCountAttribute\";\nimport {RelationCountLoadResult} from \"./RelationCountLoadResult\";\nimport {QueryRunner} from \"../../query-runner/QueryRunner\";\n\nexport class RelationCountLoader {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: Connection,\n protected queryRunner: QueryRunner|undefined,\n protected relationCountAttributes: RelationCountAttribute[]) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n async load(rawEntities: any[]): Promise<RelationCountLoadResult[]> {\n\n const onlyUnique = (value: any, index: number, self: any) => {\n return self.indexOf(value) === index;\n };\n\n const promises = this.relationCountAttributes.map(async relationCountAttr => {\n\n if (relationCountAttr.relation.isOneToMany) {\n // example: Post and Category\n // loadRelationCountAndMap(\"post.categoryCount\", \"post.categories\")\n // we expect it to load array of post ids\n\n // todo(dima): fix issues wit multiple primary keys and remove joinColumns[0]\n const relation = relationCountAttr.relation; // \"category.posts\"\n const inverseRelation = relation.inverseRelation!; // \"post.category\"\n const referenceColumnName = inverseRelation.joinColumns[0].referencedColumn!.propertyName; // post id\n const inverseSideTable = relation.inverseEntityMetadata.target; // Post\n const inverseSideTableName = relation.inverseEntityMetadata.tableName; // post\n const inverseSideTableAlias = relationCountAttr.alias || inverseSideTableName; // if condition (custom query builder factory) is set then relationIdAttr.alias defined\n const inverseSidePropertyName = inverseRelation.propertyName; // \"category\" from \"post.category\"\n\n let referenceColumnValues = rawEntities\n .map(rawEntity => rawEntity[relationCountAttr.parentAlias + \"_\" + referenceColumnName])\n .filter(value => !!value);\n referenceColumnValues = referenceColumnValues.filter(onlyUnique);\n\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (referenceColumnValues.length === 0)\n return { relationCountAttribute: relationCountAttr, results: [] };\n\n // generate query:\n // SELECT category.post as parentId, COUNT(*) AS cnt FROM category category WHERE category.post IN (1, 2) GROUP BY category.post\n const qb = this.connection.createQueryBuilder(this.queryRunner);\n qb.select(inverseSideTableAlias + \".\" + inverseSidePropertyName, \"parentId\")\n .addSelect(\"COUNT(*)\", \"cnt\")\n .from(inverseSideTable, inverseSideTableAlias)\n .where(inverseSideTableAlias + \".\" + inverseSidePropertyName + \" IN (:...ids)\")\n .addGroupBy(inverseSideTableAlias + \".\" + inverseSidePropertyName)\n .setParameter(\"ids\", referenceColumnValues);\n\n // apply condition (custom query builder factory)\n if (relationCountAttr.queryBuilderFactory)\n relationCountAttr.queryBuilderFactory(qb);\n\n return {\n relationCountAttribute: relationCountAttr,\n results: await qb.getRawMany()\n };\n\n } else {\n // example: Post and Category\n // owner side: loadRelationIdAndMap(\"post.categoryIds\", \"post.categories\")\n // inverse side: loadRelationIdAndMap(\"category.postIds\", \"category.posts\")\n // we expect it to load array of post ids\n\n let joinTableColumnName: string;\n let inverseJoinColumnName: string;\n let firstJunctionColumn: ColumnMetadata;\n let secondJunctionColumn: ColumnMetadata;\n\n if (relationCountAttr.relation.isOwning) { // todo fix joinColumns[0] and inverseJoinColumns[0].\n joinTableColumnName = relationCountAttr.relation.joinColumns[0].referencedColumn!.databaseName;\n inverseJoinColumnName = relationCountAttr.relation.inverseJoinColumns[0].referencedColumn!.databaseName;\n firstJunctionColumn = relationCountAttr.relation.junctionEntityMetadata!.columns[0];\n secondJunctionColumn = relationCountAttr.relation.junctionEntityMetadata!.columns[1];\n\n } else {\n joinTableColumnName = relationCountAttr.relation.inverseRelation!.inverseJoinColumns[0].referencedColumn!.databaseName;\n inverseJoinColumnName = relationCountAttr.relation.inverseRelation!.joinColumns[0].referencedColumn!.databaseName;\n firstJunctionColumn = relationCountAttr.relation.junctionEntityMetadata!.columns[1];\n secondJunctionColumn = relationCountAttr.relation.junctionEntityMetadata!.columns[0];\n }\n\n let referenceColumnValues = rawEntities\n .map(rawEntity => rawEntity[relationCountAttr.parentAlias + \"_\" + joinTableColumnName])\n .filter(value => !!value);\n referenceColumnValues = referenceColumnValues.filter(onlyUnique);\n\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (referenceColumnValues.length === 0)\n return { relationCountAttribute: relationCountAttr, results: [] };\n\n const junctionAlias = relationCountAttr.junctionAlias;\n const inverseSideTableName = relationCountAttr.joinInverseSideMetadata.tableName;\n const inverseSideTableAlias = relationCountAttr.alias || inverseSideTableName;\n const junctionTableName = relationCountAttr.relation.junctionEntityMetadata!.tableName;\n \n const condition = junctionAlias + \".\" + firstJunctionColumn.propertyName + \" IN (\" + referenceColumnValues.map(vals => isNaN(vals) ? \"'\" + vals + \"'\" : vals) + \")\" +\n \" AND \" + junctionAlias + \".\" + secondJunctionColumn.propertyName + \" = \" + inverseSideTableAlias + \".\" + inverseJoinColumnName;\n\n const qb = this.connection.createQueryBuilder(this.queryRunner);\n qb.select(junctionAlias + \".\" + firstJunctionColumn.propertyName, \"parentId\")\n .addSelect(\"COUNT(\" + qb.escape(inverseSideTableAlias) + \".\" + qb.escape(inverseJoinColumnName) + \")\", \"cnt\")\n .from(inverseSideTableName, inverseSideTableAlias)\n .innerJoin(junctionTableName, junctionAlias, condition)\n .addGroupBy(junctionAlias + \".\" + firstJunctionColumn.propertyName);\n\n // apply condition (custom query builder factory)\n if (relationCountAttr.queryBuilderFactory)\n relationCountAttr.queryBuilderFactory(qb);\n\n return {\n relationCountAttribute: relationCountAttr,\n results: await qb.getRawMany()\n };\n }\n });\n\n return Promise.all(promises);\n }\n\n}\n"],"sourceRoot":"../.."}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RelationCountMetadataToAttributeTransformer = void 0;
|
|
3
4
|
var RelationCountAttribute_1 = require("./RelationCountAttribute");
|
|
4
5
|
var RelationCountMetadataToAttributeTransformer = /** @class */ (function () {
|
|
5
6
|
// -------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.ts"],"names":[],"mappings":";;;AAEA,mEAAgE;AAEhE;IAEI,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,qDAAsB,aAAiC;QAAjC,kBAAa,GAAb,aAAa,CAAoB;IACvD,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E,+DAAS,GAAT;QAEI,cAAc;QACd,2BAA2B;QAC3B,wDAAwD;QACxD,8BAA8B;QAC9B,yDAAyD;QACzD,iCAAiC;QACjC,oFAAoF;QARxF,iBA8BC;QApBG,0HAA0H;QAC1H,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;YAC9B,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,UAAA,aAAa;gBACtE,IAAM,SAAS,GAAG,KAAI,CAAC,mBAAmB,CAAC,KAAI,CAAC,aAAa,CAAC,SAAU,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;gBAC9F,KAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;SACN;QAED,yHAAyH;QACzH,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,UAAA,IAAI;YAE1C,8FAA8F;YAC9F,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU;gBAC1C,OAAO;YAEX,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,UAAA,aAAa;gBAC9C,IAAM,SAAS,GAAG,KAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;gBAC3E,KAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED,4EAA4E;IAC5E,kBAAkB;IAClB,4EAA4E;IAEpE,yEAAmB,GAA3B,UAA4B,eAAuB,EAAE,aAAoC;QACrF,OAAO,IAAI,+CAAsB,CAAC,IAAI,CAAC,aAAa,EAAE;YAClD,YAAY,EAAE,eAAe,GAAG,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,YAAY;YACzE,aAAa,EAAE,eAAe,GAAG,GAAG,GAAG,aAAa,CAAC,YAAY;YACjE,KAAK,EAAE,aAAa,CAAC,KAAK;YAC1B,mBAAmB,EAAE,aAAa,CAAC,mBAAmB;SACzD,CAAC,CAAC;IACP,CAAC;IAEL,kDAAC;AAAD,CA1DA,AA0DC,IAAA;AA1DY,kGAA2C","file":"RelationCountMetadataToAttributeTransformer.js","sourcesContent":["import {QueryExpressionMap} from \"../QueryExpressionMap\";\nimport {RelationCountMetadata} from \"../../metadata/RelationCountMetadata\";\nimport {RelationCountAttribute} from \"./RelationCountAttribute\";\n\nexport class RelationCountMetadataToAttributeTransformer {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected expressionMap: QueryExpressionMap) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n transform() {\n\n // by example:\n // post has relation count:\n // @RelationCount(post => post.categories) categoryCount\n // category has relation count\n // @RelationCount(category => category.images) imageCount\n // we load post and join category\n // we expect post.categoryCount and post.category.imageCount to have relation counts\n\n // first create relation count attributes for all relation count metadatas of the main selected object (post from example)\n if (this.expressionMap.mainAlias) {\n this.expressionMap.mainAlias.metadata.relationCounts.forEach(relationCount => {\n const attribute = this.metadataToAttribute(this.expressionMap.mainAlias!.name, relationCount);\n this.expressionMap.relationCountAttributes.push(attribute);\n });\n }\n\n // second create relation count attributes for all relation count metadatas of all joined objects (category from example)\n this.expressionMap.joinAttributes.forEach(join => {\n\n // ensure this join has a metadata, because relation count can only work for real orm entities\n if (!join.metadata || join.metadata.isJunction)\n return;\n\n join.metadata.relationCounts.forEach(relationCount => {\n const attribute = this.metadataToAttribute(join.alias.name, relationCount);\n this.expressionMap.relationCountAttributes.push(attribute);\n });\n });\n }\n\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n\n private metadataToAttribute(parentAliasName: string, relationCount: RelationCountMetadata): RelationCountAttribute {\n return new RelationCountAttribute(this.expressionMap, {\n relationName: parentAliasName + \".\" + relationCount.relation.propertyName, // category.images\n mapToProperty: parentAliasName + \".\" + relationCount.propertyName, // category.imageIds\n alias: relationCount.alias,\n queryBuilderFactory: relationCount.queryBuilderFactory\n });\n }\n\n}"],"sourceRoot":"../.."}
|
|
@@ -28,14 +28,14 @@ export declare class RelationIdAttribute {
|
|
|
28
28
|
*/
|
|
29
29
|
disableMixedMap: boolean;
|
|
30
30
|
constructor(queryExpressionMap: QueryExpressionMap, relationIdAttribute?: Partial<RelationIdAttribute>);
|
|
31
|
-
|
|
31
|
+
get joinInverseSideMetadata(): EntityMetadata;
|
|
32
32
|
/**
|
|
33
33
|
* Alias of the parent of this join.
|
|
34
34
|
* For example, if we join ("post.category", "categoryAlias") then "post" is a parent alias.
|
|
35
35
|
* This value is extracted from entityOrProperty value.
|
|
36
36
|
* This is available when join was made using "post.category" syntax.
|
|
37
37
|
*/
|
|
38
|
-
|
|
38
|
+
get parentAlias(): string;
|
|
39
39
|
/**
|
|
40
40
|
* Relation property name of the parent.
|
|
41
41
|
* This is used to understand what is joined.
|
|
@@ -43,22 +43,22 @@ export declare class RelationIdAttribute {
|
|
|
43
43
|
* This value is extracted from entityOrProperty value.
|
|
44
44
|
* This is available when join was made using "post.category" syntax.
|
|
45
45
|
*/
|
|
46
|
-
|
|
46
|
+
get relationPropertyPath(): string;
|
|
47
47
|
/**
|
|
48
48
|
* Relation of the parent.
|
|
49
49
|
* This is used to understand what is joined.
|
|
50
50
|
* This is available when join was made using "post.category" syntax.
|
|
51
51
|
*/
|
|
52
|
-
|
|
52
|
+
get relation(): RelationMetadata;
|
|
53
53
|
/**
|
|
54
54
|
* Generates alias of junction table, whose ids we get.
|
|
55
55
|
*/
|
|
56
|
-
|
|
56
|
+
get junctionAlias(): string;
|
|
57
57
|
/**
|
|
58
58
|
* Metadata of the joined entity.
|
|
59
59
|
* If extra condition without entity was joined, then it will return undefined.
|
|
60
60
|
*/
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
61
|
+
get junctionMetadata(): EntityMetadata;
|
|
62
|
+
get mapToPropertyParentAlias(): string;
|
|
63
|
+
get mapToPropertyPropertyPath(): string;
|
|
64
64
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RelationIdAttribute = void 0;
|
|
3
4
|
var tslib_1 = require("tslib");
|
|
4
5
|
var QueryBuilderUtils_1 = require("../QueryBuilderUtils");
|
|
5
6
|
var ObjectUtils_1 = require("../../util/ObjectUtils");
|
|
@@ -25,7 +26,7 @@ var RelationIdAttribute = /** @class */ (function () {
|
|
|
25
26
|
get: function () {
|
|
26
27
|
return this.relation.inverseEntityMetadata;
|
|
27
28
|
},
|
|
28
|
-
enumerable:
|
|
29
|
+
enumerable: false,
|
|
29
30
|
configurable: true
|
|
30
31
|
});
|
|
31
32
|
Object.defineProperty(RelationIdAttribute.prototype, "parentAlias", {
|
|
@@ -40,7 +41,7 @@ var RelationIdAttribute = /** @class */ (function () {
|
|
|
40
41
|
throw new Error("Given value must be a string representation of alias property");
|
|
41
42
|
return this.relationName.substr(0, this.relationName.indexOf("."));
|
|
42
43
|
},
|
|
43
|
-
enumerable:
|
|
44
|
+
enumerable: false,
|
|
44
45
|
configurable: true
|
|
45
46
|
});
|
|
46
47
|
Object.defineProperty(RelationIdAttribute.prototype, "relationPropertyPath", {
|
|
@@ -56,7 +57,7 @@ var RelationIdAttribute = /** @class */ (function () {
|
|
|
56
57
|
throw new Error("Given value must be a string representation of alias property");
|
|
57
58
|
return this.relationName.substr(this.relationName.indexOf(".") + 1);
|
|
58
59
|
},
|
|
59
|
-
enumerable:
|
|
60
|
+
enumerable: false,
|
|
60
61
|
configurable: true
|
|
61
62
|
});
|
|
62
63
|
Object.defineProperty(RelationIdAttribute.prototype, "relation", {
|
|
@@ -74,7 +75,7 @@ var RelationIdAttribute = /** @class */ (function () {
|
|
|
74
75
|
throw new Error("Relation with property path " + this.relationPropertyPath + " in entity was not found.");
|
|
75
76
|
return relation;
|
|
76
77
|
},
|
|
77
|
-
enumerable:
|
|
78
|
+
enumerable: false,
|
|
78
79
|
configurable: true
|
|
79
80
|
});
|
|
80
81
|
Object.defineProperty(RelationIdAttribute.prototype, "junctionAlias", {
|
|
@@ -85,7 +86,7 @@ var RelationIdAttribute = /** @class */ (function () {
|
|
|
85
86
|
var _a = tslib_1.__read(this.relationName.split("."), 2), parentAlias = _a[0], relationProperty = _a[1];
|
|
86
87
|
return parentAlias + "_" + relationProperty + "_rid";
|
|
87
88
|
},
|
|
88
|
-
enumerable:
|
|
89
|
+
enumerable: false,
|
|
89
90
|
configurable: true
|
|
90
91
|
});
|
|
91
92
|
Object.defineProperty(RelationIdAttribute.prototype, "junctionMetadata", {
|
|
@@ -96,21 +97,21 @@ var RelationIdAttribute = /** @class */ (function () {
|
|
|
96
97
|
get: function () {
|
|
97
98
|
return this.relation.junctionEntityMetadata;
|
|
98
99
|
},
|
|
99
|
-
enumerable:
|
|
100
|
+
enumerable: false,
|
|
100
101
|
configurable: true
|
|
101
102
|
});
|
|
102
103
|
Object.defineProperty(RelationIdAttribute.prototype, "mapToPropertyParentAlias", {
|
|
103
104
|
get: function () {
|
|
104
105
|
return this.mapToProperty.substr(0, this.mapToProperty.indexOf("."));
|
|
105
106
|
},
|
|
106
|
-
enumerable:
|
|
107
|
+
enumerable: false,
|
|
107
108
|
configurable: true
|
|
108
109
|
});
|
|
109
110
|
Object.defineProperty(RelationIdAttribute.prototype, "mapToPropertyPropertyPath", {
|
|
110
111
|
get: function () {
|
|
111
112
|
return this.mapToProperty.substr(this.mapToProperty.indexOf(".") + 1);
|
|
112
113
|
},
|
|
113
|
-
enumerable:
|
|
114
|
+
enumerable: false,
|
|
114
115
|
configurable: true
|
|
115
116
|
});
|
|
116
117
|
return RelationIdAttribute;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/query-builder/relation-id/RelationIdAttribute.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/query-builder/relation-id/RelationIdAttribute.ts"],"names":[],"mappings":";;;;AACA,0DAAuD;AAIvD,sDAAmD;AAEnD;;GAEG;AACH;IA+BI,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,6BAAoB,kBAAsC,EACtC,mBAAkD;QADlD,uBAAkB,GAAlB,kBAAkB,CAAoB;QAT1D;;WAEG;QACH,oBAAe,GAAG,KAAK,CAAC;QAQpB,yBAAW,CAAC,MAAM,CAAC,IAAI,EAAE,mBAAmB,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IAMD,sBAAI,wDAAuB;QAJ3B,4EAA4E;QAC5E,iBAAiB;QACjB,4EAA4E;aAE5E;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;QAC/C,CAAC;;;OAAA;IAQD,sBAAI,4CAAW;QANf;;;;;WAKG;aACH;YACI,IAAI,CAAC,qCAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;gBACrD,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;YAErF,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACvE,CAAC;;;OAAA;IASD,sBAAI,qDAAoB;QAPxB;;;;;;WAMG;aACH;YACI,IAAI,CAAC,qCAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;gBACrD,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;YAErF,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACxE,CAAC;;;OAAA;IAOD,sBAAI,yCAAQ;QALZ;;;;WAIG;aACH;YACI,IAAI,CAAC,qCAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC;gBACrD,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;YAErF,IAAM,sBAAsB,GAAG,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,IAAI,CAAC,WAAY,CAAC,CAAC;YAC1F,IAAM,QAAQ,GAAG,sBAAsB,CAAC,QAAQ,CAAC,4BAA4B,CAAC,IAAI,CAAC,oBAAqB,CAAC,CAAC;YAC1G,IAAI,CAAC,QAAQ;gBACT,MAAM,IAAI,KAAK,CAAC,iCAA+B,IAAI,CAAC,oBAAoB,8BAA2B,CAAC,CAAC;YACzG,OAAO,QAAQ,CAAC;QACpB,CAAC;;;OAAA;IAKD,sBAAI,8CAAa;QAHjB;;WAEG;aACH;YACU,IAAA,KAAA,eAAkC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,IAAA,EAA7D,WAAW,QAAA,EAAE,gBAAgB,QAAgC,CAAC;YACrE,OAAO,WAAW,GAAG,GAAG,GAAG,gBAAgB,GAAG,MAAM,CAAC;QACzD,CAAC;;;OAAA;IAMD,sBAAI,iDAAgB;QAJpB;;;WAGG;aACH;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC,sBAAuB,CAAC;QACjD,CAAC;;;OAAA;IAED,sBAAI,yDAAwB;aAA5B;YACI,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACzE,CAAC;;;OAAA;IAED,sBAAI,0DAAyB;aAA7B;YACI,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1E,CAAC;;;OAAA;IAEL,0BAAC;AAAD,CAnHA,AAmHC,IAAA;AAnHY,kDAAmB","file":"RelationIdAttribute.js","sourcesContent":["import {RelationMetadata} from \"../../metadata/RelationMetadata\";\nimport {QueryBuilderUtils} from \"../QueryBuilderUtils\";\nimport {EntityMetadata} from \"../../metadata/EntityMetadata\";\nimport {QueryExpressionMap} from \"../QueryExpressionMap\";\nimport {SelectQueryBuilder} from \"../SelectQueryBuilder\";\nimport {ObjectUtils} from \"../../util/ObjectUtils\";\n\n/**\n * Stores all join relation id attributes which will be used to build a JOIN query.\n */\nexport class RelationIdAttribute {\n\n // -------------------------------------------------------------------------\n // Public Properties\n // -------------------------------------------------------------------------\n\n /**\n * Alias of the joined (destination) table.\n */\n alias?: string;\n\n /**\n * Name of relation.\n */\n relationName: string;\n\n /**\n * Property + alias of the object where to joined data should be mapped.\n */\n mapToProperty: string;\n\n /**\n * Extra condition applied to \"ON\" section of join.\n */\n queryBuilderFactory?: (qb: SelectQueryBuilder<any>) => SelectQueryBuilder<any>;\n\n /**\n * Indicates if relation id should NOT be loaded as id map.\n */\n disableMixedMap = false;\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(private queryExpressionMap: QueryExpressionMap,\n relationIdAttribute?: Partial<RelationIdAttribute>) {\n ObjectUtils.assign(this, relationIdAttribute || {});\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n get joinInverseSideMetadata(): EntityMetadata {\n return this.relation.inverseEntityMetadata;\n }\n\n /**\n * Alias of the parent of this join.\n * For example, if we join (\"post.category\", \"categoryAlias\") then \"post\" is a parent alias.\n * This value is extracted from entityOrProperty value.\n * This is available when join was made using \"post.category\" syntax.\n */\n get parentAlias(): string {\n if (!QueryBuilderUtils.isAliasProperty(this.relationName))\n throw new Error(`Given value must be a string representation of alias property`);\n\n return this.relationName.substr(0, this.relationName.indexOf(\".\"));\n }\n\n /**\n * Relation property name of the parent.\n * This is used to understand what is joined.\n * For example, if we join (\"post.category\", \"categoryAlias\") then \"category\" is a relation property.\n * This value is extracted from entityOrProperty value.\n * This is available when join was made using \"post.category\" syntax.\n */\n get relationPropertyPath(): string {\n if (!QueryBuilderUtils.isAliasProperty(this.relationName))\n throw new Error(`Given value must be a string representation of alias property`);\n\n return this.relationName.substr(this.relationName.indexOf(\".\") + 1);\n }\n\n /**\n * Relation of the parent.\n * This is used to understand what is joined.\n * This is available when join was made using \"post.category\" syntax.\n */\n get relation(): RelationMetadata {\n if (!QueryBuilderUtils.isAliasProperty(this.relationName))\n throw new Error(`Given value must be a string representation of alias property`);\n\n const relationOwnerSelection = this.queryExpressionMap.findAliasByName(this.parentAlias!);\n const relation = relationOwnerSelection.metadata.findRelationWithPropertyPath(this.relationPropertyPath!);\n if (!relation)\n throw new Error(`Relation with property path ${this.relationPropertyPath} in entity was not found.`);\n return relation;\n }\n\n /**\n * Generates alias of junction table, whose ids we get.\n */\n get junctionAlias(): string {\n const [parentAlias, relationProperty] = this.relationName.split(\".\");\n return parentAlias + \"_\" + relationProperty + \"_rid\";\n }\n\n /**\n * Metadata of the joined entity.\n * If extra condition without entity was joined, then it will return undefined.\n */\n get junctionMetadata(): EntityMetadata {\n return this.relation.junctionEntityMetadata!;\n }\n\n get mapToPropertyParentAlias(): string {\n return this.mapToProperty.substr(0, this.mapToProperty.indexOf(\".\"));\n }\n\n get mapToPropertyPropertyPath(): string {\n return this.mapToProperty.substr(this.mapToProperty.indexOf(\".\") + 1);\n }\n\n}"],"sourceRoot":"../.."}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RelationIdLoader = void 0;
|
|
3
4
|
var tslib_1 = require("tslib");
|
|
4
5
|
var DriverUtils_1 = require("../../driver/DriverUtils");
|
|
5
6
|
var RelationIdLoader = /** @class */ (function () {
|
|
@@ -20,7 +21,7 @@ var RelationIdLoader = /** @class */ (function () {
|
|
|
20
21
|
var _this = this;
|
|
21
22
|
return tslib_1.__generator(this, function (_a) {
|
|
22
23
|
promises = this.relationIdAttributes.map(function (relationIdAttr) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
23
|
-
var results, relation_1, joinColumns_1, table, tableName, tableAlias_1, parameters_1, condition, qb_1, results, relation, joinColumns_2, inverseJoinColumns_1, junctionAlias_1, inverseSideTableName, inverseSideTableAlias_1, junctionTableName, mappedColumns, parameters_2, joinColumnConditions, inverseJoinColumnCondition_1, condition, qb_2, results;
|
|
24
|
+
var duplicates_1, results, relation_1, joinColumns_1, table, tableName, tableAlias_1, duplicates_2, parameters_1, condition, qb_1, results, relation, joinColumns_2, inverseJoinColumns_1, junctionAlias_1, inverseSideTableName, inverseSideTableAlias_1, junctionTableName, mappedColumns, parameters_2, duplicates_3, joinColumnConditions, inverseJoinColumnCondition_1, condition, qb_2, results;
|
|
24
25
|
var _this = this;
|
|
25
26
|
return tslib_1.__generator(this, function (_a) {
|
|
26
27
|
switch (_a.label) {
|
|
@@ -31,16 +32,32 @@ var RelationIdLoader = /** @class */ (function () {
|
|
|
31
32
|
// we expect it to load id of tag
|
|
32
33
|
if (relationIdAttr.queryBuilderFactory)
|
|
33
34
|
throw new Error("Additional condition can not be used with ManyToOne or OneToOne owner relations.");
|
|
35
|
+
duplicates_1 = [];
|
|
34
36
|
results = rawEntities.map(function (rawEntity) {
|
|
35
37
|
var result = {};
|
|
38
|
+
var duplicateParts = [];
|
|
36
39
|
relationIdAttr.relation.joinColumns.forEach(function (joinColumn) {
|
|
37
40
|
result[joinColumn.databaseName] = _this.connection.driver.prepareHydratedValue(rawEntity[DriverUtils_1.DriverUtils.buildColumnAlias(_this.connection.driver, relationIdAttr.parentAlias, joinColumn.databaseName)], joinColumn.referencedColumn);
|
|
41
|
+
var duplicatePart = joinColumn.databaseName + ":" + result[joinColumn.databaseName];
|
|
42
|
+
if (duplicateParts.indexOf(duplicatePart) === -1) {
|
|
43
|
+
duplicateParts.push(duplicatePart);
|
|
44
|
+
}
|
|
38
45
|
});
|
|
39
46
|
relationIdAttr.relation.entityMetadata.primaryColumns.forEach(function (primaryColumn) {
|
|
40
47
|
result[primaryColumn.databaseName] = _this.connection.driver.prepareHydratedValue(rawEntity[DriverUtils_1.DriverUtils.buildColumnAlias(_this.connection.driver, relationIdAttr.parentAlias, primaryColumn.databaseName)], primaryColumn);
|
|
48
|
+
var duplicatePart = primaryColumn.databaseName + ":" + result[primaryColumn.databaseName];
|
|
49
|
+
if (duplicateParts.indexOf(duplicatePart) === -1) {
|
|
50
|
+
duplicateParts.push(duplicatePart);
|
|
51
|
+
}
|
|
41
52
|
});
|
|
53
|
+
duplicateParts.sort();
|
|
54
|
+
var duplicate = duplicateParts.join("::");
|
|
55
|
+
if (duplicates_1.indexOf(duplicate) !== -1) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
duplicates_1.push(duplicate);
|
|
42
59
|
return result;
|
|
43
|
-
});
|
|
60
|
+
}).filter(function (v) { return v; });
|
|
44
61
|
return [2 /*return*/, {
|
|
45
62
|
relationIdAttribute: relationIdAttr,
|
|
46
63
|
results: results
|
|
@@ -52,14 +69,31 @@ var RelationIdLoader = /** @class */ (function () {
|
|
|
52
69
|
table = relation_1.inverseEntityMetadata.target;
|
|
53
70
|
tableName = relation_1.inverseEntityMetadata.tableName;
|
|
54
71
|
tableAlias_1 = relationIdAttr.alias || tableName;
|
|
72
|
+
duplicates_2 = [];
|
|
55
73
|
parameters_1 = {};
|
|
56
74
|
condition = rawEntities.map(function (rawEntity, index) {
|
|
57
|
-
|
|
75
|
+
var duplicateParts = [];
|
|
76
|
+
var parameterParts = {};
|
|
77
|
+
var queryPart = joinColumns_1.map(function (joinColumn) {
|
|
58
78
|
var parameterName = joinColumn.databaseName + index;
|
|
59
|
-
|
|
79
|
+
var parameterValue = rawEntity[DriverUtils_1.DriverUtils.buildColumnAlias(_this.connection.driver, relationIdAttr.parentAlias, joinColumn.referencedColumn.databaseName)];
|
|
80
|
+
var duplicatePart = tableAlias_1 + ":" + joinColumn.propertyPath + ":" + parameterValue;
|
|
81
|
+
if (duplicateParts.indexOf(duplicatePart) !== -1) {
|
|
82
|
+
return "";
|
|
83
|
+
}
|
|
84
|
+
duplicateParts.push(duplicatePart);
|
|
85
|
+
parameterParts[parameterName] = parameterValue;
|
|
60
86
|
return tableAlias_1 + "." + joinColumn.propertyPath + " = :" + parameterName;
|
|
61
|
-
}).join(" AND ");
|
|
62
|
-
|
|
87
|
+
}).filter(function (v) { return v; }).join(" AND ");
|
|
88
|
+
duplicateParts.sort();
|
|
89
|
+
var duplicate = duplicateParts.join("::");
|
|
90
|
+
if (duplicates_2.indexOf(duplicate) !== -1) {
|
|
91
|
+
return "";
|
|
92
|
+
}
|
|
93
|
+
duplicates_2.push(duplicate);
|
|
94
|
+
Object.assign(parameters_1, parameterParts);
|
|
95
|
+
return queryPart;
|
|
96
|
+
}).filter(function (v) { return v; }).map(function (condition) { return "(" + condition + ")"; })
|
|
63
97
|
.join(" OR ");
|
|
64
98
|
// ensure we won't perform redundant queries for joined data which was not found in selection
|
|
65
99
|
// example: if post.category was not found in db then no need to execute query for category.imageIds
|
|
@@ -112,13 +146,30 @@ var RelationIdLoader = /** @class */ (function () {
|
|
|
112
146
|
if (mappedColumns.length === 0)
|
|
113
147
|
return [2 /*return*/, { relationIdAttribute: relationIdAttr, results: [] }];
|
|
114
148
|
parameters_2 = {};
|
|
149
|
+
duplicates_3 = [];
|
|
115
150
|
joinColumnConditions = mappedColumns.map(function (mappedColumn, index) {
|
|
116
|
-
|
|
151
|
+
var duplicateParts = [];
|
|
152
|
+
var parameterParts = {};
|
|
153
|
+
var queryPart = Object.keys(mappedColumn).map(function (key) {
|
|
117
154
|
var parameterName = key + index;
|
|
118
|
-
|
|
155
|
+
var parameterValue = mappedColumn[key];
|
|
156
|
+
var duplicatePart = junctionAlias_1 + ":" + key + ":" + parameterValue;
|
|
157
|
+
if (duplicateParts.indexOf(duplicatePart) !== -1) {
|
|
158
|
+
return "";
|
|
159
|
+
}
|
|
160
|
+
duplicateParts.push(duplicatePart);
|
|
161
|
+
parameterParts[parameterName] = parameterValue;
|
|
119
162
|
return junctionAlias_1 + "." + key + " = :" + parameterName;
|
|
120
|
-
}).join(" AND ");
|
|
121
|
-
|
|
163
|
+
}).filter(function (s) { return s; }).join(" AND ");
|
|
164
|
+
duplicateParts.sort();
|
|
165
|
+
var duplicate = duplicateParts.join("::");
|
|
166
|
+
if (duplicates_3.indexOf(duplicate) !== -1) {
|
|
167
|
+
return "";
|
|
168
|
+
}
|
|
169
|
+
duplicates_3.push(duplicate);
|
|
170
|
+
Object.assign(parameters_2, parameterParts);
|
|
171
|
+
return queryPart;
|
|
172
|
+
}).filter(function (s) { return s; });
|
|
122
173
|
inverseJoinColumnCondition_1 = inverseJoinColumns_1.map(function (joinColumn) {
|
|
123
174
|
return junctionAlias_1 + "." + joinColumn.propertyPath + " = " + inverseSideTableAlias_1 + "." + joinColumn.referencedColumn.propertyPath;
|
|
124
175
|
}).join(" AND ");
|
|
@@ -144,7 +195,7 @@ var RelationIdLoader = /** @class */ (function () {
|
|
|
144
195
|
case 4:
|
|
145
196
|
results = _a.sent();
|
|
146
197
|
results.forEach(function (result) {
|
|
147
|
-
tslib_1.
|
|
198
|
+
tslib_1.__spreadArray(tslib_1.__spreadArray([], tslib_1.__read(joinColumns_2)), tslib_1.__read(inverseJoinColumns_1)).forEach(function (column) {
|
|
148
199
|
result[column.databaseName] = _this.connection.driver.prepareHydratedValue(result[column.databaseName], column.referencedColumn);
|
|
149
200
|
});
|
|
150
201
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/query-builder/relation-id/RelationIdLoader.ts"],"names":[],"mappings":"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","file":"RelationIdLoader.js","sourcesContent":["import {RelationIdAttribute} from \"./RelationIdAttribute\";\nimport {Connection} from \"../../connection/Connection\";\nimport {RelationIdLoadResult} from \"./RelationIdLoadResult\";\nimport {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {QueryRunner} from \"../../query-runner/QueryRunner\";\nimport {DriverUtils} from \"../../driver/DriverUtils\";\n\nexport class RelationIdLoader {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: Connection,\n protected queryRunner: QueryRunner|undefined,\n protected relationIdAttributes: RelationIdAttribute[]) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n async load(rawEntities: any[]): Promise<RelationIdLoadResult[]> {\n\n const promises = this.relationIdAttributes.map(async relationIdAttr => {\n\n if (relationIdAttr.relation.isManyToOne || relationIdAttr.relation.isOneToOneOwner) {\n // example: Post and Tag\n // loadRelationIdAndMap(\"post.tagId\", \"post.tag\")\n // we expect it to load id of tag\n\n if (relationIdAttr.queryBuilderFactory)\n throw new Error(\"Additional condition can not be used with ManyToOne or OneToOne owner relations.\");\n\n const results = rawEntities.map(rawEntity => {\n const result: ObjectLiteral = {};\n relationIdAttr.relation.joinColumns.forEach(joinColumn => {\n result[joinColumn.databaseName] = this.connection.driver.prepareHydratedValue(rawEntity[DriverUtils.buildColumnAlias(this.connection.driver, relationIdAttr.parentAlias, joinColumn.databaseName)], joinColumn.referencedColumn!);\n });\n\n relationIdAttr.relation.entityMetadata.primaryColumns.forEach(primaryColumn => {\n result[primaryColumn.databaseName] = this.connection.driver.prepareHydratedValue(rawEntity[DriverUtils.buildColumnAlias(this.connection.driver, relationIdAttr.parentAlias, primaryColumn.databaseName)], primaryColumn);\n });\n return result;\n });\n\n return {\n relationIdAttribute: relationIdAttr,\n results: results\n };\n\n } else if (relationIdAttr.relation.isOneToMany || relationIdAttr.relation.isOneToOneNotOwner) {\n // example: Post and Category\n // loadRelationIdAndMap(\"post.categoryIds\", \"post.categories\")\n // we expect it to load array of category ids\n\n const relation = relationIdAttr.relation; // \"post.categories\"\n const joinColumns = relation.isOwning ? relation.joinColumns : relation.inverseRelation!.joinColumns;\n const table = relation.inverseEntityMetadata.target; // category\n const tableName = relation.inverseEntityMetadata.tableName; // category\n const tableAlias = relationIdAttr.alias || tableName; // if condition (custom query builder factory) is set then relationIdAttr.alias defined\n\n const parameters: ObjectLiteral = {};\n const condition = rawEntities.map((rawEntity, index) => {\n return joinColumns.map(joinColumn => {\n const parameterName = joinColumn.databaseName + index;\n parameters[parameterName] = rawEntity[DriverUtils.buildColumnAlias(this.connection.driver, relationIdAttr.parentAlias, joinColumn.referencedColumn!.databaseName)];\n return tableAlias + \".\" + joinColumn.propertyPath + \" = :\" + parameterName;\n }).join(\" AND \");\n }).map(condition => \"(\" + condition + \")\")\n .join(\" OR \");\n\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (!condition)\n return { relationIdAttribute: relationIdAttr, results: [] };\n\n // generate query:\n // SELECT category.id, category.postId FROM category category ON category.postId = :postId\n const qb = this.connection.createQueryBuilder(this.queryRunner);\n\n joinColumns.forEach(joinColumn => {\n qb.addSelect(tableAlias + \".\" + joinColumn.propertyPath, joinColumn.databaseName);\n });\n\n relation.inverseRelation!.entityMetadata.primaryColumns.forEach(primaryColumn => {\n qb.addSelect(tableAlias + \".\" + primaryColumn.propertyPath, primaryColumn.databaseName);\n });\n\n qb.from(table, tableAlias)\n .where(\"(\" + condition + \")\") // need brackets because if we have additional condition and no brackets, it looks like (a = 1) OR (a = 2) AND b = 1, that is incorrect\n .setParameters(parameters);\n\n // apply condition (custom query builder factory)\n if (relationIdAttr.queryBuilderFactory)\n relationIdAttr.queryBuilderFactory(qb);\n\n const results = await qb.getRawMany();\n results.forEach(result => {\n joinColumns.forEach(column => {\n result[column.databaseName] = this.connection.driver.prepareHydratedValue(result[column.databaseName], column.referencedColumn!);\n });\n relation.inverseRelation!.entityMetadata.primaryColumns.forEach(column => {\n result[column.databaseName] = this.connection.driver.prepareHydratedValue(result[column.databaseName], column);\n });\n });\n\n return {\n relationIdAttribute: relationIdAttr,\n results\n };\n\n } else {\n // many-to-many\n // example: Post and Category\n // owner side: loadRelationIdAndMap(\"post.categoryIds\", \"post.categories\")\n // inverse side: loadRelationIdAndMap(\"category.postIds\", \"category.posts\")\n // we expect it to load array of post ids\n\n const relation = relationIdAttr.relation;\n const joinColumns = relation.isOwning ? relation.joinColumns : relation.inverseRelation!.inverseJoinColumns;\n const inverseJoinColumns = relation.isOwning ? relation.inverseJoinColumns : relation.inverseRelation!.joinColumns;\n const junctionAlias = relationIdAttr.junctionAlias;\n const inverseSideTableName = relationIdAttr.joinInverseSideMetadata.tableName;\n const inverseSideTableAlias = relationIdAttr.alias || inverseSideTableName;\n const junctionTableName = relation.isOwning ? relation.junctionEntityMetadata!.tableName : relation.inverseRelation!.junctionEntityMetadata!.tableName;\n\n\n const mappedColumns = rawEntities.map(rawEntity => {\n return joinColumns.reduce((map, joinColumn) => {\n map[joinColumn.propertyPath] = rawEntity[DriverUtils.buildColumnAlias(this.connection.driver, relationIdAttr.parentAlias, joinColumn.referencedColumn!.databaseName)];\n return map;\n }, {} as ObjectLiteral);\n });\n\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (mappedColumns.length === 0)\n return { relationIdAttribute: relationIdAttr, results: [] };\n\n const parameters: ObjectLiteral = {};\n const joinColumnConditions = mappedColumns.map((mappedColumn, index) => {\n return Object.keys(mappedColumn).map(key => {\n const parameterName = key + index;\n parameters[parameterName] = mappedColumn[key];\n return junctionAlias + \".\" + key + \" = :\" + parameterName;\n }).join(\" AND \");\n });\n\n const inverseJoinColumnCondition = inverseJoinColumns.map(joinColumn => {\n return junctionAlias + \".\" + joinColumn.propertyPath + \" = \" + inverseSideTableAlias + \".\" + joinColumn.referencedColumn!.propertyPath;\n }).join(\" AND \");\n\n const condition = joinColumnConditions.map(condition => {\n return \"(\" + condition + \" AND \" + inverseJoinColumnCondition + \")\";\n }).join(\" OR \");\n\n const qb = this.connection.createQueryBuilder(this.queryRunner);\n\n inverseJoinColumns.forEach(joinColumn => {\n qb.addSelect(junctionAlias + \".\" + joinColumn.propertyPath, joinColumn.databaseName)\n .addOrderBy(junctionAlias + \".\" + joinColumn.propertyPath);\n });\n\n joinColumns.forEach(joinColumn => {\n qb.addSelect(junctionAlias + \".\" + joinColumn.propertyPath, joinColumn.databaseName)\n .addOrderBy(junctionAlias + \".\" + joinColumn.propertyPath);\n });\n\n qb.from(inverseSideTableName, inverseSideTableAlias)\n .innerJoin(junctionTableName, junctionAlias, condition)\n .setParameters(parameters);\n\n // apply condition (custom query builder factory)\n if (relationIdAttr.queryBuilderFactory)\n relationIdAttr.queryBuilderFactory(qb);\n\n const results = await qb.getRawMany();\n results.forEach(result => {\n [...joinColumns, ...inverseJoinColumns].forEach(column => {\n result[column.databaseName] = this.connection.driver.prepareHydratedValue(result[column.databaseName], column.referencedColumn!);\n });\n });\n\n return {\n relationIdAttribute: relationIdAttr,\n results\n };\n }\n });\n\n return Promise.all(promises);\n }\n}\n"],"sourceRoot":"../.."}
|
|
1
|
+
{"version":3,"sources":["../../src/query-builder/relation-id/RelationIdLoader.ts"],"names":[],"mappings":";;;;AAKA,wDAAqD;AAErD;IAEI,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,0BAAsB,UAAsB,EACtB,WAAkC,EAClC,oBAA2C;QAF3C,eAAU,GAAV,UAAU,CAAY;QACtB,gBAAW,GAAX,WAAW,CAAuB;QAClC,yBAAoB,GAApB,oBAAoB,CAAuB;IACjE,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAEtE,+BAAI,GAAV,UAAW,WAAkB;;;;;gBAEnB,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,UAAM,cAAc;;;;;;qCAE3D,CAAA,cAAc,CAAC,QAAQ,CAAC,WAAW,IAAI,cAAc,CAAC,QAAQ,CAAC,eAAe,CAAA,EAA9E,wBAA8E;gCAC9E,wBAAwB;gCACxB,iDAAiD;gCACjD,iCAAiC;gCAEjC,IAAI,cAAc,CAAC,mBAAmB;oCAClC,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;gCAElG,eAA4B,EAAE,CAAC;gCAC/B,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,UAAA,SAAS;oCACrC,IAAM,MAAM,GAAkB,EAAE,CAAC;oCACjC,IAAM,cAAc,GAAkB,EAAE,CAAC;oCACzC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,UAAA,UAAU;wCAClD,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,yBAAW,CAAC,gBAAgB,CAAC,KAAI,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,WAAW,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAiB,CAAC,CAAC;wCAClO,IAAM,aAAa,GAAM,UAAU,CAAC,YAAY,SAAI,MAAM,CAAC,UAAU,CAAC,YAAY,CAAG,CAAC;wCACtF,IAAI,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE;4CAC9C,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;yCACtC;oCACL,CAAC,CAAC,CAAC;oCAEH,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,UAAA,aAAa;wCACvE,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,GAAG,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,yBAAW,CAAC,gBAAgB,CAAC,KAAI,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,WAAW,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;wCACzN,IAAM,aAAa,GAAM,aAAa,CAAC,YAAY,SAAI,MAAM,CAAC,aAAa,CAAC,YAAY,CAAG,CAAC;wCAC5F,IAAI,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE;4CAC9C,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;yCACtC;oCACL,CAAC,CAAC,CAAC;oCAEH,cAAc,CAAC,IAAI,EAAE,CAAC;oCACtB,IAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oCAC5C,IAAI,YAAU,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;wCACtC,OAAO,IAAI,CAAC;qCACf;oCACD,YAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oCAC3B,OAAO,MAAM,CAAC;gCAClB,CAAC,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,EAAD,CAAC,CAAC,CAAC;gCAElB,sBAAO;wCACH,mBAAmB,EAAE,cAAc;wCACnC,OAAO,EAAE,OAAO;qCACnB,EAAC;;qCAEK,CAAA,cAAc,CAAC,QAAQ,CAAC,WAAW,IAAI,cAAc,CAAC,QAAQ,CAAC,kBAAkB,CAAA,EAAjF,wBAAiF;gCAKlF,aAAW,cAAc,CAAC,QAAQ,CAAC;gCACnC,gBAAc,UAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,UAAQ,CAAC,eAAgB,CAAC,WAAW,CAAC;gCAC/F,KAAK,GAAG,UAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC;gCAC9C,SAAS,GAAG,UAAQ,CAAC,qBAAqB,CAAC,SAAS,CAAC;gCACrD,eAAa,cAAc,CAAC,KAAK,IAAI,SAAS,CAAC;gCAE/C,eAA4B,EAAE,CAAC;gCAC/B,eAA4B,EAAE,CAAC;gCAC/B,SAAS,GAAG,WAAW,CAAC,GAAG,CAAC,UAAC,SAAS,EAAE,KAAK;oCAC/C,IAAM,cAAc,GAAkB,EAAE,CAAC;oCACzC,IAAM,cAAc,GAAkB,EAAE,CAAC;oCACzC,IAAM,SAAS,GAAG,aAAW,CAAC,GAAG,CAAC,UAAA,UAAU;wCACxC,IAAM,aAAa,GAAG,UAAU,CAAC,YAAY,GAAG,KAAK,CAAC;wCACtD,IAAM,cAAc,GAAG,SAAS,CAAC,yBAAW,CAAC,gBAAgB,CAAC,KAAI,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,WAAW,EAAE,UAAU,CAAC,gBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC;wCAC9J,IAAM,aAAa,GAAM,YAAU,SAAI,UAAU,CAAC,YAAY,SAAI,cAAgB,CAAC;wCACnF,IAAI,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE;4CAC9C,OAAO,EAAE,CAAC;yCACb;wCACD,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;wCACnC,cAAc,CAAC,aAAa,CAAC,GAAG,cAAc,CAAC;wCAC/C,OAAO,YAAU,GAAG,GAAG,GAAG,UAAU,CAAC,YAAY,GAAG,MAAM,GAAG,aAAa,CAAC;oCAC/E,CAAC,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,EAAD,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oCAChC,cAAc,CAAC,IAAI,EAAE,CAAC;oCACtB,IAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oCAC5C,IAAI,YAAU,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;wCACtC,OAAO,EAAE,CAAC;qCACb;oCACD,YAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oCAC3B,MAAM,CAAC,MAAM,CAAC,YAAU,EAAE,cAAc,CAAC,CAAC;oCAC1C,OAAO,SAAS,CAAC;gCACrB,CAAC,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,EAAD,CAAC,CAAC,CAAC,GAAG,CAAC,UAAA,SAAS,IAAI,OAAA,GAAG,GAAG,SAAS,GAAG,GAAG,EAArB,CAAqB,CAAC;qCACpD,IAAI,CAAC,MAAM,CAAC,CAAC;gCAElB,6FAA6F;gCAC7F,oGAAoG;gCACpG,IAAI,CAAC,SAAS;oCACV,sBAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,OAAO,EAAE,EAAE,EAAE,EAAC;gCAI1D,OAAK,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gCAEhE,aAAW,CAAC,OAAO,CAAC,UAAA,UAAU;oCAC1B,IAAE,CAAC,SAAS,CAAC,YAAU,GAAG,GAAG,GAAG,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;gCACtF,CAAC,CAAC,CAAC;gCAEH,UAAQ,CAAC,eAAgB,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,UAAA,aAAa;oCACzE,IAAE,CAAC,SAAS,CAAC,YAAU,GAAG,GAAG,GAAG,aAAa,CAAC,YAAY,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;gCAC5F,CAAC,CAAC,CAAC;gCAEH,IAAE,CAAC,IAAI,CAAC,KAAK,EAAE,YAAU,CAAC;qCACrB,KAAK,CAAC,GAAG,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC,uIAAuI;qCACpK,aAAa,CAAC,YAAU,CAAC,CAAC;gCAE/B,iDAAiD;gCACjD,IAAI,cAAc,CAAC,mBAAmB;oCAClC,cAAc,CAAC,mBAAmB,CAAC,IAAE,CAAC,CAAC;gCAE3B,qBAAM,IAAE,CAAC,UAAU,EAAE,EAAA;;gCAA/B,OAAO,GAAG,SAAqB;gCACrC,OAAO,CAAC,OAAO,CAAC,UAAA,MAAM;oCAClB,aAAW,CAAC,OAAO,CAAC,UAAA,MAAM;wCACtB,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,gBAAiB,CAAC,CAAC;oCACrI,CAAC,CAAC,CAAC;oCACH,UAAQ,CAAC,eAAgB,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,UAAA,MAAM;wCAClE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC;oCACnH,CAAC,CAAC,CAAC;gCACP,CAAC,CAAC,CAAC;gCAEH,sBAAO;wCACH,mBAAmB,EAAE,cAAc;wCACnC,OAAO,SAAA;qCACV,EAAC;;gCASI,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;gCACnC,gBAAc,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAgB,CAAC,kBAAkB,CAAC;gCACtG,uBAAqB,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAgB,CAAC,WAAW,CAAC;gCAC7G,kBAAgB,cAAc,CAAC,aAAa,CAAC;gCAC7C,oBAAoB,GAAG,cAAc,CAAC,uBAAuB,CAAC,SAAS,CAAC;gCACxE,0BAAwB,cAAc,CAAC,KAAK,IAAI,oBAAoB,CAAC;gCACrE,iBAAiB,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,sBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAgB,CAAC,sBAAuB,CAAC,SAAS,CAAC;gCAGjJ,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,UAAA,SAAS;oCAC3C,OAAO,aAAW,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,UAAU;wCACtC,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,yBAAW,CAAC,gBAAgB,CAAC,KAAI,CAAC,UAAU,CAAC,MAAM,EAAE,cAAc,CAAC,WAAW,EAAE,UAAU,CAAC,gBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC;wCACtK,OAAO,GAAG,CAAC;oCACf,CAAC,EAAE,EAAmB,CAAC,CAAC;gCAC5B,CAAC,CAAC,CAAC;gCAEH,6FAA6F;gCAC7F,oGAAoG;gCACpG,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;oCAC1B,sBAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,OAAO,EAAE,EAAE,EAAE,EAAC;gCAE1D,eAA4B,EAAE,CAAC;gCAC/B,eAA4B,EAAE,CAAC;gCAC/B,oBAAoB,GAAG,aAAa,CAAC,GAAG,CAAC,UAAC,YAAY,EAAE,KAAK;oCAC/D,IAAM,cAAc,GAAkB,EAAE,CAAC;oCACzC,IAAM,cAAc,GAAkB,EAAE,CAAC;oCACzC,IAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG;wCAC/C,IAAM,aAAa,GAAG,GAAG,GAAG,KAAK,CAAC;wCAClC,IAAM,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;wCACzC,IAAM,aAAa,GAAM,eAAa,SAAI,GAAG,SAAI,cAAgB,CAAC;wCAClE,IAAI,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE;4CAC9C,OAAO,EAAE,CAAC;yCACb;wCACD,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;wCACnC,cAAc,CAAC,aAAa,CAAC,GAAG,cAAc,CAAC;wCAC/C,OAAO,eAAa,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,GAAG,aAAa,CAAC;oCAC9D,CAAC,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,EAAD,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oCAChC,cAAc,CAAC,IAAI,EAAE,CAAC;oCACtB,IAAM,SAAS,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oCAC5C,IAAI,YAAU,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;wCACtC,OAAO,EAAE,CAAC;qCACb;oCACD,YAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oCAC3B,MAAM,CAAC,MAAM,CAAC,YAAU,EAAE,cAAc,CAAC,CAAC;oCAC1C,OAAO,SAAS,CAAC;gCACrB,CAAC,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,EAAD,CAAC,CAAC,CAAC;gCAEZ,+BAA6B,oBAAkB,CAAC,GAAG,CAAC,UAAA,UAAU;oCAChE,OAAO,eAAa,GAAG,GAAG,GAAG,UAAU,CAAC,YAAY,GAAG,KAAK,GAAG,uBAAqB,GAAG,GAAG,GAAG,UAAU,CAAC,gBAAiB,CAAC,YAAY,CAAC;gCAC3I,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gCAEX,SAAS,GAAG,oBAAoB,CAAC,GAAG,CAAC,UAAA,SAAS;oCAChD,OAAO,GAAG,GAAG,SAAS,GAAG,OAAO,GAAG,4BAA0B,GAAG,GAAG,CAAC;gCACxE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gCAEV,OAAK,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gCAEhE,oBAAkB,CAAC,OAAO,CAAC,UAAA,UAAU;oCACjC,IAAE,CAAC,SAAS,CAAC,eAAa,GAAG,GAAG,GAAG,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC;yCACnF,UAAU,CAAC,eAAa,GAAG,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;gCAC/D,CAAC,CAAC,CAAC;gCAEH,aAAW,CAAC,OAAO,CAAC,UAAA,UAAU;oCAC1B,IAAE,CAAC,SAAS,CAAC,eAAa,GAAG,GAAG,GAAG,UAAU,CAAC,YAAY,EAAE,UAAU,CAAC,YAAY,CAAC;yCACnF,UAAU,CAAC,eAAa,GAAG,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;gCAC/D,CAAC,CAAC,CAAC;gCAEH,IAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,uBAAqB,CAAC;qCAC/C,SAAS,CAAC,iBAAiB,EAAE,eAAa,EAAE,SAAS,CAAC;qCACtD,aAAa,CAAC,YAAU,CAAC,CAAC;gCAE/B,iDAAiD;gCACjD,IAAI,cAAc,CAAC,mBAAmB;oCAClC,cAAc,CAAC,mBAAmB,CAAC,IAAE,CAAC,CAAC;gCAE3B,qBAAM,IAAE,CAAC,UAAU,EAAE,EAAA;;gCAA/B,OAAO,GAAG,SAAqB;gCACrC,OAAO,CAAC,OAAO,CAAC,UAAA,MAAM;oCAClB,+DAAI,aAAW,mBAAK,oBAAkB,GAAE,OAAO,CAAC,UAAA,MAAM;wCAClD,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,gBAAiB,CAAC,CAAC;oCACrI,CAAC,CAAC,CAAC;gCACP,CAAC,CAAC,CAAC;gCAEH,sBAAO;wCACH,mBAAmB,EAAE,cAAc;wCACnC,OAAO,SAAA;qCACV,EAAC;;;qBAET,CAAC,CAAC;gBAEH,sBAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAC;;;KAChC;IACL,uBAAC;AAAD,CA7OA,AA6OC,IAAA;AA7OY,4CAAgB","file":"RelationIdLoader.js","sourcesContent":["import {RelationIdAttribute} from \"./RelationIdAttribute\";\nimport {Connection} from \"../../connection/Connection\";\nimport {RelationIdLoadResult} from \"./RelationIdLoadResult\";\nimport {ObjectLiteral} from \"../../common/ObjectLiteral\";\nimport {QueryRunner} from \"../../query-runner/QueryRunner\";\nimport {DriverUtils} from \"../../driver/DriverUtils\";\n\nexport class RelationIdLoader {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected connection: Connection,\n protected queryRunner: QueryRunner|undefined,\n protected relationIdAttributes: RelationIdAttribute[]) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n async load(rawEntities: any[]): Promise<RelationIdLoadResult[]> {\n\n const promises = this.relationIdAttributes.map(async relationIdAttr => {\n\n if (relationIdAttr.relation.isManyToOne || relationIdAttr.relation.isOneToOneOwner) {\n // example: Post and Tag\n // loadRelationIdAndMap(\"post.tagId\", \"post.tag\")\n // we expect it to load id of tag\n\n if (relationIdAttr.queryBuilderFactory)\n throw new Error(\"Additional condition can not be used with ManyToOne or OneToOne owner relations.\");\n\n const duplicates: Array<string> = [];\n const results = rawEntities.map(rawEntity => {\n const result: ObjectLiteral = {};\n const duplicateParts: Array<string> = [];\n relationIdAttr.relation.joinColumns.forEach(joinColumn => {\n result[joinColumn.databaseName] = this.connection.driver.prepareHydratedValue(rawEntity[DriverUtils.buildColumnAlias(this.connection.driver, relationIdAttr.parentAlias, joinColumn.databaseName)], joinColumn.referencedColumn!);\n const duplicatePart = `${joinColumn.databaseName}:${result[joinColumn.databaseName]}`;\n if (duplicateParts.indexOf(duplicatePart) === -1) {\n duplicateParts.push(duplicatePart);\n }\n });\n\n relationIdAttr.relation.entityMetadata.primaryColumns.forEach(primaryColumn => {\n result[primaryColumn.databaseName] = this.connection.driver.prepareHydratedValue(rawEntity[DriverUtils.buildColumnAlias(this.connection.driver, relationIdAttr.parentAlias, primaryColumn.databaseName)], primaryColumn);\n const duplicatePart = `${primaryColumn.databaseName}:${result[primaryColumn.databaseName]}`;\n if (duplicateParts.indexOf(duplicatePart) === -1) {\n duplicateParts.push(duplicatePart);\n }\n });\n\n duplicateParts.sort();\n const duplicate = duplicateParts.join(\"::\");\n if (duplicates.indexOf(duplicate) !== -1) {\n return null;\n }\n duplicates.push(duplicate);\n return result;\n }).filter(v => v);\n\n return {\n relationIdAttribute: relationIdAttr,\n results: results\n };\n\n } else if (relationIdAttr.relation.isOneToMany || relationIdAttr.relation.isOneToOneNotOwner) {\n // example: Post and Category\n // loadRelationIdAndMap(\"post.categoryIds\", \"post.categories\")\n // we expect it to load array of category ids\n\n const relation = relationIdAttr.relation; // \"post.categories\"\n const joinColumns = relation.isOwning ? relation.joinColumns : relation.inverseRelation!.joinColumns;\n const table = relation.inverseEntityMetadata.target; // category\n const tableName = relation.inverseEntityMetadata.tableName; // category\n const tableAlias = relationIdAttr.alias || tableName; // if condition (custom query builder factory) is set then relationIdAttr.alias defined\n\n const duplicates: Array<string> = [];\n const parameters: ObjectLiteral = {};\n const condition = rawEntities.map((rawEntity, index) => {\n const duplicateParts: Array<string> = [];\n const parameterParts: ObjectLiteral = {};\n const queryPart = joinColumns.map(joinColumn => {\n const parameterName = joinColumn.databaseName + index;\n const parameterValue = rawEntity[DriverUtils.buildColumnAlias(this.connection.driver, relationIdAttr.parentAlias, joinColumn.referencedColumn!.databaseName)];\n const duplicatePart = `${tableAlias}:${joinColumn.propertyPath}:${parameterValue}`;\n if (duplicateParts.indexOf(duplicatePart) !== -1) {\n return \"\";\n }\n duplicateParts.push(duplicatePart);\n parameterParts[parameterName] = parameterValue;\n return tableAlias + \".\" + joinColumn.propertyPath + \" = :\" + parameterName;\n }).filter(v => v).join(\" AND \");\n duplicateParts.sort();\n const duplicate = duplicateParts.join(\"::\");\n if (duplicates.indexOf(duplicate) !== -1) {\n return \"\";\n }\n duplicates.push(duplicate);\n Object.assign(parameters, parameterParts);\n return queryPart;\n }).filter(v => v).map(condition => \"(\" + condition + \")\")\n .join(\" OR \");\n\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (!condition)\n return { relationIdAttribute: relationIdAttr, results: [] };\n\n // generate query:\n // SELECT category.id, category.postId FROM category category ON category.postId = :postId\n const qb = this.connection.createQueryBuilder(this.queryRunner);\n\n joinColumns.forEach(joinColumn => {\n qb.addSelect(tableAlias + \".\" + joinColumn.propertyPath, joinColumn.databaseName);\n });\n\n relation.inverseRelation!.entityMetadata.primaryColumns.forEach(primaryColumn => {\n qb.addSelect(tableAlias + \".\" + primaryColumn.propertyPath, primaryColumn.databaseName);\n });\n\n qb.from(table, tableAlias)\n .where(\"(\" + condition + \")\") // need brackets because if we have additional condition and no brackets, it looks like (a = 1) OR (a = 2) AND b = 1, that is incorrect\n .setParameters(parameters);\n\n // apply condition (custom query builder factory)\n if (relationIdAttr.queryBuilderFactory)\n relationIdAttr.queryBuilderFactory(qb);\n\n const results = await qb.getRawMany();\n results.forEach(result => {\n joinColumns.forEach(column => {\n result[column.databaseName] = this.connection.driver.prepareHydratedValue(result[column.databaseName], column.referencedColumn!);\n });\n relation.inverseRelation!.entityMetadata.primaryColumns.forEach(column => {\n result[column.databaseName] = this.connection.driver.prepareHydratedValue(result[column.databaseName], column);\n });\n });\n\n return {\n relationIdAttribute: relationIdAttr,\n results\n };\n\n } else {\n // many-to-many\n // example: Post and Category\n // owner side: loadRelationIdAndMap(\"post.categoryIds\", \"post.categories\")\n // inverse side: loadRelationIdAndMap(\"category.postIds\", \"category.posts\")\n // we expect it to load array of post ids\n\n const relation = relationIdAttr.relation;\n const joinColumns = relation.isOwning ? relation.joinColumns : relation.inverseRelation!.inverseJoinColumns;\n const inverseJoinColumns = relation.isOwning ? relation.inverseJoinColumns : relation.inverseRelation!.joinColumns;\n const junctionAlias = relationIdAttr.junctionAlias;\n const inverseSideTableName = relationIdAttr.joinInverseSideMetadata.tableName;\n const inverseSideTableAlias = relationIdAttr.alias || inverseSideTableName;\n const junctionTableName = relation.isOwning ? relation.junctionEntityMetadata!.tableName : relation.inverseRelation!.junctionEntityMetadata!.tableName;\n\n\n const mappedColumns = rawEntities.map(rawEntity => {\n return joinColumns.reduce((map, joinColumn) => {\n map[joinColumn.propertyPath] = rawEntity[DriverUtils.buildColumnAlias(this.connection.driver, relationIdAttr.parentAlias, joinColumn.referencedColumn!.databaseName)];\n return map;\n }, {} as ObjectLiteral);\n });\n\n // ensure we won't perform redundant queries for joined data which was not found in selection\n // example: if post.category was not found in db then no need to execute query for category.imageIds\n if (mappedColumns.length === 0)\n return { relationIdAttribute: relationIdAttr, results: [] };\n\n const parameters: ObjectLiteral = {};\n const duplicates: Array<string> = [];\n const joinColumnConditions = mappedColumns.map((mappedColumn, index) => {\n const duplicateParts: Array<string> = [];\n const parameterParts: ObjectLiteral = {};\n const queryPart = Object.keys(mappedColumn).map(key => {\n const parameterName = key + index;\n const parameterValue = mappedColumn[key];\n const duplicatePart = `${junctionAlias}:${key}:${parameterValue}`;\n if (duplicateParts.indexOf(duplicatePart) !== -1) {\n return \"\";\n }\n duplicateParts.push(duplicatePart);\n parameterParts[parameterName] = parameterValue;\n return junctionAlias + \".\" + key + \" = :\" + parameterName;\n }).filter(s => s).join(\" AND \");\n duplicateParts.sort();\n const duplicate = duplicateParts.join(\"::\");\n if (duplicates.indexOf(duplicate) !== -1) {\n return \"\";\n }\n duplicates.push(duplicate);\n Object.assign(parameters, parameterParts);\n return queryPart;\n }).filter(s => s);\n\n const inverseJoinColumnCondition = inverseJoinColumns.map(joinColumn => {\n return junctionAlias + \".\" + joinColumn.propertyPath + \" = \" + inverseSideTableAlias + \".\" + joinColumn.referencedColumn!.propertyPath;\n }).join(\" AND \");\n\n const condition = joinColumnConditions.map(condition => {\n return \"(\" + condition + \" AND \" + inverseJoinColumnCondition + \")\";\n }).join(\" OR \");\n\n const qb = this.connection.createQueryBuilder(this.queryRunner);\n\n inverseJoinColumns.forEach(joinColumn => {\n qb.addSelect(junctionAlias + \".\" + joinColumn.propertyPath, joinColumn.databaseName)\n .addOrderBy(junctionAlias + \".\" + joinColumn.propertyPath);\n });\n\n joinColumns.forEach(joinColumn => {\n qb.addSelect(junctionAlias + \".\" + joinColumn.propertyPath, joinColumn.databaseName)\n .addOrderBy(junctionAlias + \".\" + joinColumn.propertyPath);\n });\n\n qb.from(inverseSideTableName, inverseSideTableAlias)\n .innerJoin(junctionTableName, junctionAlias, condition)\n .setParameters(parameters);\n\n // apply condition (custom query builder factory)\n if (relationIdAttr.queryBuilderFactory)\n relationIdAttr.queryBuilderFactory(qb);\n\n const results = await qb.getRawMany();\n results.forEach(result => {\n [...joinColumns, ...inverseJoinColumns].forEach(column => {\n result[column.databaseName] = this.connection.driver.prepareHydratedValue(result[column.databaseName], column.referencedColumn!);\n });\n });\n\n return {\n relationIdAttribute: relationIdAttr,\n results\n };\n }\n });\n\n return Promise.all(promises);\n }\n}\n"],"sourceRoot":"../.."}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RelationIdMetadataToAttributeTransformer = void 0;
|
|
3
4
|
var RelationIdAttribute_1 = require("./RelationIdAttribute");
|
|
4
5
|
var RelationIdMetadataToAttributeTransformer = /** @class */ (function () {
|
|
5
6
|
// -------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.ts"],"names":[],"mappings":";;;AAAA,6DAA0D;AAI1D;IAEI,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,kDAAsB,aAAiC;QAAjC,kBAAa,GAAb,aAAa,CAAoB;IACvD,CAAC;IAED,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E,4DAAS,GAAT;QAEI,cAAc;QACd,wBAAwB;QACxB,mDAAmD;QACnD,2BAA2B;QAC3B,oDAAoD;QACpD,iCAAiC;QACjC,6EAA6E;QARjF,iBA8BC;QApBG,oHAAoH;QACpH,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;YAC9B,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,UAAA,UAAU;gBAChE,IAAM,SAAS,GAAG,KAAI,CAAC,mBAAmB,CAAC,KAAI,CAAC,aAAa,CAAC,SAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAC3F,KAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;SACN;QAED,mHAAmH;QACnH,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,UAAA,IAAI;YAE1C,2FAA2F;YAC3F,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU;gBAC1C,OAAO;YAEX,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO,CAAC,UAAA,UAAU;gBACxC,IAAM,SAAS,GAAG,KAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBACxE,KAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAED,4EAA4E;IAC5E,kBAAkB;IAClB,4EAA4E;IAEpE,sEAAmB,GAA3B,UAA4B,eAAuB,EAAE,UAA8B;QAC/E,OAAO,IAAI,yCAAmB,CAAC,IAAI,CAAC,aAAa,EAAE;YAC/C,YAAY,EAAE,eAAe,GAAG,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY;YACtE,aAAa,EAAE,eAAe,GAAG,GAAG,GAAG,UAAU,CAAC,YAAY;YAC9D,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,mBAAmB,EAAE,UAAU,CAAC,mBAAmB;SACtD,CAAC,CAAC;IACP,CAAC;IAEL,+CAAC;AAAD,CA1DA,AA0DC,IAAA;AA1DY,4FAAwC","file":"RelationIdMetadataToAttributeTransformer.js","sourcesContent":["import {RelationIdAttribute} from \"./RelationIdAttribute\";\nimport {QueryExpressionMap} from \"../QueryExpressionMap\";\nimport {RelationIdMetadata} from \"../../metadata/RelationIdMetadata\";\n\nexport class RelationIdMetadataToAttributeTransformer {\n\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(protected expressionMap: QueryExpressionMap) {\n }\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n transform() {\n\n // by example:\n // post has relation id:\n // @RelationId(post => post.categories) categoryIds\n // category has relation id\n // @RelationId(category => category.images) imageIds\n // we load post and join category\n // we expect post.categoryIds and post.category.imageIds to have relation ids\n\n // first create relation id attributes for all relation id metadatas of the main selected object (post from example)\n if (this.expressionMap.mainAlias) {\n this.expressionMap.mainAlias.metadata.relationIds.forEach(relationId => {\n const attribute = this.metadataToAttribute(this.expressionMap.mainAlias!.name, relationId);\n this.expressionMap.relationIdAttributes.push(attribute);\n });\n }\n\n // second create relation id attributes for all relation id metadatas of all joined objects (category from example)\n this.expressionMap.joinAttributes.forEach(join => {\n\n // ensure this join has a metadata, because relation id can only work for real orm entities\n if (!join.metadata || join.metadata.isJunction)\n return;\n\n join.metadata.relationIds.forEach(relationId => {\n const attribute = this.metadataToAttribute(join.alias.name, relationId);\n this.expressionMap.relationIdAttributes.push(attribute);\n });\n });\n }\n\n // -------------------------------------------------------------------------\n // Private Methods\n // -------------------------------------------------------------------------\n\n private metadataToAttribute(parentAliasName: string, relationId: RelationIdMetadata): RelationIdAttribute {\n return new RelationIdAttribute(this.expressionMap, {\n relationName: parentAliasName + \".\" + relationId.relation.propertyName, // category.images\n mapToProperty: parentAliasName + \".\" + relationId.propertyName, // category.imageIds\n alias: relationId.alias,\n queryBuilderFactory: relationId.queryBuilderFactory\n });\n }\n\n}"],"sourceRoot":"../.."}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/query-builder/result/DeleteResult.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/query-builder/result/DeleteResult.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH;IAAA;IAWA,CAAC;IAAD,mBAAC;AAAD,CAXA,AAWC,IAAA;AAXY,oCAAY","file":"DeleteResult.js","sourcesContent":["/**\n * Result object returned by DeleteQueryBuilder execution.\n */\nexport class DeleteResult {\n /**\n * Raw SQL result returned by executed query.\n */\n raw: any;\n\n /**\n * Number of affected rows/documents\n * Not all drivers support this\n */\n affected?: number|null;\n}\n"],"sourceRoot":"../.."}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/query-builder/result/InsertResult.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/query-builder/result/InsertResult.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH;IAAA;QAEI;;;WAGG;QACH,gBAAW,GAAoB,EAAE,CAAC;QAElC;;;WAGG;QACH,kBAAa,GAAoB,EAAE,CAAC;IAOxC,CAAC;IAAD,mBAAC;AAAD,CAnBA,AAmBC,IAAA;AAnBY,oCAAY","file":"InsertResult.js","sourcesContent":["import {ObjectLiteral} from \"../../common/ObjectLiteral\";\n\n/**\n * Result object returned by InsertQueryBuilder execution.\n */\nexport class InsertResult {\n\n /**\n * Contains inserted entity id.\n * Has entity-like structure (not just column database name and values).\n */\n identifiers: ObjectLiteral[] = [];\n\n /**\n * Generated values returned by a database.\n * Has entity-like structure (not just column database name and values).\n */\n generatedMaps: ObjectLiteral[] = [];\n\n /**\n * Raw SQL result returned by executed query.\n */\n raw: any;\n\n}"],"sourceRoot":"../.."}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/query-builder/result/UpdateResult.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../src/query-builder/result/UpdateResult.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH;IAAA;QAaI;;;WAGG;QACH,oCAAoC;QAEpC;;;WAGG;QACH,kBAAa,GAAoB,EAAE,CAAC;IAExC,CAAC;IAAD,mBAAC;AAAD,CAzBA,AAyBC,IAAA;AAzBY,oCAAY","file":"UpdateResult.js","sourcesContent":["import {ObjectLiteral} from \"../../common/ObjectLiteral\";\n\n/**\n * Result object returned by UpdateQueryBuilder execution.\n */\nexport class UpdateResult {\n\n /**\n * Raw SQL result returned by executed query.\n */\n raw: any;\n\n /**\n * Number of affected rows/documents\n * Not all drivers support this\n */\n affected?: number;\n\n /**\n * Contains inserted entity id.\n * Has entity-like structure (not just column database name and values).\n */\n // identifier: ObjectLiteral[] = [];\n\n /**\n * Generated values returned by a database.\n * Has entity-like structure (not just column database name and values).\n */\n generatedMaps: ObjectLiteral[] = [];\n\n}\n"],"sourceRoot":"../.."}
|