Files
photo-live/services/api/src/public-ov/storage-ov.provider.ts
T

20 lines
1.2 KiB
TypeScript
Raw Normal View History

// services/api/src/public-ov/storage-ov.provider.ts —— ov 侧 StoragePort 的 DI
// 装配(P2 Task 6)。与 cn 侧 uploads/storage.provider 同一构造
// (createStorageFromEnv → MinioStorageAdapter),但**只读约定**:
// · ov 公开读域只调用 presignGet(thumb/browse/banner 现签短期 GET 凭证);
// cn 副本对象键与 ov 共用同一本地 MinIO(生产为同桶只读凭证/CDN,P5)。
// · 「只读」是约定而非凭证约束:本地仿真沿用同一对 access key,真实 OSS
// 侧应发放只读凭证(presignGet/head)——登记为 P5 部署事项(计划 Task 6
// 执行注意:真实 OSS 只读凭证随 G1/P5)。
// 独立 DI token(STORAGE_PORT_OV)而非复用 STORAGE_PORT:uploads 模块属 cn
// 角色装配(Redis 队列等),ov 入口不 import UploadsModule,token 不共享实例。
import { createStorageFromEnv, type StoragePort } from '@photo/storage';
/** ov 侧只读存储端口 DI token(public-ov Task 6;likes/visits 后续按需复用)。 */
export const STORAGE_PORT_OV = Symbol('STORAGE_PORT_OV');
export const storageOvProvider = {
provide: STORAGE_PORT_OV,
useFactory: (): StoragePort => createStorageFromEnv(),
};