29 lines
1.6 KiB
Go
29 lines
1.6 KiB
Go
package model
|
|
|
|
import "time"
|
|
|
|
// UploadSession 分片上传会话
|
|
// 记录大文件分片上传的进度, 支持断点续传
|
|
type UploadSession struct {
|
|
ID string `json:"id" gorm:"primaryKey;size:64"` // 会话ID
|
|
FileID uint64 `json:"file_id" gorm:"default:0"` // 上传完成后的文件ID
|
|
FileName string `json:"file_name" gorm:"size:256;not null"` // 原始文件名
|
|
FileSize int64 `json:"file_size" gorm:"not null"` // 文件总大小
|
|
ChunkSize int64 `json:"chunk_size" gorm:"not null"` // 分片大小
|
|
TotalChunks int `json:"total_chunks" gorm:"not null"` // 总分片数
|
|
UploadedChunks string `json:"uploaded_chunks" gorm:"type:text"` // 已上传分片索引, 逗号分隔: "0,1,2"
|
|
MD5 string `json:"md5" gorm:"size:32"` // 文件MD5
|
|
SHA256 string `json:"sha256" gorm:"size:64"` // 文件SHA256
|
|
FolderID uint64 `json:"folder_id" gorm:"not null"` // 目标文件夹
|
|
OwnerID uint64 `json:"owner_id" gorm:"not null"` // 上传者
|
|
PolicyID uint64 `json:"policy_id" gorm:"default:1"` // 存储策略ID
|
|
Status int8 `json:"status" gorm:"default:1"` // 1=上传中 2=已完成 3=已取消
|
|
TempDir string `json:"temp_dir" gorm:"size:512"` // 临时分片目录
|
|
CreatedAt time.Time `json:"created_at"`
|
|
UpdatedAt time.Time `json:"updated_at"`
|
|
}
|
|
|
|
func (UploadSession) TableName() string {
|
|
return "fs_upload_session"
|
|
}
|