字段添加评审

743 字
4 分钟
字段添加评审

storagePluginId#

建议保留。

它表示“这个照片由哪个插件实现负责”,和 storageSourceId 不是一回事:

  • storageSourceId:具体的存储源实例
  • storagePluginId:该存储源使用的插件

不能安全复用 storageProvider:

  • 旧值是 local、github、s3
  • 当前桌面上传代码虽然暂时把插件 ID 写进了 storageProvider,这是兼容性复用,不是稳定契约
  • Web 端仍会把 storageProvider 当作 provider 类型使用
  • 同一个 S3 类型可能存在多个不同插件实现

如果以后切换插件、审计插件来源或判断插件兼容性,没有 storagePluginId 会缺少明确记录。

thumbnailStorageKey#

建议保留。

现有 thumbnailUrl 不能完全替代它:

  • Web 旧存储可以根据 storageKey 推导缩略图 key
  • 插件上传的是两个独立对象,缩略图 key 不保证遵循旧的文件名规则
  • URL 可能是签名 URL、临时 URL,不能可靠地从 URL 反推对象 key
  • 当前 Desktop 删除照片时已经优先使用该字段,/D:/Projects/mo-gallery/mo-gallery-web/desktop/app.go:613
  • Web 存储清理保护逻辑也已经查询该字段,/D:/Projects/mo-gallery/mo-gallery-web/hono/storage.ts:159

因此这个字段是实际对象操作所需的,不只是冗余缓存。

storageUrlType#

当前版本可以不加。

它的用途是区分:

public

但当前 Desktop 插件上传代码明确拒绝非 public URL:

桌面存储插件必须返回稳定的 public URL

对应逻辑在 /D:/Projects/mo-gallery/mo-gallery-web/desktop/services/upload.go:562 和 /D:/Projects/mo-gallery/mo-gallery-web/ desktop/services/upload.go:590。

目前系统也没有根据 storageUrlType 做 URL 刷新或访问策略判断。现阶段所有已接受的插件照片都应该是稳定公开 URL,因此这列暂时没有实 际行为价值。

storageUrlExpiresAt#

它只有在允许 signed 或 temporary URL 时才有意义,用于判断 URL 何时需要通过插件重新生成。

目前:

  • 非公开 URL 会在上传阶段被拒绝
  • 没有 URL 自动刷新逻辑
  • url 和 thumbnailUrl 都没有分别记录过期时间

所以现在加这列只是提前为尚未实现的能力留字段。

而且未来如果原图和缩略图可能有不同过期时间,单独一个 storageUrlExpiresAt 也未必是最终最好的模型。

推荐的初始迁移#

我建议把初版迁移缩减为:

ALTER TABLE “Photo” ADD COLUMN “storageRuntime” TEXT NOT NULL DEFAULT ‘web’, ADD COLUMN “storagePluginId” TEXT, ADD COLUMN “thumbnailStorageKey” TEXT;

保留:

  • storageRuntime
  • storagePluginId
  • thumbnailStorageKey

暂时删除:

  • storageUrlType
  • storageUrlExpiresAt

同时:

  • storageRuntime 的规范值改为 web | plugin
  • 旧照片回填为 storageRuntime = ‘web’
  • 旧照片的 storagePluginId 和 thumbnailStorageKey 保持 NULL
  • Desktop 插件上传登记时不再提交两个 URL 字段
  • API DTO、Go DTO、Prisma schema 和文档同步移除这两个字段

如果以后真正支持签名 URL 或临时 URL,再单独增加一次迁移,并同时实现:

  • URL 刷新机制
  • 过期判断
  • 原图与缩略图的 URL 生命周期
  • Web 展示和 Desktop 代理策略
  • 相关测试

这样数据库字段和实际行为是一致的,不会先存一组当前没有消费者的数据。a

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

字段添加评审
https://shaio.top/posts/03mogallery/插件系统/字段添加评审/
作者
沙海
发布于
2026-09-02
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
沙海
Hello, I'm Shai.
公告
欢迎来到我的博客!这是一则示例公告。
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
84
分类
15
标签
48
总字数
67,035
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
GitHub Actions
博客版本
Firefly v6.12.2
文章许可
CC BY-NC-SA 4.0

文章目录