feat: 全站统一上传文件表 files——上传/下载接口迁移 + attachments 旧表下线 #5

Merged
kevin merged 2 commits from dsh/go_blog:feat/unified-files-table into main 2026-08-28 19:28:22 +08:00
Contributor

变更概述

新增全站统一上传文件登记表 files(与原 attachments 字段对齐,另加 type 归属类型字段),并将文章附件的上传/下载(列表/删除/绑定)接口全部迁移到该表;历史数据搬入后,旧 attachments 表已删除。

提交 1:09bf35d 建表与数据迁移

  • models/file.goFile 模型,字段与 attachments 对齐 + Type(默认 attachments,带索引)
  • models/db.go:AutoMigrate 注册 File;启动时幂等迁移 attachments → files(按主键 id 对齐,含软删除行)
  • scripts/add_files_table.sql:MariaDB 幂等建表 + INSERT...SELECT 迁移脚本

提交 2:970dbd4 接口切换与旧表下线

  • 删除 models/attachment.goAttachment 模型由 File 替代
  • handlers/attachment.go:上传/删除/列表/创建时绑定全部读写 files 表,查询按 type='attachments' 过滤(为 avatar/logo 等类型预留隔离);路由与 JSON 结构不变,前端零改动
  • models/db.go:AutoMigrate 移除 Attachment;启动迁移加 HasTable 守卫——旧表仍存在时自动搬运,已删除则无操作(升级路径零丢失)
  • 测试同步切换到 File 模型(security_test / bodylimit_test)
  • scripts/drop_attachments_table.sql:删旧表脚本(含迁移完整性前置校验说明,幂等)

验证

  • go build ./... / go vet ./... / go test ./... 全部通过
  • 线上(MariaDB blog_go):已部署并重启服务,启动迁移校验 attachments 15 行 = files 15 行(type=attachments)、未搬运 0 条后执行删表;服务及首页持续 200,footer 版本号更新
  • 磁盘文件(/srv/blog_go/attachments)与下载 URL 路径不受影响
## 变更概述 新增全站统一上传文件登记表 `files`(与原 attachments 字段对齐,另加 `type` 归属类型字段),并将文章附件的上传/下载(列表/删除/绑定)接口全部迁移到该表;历史数据搬入后,旧 `attachments` 表已删除。 ### 提交 1:09bf35d 建表与数据迁移 - `models/file.go`:`File` 模型,字段与 attachments 对齐 + `Type`(默认 `attachments`,带索引) - `models/db.go`:AutoMigrate 注册 `File`;启动时幂等迁移 attachments → files(按主键 id 对齐,含软删除行) - `scripts/add_files_table.sql`:MariaDB 幂等建表 + INSERT...SELECT 迁移脚本 ### 提交 2:970dbd4 接口切换与旧表下线 - 删除 `models/attachment.go`,`Attachment` 模型由 `File` 替代 - `handlers/attachment.go`:上传/删除/列表/创建时绑定全部读写 `files` 表,查询按 `type='attachments'` 过滤(为 avatar/logo 等类型预留隔离);路由与 JSON 结构不变,前端零改动 - `models/db.go`:AutoMigrate 移除 `Attachment`;启动迁移加 `HasTable` 守卫——旧表仍存在时自动搬运,已删除则无操作(升级路径零丢失) - 测试同步切换到 `File` 模型(security_test / bodylimit_test) - `scripts/drop_attachments_table.sql`:删旧表脚本(含迁移完整性前置校验说明,幂等) ## 验证 - `go build ./...` / `go vet ./...` / `go test ./...` 全部通过 - 线上(MariaDB blog_go):已部署并重启服务,启动迁移校验 attachments 15 行 = files 15 行(type=attachments)、未搬运 0 条后执行删表;服务及首页持续 200,footer 版本号更新 - 磁盘文件(/srv/blog_go/attachments)与下载 URL 路径不受影响
dsh added 2 commits 2026-08-28 19:28:04 +08:00
- models/file.go:File 模型,字段与 Attachment 对齐并新增 Type 归属类型字段
- models/db.go:AutoMigrate 注册 File;启动时幂等迁移 attachments → files
  (按主键 id 对齐跳过已迁移行,含软删除行一并复制)
- scripts/add_files_table.sql:MariaDB 幂等迁移脚本(建表 + INSERT...SELECT)
- 线上库 blog_go:files 表已建立,15 条 attachments 记录已迁入,type='attachments'
- 删除 models/attachment.go,Attachment 模型由 File(Type=attachments)替代
- handlers/attachment.go:上传/删除/列表/绑定全部改读写 files 表,
  查询按 type='attachments' 过滤(为 avatar/logo 等类型预留隔离)
- models/db.go:AutoMigrate 移除 Attachment;启动迁移仅当旧表仍存在时执行
  (升级路径保障,已删除则为无操作)
- 测试同步切换到 File 模型(security_test/bodylimit_test)
- scripts/drop_attachments_table.sql:旧表删除脚本(含前置校验说明)
kevin merged commit 39609ebf03 into main 2026-08-28 19:28:22 +08:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: kevin/go_blog#5