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;