Add media helper for R2 keys and cleanup

This commit is contained in:
2026-09-12 09:56:32 +08:00
parent 002cf368c3
commit 13570689dd
+28
View File
@@ -0,0 +1,28 @@
import type { AppEnv } from "./env";
export const MEDIA_PREFIX = "/media/";
/** 由 R2 key 砌出對外 URL。 */
export function mediaUrl(key: string): string {
return `${MEDIA_PREFIX}${key}`;
}
/** 由 /media/... URL 取出 R2 key;唔係 /media/ 開頭回 null。 */
export function mediaKey(url: string | null | undefined): string | null {
if (!url || !url.startsWith(MEDIA_PREFIX)) return null;
return url.slice(MEDIA_PREFIX.length);
}
/** 刪除 /media/... 對應嘅 R2 物件;外部 URL 或空值唔理,唔會 throw。 */
export async function deleteMedia(
env: AppEnv,
url: string | null | undefined,
): Promise<void> {
const key = mediaKey(url);
if (!key) return;
try {
await env.MEDIA.delete(key);
} catch {
// 刪除失敗唔應該阻礙儲存流程。
}
}