package model import "portal-mini-go/internal/pkg/types" // File 记录一次上传文件的元数据;实际内容由 StorageKey 指向具体存储实现(本地/对象存储)。 type File struct { ID uint64 `gorm:"primaryKey;autoIncrement" json:"id"` StorageKey string `gorm:"type:varchar(255);index" json:"storage_key"` // 如 2006/01/02/.ext Filename string `gorm:"type:varchar(255)" json:"filename"` // 落盘文件名(含扩展名) OriginName string `gorm:"type:varchar(255)" json:"origin_name"` // 用户上传时的原始文件名 MimeType string `gorm:"type:varchar(128)" json:"mime_type"` Ext string `gorm:"type:varchar(32)" json:"ext"` // 小写扩展名,不含点 Size int64 `gorm:"type:bigint" json:"size"` UploaderType string `gorm:"type:varchar(16)" json:"uploader_type"` // admin | ma UploaderID uint64 `gorm:"type:bigint;index" json:"uploader_id"` URL string `gorm:"type:varchar(512)" json:"url"` CreatedAt types.Time `json:"created_at"` } func (File) TableName() string { return "files" }