数据与存储
在两种部署方式中保持所有权、Schema、缓存与上传边界一致。
UI 层通过领域服务访问 Profile、Todo、上传和账户生命周期,不使用通用数据库查询抽象。
Supabase adapter 将领域模型映射为 Supabase Row,从自己的 Session 获取当前用户,依赖 RLS,并通过 Supabase Storage 上传。
客户端向
/api/app/v1 发送 camelCase 契约 DTO。宿主从 Better Auth Session 获取用户,并按所有权过滤每个资源查询。上传采用 presign → 直传 → complete。不变量
- 用户 ID 是不透明字符串;业务实体 ID 遵循 API Schema。
- 跨用户读取返回
404,避免泄露资源是否存在。 - Query cache 包含 Backend mode 和当前 User ID,Session 变化时原子清理。
- 桌面客户端的预签名 URL 只存在于原生网络边界内。
- 账户删除使用
DELETE /api/app/v1/account,让数据、上传、设备 Token、订阅状态和 Provider 清理走同一个服务端流程。
Provider 专属配置键与限制请查看所选模板的 Storage 或 Data Layer 页面。
