feat: storage-uploadthing package (#6316)

Co-authored-by: James <james@trbl.design>
This commit is contained in:
Elliot DeNolf
2024-05-10 17:05:35 -04:00
committed by GitHub
parent ea84e82ad5
commit ed880d5018
34 changed files with 774 additions and 17 deletions

View File

@@ -0,0 +1,35 @@
import type { HandleDelete } from '@payloadcms/plugin-cloud-storage/types'
import type { UTApi } from 'uploadthing/server'
import { APIError } from 'payload/errors'
import { getKeyFromFilename } from './utilities.js'
type Args = {
utApi: UTApi
}
export const getHandleDelete = ({ utApi }: Args): HandleDelete => {
return async ({ doc, filename, req }) => {
const key = getKeyFromFilename(doc, filename)
if (!key) {
req.payload.logger.error({
msg: `Error deleting file: ${filename} - unable to extract key from doc`,
})
throw new APIError(`Error deleting file: ${filename}`)
}
try {
if (key) {
await utApi.deleteFiles(key)
}
} catch (err) {
req.payload.logger.error({
err,
msg: `Error deleting file with key: ${filename} - key: ${key}`,
})
throw new APIError(`Error deleting file: ${filename}`)
}
}
}