feat(media): support local and s3 upload providers

This commit is contained in:
2026-02-12 12:02:31 +01:00
parent 5becba602c
commit 19738b77d8
11 changed files with 407 additions and 41 deletions

View File

@@ -0,0 +1,41 @@
import { storeUploadLocally } from "@/lib/media/local-storage"
import { storeUploadToS3 } from "@/lib/media/s3-storage"
export type MediaStorageProvider = "local" | "s3"
type StoreUploadParams = {
file: File
mediaType: string
}
type StoredUpload = {
storageKey: string
provider: MediaStorageProvider
}
export function resolveMediaStorageProvider(raw: string | undefined): MediaStorageProvider {
if (raw?.toLowerCase() === "s3") {
return "s3"
}
return "local"
}
export async function storeUpload(params: StoreUploadParams): Promise<StoredUpload> {
const provider = resolveMediaStorageProvider(process.env.CMS_MEDIA_STORAGE_PROVIDER)
if (provider === "s3") {
const stored = await storeUploadToS3(params)
return {
...stored,
provider,
}
}
const stored = await storeUploadLocally(params)
return {
...stored,
provider,
}
}