2
0
Files
bot/packages/lib/s3/removeObjectsRecursively.ts
2024-09-02 11:23:01 +02:00

68 lines
1.6 KiB
TypeScript

import { env } from '@typebot.io/env'
import { initClient } from './initClient'
const removeObjectsRecursively = async (prefix: string) => {
const minioClient = initClient()
const bucketName = env.S3_BUCKET
const objectsStream = minioClient.listObjectsV2(bucketName, prefix, true)
for await (const obj of objectsStream) {
try {
await minioClient.removeObject(bucketName, obj.name)
} catch (err) {
console.error(`Error removing ${obj.name}:`, err)
}
}
}
export const removeObjectsFromWorkspace = async (workspaceId: string) => {
await removeObjectsRecursively(`public/workspaces/${workspaceId}/`)
await removeObjectsRecursively(`private/workspaces/${workspaceId}/`)
}
export const removeObjectsFromResult = async ({
workspaceId,
resultIds,
typebotId,
}: {
workspaceId: string
resultIds: string[]
typebotId: string
}) => {
for (const resultId of resultIds) {
await removeObjectsRecursively(
`public/workspaces/${workspaceId}/typebots/${typebotId}/results/${resultId}/`
)
}
}
export const removeAllObjectsFromResult = async ({
workspaceId,
typebotId,
}: {
workspaceId: string
typebotId: string
}) => {
await removeObjectsRecursively(
`public/workspaces/${workspaceId}/typebots/${typebotId}/results/`
)
}
export const removeObjectsFromTypebot = async ({
typebotId,
workspaceId,
}: {
typebotId: string
workspaceId: string
}) => {
await removeObjectsRecursively(
`public/workspaces/${workspaceId}/typebots/${typebotId}/`
)
}
export const removeObjectsFromUser = async (userId: string) => {
await removeObjectsRecursively(`public/users/${userId}/`)
}