dsh/go_blog:feat/unified-files-table
main
新增全站统一上传文件登记表 files(与原 attachments 字段对齐,另加 type 归属类型字段),并将文章附件的上传/下载(列表/删除/绑定)接口全部迁移到该表;历史数据搬入后,旧 attachments 表已删除。
files
type
attachments
models/file.go
File
Type
models/db.go
scripts/add_files_table.sql
models/attachment.go
Attachment
handlers/attachment.go
type='attachments'
HasTable
scripts/drop_attachments_table.sql
go build ./...
go vet ./...
go test ./...
- 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:旧表删除脚本(含前置校验说明)
No dependencies set.
The note is not visible to the blocked user.
变更概述
新增全站统一上传文件登记表
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 ./...全部通过