From b167a612b47b481cdb72c09bfa9cf7555ea587cd Mon Sep 17 00:00:00 2001 From: Methapon Metanipat Date: Tue, 20 Aug 2024 15:20:14 +0700 Subject: [PATCH] feat: add util function delete folder minio --- src/services/minio.ts | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/services/minio.ts b/src/services/minio.ts index 1a78e8d..8188c6f 100644 --- a/src/services/minio.ts +++ b/src/services/minio.ts @@ -10,6 +10,28 @@ const minio = new Client({ export default minio; +export async function deleteFolder(bucket: string, path: string, wait = false) { + return new Promise((resolve, reject) => { + const item: string[] = []; + + const stream = minio.listObjectsV2(bucket, path); + + stream.on("data", (v) => v && v.name && item.push(v.name)); + stream.on("end", () => resolve(item)); + stream.on("error", () => reject(new Error("MinIO error."))); + }).then(async (list) => { + const promises = list.map(async (v) => + minio.removeObject(bucket, v, { + forceDelete: true, + }), + ); + + if (wait) await Promise.allSettled(promises); + + return list; + }); +} + // minio typescript does not support include version type BucketItemWithVersion = { name: string;