Backup_FME_personal/force-app/main/default/classes/FileEventQueueableHandler.cls

52 lines
2.0 KiB
OpenEdge ABL

public class FileEventQueueableHandler implements Queueable, Database.AllowsCallouts {
private List<Id> contentVersionIds;
private static final Integer MAX_FILES = 10; // max files per job
private static final Integer MAX_HEAP = 4000000; // ~4 MB heap limit
public FileEventQueueableHandler(List<Id> ids) {
this.contentVersionIds = ids;
}
public void execute(QueueableContext qc) {
if (contentVersionIds.isEmpty()) return;
// Query all ContentVersions
List<ContentVersion> allCVs = [
SELECT Id, Title, Description, FileExtension, FileType, ContentSize,
ContentDocumentId, FirstPublishLocationId, OwnerId
FROM ContentVersion
WHERE Id IN :contentVersionIds
ORDER BY CreatedDate ASC
];
// Prepare new records
List<File_Event__c> recordsToInsert = new List<File_Event__c>();
for (ContentVersion cvItem : allCVs) {
if (cvItem.ContentDocumentId == null) continue;
File_Event__c fc = new File_Event__c();
fc.File_Id__c = cvItem.Id;
fc.HIC_FilesME__Event_Type__c = 'Salesforce Content Version Created';
fc.HIC_FilesME__Title__c = cvItem.Title;
fc.HIC_FilesME__Description__c = cvItem.Description;
fc.HIC_FilesME__File_Extension__c = cvItem.FileExtension;
fc.HIC_FilesME__File_Type__c = cvItem.FileType;
fc.HIC_FilesME__File_Location__c = 'ContentVersion';
fc.HIC_FilesME__File_URL__c = '/sfc/servlet.shepherd/document/download/' + cvItem.ContentDocumentId;
fc.HIC_FilesME__Size__c = cvItem.ContentSize;
fc.HIC_FilesME__Record_Id__c = cvItem.FirstPublishLocationId;
// fc.OwnerId = cvItem.OwnerId;
recordsToInsert.add(fc);
}
if (!recordsToInsert.isEmpty()) {
insert recordsToInsert;
System.debug('Inserted File_Event__c batch. Size=' + recordsToInsert.size());
}
}
}