Selaa lähdekoodia

refactor(server): use better algorithm for calculating the duplicate filename (#3061)

Jason Rasmussen 2 vuotta sitten
vanhempi
commit
19cc94e594
1 muutettua tiedostoa jossa 5 lisäystä ja 7 poistoa
  1. 5 7
      server/src/domain/asset/asset.service.ts

+ 5 - 7
server/src/domain/asset/asset.service.ts

@@ -96,19 +96,17 @@ export class AssetService {
 
     const zip = this.storageRepository.createZipStream();
     const assets = await this.assetRepository.getByIds(dto.assetIds);
-    const paths: Record<string, boolean> = {};
+    const paths: Record<string, number> = {};
 
     for (const { originalPath, originalFileName } of assets) {
       const ext = extname(originalPath);
       let filename = `${originalFileName}${ext}`;
-      for (let i = 0; i < 10_000; i++) {
-        if (!paths[filename]) {
-          break;
-        }
-        filename = `${originalFileName}+${i + 1}${ext}`;
+      const count = paths[filename] || 0;
+      paths[filename] = count + 1;
+      if (count !== 0) {
+        filename = `${originalFileName}+${count}${ext}`;
       }
 
-      paths[filename] = true;
       zip.addFile(originalPath, filename);
     }