UpdateMany - Process connect queries in batch (#13907)

closes https://github.com/twentyhq/core-team-issues/issues/1357
This commit is contained in:
Etienne
2025-08-13 17:53:04 +02:00
committed by GitHub
parent 6528038e9e
commit 5eba2a8011
@@ -235,38 +235,42 @@ export class WorkspaceUpdateQueryBuilder<
const results: UpdateResult[] = [];
const nestedRelationQueryBuilder = new WorkspaceSelectQueryBuilder(
this as unknown as WorkspaceSelectQueryBuilder<T>,
this.objectRecordsPermissions,
this.internalContext,
this.shouldBypassPermissionChecks,
this.authContext,
);
this.relationNestedConfig =
this.relationNestedQueries.prepareNestedRelationQueries(
this.manyInputs.map(
(input) => input.partialEntity,
) as QueryDeepPartialEntityWithNestedRelationFields<T>[],
mainAliasTarget,
);
if (isDefined(this.relationNestedConfig)) {
const updatedValues =
await this.relationNestedQueries.processRelationNestedQueries({
entities: this.manyInputs.map((input) => input.partialEntity) as
| QueryDeepPartialEntityWithNestedRelationFields<T>
| QueryDeepPartialEntityWithNestedRelationFields<T>[],
relationNestedConfig: this.relationNestedConfig,
queryBuilder: nestedRelationQueryBuilder,
});
this.manyInputs = updatedValues.map((updatedValue, index) => ({
criteria: this.manyInputs[index].criteria,
partialEntity: updatedValue,
}));
}
for (const input of this.manyInputs) {
this.expressionMap.valuesSet = input.partialEntity;
this.where({ id: input.criteria });
const nestedRelationQueryBuilder = new WorkspaceSelectQueryBuilder(
this as unknown as WorkspaceSelectQueryBuilder<T>,
this.objectRecordsPermissions,
this.internalContext,
this.shouldBypassPermissionChecks,
this.authContext,
);
this.relationNestedConfig =
this.relationNestedQueries.prepareNestedRelationQueries(
input.partialEntity as QueryDeepPartialEntityWithNestedRelationFields<T>,
mainAliasTarget,
);
if (isDefined(this.relationNestedConfig)) {
const updatedValues =
await this.relationNestedQueries.processRelationNestedQueries({
entities: input.partialEntity as
| QueryDeepPartialEntityWithNestedRelationFields<T>
| QueryDeepPartialEntityWithNestedRelationFields<T>[],
relationNestedConfig: this.relationNestedConfig,
queryBuilder: nestedRelationQueryBuilder,
});
this.expressionMap.valuesSet =
updatedValues.length === 1 ? updatedValues[0] : updatedValues;
}
const result = await super.execute();
results.push(result);