Files v2 - Use Files field in attachment (#17707)

- Add FILES field on attachment
- Adapt Attachment logic in front to use new resolver/controller
- Update files-field logic to infer applicationId from fieldMetadataId +
ask for fieldMetadataId in upload resolver
- Design update


To do in next PR : 
- Adapt activity files logic
This commit is contained in:
Etienne
2026-02-05 17:42:19 +01:00
committed by GitHub
parent e382641ac3
commit 77d15356e1
38 changed files with 1905 additions and 1533 deletions
@@ -169,7 +169,6 @@ export class WorkspaceInsertQueryBuilder<
);
let filesFieldFileIds = null;
let fileIdToApplicationId = new Map<string, string>();
const entities = Array.isArray(this.expressionMap.valuesSet)
? this.expressionMap.valuesSet
@@ -191,7 +190,6 @@ export class WorkspaceInsertQueryBuilder<
});
filesFieldFileIds = result.fileIds;
fileIdToApplicationId = result.fileIdToApplicationId;
this.expressionMap.valuesSet = Array.isArray(
this.expressionMap.valuesSet,
@@ -227,10 +225,7 @@ export class WorkspaceInsertQueryBuilder<
const result = await super.execute();
if (isDefined(filesFieldFileIds)) {
await this.filesFieldSync.updateFileEntityRecords(
filesFieldFileIds,
fileIdToApplicationId,
);
await this.filesFieldSync.updateFileEntityRecords(filesFieldFileIds);
}
const eventSelectQueryBuilder = (
this.connection.manager as WorkspaceEntityManager
@@ -173,7 +173,6 @@ export class WorkspaceUpdateQueryBuilder<
let filesFieldDiffByEntityIndex = null;
let filesFieldFileIds = null;
let fileIdToApplicationId = new Map<string, string>();
const updatePayload = Array.isArray(this.expressionMap.valuesSet)
? (this.expressionMap.valuesSet[0] ?? {})
@@ -197,7 +196,6 @@ export class WorkspaceUpdateQueryBuilder<
});
filesFieldFileIds = result.fileIds;
fileIdToApplicationId = result.fileIdToApplicationId;
this.expressionMap.valuesSet = result.entities[0];
}
@@ -236,10 +234,7 @@ export class WorkspaceUpdateQueryBuilder<
const result = await super.execute();
if (isDefined(filesFieldFileIds)) {
await this.filesFieldSync.updateFileEntityRecords(
filesFieldFileIds,
fileIdToApplicationId,
);
await this.filesFieldSync.updateFileEntityRecords(filesFieldFileIds);
}
const after = await eventSelectQueryBuilder.getMany();
@@ -374,7 +369,6 @@ export class WorkspaceUpdateQueryBuilder<
let filesFieldDiffByEntityIndex = null;
let filesFieldFileIds = null;
let fileIdToApplicationId = null;
const entities = this.manyInputs.map((input) => input.partialEntity);
@@ -394,7 +388,6 @@ export class WorkspaceUpdateQueryBuilder<
});
filesFieldFileIds = result.fileIds;
fileIdToApplicationId = result.fileIdToApplicationId;
this.manyInputs = result.entities.map((updatedEntity, index) => ({
criteria: this.manyInputs[index].criteria,
@@ -451,11 +444,8 @@ export class WorkspaceUpdateQueryBuilder<
results.push(result);
}
if (isDefined(filesFieldFileIds) && isDefined(fileIdToApplicationId)) {
await this.filesFieldSync.updateFileEntityRecords(
filesFieldFileIds,
fileIdToApplicationId,
);
if (isDefined(filesFieldFileIds)) {
await this.filesFieldSync.updateFileEntityRecords(filesFieldFileIds);
}
const afterRecords = await eventSelectQueryBuilder.getMany();