45 lines
1.1 KiB
JavaScript
45 lines
1.1 KiB
JavaScript
import {
|
|
DeleteObjectsCommand,
|
|
ListObjectsV2Command,
|
|
S3Client
|
|
} from '@aws-sdk/client-s3'
|
|
|
|
const bucket = 'speckle-server'
|
|
const prefixes = [
|
|
'assets/20a00d4e0e/',
|
|
'viewer-derivatives/20a00d4e0e/',
|
|
'preview/20a00d4e0e/',
|
|
'previews/20a00d4e0e/'
|
|
]
|
|
|
|
const client = new S3Client({
|
|
endpoint: 'http://127.0.0.1:9000',
|
|
region: 'us-east-1',
|
|
forcePathStyle: true,
|
|
credentials: { accessKeyId: 'minioadmin', secretAccessKey: 'minioadmin' }
|
|
})
|
|
|
|
let total = 0
|
|
for (const Prefix of prefixes) {
|
|
let ContinuationToken = undefined
|
|
do {
|
|
const listed = await client.send(
|
|
new ListObjectsV2Command({ Bucket: bucket, Prefix, ContinuationToken })
|
|
)
|
|
const objects = (listed.Contents || []).map(({ Key }) => ({ Key }))
|
|
if (objects.length) {
|
|
await client.send(
|
|
new DeleteObjectsCommand({
|
|
Bucket: bucket,
|
|
Delete: { Objects: objects, Quiet: true }
|
|
})
|
|
)
|
|
total += objects.length
|
|
console.log(JSON.stringify({ prefix: Prefix, deleted: objects.length }))
|
|
}
|
|
ContinuationToken = listed.NextContinuationToken
|
|
} while (ContinuationToken)
|
|
}
|
|
|
|
console.log(JSON.stringify({ totalDeleted: total }))
|