feat(media): support local and s3 upload providers
This commit is contained in:
41
apps/admin/src/lib/media/storage.ts
Normal file
41
apps/admin/src/lib/media/storage.ts
Normal 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,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user