Files
SeeyonFileSystem/server/model/file.go
2026-07-18 10:52:32 +08:00

61 lines
2.3 KiB
Go

package model
import "time"
// File 文件模型
type File struct {
ID uint64 `json:"id" gorm:"primaryKey"`
BizID string `json:"biz_id" gorm:"index;size:128"` // 业务ID
Name string `json:"name" gorm:"size:256;not null"`
Extension string `json:"extension" gorm:"size:32"`
FolderID uint64 `json:"folder_id" gorm:"index;not null"`
OwnerID uint64 `json:"owner_id" gorm:"index;not null"`
Size int64 `json:"size" gorm:"default:0"`
MD5 string `json:"md5" gorm:"size:32;index"`
SHA256 string `json:"sha256" gorm:"size:64"`
StorageKey string `json:"storage_key" gorm:"size:512;not null"`
StoragePolicyID uint64 `json:"storage_policy_id" gorm:"index;default:1"`
MimeType string `json:"mime_type" gorm:"size:128"`
IsFavorite int8 `json:"is_favorite" gorm:"default:0"`
Status int8 `json:"status" gorm:"default:1"`
DownloadCount int `json:"download_count" gorm:"default:0"`
Version int `json:"version" gorm:"default:1"` // 乐观锁版本号
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
}
// TableName 指定表名
func (File) TableName() string {
return "fs_file"
}
// FileAssociation 业务文件关联模型
// 用于兼容 OA 系统的文件关联
type FileAssociation struct {
ID uint64 `json:"id" gorm:"primaryKey"`
BizID string `json:"biz_id" gorm:"size:128;index;not null"`
BizType string `json:"biz_type" gorm:"size:64;index;not null"`
FileID uint64 `json:"file_id" gorm:"not null"`
CreatedAt time.Time `json:"created_at"`
}
// TableName 指定表名
func (FileAssociation) TableName() string {
return "fs_file_association"
}
// FilePermission 文件权限模型
type FilePermission struct {
ID uint64 `json:"id" gorm:"primaryKey"`
FileID uint64 `json:"file_id" gorm:"not null"`
UserID uint64 `json:"user_id" gorm:"default:0"`
RoleID uint64 `json:"role_id" gorm:"default:0"`
PermLevel string `json:"perm_level" gorm:"size:16;default:read"`
GrantBy uint64 `json:"grant_by" gorm:"not null"`
CreatedAt time.Time `json:"created_at"`
}
func (FilePermission) TableName() string {
return "fs_file_permission"
}