typeorm 0.3.20-dev.fa86f6f → 0.3.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/browser/cache/DbQueryResultCache.js +1 -1
- package/browser/cache/DbQueryResultCache.js.map +1 -1
- package/browser/cache/QueryResultCacheFactory.js.map +1 -1
- package/browser/cache/RedisQueryResultCache.js +1 -1
- package/browser/cache/RedisQueryResultCache.js.map +1 -1
- package/browser/cli-ts-node-esm.js.map +1 -1
- package/browser/connection/ConnectionManager.js.map +1 -1
- package/browser/connection/ConnectionMetadataBuilder.js.map +1 -1
- package/browser/connection/ConnectionOptionsReader.js.map +1 -1
- package/browser/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
- package/browser/container.js.map +1 -1
- package/browser/data-source/DataSource.js +3 -1
- package/browser/data-source/DataSource.js.map +1 -1
- package/browser/decorator/Unique.js.map +1 -1
- package/browser/decorator/columns/Column.js.map +1 -1
- package/browser/decorator/columns/PrimaryColumn.js.map +1 -1
- package/browser/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
- package/browser/decorator/columns/VirtualColumn.js +1 -1
- package/browser/decorator/columns/VirtualColumn.js.map +1 -1
- package/browser/decorator/entity/ChildEntity.js.map +1 -1
- package/browser/decorator/relations/ManyToMany.js.map +1 -1
- package/browser/decorator/relations/ManyToOne.js.map +1 -1
- package/browser/decorator/relations/OneToMany.js.map +1 -1
- package/browser/decorator/relations/OneToOne.js.map +1 -1
- package/browser/driver/DriverFactory.js.map +1 -1
- package/browser/driver/DriverUtils.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.js +10 -10
- package/browser/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js +2 -2
- package/browser/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
- package/browser/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
- package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js +2 -2
- package/browser/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
- package/browser/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
- package/browser/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
- package/browser/driver/capacitor/CapacitorDriver.js.map +1 -1
- package/browser/driver/capacitor/CapacitorQueryRunner.js +2 -2
- package/browser/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/browser/driver/cockroachdb/CockroachQueryRunner.js +3 -3
- package/browser/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/browser/driver/cordova/CordovaDriver.js.map +1 -1
- package/browser/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/browser/driver/expo/ExpoDriver.js.map +1 -1
- package/browser/driver/expo/ExpoQueryRunner.js +2 -2
- package/browser/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/browser/driver/mongodb/MongoDriver.js.map +1 -1
- package/browser/driver/mysql/MysqlDriver.js +12 -14
- package/browser/driver/mysql/MysqlDriver.js.map +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.js +1 -1
- package/browser/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/browser/driver/nativescript/NativescriptDriver.js.map +1 -1
- package/browser/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/browser/driver/oracle/OracleDriver.js +18 -10
- package/browser/driver/oracle/OracleDriver.js.map +1 -1
- package/browser/driver/oracle/OracleQueryRunner.js +8 -10
- package/browser/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/browser/driver/postgres/PostgresDriver.js +11 -6
- package/browser/driver/postgres/PostgresDriver.js.map +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.d.ts +1 -1
- package/browser/driver/postgres/PostgresQueryRunner.js +31 -12
- package/browser/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/browser/driver/react-native/ReactNativeDriver.js +4 -6
- package/browser/driver/react-native/ReactNativeDriver.js.map +1 -1
- package/browser/driver/react-native/ReactNativeQueryRunner.js +2 -2
- package/browser/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/browser/driver/sap/SapDriver.js.map +1 -1
- package/browser/driver/sap/SapQueryRunner.js +4 -4
- package/browser/driver/sap/SapQueryRunner.js.map +1 -1
- package/browser/driver/spanner/SpannerDriver.js.map +1 -1
- package/browser/driver/spanner/SpannerQueryRunner.js.map +1 -1
- package/browser/driver/sqlite/SqliteDriver.js.map +1 -1
- package/browser/driver/sqlite/SqliteQueryRunner.js +3 -2
- package/browser/driver/sqlite/SqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js +4 -6
- package/browser/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +4 -4
- package/browser/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/browser/driver/sqljs/SqljsDriver.js +1 -2
- package/browser/driver/sqljs/SqljsDriver.js.map +1 -1
- package/browser/driver/sqljs/SqljsQueryRunner.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/browser/driver/sqlserver/SqlServerQueryRunner.js +9 -7
- package/browser/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/browser/driver/types/ColumnTypes.d.ts +1 -1
- package/browser/driver/types/ColumnTypes.js.map +1 -1
- package/browser/entity-manager/EntityManager.d.ts +2 -2
- package/browser/entity-manager/EntityManager.js.map +1 -1
- package/browser/entity-manager/MongoEntityManager.js +1 -1
- package/browser/entity-manager/MongoEntityManager.js.map +1 -1
- package/browser/entity-schema/EntitySchemaTransformer.js +2 -3
- package/browser/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/browser/error/EntityMetadataNotFoundError.js.map +1 -1
- package/browser/error/EntityNotFoundError.js.map +1 -1
- package/browser/error/FindRelationsNotFoundError.js.map +1 -1
- package/browser/error/MissingJoinColumnError.js.map +1 -1
- package/browser/error/MissingJoinTableError.js.map +1 -1
- package/browser/error/QueryFailedError.js.map +1 -1
- package/browser/error/RepositoryNotTreeError.js.map +1 -1
- package/browser/error/TypeORMError.js.map +1 -1
- package/browser/find-options/FindOperator.js.map +1 -1
- package/browser/find-options/FindOptionsUtils.js +1 -1
- package/browser/find-options/FindOptionsUtils.js.map +1 -1
- package/browser/find-options/operator/Raw.js.map +1 -1
- package/browser/globals.js.map +1 -1
- package/browser/logger/AbstractLogger.js.map +1 -1
- package/browser/logger/AdvancedConsoleLogger.js +1 -2
- package/browser/logger/AdvancedConsoleLogger.js.map +1 -1
- package/browser/logger/DebugLogger.js +1 -2
- package/browser/logger/DebugLogger.js.map +1 -1
- package/browser/logger/FileLogger.js +2 -3
- package/browser/logger/FileLogger.js.map +1 -1
- package/browser/logger/LoggerFactory.js.map +1 -1
- package/browser/logger/SimpleConsoleLogger.js +1 -2
- package/browser/logger/SimpleConsoleLogger.js.map +1 -1
- package/browser/metadata/CheckMetadata.js.map +1 -1
- package/browser/metadata/ColumnMetadata.js +1 -6
- package/browser/metadata/ColumnMetadata.js.map +1 -1
- package/browser/metadata/EmbeddedMetadata.js +1 -1
- package/browser/metadata/EmbeddedMetadata.js.map +1 -1
- package/browser/metadata/EntityListenerMetadata.js.map +1 -1
- package/browser/metadata/EntityMetadata.js +3 -7
- package/browser/metadata/EntityMetadata.js.map +1 -1
- package/browser/metadata/ExclusionMetadata.js.map +1 -1
- package/browser/metadata/IndexMetadata.js.map +1 -1
- package/browser/metadata/RelationIdMetadata.js.map +1 -1
- package/browser/metadata/RelationMetadata.js.map +1 -1
- package/browser/metadata/UniqueMetadata.js.map +1 -1
- package/browser/metadata-args/MetadataArgsStorage.js.map +1 -1
- package/browser/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataBuilder.js +5 -8
- package/browser/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.js +7 -8
- package/browser/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/browser/metadata-builder/MetadataUtils.js.map +1 -1
- package/browser/metadata-builder/RelationJoinColumnBuilder.js +2 -3
- package/browser/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/browser/migration/MigrationExecutor.js +2 -2
- package/browser/migration/MigrationExecutor.js.map +1 -1
- package/browser/naming-strategy/DefaultNamingStrategy.js.map +1 -1
- package/browser/naming-strategy/LegacyOracleNamingStrategy.js.map +1 -1
- package/browser/persistence/EntityPersistExecutor.js.map +1 -1
- package/browser/persistence/Subject.js.map +1 -1
- package/browser/persistence/SubjectChangedColumnsComputer.js.map +1 -1
- package/browser/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/browser/persistence/SubjectExecutor.js.map +1 -1
- 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.map +1 -1
- package/browser/persistence/subject-builder/OneToManySubjectBuilder.js +1 -2
- package/browser/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
- package/browser/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
- package/browser/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
- package/browser/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
- package/browser/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
- package/browser/platform/BrowserPlatformTools.js.map +1 -1
- package/browser/platform/PlatformTools.d.ts +3 -0
- package/browser/platform/PlatformTools.js.map +1 -1
- package/browser/query-builder/DeleteQueryBuilder.js.map +1 -1
- package/browser/query-builder/InsertQueryBuilder.js +15 -15
- package/browser/query-builder/InsertQueryBuilder.js.map +1 -1
- package/browser/query-builder/JoinAttribute.js.map +1 -1
- package/browser/query-builder/QueryBuilder.d.ts +1 -1
- package/browser/query-builder/QueryBuilder.js +10 -11
- package/browser/query-builder/QueryBuilder.js.map +1 -1
- package/browser/query-builder/QueryExpressionMap.js +2 -2
- package/browser/query-builder/QueryExpressionMap.js.map +1 -1
- package/browser/query-builder/RelationIdLoader.js.map +1 -1
- package/browser/query-builder/RelationLoader.js.map +1 -1
- package/browser/query-builder/RelationQueryBuilder.js.map +1 -1
- package/browser/query-builder/RelationRemover.js.map +1 -1
- package/browser/query-builder/RelationUpdater.js.map +1 -1
- package/browser/query-builder/ReturningResultsEntityUpdator.js +5 -2
- package/browser/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
- package/browser/query-builder/SelectQueryBuilder.d.ts +4 -4
- package/browser/query-builder/SelectQueryBuilder.js +23 -22
- package/browser/query-builder/SelectQueryBuilder.js.map +1 -1
- package/browser/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/browser/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/browser/query-builder/relation-count/RelationCountLoader.js.map +1 -1
- package/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js +2 -2
- package/browser/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
- package/browser/query-builder/relation-id/RelationIdLoader.js.map +1 -1
- package/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js +2 -2
- package/browser/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
- package/browser/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
- package/browser/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
- package/browser/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +0 -9
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js +0 -28
- package/browser/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
- package/browser/query-runner/BaseQueryRunner.js.map +1 -1
- package/browser/query-runner/QueryLock.js.map +1 -1
- package/browser/repository/BaseEntity.js.map +1 -1
- package/browser/repository/Repository.js.map +1 -1
- package/browser/repository/TreeRepository.js.map +1 -1
- package/browser/schema-builder/RdbmsSchemaBuilder.js +2 -1
- package/browser/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/browser/schema-builder/table/Table.js +2 -2
- package/browser/schema-builder/table/Table.js.map +1 -1
- package/browser/schema-builder/table/TableColumn.js.map +1 -1
- package/browser/schema-builder/util/ViewUtils.js.map +1 -1
- package/browser/schema-builder/view/View.js.map +1 -1
- package/browser/subscriber/Broadcaster.js +6 -6
- package/browser/subscriber/Broadcaster.js.map +1 -1
- package/browser/subscriber/BroadcasterResult.js.map +1 -1
- package/browser/util/ApplyValueTransformers.js.map +1 -1
- package/browser/util/DateUtils.js.map +1 -1
- package/browser/util/DepGraph.js +2 -2
- package/browser/util/DepGraph.js.map +1 -1
- package/browser/util/DirectoryExportedClassesLoader.js.map +1 -1
- package/browser/util/ImportUtils.js +1 -1
- package/browser/util/ImportUtils.js.map +1 -1
- package/browser/util/ObjectUtils.js.map +1 -1
- package/browser/util/OrmUtils.js.map +1 -1
- package/browser/util/PathUtils.js +1 -1
- package/browser/util/PathUtils.js.map +1 -1
- package/browser/util/RandomGenerator.js.map +1 -1
- package/browser/util/StringUtils.js.map +1 -1
- package/browser/util/TreeRepositoryUtils.js +3 -6
- package/browser/util/TreeRepositoryUtils.js.map +1 -1
- package/cache/DbQueryResultCache.js +1 -1
- package/cache/DbQueryResultCache.js.map +1 -1
- package/cache/QueryResultCacheFactory.js.map +1 -1
- package/cache/RedisQueryResultCache.js +1 -1
- package/cache/RedisQueryResultCache.js.map +1 -1
- package/cli-ts-node-esm.js.map +1 -1
- package/commands/CacheClearCommand.js.map +1 -1
- package/commands/CommandUtils.js.map +1 -1
- package/commands/EntityCreateCommand.js.map +1 -1
- package/commands/InitCommand.js +1 -1
- package/commands/InitCommand.js.map +1 -1
- package/commands/MigrationCreateCommand.js.map +1 -1
- package/commands/MigrationGenerateCommand.js.map +1 -1
- package/commands/MigrationRevertCommand.js +2 -2
- package/commands/MigrationRevertCommand.js.map +1 -1
- package/commands/MigrationRunCommand.js +2 -2
- package/commands/MigrationRunCommand.js.map +1 -1
- package/commands/MigrationShowCommand.js.map +1 -1
- package/commands/QueryCommand.js.map +1 -1
- package/commands/SchemaDropCommand.js.map +1 -1
- package/commands/SchemaLogCommand.js.map +1 -1
- package/commands/SchemaSyncCommand.js.map +1 -1
- package/commands/SubscriberCreateCommand.js.map +1 -1
- package/commands/VersionCommand.js.map +1 -1
- package/connection/ConnectionManager.js.map +1 -1
- package/connection/ConnectionMetadataBuilder.js.map +1 -1
- package/connection/ConnectionOptionsReader.js.map +1 -1
- package/connection/options-reader/ConnectionOptionsEnvReader.js.map +1 -1
- package/container.js.map +1 -1
- package/data-source/DataSource.js +3 -1
- package/data-source/DataSource.js.map +1 -1
- package/decorator/Unique.js.map +1 -1
- package/decorator/columns/Column.js.map +1 -1
- package/decorator/columns/PrimaryColumn.js.map +1 -1
- package/decorator/columns/PrimaryGeneratedColumn.js.map +1 -1
- package/decorator/columns/VirtualColumn.js +1 -1
- package/decorator/columns/VirtualColumn.js.map +1 -1
- package/decorator/entity/ChildEntity.js.map +1 -1
- package/decorator/relations/ManyToMany.js.map +1 -1
- package/decorator/relations/ManyToOne.js.map +1 -1
- package/decorator/relations/OneToMany.js.map +1 -1
- package/decorator/relations/OneToOne.js.map +1 -1
- package/driver/DriverFactory.js.map +1 -1
- package/driver/DriverUtils.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlDriver.js +10 -10
- package/driver/aurora-mysql/AuroraMysqlDriver.js.map +1 -1
- package/driver/aurora-mysql/AuroraMysqlQueryRunner.js +2 -2
- package/driver/aurora-mysql/AuroraMysqlQueryRunner.js.map +1 -1
- package/driver/aurora-postgres/AuroraPostgresDriver.js.map +1 -1
- package/driver/aurora-postgres/AuroraPostgresQueryRunner.js +2 -2
- package/driver/aurora-postgres/AuroraPostgresQueryRunner.js.map +1 -1
- package/driver/better-sqlite3/BetterSqlite3Driver.js.map +1 -1
- package/driver/better-sqlite3/BetterSqlite3QueryRunner.js.map +1 -1
- package/driver/capacitor/CapacitorDriver.js.map +1 -1
- package/driver/capacitor/CapacitorQueryRunner.js +2 -2
- package/driver/capacitor/CapacitorQueryRunner.js.map +1 -1
- package/driver/cockroachdb/CockroachDriver.js.map +1 -1
- package/driver/cockroachdb/CockroachQueryRunner.js +3 -3
- package/driver/cockroachdb/CockroachQueryRunner.js.map +1 -1
- package/driver/cordova/CordovaDriver.js.map +1 -1
- package/driver/cordova/CordovaQueryRunner.js.map +1 -1
- package/driver/expo/ExpoDriver.js.map +1 -1
- package/driver/expo/ExpoQueryRunner.js +2 -2
- package/driver/expo/ExpoQueryRunner.js.map +1 -1
- package/driver/mongodb/MongoDriver.js.map +1 -1
- package/driver/mysql/MysqlDriver.js +12 -14
- package/driver/mysql/MysqlDriver.js.map +1 -1
- package/driver/mysql/MysqlQueryRunner.js +1 -1
- package/driver/mysql/MysqlQueryRunner.js.map +1 -1
- package/driver/nativescript/NativescriptDriver.js.map +1 -1
- package/driver/nativescript/NativescriptQueryRunner.js.map +1 -1
- package/driver/oracle/OracleDriver.js +18 -10
- package/driver/oracle/OracleDriver.js.map +1 -1
- package/driver/oracle/OracleQueryRunner.js +8 -10
- package/driver/oracle/OracleQueryRunner.js.map +1 -1
- package/driver/postgres/PostgresDriver.js +11 -6
- package/driver/postgres/PostgresDriver.js.map +1 -1
- package/driver/postgres/PostgresQueryRunner.d.ts +1 -1
- package/driver/postgres/PostgresQueryRunner.js +31 -12
- package/driver/postgres/PostgresQueryRunner.js.map +1 -1
- package/driver/react-native/ReactNativeDriver.js +4 -6
- package/driver/react-native/ReactNativeDriver.js.map +1 -1
- package/driver/react-native/ReactNativeQueryRunner.js +2 -2
- package/driver/react-native/ReactNativeQueryRunner.js.map +1 -1
- package/driver/sap/SapDriver.js.map +1 -1
- package/driver/sap/SapQueryRunner.js +4 -4
- package/driver/sap/SapQueryRunner.js.map +1 -1
- package/driver/spanner/SpannerDriver.js.map +1 -1
- package/driver/spanner/SpannerQueryRunner.js.map +1 -1
- package/driver/sqlite/SqliteDriver.js.map +1 -1
- package/driver/sqlite/SqliteQueryRunner.js +3 -2
- package/driver/sqlite/SqliteQueryRunner.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteDriver.js +4 -6
- package/driver/sqlite-abstract/AbstractSqliteDriver.js.map +1 -1
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js +4 -4
- package/driver/sqlite-abstract/AbstractSqliteQueryRunner.js.map +1 -1
- package/driver/sqljs/SqljsDriver.js +1 -2
- package/driver/sqljs/SqljsDriver.js.map +1 -1
- package/driver/sqljs/SqljsQueryRunner.js.map +1 -1
- package/driver/sqlserver/SqlServerDriver.js.map +1 -1
- package/driver/sqlserver/SqlServerQueryRunner.js +9 -7
- package/driver/sqlserver/SqlServerQueryRunner.js.map +1 -1
- package/driver/types/ColumnTypes.d.ts +1 -1
- package/driver/types/ColumnTypes.js.map +1 -1
- package/driver/types/MetadataTableType.js +1 -1
- package/driver/types/MetadataTableType.js.map +1 -1
- package/entity-manager/EntityManager.d.ts +2 -2
- package/entity-manager/EntityManager.js.map +1 -1
- package/entity-manager/MongoEntityManager.js +1 -1
- package/entity-manager/MongoEntityManager.js.map +1 -1
- package/entity-schema/EntitySchemaTransformer.js +2 -3
- package/entity-schema/EntitySchemaTransformer.js.map +1 -1
- package/error/EntityMetadataNotFoundError.js.map +1 -1
- package/error/EntityNotFoundError.js.map +1 -1
- package/error/FindRelationsNotFoundError.js.map +1 -1
- package/error/MissingJoinColumnError.js.map +1 -1
- package/error/MissingJoinTableError.js.map +1 -1
- package/error/QueryFailedError.js.map +1 -1
- package/error/RepositoryNotTreeError.js.map +1 -1
- package/error/TypeORMError.js.map +1 -1
- package/find-options/FindOperator.js.map +1 -1
- package/find-options/FindOptionsUtils.js +1 -1
- package/find-options/FindOptionsUtils.js.map +1 -1
- package/find-options/operator/Raw.js.map +1 -1
- package/globals.js.map +1 -1
- package/logger/AbstractLogger.js.map +1 -1
- package/logger/AdvancedConsoleLogger.js +1 -2
- package/logger/AdvancedConsoleLogger.js.map +1 -1
- package/logger/DebugLogger.js +1 -2
- package/logger/DebugLogger.js.map +1 -1
- package/logger/FileLogger.js +2 -3
- package/logger/FileLogger.js.map +1 -1
- package/logger/LoggerFactory.js.map +1 -1
- package/logger/SimpleConsoleLogger.js +1 -2
- package/logger/SimpleConsoleLogger.js.map +1 -1
- package/metadata/CheckMetadata.js.map +1 -1
- package/metadata/ColumnMetadata.js +1 -6
- package/metadata/ColumnMetadata.js.map +1 -1
- package/metadata/EmbeddedMetadata.js +1 -1
- package/metadata/EmbeddedMetadata.js.map +1 -1
- package/metadata/EntityListenerMetadata.js.map +1 -1
- package/metadata/EntityMetadata.js +3 -7
- package/metadata/EntityMetadata.js.map +1 -1
- package/metadata/ExclusionMetadata.js.map +1 -1
- package/metadata/IndexMetadata.js.map +1 -1
- package/metadata/RelationIdMetadata.js.map +1 -1
- package/metadata/RelationMetadata.js.map +1 -1
- package/metadata/UniqueMetadata.js.map +1 -1
- package/metadata-args/MetadataArgsStorage.js.map +1 -1
- package/metadata-builder/ClosureJunctionEntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/EntityMetadataBuilder.js +5 -8
- package/metadata-builder/EntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/EntityMetadataValidator.js.map +1 -1
- package/metadata-builder/JunctionEntityMetadataBuilder.js +7 -8
- package/metadata-builder/JunctionEntityMetadataBuilder.js.map +1 -1
- package/metadata-builder/MetadataUtils.js.map +1 -1
- package/metadata-builder/RelationJoinColumnBuilder.js +2 -3
- package/metadata-builder/RelationJoinColumnBuilder.js.map +1 -1
- package/migration/MigrationExecutor.js +2 -2
- package/migration/MigrationExecutor.js.map +1 -1
- package/naming-strategy/DefaultNamingStrategy.js.map +1 -1
- package/naming-strategy/LegacyOracleNamingStrategy.js.map +1 -1
- package/package.json +276 -1
- package/persistence/EntityPersistExecutor.js.map +1 -1
- package/persistence/Subject.js.map +1 -1
- package/persistence/SubjectChangedColumnsComputer.js.map +1 -1
- package/persistence/SubjectDatabaseEntityLoader.js.map +1 -1
- package/persistence/SubjectExecutor.js.map +1 -1
- package/persistence/SubjectTopoligicalSorter.js.map +1 -1
- package/persistence/subject-builder/CascadesSubjectBuilder.js.map +1 -1
- package/persistence/subject-builder/ManyToManySubjectBuilder.js.map +1 -1
- package/persistence/subject-builder/OneToManySubjectBuilder.js +1 -2
- package/persistence/subject-builder/OneToManySubjectBuilder.js.map +1 -1
- package/persistence/subject-builder/OneToOneInverseSideSubjectBuilder.js.map +1 -1
- package/persistence/tree/ClosureSubjectExecutor.js.map +1 -1
- package/persistence/tree/MaterializedPathSubjectExecutor.js.map +1 -1
- package/persistence/tree/NestedSetSubjectExecutor.js.map +1 -1
- package/platform/PlatformTools.d.ts +3 -0
- package/platform/PlatformTools.js.map +1 -1
- package/query-builder/DeleteQueryBuilder.js.map +1 -1
- package/query-builder/InsertQueryBuilder.js +15 -15
- package/query-builder/InsertQueryBuilder.js.map +1 -1
- package/query-builder/JoinAttribute.js.map +1 -1
- package/query-builder/QueryBuilder.d.ts +1 -1
- package/query-builder/QueryBuilder.js +10 -11
- package/query-builder/QueryBuilder.js.map +1 -1
- package/query-builder/QueryExpressionMap.js +2 -2
- package/query-builder/QueryExpressionMap.js.map +1 -1
- package/query-builder/RelationIdLoader.js.map +1 -1
- package/query-builder/RelationLoader.js.map +1 -1
- package/query-builder/RelationQueryBuilder.js.map +1 -1
- package/query-builder/RelationRemover.js.map +1 -1
- package/query-builder/RelationUpdater.js.map +1 -1
- package/query-builder/ReturningResultsEntityUpdator.js +5 -2
- package/query-builder/ReturningResultsEntityUpdator.js.map +1 -1
- package/query-builder/SelectQueryBuilder.d.ts +4 -4
- package/query-builder/SelectQueryBuilder.js +23 -22
- package/query-builder/SelectQueryBuilder.js.map +1 -1
- package/query-builder/SoftDeleteQueryBuilder.js.map +1 -1
- package/query-builder/UpdateQueryBuilder.js.map +1 -1
- package/query-builder/relation-count/RelationCountLoader.js.map +1 -1
- package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js +2 -2
- package/query-builder/relation-count/RelationCountMetadataToAttributeTransformer.js.map +1 -1
- package/query-builder/relation-id/RelationIdLoader.js.map +1 -1
- package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js +2 -2
- package/query-builder/relation-id/RelationIdMetadataToAttributeTransformer.js.map +1 -1
- package/query-builder/transformer/DocumentToEntityTransformer.js.map +1 -1
- package/query-builder/transformer/PlainObjectToDatabaseEntityTransformer.js.map +1 -1
- package/query-builder/transformer/PlainObjectToNewEntityTransformer.js.map +1 -1
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.d.ts +0 -9
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.js +0 -28
- package/query-builder/transformer/RawSqlResultsToEntityTransformer.js.map +1 -1
- package/query-runner/BaseQueryRunner.js.map +1 -1
- package/query-runner/QueryLock.js.map +1 -1
- package/repository/BaseEntity.js.map +1 -1
- package/repository/Repository.js.map +1 -1
- package/repository/TreeRepository.js.map +1 -1
- package/schema-builder/RdbmsSchemaBuilder.js +2 -1
- package/schema-builder/RdbmsSchemaBuilder.js.map +1 -1
- package/schema-builder/table/Table.js +2 -2
- package/schema-builder/table/Table.js.map +1 -1
- package/schema-builder/table/TableColumn.js.map +1 -1
- package/schema-builder/util/ViewUtils.js.map +1 -1
- package/schema-builder/view/View.js.map +1 -1
- package/subscriber/Broadcaster.js +6 -6
- package/subscriber/Broadcaster.js.map +1 -1
- package/subscriber/BroadcasterResult.js.map +1 -1
- package/util/ApplyValueTransformers.js.map +1 -1
- package/util/DateUtils.js.map +1 -1
- package/util/DepGraph.js +2 -2
- package/util/DepGraph.js.map +1 -1
- package/util/DirectoryExportedClassesLoader.js.map +1 -1
- package/util/ImportUtils.js +1 -1
- package/util/ImportUtils.js.map +1 -1
- package/util/ObjectUtils.js.map +1 -1
- package/util/OrmUtils.js.map +1 -1
- package/util/PathUtils.js +1 -1
- package/util/PathUtils.js.map +1 -1
- package/util/RandomGenerator.js.map +1 -1
- package/util/StringUtils.js.map +1 -1
- package/util/TreeRepositoryUtils.js +3 -6
- package/util/TreeRepositoryUtils.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../browser/src/query-builder/RelationRemover.ts"],"names":[],"mappings":"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","file":"RelationRemover.js","sourcesContent":["import { QueryBuilder } from \"./QueryBuilder\"\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { QueryExpressionMap } from \"./QueryExpressionMap\"\nimport { ObjectUtils } from \"../util/ObjectUtils\"\n\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nexport class RelationRemover {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected queryBuilder: QueryBuilder<any>,\n protected expressionMap: QueryExpressionMap,\n ) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs remove operation on a relation.\n */\n async remove(value: any | any[]): Promise<void> {\n const relation = this.expressionMap.relationMetadata\n\n if (relation.isOneToMany) {\n // if (this.expressionMap.of instanceof Array)\n // throw new TypeORMError(`You cannot update relations of multiple entities with the same related object. Provide a single entity into .of method.`);\n\n // DELETE FROM post WHERE post.categoryId = of AND post.id = id\n const ofs = Array.isArray(this.expressionMap.of)\n ? this.expressionMap.of\n : [this.expressionMap.of]\n const values = Array.isArray(value) ? value : [value]\n\n const updateSet: ObjectLiteral = {}\n relation.inverseRelation!.joinColumns.forEach((column) => {\n updateSet[column.propertyName] = null\n })\n\n const parameters: ObjectLiteral = {}\n const conditions: string[] = []\n ofs.forEach((of, ofIndex) => {\n conditions.push(\n ...values.map((value, valueIndex) => {\n return [\n ...relation.inverseRelation!.joinColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"joinColumn_\" +\n ofIndex +\n \"_\" +\n valueIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(of)\n ? column.referencedColumn!.getEntityValue(\n of,\n )\n : of\n return `${column.propertyPath} = :${parameterName}`\n },\n ),\n ...relation.inverseRelation!.entityMetadata.primaryColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"primaryColumn_\" +\n valueIndex +\n \"_\" +\n valueIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(value)\n ? column.getEntityValue(value)\n : value\n return `${column.propertyPath} = :${parameterName}`\n },\n ),\n ].join(\" AND \")\n }),\n )\n })\n const condition = conditions\n .map((str) => \"(\" + str + \")\")\n .join(\" OR \")\n if (!condition) return\n\n await this.queryBuilder\n .createQueryBuilder()\n .update(relation.inverseEntityMetadata.target)\n .set(updateSet)\n .where(condition)\n .setParameters(parameters)\n .execute()\n } else {\n // many to many\n\n const junctionMetadata = relation.junctionEntityMetadata!\n const ofs = Array.isArray(this.expressionMap.of)\n ? this.expressionMap.of\n : [this.expressionMap.of]\n const values = Array.isArray(value) ? value : [value]\n const firstColumnValues = relation.isManyToManyOwner ? ofs : values\n const secondColumnValues = relation.isManyToManyOwner ? values : ofs\n\n const parameters: ObjectLiteral = {}\n const conditions: string[] = []\n firstColumnValues.forEach((firstColumnVal, firstColumnValIndex) => {\n conditions.push(\n ...secondColumnValues.map(\n (secondColumnVal, secondColumnValIndex) => {\n return [\n ...junctionMetadata.ownerColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"firstValue_\" +\n firstColumnValIndex +\n \"_\" +\n secondColumnValIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(firstColumnVal)\n ? column.referencedColumn!.getEntityValue(\n firstColumnVal,\n )\n : firstColumnVal\n return `${column.databaseName} = :${parameterName}`\n },\n ),\n ...junctionMetadata.inverseColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"secondValue_\" +\n firstColumnValIndex +\n \"_\" +\n secondColumnValIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(\n secondColumnVal,\n )\n ? column.referencedColumn!.getEntityValue(\n secondColumnVal,\n )\n : secondColumnVal\n return `${column.databaseName} = :${parameterName}`\n },\n ),\n ].join(\" AND \")\n },\n ),\n )\n })\n const condition = conditions\n .map((str) => \"(\" + str + \")\")\n .join(\" OR \")\n\n await this.queryBuilder\n .createQueryBuilder()\n .delete()\n .from(junctionMetadata.tableName)\n .where(condition)\n .setParameters(parameters)\n .execute()\n }\n }\n}\n"],"sourceRoot":".."}
|
|
1
|
+
{"version":3,"sources":["../browser/src/query-builder/RelationRemover.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAEjD;;;;GAIG;AACH,MAAM,OAAO,eAAe;IACxB,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,YACc,YAA+B,EAC/B,aAAiC;QADjC,iBAAY,GAAZ,YAAY,CAAmB;QAC/B,kBAAa,GAAb,aAAa,CAAoB;IAC5C,CAAC;IAEJ,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,KAAkB;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAA;QAEpD,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;YACvB,8CAA8C;YAC9C,yJAAyJ;YAEzJ,+DAA+D;YAC/D,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC5C,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;gBACvB,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;YAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;YAErD,MAAM,SAAS,GAAkB,EAAE,CAAA;YACnC,QAAQ,CAAC,eAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;gBACrD,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,IAAI,CAAA;YACzC,CAAC,CAAC,CAAA;YAEF,MAAM,UAAU,GAAkB,EAAE,CAAA;YACpC,MAAM,UAAU,GAAa,EAAE,CAAA;YAC/B,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE;gBACxB,UAAU,CAAC,IAAI,CACX,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;oBAChC,OAAO;wBACH,GAAG,QAAQ,CAAC,eAAgB,CAAC,WAAW,CAAC,GAAG,CACxC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;4BACpB,MAAM,aAAa,GACf,aAAa;gCACb,OAAO;gCACP,GAAG;gCACH,UAAU;gCACV,GAAG;gCACH,WAAW,CAAA;4BACf,UAAU,CAAC,aAAa,CAAC;gCACrB,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;oCACpB,CAAC,CAAC,MAAM,CAAC,gBAAiB,CAAC,cAAc,CACnC,EAAE,CACL;oCACH,CAAC,CAAC,EAAE,CAAA;4BACZ,OAAO,GAAG,MAAM,CAAC,YAAY,OAAO,aAAa,EAAE,CAAA;wBACvD,CAAC,CACJ;wBACD,GAAG,QAAQ,CAAC,eAAgB,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,CAC1D,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;4BACpB,MAAM,aAAa,GACf,gBAAgB;gCAChB,UAAU;gCACV,GAAG;gCACH,UAAU;gCACV,GAAG;gCACH,WAAW,CAAA;4BACf,UAAU,CAAC,aAAa,CAAC;gCACrB,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;oCACvB,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC;oCAC9B,CAAC,CAAC,KAAK,CAAA;4BACf,OAAO,GAAG,MAAM,CAAC,YAAY,OAAO,aAAa,EAAE,CAAA;wBACvD,CAAC,CACJ;qBACJ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACnB,CAAC,CAAC,CACL,CAAA;YACL,CAAC,CAAC,CAAA;YACF,MAAM,SAAS,GAAG,UAAU;iBACvB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;iBAC7B,IAAI,CAAC,MAAM,CAAC,CAAA;YACjB,IAAI,CAAC,SAAS;gBAAE,OAAM;YAEtB,MAAM,IAAI,CAAC,YAAY;iBAClB,kBAAkB,EAAE;iBACpB,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAAC,MAAM,CAAC;iBAC7C,GAAG,CAAC,SAAS,CAAC;iBACd,KAAK,CAAC,SAAS,CAAC;iBAChB,aAAa,CAAC,UAAU,CAAC;iBACzB,OAAO,EAAE,CAAA;QAClB,CAAC;aAAM,CAAC;YACJ,eAAe;YAEf,MAAM,gBAAgB,GAAG,QAAQ,CAAC,sBAAuB,CAAA;YACzD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC5C,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE;gBACvB,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAA;YAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;YACrD,MAAM,iBAAiB,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAA;YACnE,MAAM,kBAAkB,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAA;YAEpE,MAAM,UAAU,GAAkB,EAAE,CAAA;YACpC,MAAM,UAAU,GAAa,EAAE,CAAA;YAC/B,iBAAiB,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,mBAAmB,EAAE,EAAE;gBAC9D,UAAU,CAAC,IAAI,CACX,GAAG,kBAAkB,CAAC,GAAG,CACrB,CAAC,eAAe,EAAE,oBAAoB,EAAE,EAAE;oBACtC,OAAO;wBACH,GAAG,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAChC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;4BACpB,MAAM,aAAa,GACf,aAAa;gCACb,mBAAmB;gCACnB,GAAG;gCACH,oBAAoB;gCACpB,GAAG;gCACH,WAAW,CAAA;4BACf,UAAU,CAAC,aAAa,CAAC;gCACrB,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC;oCAChC,CAAC,CAAC,MAAM,CAAC,gBAAiB,CAAC,cAAc,CACnC,cAAc,CACjB;oCACH,CAAC,CAAC,cAAc,CAAA;4BACxB,OAAO,GAAG,MAAM,CAAC,YAAY,OAAO,aAAa,EAAE,CAAA;wBACvD,CAAC,CACJ;wBACD,GAAG,gBAAgB,CAAC,cAAc,CAAC,GAAG,CAClC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;4BACpB,MAAM,aAAa,GACf,cAAc;gCACd,mBAAmB;gCACnB,GAAG;gCACH,oBAAoB;gCACpB,GAAG;gCACH,WAAW,CAAA;4BACf,UAAU,CAAC,aAAa,CAAC;gCACrB,WAAW,CAAC,QAAQ,CAChB,eAAe,CAClB;oCACG,CAAC,CAAC,MAAM,CAAC,gBAAiB,CAAC,cAAc,CACnC,eAAe,CAClB;oCACH,CAAC,CAAC,eAAe,CAAA;4BACzB,OAAO,GAAG,MAAM,CAAC,YAAY,OAAO,aAAa,EAAE,CAAA;wBACvD,CAAC,CACJ;qBACJ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACnB,CAAC,CACJ,CACJ,CAAA;YACL,CAAC,CAAC,CAAA;YACF,MAAM,SAAS,GAAG,UAAU;iBACvB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;iBAC7B,IAAI,CAAC,MAAM,CAAC,CAAA;YAEjB,MAAM,IAAI,CAAC,YAAY;iBAClB,kBAAkB,EAAE;iBACpB,MAAM,EAAE;iBACR,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC;iBAChC,KAAK,CAAC,SAAS,CAAC;iBAChB,aAAa,CAAC,UAAU,CAAC;iBACzB,OAAO,EAAE,CAAA;QAClB,CAAC;IACL,CAAC;CACJ","file":"RelationRemover.js","sourcesContent":["import { QueryBuilder } from \"./QueryBuilder\"\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { QueryExpressionMap } from \"./QueryExpressionMap\"\nimport { ObjectUtils } from \"../util/ObjectUtils\"\n\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nexport class RelationRemover {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected queryBuilder: QueryBuilder<any>,\n protected expressionMap: QueryExpressionMap,\n ) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs remove operation on a relation.\n */\n async remove(value: any | any[]): Promise<void> {\n const relation = this.expressionMap.relationMetadata\n\n if (relation.isOneToMany) {\n // if (this.expressionMap.of instanceof Array)\n // throw new TypeORMError(`You cannot update relations of multiple entities with the same related object. Provide a single entity into .of method.`);\n\n // DELETE FROM post WHERE post.categoryId = of AND post.id = id\n const ofs = Array.isArray(this.expressionMap.of)\n ? this.expressionMap.of\n : [this.expressionMap.of]\n const values = Array.isArray(value) ? value : [value]\n\n const updateSet: ObjectLiteral = {}\n relation.inverseRelation!.joinColumns.forEach((column) => {\n updateSet[column.propertyName] = null\n })\n\n const parameters: ObjectLiteral = {}\n const conditions: string[] = []\n ofs.forEach((of, ofIndex) => {\n conditions.push(\n ...values.map((value, valueIndex) => {\n return [\n ...relation.inverseRelation!.joinColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"joinColumn_\" +\n ofIndex +\n \"_\" +\n valueIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(of)\n ? column.referencedColumn!.getEntityValue(\n of,\n )\n : of\n return `${column.propertyPath} = :${parameterName}`\n },\n ),\n ...relation.inverseRelation!.entityMetadata.primaryColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"primaryColumn_\" +\n valueIndex +\n \"_\" +\n valueIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(value)\n ? column.getEntityValue(value)\n : value\n return `${column.propertyPath} = :${parameterName}`\n },\n ),\n ].join(\" AND \")\n }),\n )\n })\n const condition = conditions\n .map((str) => \"(\" + str + \")\")\n .join(\" OR \")\n if (!condition) return\n\n await this.queryBuilder\n .createQueryBuilder()\n .update(relation.inverseEntityMetadata.target)\n .set(updateSet)\n .where(condition)\n .setParameters(parameters)\n .execute()\n } else {\n // many to many\n\n const junctionMetadata = relation.junctionEntityMetadata!\n const ofs = Array.isArray(this.expressionMap.of)\n ? this.expressionMap.of\n : [this.expressionMap.of]\n const values = Array.isArray(value) ? value : [value]\n const firstColumnValues = relation.isManyToManyOwner ? ofs : values\n const secondColumnValues = relation.isManyToManyOwner ? values : ofs\n\n const parameters: ObjectLiteral = {}\n const conditions: string[] = []\n firstColumnValues.forEach((firstColumnVal, firstColumnValIndex) => {\n conditions.push(\n ...secondColumnValues.map(\n (secondColumnVal, secondColumnValIndex) => {\n return [\n ...junctionMetadata.ownerColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"firstValue_\" +\n firstColumnValIndex +\n \"_\" +\n secondColumnValIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(firstColumnVal)\n ? column.referencedColumn!.getEntityValue(\n firstColumnVal,\n )\n : firstColumnVal\n return `${column.databaseName} = :${parameterName}`\n },\n ),\n ...junctionMetadata.inverseColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"secondValue_\" +\n firstColumnValIndex +\n \"_\" +\n secondColumnValIndex +\n \"_\" +\n columnIndex\n parameters[parameterName] =\n ObjectUtils.isObject(\n secondColumnVal,\n )\n ? column.referencedColumn!.getEntityValue(\n secondColumnVal,\n )\n : secondColumnVal\n return `${column.databaseName} = :${parameterName}`\n },\n ),\n ].join(\" AND \")\n },\n ),\n )\n })\n const condition = conditions\n .map((str) => \"(\" + str + \")\")\n .join(\" OR \")\n\n await this.queryBuilder\n .createQueryBuilder()\n .delete()\n .from(junctionMetadata.tableName)\n .where(condition)\n .setParameters(parameters)\n .execute()\n }\n }\n}\n"],"sourceRoot":".."}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../browser/src/query-builder/RelationUpdater.ts"],"names":[],"mappings":"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","file":"RelationUpdater.js","sourcesContent":["import { QueryBuilder } from \"./QueryBuilder\"\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { QueryExpressionMap } from \"./QueryExpressionMap\"\nimport { TypeORMError } from \"../error\"\nimport { ObjectUtils } from \"../util/ObjectUtils\"\n\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nexport class RelationUpdater {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected queryBuilder: QueryBuilder<any>,\n protected expressionMap: QueryExpressionMap,\n ) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs set or add operation on a relation.\n */\n async update(value: any | any[]): Promise<void> {\n const relation = this.expressionMap.relationMetadata\n\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n const updateSet = relation.joinColumns.reduce(\n (updateSet, joinColumn) => {\n const relationValue = ObjectUtils.isObject(value)\n ? joinColumn.referencedColumn!.getEntityValue(value)\n : value\n joinColumn.setEntityValue(updateSet, relationValue)\n return updateSet\n },\n {} as any,\n )\n\n if (\n !this.expressionMap.of ||\n (Array.isArray(this.expressionMap.of) &&\n !this.expressionMap.of.length)\n )\n return\n\n await this.queryBuilder\n .createQueryBuilder()\n .update(relation.entityMetadata.target)\n .set(updateSet)\n .whereInIds(this.expressionMap.of)\n .execute()\n } else if (\n (relation.isOneToOneNotOwner || relation.isOneToMany) &&\n value === null\n ) {\n // we handle null a bit different way\n\n const updateSet: ObjectLiteral = {}\n relation.inverseRelation!.joinColumns.forEach((column) => {\n updateSet[column.propertyName] = null\n })\n\n const ofs = Array.isArray(this.expressionMap.of)\n ? this.expressionMap.of\n : [this.expressionMap.of]\n const parameters: ObjectLiteral = {}\n const conditions: string[] = []\n ofs.forEach((of, ofIndex) => {\n relation.inverseRelation!.joinColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"joinColumn_\" + ofIndex + \"_\" + columnIndex\n parameters[parameterName] = ObjectUtils.isObject(of)\n ? column.referencedColumn!.getEntityValue(of)\n : of\n conditions.push(\n `${column.propertyPath} = :${parameterName}`,\n )\n },\n )\n })\n const condition = conditions\n .map((str) => \"(\" + str + \")\")\n .join(\" OR \")\n if (!condition) return\n\n await this.queryBuilder\n .createQueryBuilder()\n .update(relation.inverseEntityMetadata.target)\n .set(updateSet)\n .where(condition)\n .setParameters(parameters)\n .execute()\n } else if (relation.isOneToOneNotOwner || relation.isOneToMany) {\n if (Array.isArray(this.expressionMap.of))\n throw new TypeORMError(\n `You cannot update relations of multiple entities with the same related object. Provide a single entity into .of method.`,\n )\n\n const of = this.expressionMap.of\n const updateSet = relation.inverseRelation!.joinColumns.reduce(\n (updateSet, joinColumn) => {\n const relationValue = ObjectUtils.isObject(of)\n ? joinColumn.referencedColumn!.getEntityValue(of)\n : of\n joinColumn.setEntityValue(updateSet, relationValue)\n return updateSet\n },\n {} as any,\n )\n\n if (!value || (Array.isArray(value) && !value.length)) return\n\n await this.queryBuilder\n .createQueryBuilder()\n .update(relation.inverseEntityMetadata.target)\n .set(updateSet)\n .whereInIds(value)\n .execute()\n } else {\n // many to many\n const junctionMetadata = relation.junctionEntityMetadata!\n const ofs = Array.isArray(this.expressionMap.of)\n ? this.expressionMap.of\n : [this.expressionMap.of]\n const values = Array.isArray(value) ? value : [value]\n const firstColumnValues = relation.isManyToManyOwner ? ofs : values\n const secondColumnValues = relation.isManyToManyOwner ? values : ofs\n\n const bulkInserted: ObjectLiteral[] = []\n firstColumnValues.forEach((firstColumnVal) => {\n secondColumnValues.forEach((secondColumnVal) => {\n const inserted: ObjectLiteral = {}\n junctionMetadata.ownerColumns.forEach((column) => {\n inserted[column.databaseName] = ObjectUtils.isObject(\n firstColumnVal,\n )\n ? column.referencedColumn!.getEntityValue(\n firstColumnVal,\n )\n : firstColumnVal\n })\n junctionMetadata.inverseColumns.forEach((column) => {\n inserted[column.databaseName] = ObjectUtils.isObject(\n secondColumnVal,\n )\n ? column.referencedColumn!.getEntityValue(\n secondColumnVal,\n )\n : secondColumnVal\n })\n bulkInserted.push(inserted)\n })\n })\n\n if (!bulkInserted.length) return\n\n if (\n this.queryBuilder.connection.driver.options.type === \"oracle\" ||\n this.queryBuilder.connection.driver.options.type === \"sap\"\n ) {\n await Promise.all(\n bulkInserted.map((value) => {\n return this.queryBuilder\n .createQueryBuilder()\n .insert()\n .into(junctionMetadata.tableName)\n .values(value)\n .execute()\n }),\n )\n } else {\n await this.queryBuilder\n .createQueryBuilder()\n .insert()\n .into(junctionMetadata.tableName)\n .values(bulkInserted)\n .execute()\n }\n }\n }\n}\n"],"sourceRoot":".."}
|
|
1
|
+
{"version":3,"sources":["../browser/src/query-builder/RelationUpdater.ts"],"names":[],"mappings":"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","file":"RelationUpdater.js","sourcesContent":["import { QueryBuilder } from \"./QueryBuilder\"\nimport { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { QueryExpressionMap } from \"./QueryExpressionMap\"\nimport { TypeORMError } from \"../error\"\nimport { ObjectUtils } from \"../util/ObjectUtils\"\n\n/**\n * Allows to work with entity relations and perform specific operations with those relations.\n *\n * todo: add transactions everywhere\n */\nexport class RelationUpdater {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected queryBuilder: QueryBuilder<any>,\n protected expressionMap: QueryExpressionMap,\n ) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Performs set or add operation on a relation.\n */\n async update(value: any | any[]): Promise<void> {\n const relation = this.expressionMap.relationMetadata\n\n if (relation.isManyToOne || relation.isOneToOneOwner) {\n const updateSet = relation.joinColumns.reduce(\n (updateSet, joinColumn) => {\n const relationValue = ObjectUtils.isObject(value)\n ? joinColumn.referencedColumn!.getEntityValue(value)\n : value\n joinColumn.setEntityValue(updateSet, relationValue)\n return updateSet\n },\n {} as any,\n )\n\n if (\n !this.expressionMap.of ||\n (Array.isArray(this.expressionMap.of) &&\n !this.expressionMap.of.length)\n )\n return\n\n await this.queryBuilder\n .createQueryBuilder()\n .update(relation.entityMetadata.target)\n .set(updateSet)\n .whereInIds(this.expressionMap.of)\n .execute()\n } else if (\n (relation.isOneToOneNotOwner || relation.isOneToMany) &&\n value === null\n ) {\n // we handle null a bit different way\n\n const updateSet: ObjectLiteral = {}\n relation.inverseRelation!.joinColumns.forEach((column) => {\n updateSet[column.propertyName] = null\n })\n\n const ofs = Array.isArray(this.expressionMap.of)\n ? this.expressionMap.of\n : [this.expressionMap.of]\n const parameters: ObjectLiteral = {}\n const conditions: string[] = []\n ofs.forEach((of, ofIndex) => {\n relation.inverseRelation!.joinColumns.map(\n (column, columnIndex) => {\n const parameterName =\n \"joinColumn_\" + ofIndex + \"_\" + columnIndex\n parameters[parameterName] = ObjectUtils.isObject(of)\n ? column.referencedColumn!.getEntityValue(of)\n : of\n conditions.push(\n `${column.propertyPath} = :${parameterName}`,\n )\n },\n )\n })\n const condition = conditions\n .map((str) => \"(\" + str + \")\")\n .join(\" OR \")\n if (!condition) return\n\n await this.queryBuilder\n .createQueryBuilder()\n .update(relation.inverseEntityMetadata.target)\n .set(updateSet)\n .where(condition)\n .setParameters(parameters)\n .execute()\n } else if (relation.isOneToOneNotOwner || relation.isOneToMany) {\n if (Array.isArray(this.expressionMap.of))\n throw new TypeORMError(\n `You cannot update relations of multiple entities with the same related object. Provide a single entity into .of method.`,\n )\n\n const of = this.expressionMap.of\n const updateSet = relation.inverseRelation!.joinColumns.reduce(\n (updateSet, joinColumn) => {\n const relationValue = ObjectUtils.isObject(of)\n ? joinColumn.referencedColumn!.getEntityValue(of)\n : of\n joinColumn.setEntityValue(updateSet, relationValue)\n return updateSet\n },\n {} as any,\n )\n\n if (!value || (Array.isArray(value) && !value.length)) return\n\n await this.queryBuilder\n .createQueryBuilder()\n .update(relation.inverseEntityMetadata.target)\n .set(updateSet)\n .whereInIds(value)\n .execute()\n } else {\n // many to many\n const junctionMetadata = relation.junctionEntityMetadata!\n const ofs = Array.isArray(this.expressionMap.of)\n ? this.expressionMap.of\n : [this.expressionMap.of]\n const values = Array.isArray(value) ? value : [value]\n const firstColumnValues = relation.isManyToManyOwner ? ofs : values\n const secondColumnValues = relation.isManyToManyOwner ? values : ofs\n\n const bulkInserted: ObjectLiteral[] = []\n firstColumnValues.forEach((firstColumnVal) => {\n secondColumnValues.forEach((secondColumnVal) => {\n const inserted: ObjectLiteral = {}\n junctionMetadata.ownerColumns.forEach((column) => {\n inserted[column.databaseName] = ObjectUtils.isObject(\n firstColumnVal,\n )\n ? column.referencedColumn!.getEntityValue(\n firstColumnVal,\n )\n : firstColumnVal\n })\n junctionMetadata.inverseColumns.forEach((column) => {\n inserted[column.databaseName] = ObjectUtils.isObject(\n secondColumnVal,\n )\n ? column.referencedColumn!.getEntityValue(\n secondColumnVal,\n )\n : secondColumnVal\n })\n bulkInserted.push(inserted)\n })\n })\n\n if (!bulkInserted.length) return\n\n if (\n this.queryBuilder.connection.driver.options.type === \"oracle\" ||\n this.queryBuilder.connection.driver.options.type === \"sap\"\n ) {\n await Promise.all(\n bulkInserted.map((value) => {\n return this.queryBuilder\n .createQueryBuilder()\n .insert()\n .into(junctionMetadata.tableName)\n .values(value)\n .execute()\n }),\n )\n } else {\n await this.queryBuilder\n .createQueryBuilder()\n .insert()\n .into(junctionMetadata.tableName)\n .values(bulkInserted)\n .execute()\n }\n }\n }\n}\n"],"sourceRoot":".."}
|
|
@@ -146,7 +146,9 @@ export class ReturningResultsEntityUpdator {
|
|
|
146
146
|
*/
|
|
147
147
|
getUpdationReturningColumns() {
|
|
148
148
|
return this.expressionMap.mainAlias.metadata.columns.filter((column) => {
|
|
149
|
-
return column.
|
|
149
|
+
return (column.asExpression !== undefined ||
|
|
150
|
+
column.isUpdateDate ||
|
|
151
|
+
column.isVersion);
|
|
150
152
|
});
|
|
151
153
|
}
|
|
152
154
|
/**
|
|
@@ -154,7 +156,8 @@ export class ReturningResultsEntityUpdator {
|
|
|
154
156
|
*/
|
|
155
157
|
getSoftDeletionReturningColumns() {
|
|
156
158
|
return this.expressionMap.mainAlias.metadata.columns.filter((column) => {
|
|
157
|
-
return (column.
|
|
159
|
+
return (column.asExpression !== undefined ||
|
|
160
|
+
column.isUpdateDate ||
|
|
158
161
|
column.isVersion ||
|
|
159
162
|
column.isDeleteDate);
|
|
160
163
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../browser/src/query-builder/ReturningResultsEntityUpdator.ts"],"names":[],"mappings":"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","file":"ReturningResultsEntityUpdator.js","sourcesContent":["import { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { QueryRunner } from \"../query-runner/QueryRunner\"\nimport { QueryExpressionMap } from \"./QueryExpressionMap\"\nimport { ColumnMetadata } from \"../metadata/ColumnMetadata\"\nimport { UpdateResult } from \"./result/UpdateResult\"\nimport { InsertResult } from \"./result/InsertResult\"\nimport { TypeORMError } from \"../error\"\n\n/**\n * Updates entity with returning results in the entity insert and update operations.\n */\nexport class ReturningResultsEntityUpdator {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected queryRunner: QueryRunner,\n protected expressionMap: QueryExpressionMap,\n ) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Updates entities with a special columns after updation query execution.\n */\n async update(\n updateResult: UpdateResult,\n entities: ObjectLiteral[],\n ): Promise<void> {\n const metadata = this.expressionMap.mainAlias!.metadata\n\n await Promise.all(\n entities.map(async (entity, entityIndex) => {\n // if database supports returning/output statement then we already should have updating values in the raw data returned by insert query\n if (\n this.queryRunner.connection.driver.isReturningSqlSupported(\n \"update\",\n )\n ) {\n if (\n this.queryRunner.connection.driver.options.type ===\n \"oracle\" &&\n Array.isArray(updateResult.raw) &&\n this.expressionMap.extraReturningColumns.length > 0\n ) {\n updateResult.raw = updateResult.raw.reduce(\n (newRaw, rawItem, rawItemIndex) => {\n newRaw[\n this.expressionMap.extraReturningColumns[\n rawItemIndex\n ].databaseName\n ] = rawItem[0]\n return newRaw\n },\n {} as ObjectLiteral,\n )\n }\n const result = Array.isArray(updateResult.raw)\n ? updateResult.raw[entityIndex]\n : updateResult.raw\n const returningColumns =\n this.queryRunner.connection.driver.createGeneratedMap(\n metadata,\n result,\n )\n if (returningColumns) {\n this.queryRunner.manager.merge(\n metadata.target as any,\n entity,\n returningColumns,\n )\n updateResult.generatedMaps.push(returningColumns)\n }\n } else {\n // for driver which do not support returning/output statement we need to perform separate query and load what we need\n const updationColumns =\n this.expressionMap.extraReturningColumns\n if (updationColumns.length > 0) {\n // get entity id by which we will get needed data\n const entityId =\n this.expressionMap.mainAlias!.metadata.getEntityIdMap(\n entity,\n )\n if (!entityId)\n throw new TypeORMError(\n `Cannot update entity because entity id is not set in the entity.`,\n )\n\n // execute query to get needed data\n const loadedReturningColumns =\n (await this.queryRunner.manager\n .createQueryBuilder()\n .select(\n metadata.primaryColumns.map(\n (column) =>\n metadata.targetName +\n \".\" +\n column.propertyPath,\n ),\n )\n .addSelect(\n updationColumns.map(\n (column) =>\n metadata.targetName +\n \".\" +\n column.propertyPath,\n ),\n )\n .from(metadata.target, metadata.targetName)\n .where(entityId)\n .withDeleted()\n .setOption(\"create-pojo\") // use POJO because created object can contain default values, e.g. property = null and those properties might be overridden by merge process\n .getOne()) as any\n\n if (loadedReturningColumns) {\n this.queryRunner.manager.merge(\n metadata.target as any,\n entity,\n loadedReturningColumns,\n )\n updateResult.generatedMaps.push(\n loadedReturningColumns,\n )\n }\n }\n }\n }),\n )\n }\n\n /**\n * Updates entities with a special columns after insertion query execution.\n */\n async insert(\n insertResult: InsertResult,\n entities: ObjectLiteral[],\n ): Promise<void> {\n const metadata = this.expressionMap.mainAlias!.metadata\n let insertionColumns = metadata.getInsertionReturningColumns()\n\n // to prevent extra select SQL execution for databases not supporting RETURNING\n // in the case if we have generated column and it's value returned by underlying driver\n // we remove this column from the insertionColumns list\n const needToCheckGenerated =\n this.queryRunner.connection.driver.isReturningSqlSupported(\"insert\")\n insertionColumns = insertionColumns.filter((column) => {\n if (!column.isGenerated) return true\n return needToCheckGenerated === true\n })\n\n const generatedMaps = entities.map((entity, entityIndex) => {\n if (\n this.queryRunner.connection.driver.options.type === \"oracle\" &&\n Array.isArray(insertResult.raw) &&\n this.expressionMap.extraReturningColumns.length > 0\n ) {\n insertResult.raw = insertResult.raw.reduce(\n (newRaw, rawItem, rawItemIndex) => {\n newRaw[\n this.expressionMap.extraReturningColumns[\n rawItemIndex\n ].databaseName\n ] = rawItem[0]\n return newRaw\n },\n {} as ObjectLiteral,\n )\n }\n // get all values generated by a database for us\n const result = Array.isArray(insertResult.raw)\n ? insertResult.raw[entityIndex]\n : insertResult.raw\n\n const generatedMap =\n this.queryRunner.connection.driver.createGeneratedMap(\n metadata,\n result,\n entityIndex,\n entities.length,\n ) || {}\n\n if (entityIndex in this.expressionMap.locallyGenerated) {\n this.queryRunner.manager.merge(\n metadata.target as any,\n generatedMap,\n this.expressionMap.locallyGenerated[entityIndex],\n )\n }\n\n this.queryRunner.manager.merge(\n metadata.target as any,\n entity,\n generatedMap,\n )\n\n return generatedMap\n })\n\n // for postgres and mssql we use returning/output statement to get values of inserted default and generated values\n // for other drivers we have to re-select this data from the database\n if (\n insertionColumns.length > 0 &&\n !this.queryRunner.connection.driver.isReturningSqlSupported(\n \"insert\",\n )\n ) {\n const entityIds = entities.map((entity) => {\n const entityId = metadata.getEntityIdMap(entity)!\n\n // We have to check for an empty `entityId` - if we don't, the query against the database\n // effectively drops the `where` clause entirely and the first record will be returned -\n // not what we want at all.\n if (!entityId)\n throw new TypeORMError(\n `Cannot update entity because entity id is not set in the entity.`,\n )\n\n return entityId\n })\n\n // to select just inserted entities we need a criteria to select by.\n // for newly inserted entities in drivers which do not support returning statement\n // row identifier can only be an increment column\n // (since its the only thing that can be generated by those databases)\n // or (and) other primary key which is defined by a user and inserted value has it\n\n const returningResult: any = await this.queryRunner.manager\n .createQueryBuilder()\n .select(\n metadata.primaryColumns.map(\n (column) =>\n metadata.targetName + \".\" + column.propertyPath,\n ),\n )\n .addSelect(\n insertionColumns.map(\n (column) =>\n metadata.targetName + \".\" + column.propertyPath,\n ),\n )\n .from(metadata.target, metadata.targetName)\n .where(entityIds)\n .setOption(\"create-pojo\") // use POJO because created object can contain default values, e.g. property = null and those properties might be overridden by merge process\n .getMany()\n\n entities.forEach((entity, entityIndex) => {\n this.queryRunner.manager.merge(\n metadata.target as any,\n generatedMaps[entityIndex],\n returningResult[entityIndex],\n )\n\n this.queryRunner.manager.merge(\n metadata.target as any,\n entity,\n returningResult[entityIndex],\n )\n })\n }\n\n entities.forEach((entity, entityIndex) => {\n const entityId = metadata.getEntityIdMap(entity)!\n insertResult.identifiers.push(entityId)\n insertResult.generatedMaps.push(generatedMaps[entityIndex])\n })\n }\n\n /**\n * Columns we need to be returned from the database when we update entity.\n */\n getUpdationReturningColumns(): ColumnMetadata[] {\n return this.expressionMap.mainAlias!.metadata.columns.filter(\n (column) => {\n return column.isUpdateDate || column.isVersion\n },\n )\n }\n\n /**\n * Columns we need to be returned from the database when we soft delete and restore entity.\n */\n getSoftDeletionReturningColumns(): ColumnMetadata[] {\n return this.expressionMap.mainAlias!.metadata.columns.filter(\n (column) => {\n return (\n column.isUpdateDate ||\n column.isVersion ||\n column.isDeleteDate\n )\n },\n )\n }\n}\n"],"sourceRoot":".."}
|
|
1
|
+
{"version":3,"sources":["../browser/src/query-builder/ReturningResultsEntityUpdator.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAEvC;;GAEG;AACH,MAAM,OAAO,6BAA6B;IACtC,4EAA4E;IAC5E,cAAc;IACd,4EAA4E;IAE5E,YACc,WAAwB,EACxB,aAAiC;QADjC,gBAAW,GAAX,WAAW,CAAa;QACxB,kBAAa,GAAb,aAAa,CAAoB;IAC5C,CAAC;IAEJ,4EAA4E;IAC5E,iBAAiB;IACjB,4EAA4E;IAE5E;;OAEG;IACH,KAAK,CAAC,MAAM,CACR,YAA0B,EAC1B,QAAyB;QAEzB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,SAAU,CAAC,QAAQ,CAAA;QAEvD,MAAM,OAAO,CAAC,GAAG,CACb,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE;YACvC,uIAAuI;YACvI,IACI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,uBAAuB,CACtD,QAAQ,CACX,EACH,CAAC;gBACC,IACI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI;oBAC3C,QAAQ;oBACZ,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC;oBAC/B,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,EACrD,CAAC;oBACC,YAAY,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CACtC,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE;wBAC9B,MAAM,CACF,IAAI,CAAC,aAAa,CAAC,qBAAqB,CACpC,YAAY,CACf,CAAC,YAAY,CACjB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;wBACd,OAAO,MAAM,CAAA;oBACjB,CAAC,EACD,EAAmB,CACtB,CAAA;gBACL,CAAC;gBACD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC;oBAC1C,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;oBAC/B,CAAC,CAAC,YAAY,CAAC,GAAG,CAAA;gBACtB,MAAM,gBAAgB,GAClB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,kBAAkB,CACjD,QAAQ,EACR,MAAM,CACT,CAAA;gBACL,IAAI,gBAAgB,EAAE,CAAC;oBACnB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAC1B,QAAQ,CAAC,MAAa,EACtB,MAAM,EACN,gBAAgB,CACnB,CAAA;oBACD,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;gBACrD,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,qHAAqH;gBACrH,MAAM,eAAe,GACjB,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAA;gBAC5C,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,iDAAiD;oBACjD,MAAM,QAAQ,GACV,IAAI,CAAC,aAAa,CAAC,SAAU,CAAC,QAAQ,CAAC,cAAc,CACjD,MAAM,CACT,CAAA;oBACL,IAAI,CAAC,QAAQ;wBACT,MAAM,IAAI,YAAY,CAClB,kEAAkE,CACrE,CAAA;oBAEL,mCAAmC;oBACnC,MAAM,sBAAsB,GACxB,CAAC,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO;yBAC1B,kBAAkB,EAAE;yBACpB,MAAM,CACH,QAAQ,CAAC,cAAc,CAAC,GAAG,CACvB,CAAC,MAAM,EAAE,EAAE,CACP,QAAQ,CAAC,UAAU;wBACnB,GAAG;wBACH,MAAM,CAAC,YAAY,CAC1B,CACJ;yBACA,SAAS,CACN,eAAe,CAAC,GAAG,CACf,CAAC,MAAM,EAAE,EAAE,CACP,QAAQ,CAAC,UAAU;wBACnB,GAAG;wBACH,MAAM,CAAC,YAAY,CAC1B,CACJ;yBACA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC;yBAC1C,KAAK,CAAC,QAAQ,CAAC;yBACf,WAAW,EAAE;yBACb,SAAS,CAAC,aAAa,CAAC,CAAC,6IAA6I;yBACtK,MAAM,EAAE,CAAQ,CAAA;oBAEzB,IAAI,sBAAsB,EAAE,CAAC;wBACzB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAC1B,QAAQ,CAAC,MAAa,EACtB,MAAM,EACN,sBAAsB,CACzB,CAAA;wBACD,YAAY,CAAC,aAAa,CAAC,IAAI,CAC3B,sBAAsB,CACzB,CAAA;oBACL,CAAC;gBACL,CAAC;YACL,CAAC;QACL,CAAC,CAAC,CACL,CAAA;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CACR,YAA0B,EAC1B,QAAyB;QAEzB,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,SAAU,CAAC,QAAQ,CAAA;QACvD,IAAI,gBAAgB,GAAG,QAAQ,CAAC,4BAA4B,EAAE,CAAA;QAE9D,+EAA+E;QAC/E,uFAAuF;QACvF,uDAAuD;QACvD,MAAM,oBAAoB,GACtB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAA;QACxE,gBAAgB,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE;YAClD,IAAI,CAAC,MAAM,CAAC,WAAW;gBAAE,OAAO,IAAI,CAAA;YACpC,OAAO,oBAAoB,KAAK,IAAI,CAAA;QACxC,CAAC,CAAC,CAAA;QAEF,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;YACvD,IACI,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ;gBAC5D,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC;gBAC/B,IAAI,CAAC,aAAa,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,EACrD,CAAC;gBACC,YAAY,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CACtC,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE;oBAC9B,MAAM,CACF,IAAI,CAAC,aAAa,CAAC,qBAAqB,CACpC,YAAY,CACf,CAAC,YAAY,CACjB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;oBACd,OAAO,MAAM,CAAA;gBACjB,CAAC,EACD,EAAmB,CACtB,CAAA;YACL,CAAC;YACD,gDAAgD;YAChD,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC;gBAC1C,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC;gBAC/B,CAAC,CAAC,YAAY,CAAC,GAAG,CAAA;YAEtB,MAAM,YAAY,GACd,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,kBAAkB,CACjD,QAAQ,EACR,MAAM,EACN,WAAW,EACX,QAAQ,CAAC,MAAM,CAClB,IAAI,EAAE,CAAA;YAEX,IAAI,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,gBAAgB,EAAE,CAAC;gBACrD,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAC1B,QAAQ,CAAC,MAAa,EACtB,YAAY,EACZ,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,WAAW,CAAC,CACnD,CAAA;YACL,CAAC;YAED,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAC1B,QAAQ,CAAC,MAAa,EACtB,MAAM,EACN,YAAY,CACf,CAAA;YAED,OAAO,YAAY,CAAA;QACvB,CAAC,CAAC,CAAA;QAEF,kHAAkH;QAClH,qEAAqE;QACrE,IACI,gBAAgB,CAAC,MAAM,GAAG,CAAC;YAC3B,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,uBAAuB,CACvD,QAAQ,CACX,EACH,CAAC;YACC,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;gBACtC,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAE,CAAA;gBAEjD,yFAAyF;gBACzF,wFAAwF;gBACxF,2BAA2B;gBAC3B,IAAI,CAAC,QAAQ;oBACT,MAAM,IAAI,YAAY,CAClB,kEAAkE,CACrE,CAAA;gBAEL,OAAO,QAAQ,CAAA;YACnB,CAAC,CAAC,CAAA;YAEF,oEAAoE;YACpE,kFAAkF;YAClF,iDAAiD;YACjD,sEAAsE;YACtE,kFAAkF;YAElF,MAAM,eAAe,GAAQ,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO;iBACtD,kBAAkB,EAAE;iBACpB,MAAM,CACH,QAAQ,CAAC,cAAc,CAAC,GAAG,CACvB,CAAC,MAAM,EAAE,EAAE,CACP,QAAQ,CAAC,UAAU,GAAG,GAAG,GAAG,MAAM,CAAC,YAAY,CACtD,CACJ;iBACA,SAAS,CACN,gBAAgB,CAAC,GAAG,CAChB,CAAC,MAAM,EAAE,EAAE,CACP,QAAQ,CAAC,UAAU,GAAG,GAAG,GAAG,MAAM,CAAC,YAAY,CACtD,CACJ;iBACA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC;iBAC1C,KAAK,CAAC,SAAS,CAAC;iBAChB,SAAS,CAAC,aAAa,CAAC,CAAC,6IAA6I;iBACtK,OAAO,EAAE,CAAA;YAEd,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;gBACrC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAC1B,QAAQ,CAAC,MAAa,EACtB,aAAa,CAAC,WAAW,CAAC,EAC1B,eAAe,CAAC,WAAW,CAAC,CAC/B,CAAA;gBAED,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,KAAK,CAC1B,QAAQ,CAAC,MAAa,EACtB,MAAM,EACN,eAAe,CAAC,WAAW,CAAC,CAC/B,CAAA;YACL,CAAC,CAAC,CAAA;QACN,CAAC;QAED,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;YACrC,MAAM,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAE,CAAA;YACjD,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YACvC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAA;QAC/D,CAAC,CAAC,CAAA;IACN,CAAC;IAED;;OAEG;IACH,2BAA2B;QACvB,OAAO,IAAI,CAAC,aAAa,CAAC,SAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CACxD,CAAC,MAAM,EAAE,EAAE;YACP,OAAO,CACH,MAAM,CAAC,YAAY,KAAK,SAAS;gBACjC,MAAM,CAAC,YAAY;gBACnB,MAAM,CAAC,SAAS,CACnB,CAAA;QACL,CAAC,CACJ,CAAA;IACL,CAAC;IAED;;OAEG;IACH,+BAA+B;QAC3B,OAAO,IAAI,CAAC,aAAa,CAAC,SAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CACxD,CAAC,MAAM,EAAE,EAAE;YACP,OAAO,CACH,MAAM,CAAC,YAAY,KAAK,SAAS;gBACjC,MAAM,CAAC,YAAY;gBACnB,MAAM,CAAC,SAAS;gBAChB,MAAM,CAAC,YAAY,CACtB,CAAA;QACL,CAAC,CACJ,CAAA;IACL,CAAC;CACJ","file":"ReturningResultsEntityUpdator.js","sourcesContent":["import { ObjectLiteral } from \"../common/ObjectLiteral\"\nimport { QueryRunner } from \"../query-runner/QueryRunner\"\nimport { QueryExpressionMap } from \"./QueryExpressionMap\"\nimport { ColumnMetadata } from \"../metadata/ColumnMetadata\"\nimport { UpdateResult } from \"./result/UpdateResult\"\nimport { InsertResult } from \"./result/InsertResult\"\nimport { TypeORMError } from \"../error\"\n\n/**\n * Updates entity with returning results in the entity insert and update operations.\n */\nexport class ReturningResultsEntityUpdator {\n // -------------------------------------------------------------------------\n // Constructor\n // -------------------------------------------------------------------------\n\n constructor(\n protected queryRunner: QueryRunner,\n protected expressionMap: QueryExpressionMap,\n ) {}\n\n // -------------------------------------------------------------------------\n // Public Methods\n // -------------------------------------------------------------------------\n\n /**\n * Updates entities with a special columns after updation query execution.\n */\n async update(\n updateResult: UpdateResult,\n entities: ObjectLiteral[],\n ): Promise<void> {\n const metadata = this.expressionMap.mainAlias!.metadata\n\n await Promise.all(\n entities.map(async (entity, entityIndex) => {\n // if database supports returning/output statement then we already should have updating values in the raw data returned by insert query\n if (\n this.queryRunner.connection.driver.isReturningSqlSupported(\n \"update\",\n )\n ) {\n if (\n this.queryRunner.connection.driver.options.type ===\n \"oracle\" &&\n Array.isArray(updateResult.raw) &&\n this.expressionMap.extraReturningColumns.length > 0\n ) {\n updateResult.raw = updateResult.raw.reduce(\n (newRaw, rawItem, rawItemIndex) => {\n newRaw[\n this.expressionMap.extraReturningColumns[\n rawItemIndex\n ].databaseName\n ] = rawItem[0]\n return newRaw\n },\n {} as ObjectLiteral,\n )\n }\n const result = Array.isArray(updateResult.raw)\n ? updateResult.raw[entityIndex]\n : updateResult.raw\n const returningColumns =\n this.queryRunner.connection.driver.createGeneratedMap(\n metadata,\n result,\n )\n if (returningColumns) {\n this.queryRunner.manager.merge(\n metadata.target as any,\n entity,\n returningColumns,\n )\n updateResult.generatedMaps.push(returningColumns)\n }\n } else {\n // for driver which do not support returning/output statement we need to perform separate query and load what we need\n const updationColumns =\n this.expressionMap.extraReturningColumns\n if (updationColumns.length > 0) {\n // get entity id by which we will get needed data\n const entityId =\n this.expressionMap.mainAlias!.metadata.getEntityIdMap(\n entity,\n )\n if (!entityId)\n throw new TypeORMError(\n `Cannot update entity because entity id is not set in the entity.`,\n )\n\n // execute query to get needed data\n const loadedReturningColumns =\n (await this.queryRunner.manager\n .createQueryBuilder()\n .select(\n metadata.primaryColumns.map(\n (column) =>\n metadata.targetName +\n \".\" +\n column.propertyPath,\n ),\n )\n .addSelect(\n updationColumns.map(\n (column) =>\n metadata.targetName +\n \".\" +\n column.propertyPath,\n ),\n )\n .from(metadata.target, metadata.targetName)\n .where(entityId)\n .withDeleted()\n .setOption(\"create-pojo\") // use POJO because created object can contain default values, e.g. property = null and those properties might be overridden by merge process\n .getOne()) as any\n\n if (loadedReturningColumns) {\n this.queryRunner.manager.merge(\n metadata.target as any,\n entity,\n loadedReturningColumns,\n )\n updateResult.generatedMaps.push(\n loadedReturningColumns,\n )\n }\n }\n }\n }),\n )\n }\n\n /**\n * Updates entities with a special columns after insertion query execution.\n */\n async insert(\n insertResult: InsertResult,\n entities: ObjectLiteral[],\n ): Promise<void> {\n const metadata = this.expressionMap.mainAlias!.metadata\n let insertionColumns = metadata.getInsertionReturningColumns()\n\n // to prevent extra select SQL execution for databases not supporting RETURNING\n // in the case if we have generated column and it's value returned by underlying driver\n // we remove this column from the insertionColumns list\n const needToCheckGenerated =\n this.queryRunner.connection.driver.isReturningSqlSupported(\"insert\")\n insertionColumns = insertionColumns.filter((column) => {\n if (!column.isGenerated) return true\n return needToCheckGenerated === true\n })\n\n const generatedMaps = entities.map((entity, entityIndex) => {\n if (\n this.queryRunner.connection.driver.options.type === \"oracle\" &&\n Array.isArray(insertResult.raw) &&\n this.expressionMap.extraReturningColumns.length > 0\n ) {\n insertResult.raw = insertResult.raw.reduce(\n (newRaw, rawItem, rawItemIndex) => {\n newRaw[\n this.expressionMap.extraReturningColumns[\n rawItemIndex\n ].databaseName\n ] = rawItem[0]\n return newRaw\n },\n {} as ObjectLiteral,\n )\n }\n // get all values generated by a database for us\n const result = Array.isArray(insertResult.raw)\n ? insertResult.raw[entityIndex]\n : insertResult.raw\n\n const generatedMap =\n this.queryRunner.connection.driver.createGeneratedMap(\n metadata,\n result,\n entityIndex,\n entities.length,\n ) || {}\n\n if (entityIndex in this.expressionMap.locallyGenerated) {\n this.queryRunner.manager.merge(\n metadata.target as any,\n generatedMap,\n this.expressionMap.locallyGenerated[entityIndex],\n )\n }\n\n this.queryRunner.manager.merge(\n metadata.target as any,\n entity,\n generatedMap,\n )\n\n return generatedMap\n })\n\n // for postgres and mssql we use returning/output statement to get values of inserted default and generated values\n // for other drivers we have to re-select this data from the database\n if (\n insertionColumns.length > 0 &&\n !this.queryRunner.connection.driver.isReturningSqlSupported(\n \"insert\",\n )\n ) {\n const entityIds = entities.map((entity) => {\n const entityId = metadata.getEntityIdMap(entity)!\n\n // We have to check for an empty `entityId` - if we don't, the query against the database\n // effectively drops the `where` clause entirely and the first record will be returned -\n // not what we want at all.\n if (!entityId)\n throw new TypeORMError(\n `Cannot update entity because entity id is not set in the entity.`,\n )\n\n return entityId\n })\n\n // to select just inserted entities we need a criteria to select by.\n // for newly inserted entities in drivers which do not support returning statement\n // row identifier can only be an increment column\n // (since its the only thing that can be generated by those databases)\n // or (and) other primary key which is defined by a user and inserted value has it\n\n const returningResult: any = await this.queryRunner.manager\n .createQueryBuilder()\n .select(\n metadata.primaryColumns.map(\n (column) =>\n metadata.targetName + \".\" + column.propertyPath,\n ),\n )\n .addSelect(\n insertionColumns.map(\n (column) =>\n metadata.targetName + \".\" + column.propertyPath,\n ),\n )\n .from(metadata.target, metadata.targetName)\n .where(entityIds)\n .setOption(\"create-pojo\") // use POJO because created object can contain default values, e.g. property = null and those properties might be overridden by merge process\n .getMany()\n\n entities.forEach((entity, entityIndex) => {\n this.queryRunner.manager.merge(\n metadata.target as any,\n generatedMaps[entityIndex],\n returningResult[entityIndex],\n )\n\n this.queryRunner.manager.merge(\n metadata.target as any,\n entity,\n returningResult[entityIndex],\n )\n })\n }\n\n entities.forEach((entity, entityIndex) => {\n const entityId = metadata.getEntityIdMap(entity)!\n insertResult.identifiers.push(entityId)\n insertResult.generatedMaps.push(generatedMaps[entityIndex])\n })\n }\n\n /**\n * Columns we need to be returned from the database when we update entity.\n */\n getUpdationReturningColumns(): ColumnMetadata[] {\n return this.expressionMap.mainAlias!.metadata.columns.filter(\n (column) => {\n return (\n column.asExpression !== undefined ||\n column.isUpdateDate ||\n column.isVersion\n )\n },\n )\n }\n\n /**\n * Columns we need to be returned from the database when we soft delete and restore entity.\n */\n getSoftDeletionReturningColumns(): ColumnMetadata[] {\n return this.expressionMap.mainAlias!.metadata.columns.filter(\n (column) => {\n return (\n column.asExpression !== undefined ||\n column.isUpdateDate ||\n column.isVersion ||\n column.isDeleteDate\n )\n },\n )\n }\n}\n"],"sourceRoot":".."}
|
|
@@ -504,17 +504,17 @@ export declare class SelectQueryBuilder<Entity extends ObjectLiteral> extends Qu
|
|
|
504
504
|
*/
|
|
505
505
|
addOrderBy(sort: string, order?: "ASC" | "DESC", nulls?: "NULLS FIRST" | "NULLS LAST"): this;
|
|
506
506
|
/**
|
|
507
|
-
*
|
|
507
|
+
* Sets LIMIT - maximum number of rows to be selected.
|
|
508
508
|
* NOTE that it may not work as you expect if you are using joins.
|
|
509
509
|
* If you want to implement pagination, and you are having join in your query,
|
|
510
|
-
* then use
|
|
510
|
+
* then use the take method instead.
|
|
511
511
|
*/
|
|
512
512
|
limit(limit?: number): this;
|
|
513
513
|
/**
|
|
514
|
-
*
|
|
514
|
+
* Sets OFFSET - selection offset.
|
|
515
515
|
* NOTE that it may not work as you expect if you are using joins.
|
|
516
516
|
* If you want to implement pagination, and you are having join in your query,
|
|
517
|
-
* then use
|
|
517
|
+
* then use the skip method instead.
|
|
518
518
|
*/
|
|
519
519
|
offset(offset?: number): this;
|
|
520
520
|
/**
|
|
@@ -151,8 +151,8 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
151
151
|
return this;
|
|
152
152
|
}
|
|
153
153
|
fromDummy() {
|
|
154
|
-
|
|
155
|
-
|
|
154
|
+
return this.from(this.connection.driver.dummyTableName ??
|
|
155
|
+
"(SELECT 1 AS dummy_column)", "dummy_table");
|
|
156
156
|
}
|
|
157
157
|
/**
|
|
158
158
|
* Specifies FROM which entity's table select/update/delete will be executed.
|
|
@@ -541,10 +541,10 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
541
541
|
return this;
|
|
542
542
|
}
|
|
543
543
|
/**
|
|
544
|
-
*
|
|
544
|
+
* Sets LIMIT - maximum number of rows to be selected.
|
|
545
545
|
* NOTE that it may not work as you expect if you are using joins.
|
|
546
546
|
* If you want to implement pagination, and you are having join in your query,
|
|
547
|
-
* then use
|
|
547
|
+
* then use the take method instead.
|
|
548
548
|
*/
|
|
549
549
|
limit(limit) {
|
|
550
550
|
this.expressionMap.limit = this.normalizeNumber(limit);
|
|
@@ -554,10 +554,10 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
554
554
|
return this;
|
|
555
555
|
}
|
|
556
556
|
/**
|
|
557
|
-
*
|
|
557
|
+
* Sets OFFSET - selection offset.
|
|
558
558
|
* NOTE that it may not work as you expect if you are using joins.
|
|
559
559
|
* If you want to implement pagination, and you are having join in your query,
|
|
560
|
-
* then use
|
|
560
|
+
* then use the skip method instead.
|
|
561
561
|
*/
|
|
562
562
|
offset(offset) {
|
|
563
563
|
this.expressionMap.offset = this.normalizeNumber(offset);
|
|
@@ -2059,7 +2059,7 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
2059
2059
|
const relations = Array.isArray(this.findOptions.relations)
|
|
2060
2060
|
? OrmUtils.propertyPathsToTruthyObject(this.findOptions.relations)
|
|
2061
2061
|
: this.findOptions.relations;
|
|
2062
|
-
const queryBuilder = this.createQueryBuilder()
|
|
2062
|
+
const queryBuilder = this.createQueryBuilder(queryRunner)
|
|
2063
2063
|
.select(relationAlias)
|
|
2064
2064
|
.from(relationTarget, relationAlias)
|
|
2065
2065
|
.setFindOptions({
|
|
@@ -2392,9 +2392,9 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
2392
2392
|
? order[key].nulls
|
|
2393
2393
|
: undefined;
|
|
2394
2394
|
nulls =
|
|
2395
|
-
|
|
2395
|
+
nulls?.toLowerCase() === "first"
|
|
2396
2396
|
? "NULLS FIRST"
|
|
2397
|
-
:
|
|
2397
|
+
: nulls?.toLowerCase() === "last"
|
|
2398
2398
|
? "NULLS LAST"
|
|
2399
2399
|
: undefined;
|
|
2400
2400
|
let aliasPath = `${alias}.${propertyPath}`;
|
|
@@ -2448,17 +2448,16 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
2448
2448
|
buildWhere(where, metadata, alias, embedPrefix) {
|
|
2449
2449
|
let condition = "";
|
|
2450
2450
|
// let parameterIndex = Object.keys(this.expressionMap.nativeParameters).length;
|
|
2451
|
-
if (Array.isArray(where)
|
|
2452
|
-
|
|
2453
|
-
|
|
2454
|
-
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
|
|
2461
|
-
")";
|
|
2451
|
+
if (Array.isArray(where)) {
|
|
2452
|
+
if (where.length) {
|
|
2453
|
+
condition = where
|
|
2454
|
+
.map((whereItem) => {
|
|
2455
|
+
return this.buildWhere(whereItem, metadata, alias, embedPrefix);
|
|
2456
|
+
})
|
|
2457
|
+
.filter((condition) => !!condition)
|
|
2458
|
+
.map((condition) => "(" + condition + ")")
|
|
2459
|
+
.join(" OR ");
|
|
2460
|
+
}
|
|
2462
2461
|
}
|
|
2463
2462
|
else {
|
|
2464
2463
|
let andConditions = [];
|
|
@@ -2640,9 +2639,11 @@ export class SelectQueryBuilder extends QueryBuilder {
|
|
|
2640
2639
|
}
|
|
2641
2640
|
}
|
|
2642
2641
|
}
|
|
2643
|
-
condition = andConditions.
|
|
2642
|
+
condition = andConditions.length
|
|
2643
|
+
? "(" + andConditions.join(") AND (") + ")"
|
|
2644
|
+
: andConditions.join(" AND ");
|
|
2644
2645
|
}
|
|
2645
|
-
return condition;
|
|
2646
|
+
return condition.length ? "(" + condition + ")" : condition;
|
|
2646
2647
|
}
|
|
2647
2648
|
}
|
|
2648
2649
|
|