- send only one request for checkBulkUpload

This commit is contained in:
tiefseetauchner 2024-08-15 20:02:11 +02:00
parent 32dfc3ddcb
commit 5c9ef5c6fd

View File

@ -97,22 +97,14 @@ export const checkForDuplicates = async (files: string[], { concurrency, skipHas
progressBar.start(files.length, 0); progressBar.start(files.length, 0);
const newFiles: string[] = []; const results: { id: string; checksum: string }[] = [];
const duplicates: Asset[] = [];
const queue = new Queue<string, AssetBulkUploadCheckResults>( const queue = new Queue<string, AssetBulkUploadCheckResults>(
async (filepath: string) => { async (filepath: string) => {
const dto = [{ id: filepath, checksum: await sha1(filepath) }]; const dto = { id: filepath, checksum: await sha1(filepath) };
const response = await checkBulkUpload({ assetBulkUploadCheckDto: { assets: dto } });
const results = response.results as AssetBulkUploadCheckResults; results.push(dto);
for (const { id: filepath, assetId, action } of results) {
if (action === Action.Accept) {
newFiles.push(filepath);
} else {
// rejects are always duplicates
duplicates.push({ id: assetId as string, filepath });
}
}
progressBar.increment(); progressBar.increment();
return results; return results;
}, },
@ -127,6 +119,19 @@ export const checkForDuplicates = async (files: string[], { concurrency, skipHas
await queue.drained(); await queue.drained();
const newFiles: string[] = [];
const duplicates: Asset[] = [];
const response = await checkBulkUpload({ assetBulkUploadCheckDto: { assets: results } });
for (const { id: filepath, assetId, action } of response.results) {
if (action === Action.Accept) {
newFiles.push(filepath);
} else {
// rejects are always duplicates
duplicates.push({ id: assetId as string, filepath });
}
}
progressBar.stop(); progressBar.stop();
console.log(`Found ${newFiles.length} new files and ${duplicates.length} duplicate${s(duplicates.length)}`); console.log(`Found ${newFiles.length} new files and ${duplicates.length} duplicate${s(duplicates.length)}`);