Documentation
¶
Overview ¶
Package models 定义应用程序的数据模型
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type FileCode ¶
type FileCode struct {
gorm.Model
Code string `gorm:"uniqueIndex;size:255" json:"code"`
Prefix string `gorm:"size:255" json:"prefix"`
Suffix string `gorm:"size:255" json:"suffix"`
UUIDFileName string `gorm:"size:255" json:"uuid_file_name"`
FilePath string `gorm:"size:255" json:"file_path"`
Size int64 `gorm:"default:0" json:"size"`
Text string `gorm:"type:text" json:"text"`
ExpiredAt *time.Time `json:"expired_at"`
ExpiredCount int `gorm:"default:0" json:"expired_count"`
UsedCount int `gorm:"default:0" json:"used_count"`
FileHash string `gorm:"size:64" json:"file_hash"`
IsChunked bool `gorm:"default:false" json:"is_chunked"`
UploadID string `gorm:"size:36" json:"upload_id"`
// 新增:用户认证相关字段
UserID *uint `gorm:"index" json:"user_id"` // 上传用户ID,为null表示匿名上传
UploadType string `gorm:"size:20;default:'anonymous'" json:"upload_type"` // anonymous, authenticated
RequireAuth bool `gorm:"default:false" json:"require_auth"` // 是否需要登录才能下载
OwnerIP string `gorm:"size:45" json:"owner_ip"` // 上传者IP地址
}
FileCode 文件代码模型
func (*FileCode) GetFilePath ¶ added in v1.1.0
GetFilePath 获取文件路径
type KeyValue ¶
type KeyValue struct {
gorm.Model
Key string `gorm:"uniqueIndex;size:255" json:"key"`
Value string `gorm:"type:text" json:"value"`
}
KeyValue 键值对模型
type UploadChunk ¶
type UploadChunk struct {
ID uint `gorm:"primarykey" json:"id"`
UploadID string `gorm:"index;size:36" json:"upload_id"`
ChunkIndex int `json:"chunk_index"`
ChunkHash string `gorm:"size:64" json:"chunk_hash"`
TotalChunks int `json:"total_chunks"`
FileSize int64 `json:"file_size"`
ChunkSize int `json:"chunk_size"`
FileName string `gorm:"size:255" json:"file_name"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
Completed bool `gorm:"default:false" json:"completed"`
RetryCount int `gorm:"default:0" json:"retry_count"` // 重试次数
LastError string `gorm:"type:text" json:"last_error"` // 最后错误信息
Status string `gorm:"size:20;default:'pending'" json:"status"` // pending, uploading, completed, failed
}
UploadChunk 上传分片模型
func (*UploadChunk) GetUploadProgress ¶ added in v1.1.0
func (u *UploadChunk) GetUploadProgress(db *gorm.DB) (float64, error)
GetUploadProgress 获取上传进度
func (*UploadChunk) IsComplete ¶ added in v1.1.0
func (u *UploadChunk) IsComplete(db *gorm.DB) (bool, error)
IsComplete 检查上传是否完成
type User ¶
type User struct {
gorm.Model
Username string `gorm:"uniqueIndex;size:50" json:"username"`
Email string `gorm:"uniqueIndex;size:100" json:"email"`
PasswordHash string `gorm:"size:128" json:"-"` // 密码哈希,不返回给前端
Nickname string `gorm:"size:50" json:"nickname"` // 用户昵称
Avatar string `gorm:"size:255" json:"avatar"` // 头像URL
Role string `gorm:"size:20;default:'user'" json:"role"` // admin, user
Status string `gorm:"size:20;default:'active'" json:"status"` // active, inactive, banned
EmailVerified bool `gorm:"default:false" json:"email_verified"` // 邮箱是否验证
LastLoginAt *time.Time `json:"last_login_at"` // 最后登录时间
LastLoginIP string `gorm:"size:45" json:"last_login_ip"` // 最后登录IP
// 用户上传统计
TotalUploads int `gorm:"default:0" json:"total_uploads"` // 总上传次数
TotalDownloads int `gorm:"default:0" json:"total_downloads"` // 总下载次数
TotalStorage int64 `gorm:"default:0" json:"total_storage"` // 总存储大小(字节)
MaxUploadSize int64 `gorm:"default:0" json:"max_upload_size"` // 最大单次上传大小(字节),0表示使用系统默认
MaxStorageQuota int64 `gorm:"default:0" json:"max_storage_quota"` // 最大存储配额(字节),0表示无限制
}
User 用户模型
type UserSession ¶
type UserSession struct {
gorm.Model
UserID uint `gorm:"index" json:"user_id"`
SessionID string `gorm:"uniqueIndex;size:128" json:"session_id"` // JWT token ID
IPAddress string `gorm:"size:45" json:"ip_address"` // 登录IP
UserAgent string `gorm:"size:500" json:"user_agent"` // 用户代理
ExpiresAt time.Time `json:"expires_at"` // 过期时间
IsActive bool `gorm:"default:true" json:"is_active"` // 是否活跃
}
UserSession 用户会话模型
Click to show internal directories.
Click to hide internal directories.