68 lines
1.6 KiB
TypeScript
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}/`)
|
|
}
|