feat(media): default to s3 with local upload fallback
This commit is contained in:
@@ -3,8 +3,8 @@ import { describe, expect, it } from "vitest"
|
||||
import { resolveMediaStorageProvider } from "@/lib/media/storage"
|
||||
|
||||
describe("resolveMediaStorageProvider", () => {
|
||||
it("defaults to local when unset", () => {
|
||||
expect(resolveMediaStorageProvider(undefined)).toBe("local")
|
||||
it("defaults to s3 when unset", () => {
|
||||
expect(resolveMediaStorageProvider(undefined)).toBe("s3")
|
||||
})
|
||||
|
||||
it("resolves s3", () => {
|
||||
@@ -12,7 +12,12 @@ describe("resolveMediaStorageProvider", () => {
|
||||
expect(resolveMediaStorageProvider("S3")).toBe("s3")
|
||||
})
|
||||
|
||||
it("falls back to local for unknown values", () => {
|
||||
expect(resolveMediaStorageProvider("foo")).toBe("local")
|
||||
it("resolves local explicitly", () => {
|
||||
expect(resolveMediaStorageProvider("local")).toBe("local")
|
||||
expect(resolveMediaStorageProvider("LOCAL")).toBe("local")
|
||||
})
|
||||
|
||||
it("falls back to s3 for unknown values", () => {
|
||||
expect(resolveMediaStorageProvider("foo")).toBe("s3")
|
||||
})
|
||||
})
|
||||
|
||||
@@ -14,21 +14,29 @@ type StoredUpload = {
|
||||
}
|
||||
|
||||
export function resolveMediaStorageProvider(raw: string | undefined): MediaStorageProvider {
|
||||
if (raw?.toLowerCase() === "s3") {
|
||||
return "s3"
|
||||
if (raw?.toLowerCase() === "local") {
|
||||
return "local"
|
||||
}
|
||||
|
||||
return "local"
|
||||
return "s3"
|
||||
}
|
||||
|
||||
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,
|
||||
try {
|
||||
const stored = await storeUploadToS3(params)
|
||||
return {
|
||||
...stored,
|
||||
provider,
|
||||
}
|
||||
} catch {
|
||||
const fallbackStored = await storeUploadLocally(params)
|
||||
return {
|
||||
...fallbackStored,
|
||||
provider: "local",
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user