You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

59 lines
1.4 KiB

package model
import (
"fmt"
"godo/libs"
"os"
"path/filepath"
"gorm.io/gorm"
)
type SysDisk struct {
BaseModel
Name string `json:"name"`
Disk string `json:"disk" gorm:"unique"`
Size int64 `json:"size"`
Type uint `json:"type"` //0C-E系统 1nasserver 2nasclient 3webdavserver 4webdavclient 5F分享 9B回收站
Path string `json:"path"`
Status bool `json:"status"`
}
func (*SysDisk) TableName() string {
return "sys_disk"
}
func initSysDisk(db *gorm.DB) {
var count int64
db.Model(&SysDisk{}).Count(&count)
basePath, err := libs.GetOsDir()
if err != nil {
basePath, _ = os.Getwd()
}
if count == 0 {
disks := []SysDisk{
{Disk: "B", Name: "回收站", Size: 0, Path: filepath.Join(basePath, "B"), Type: 9, Status: true},
{Disk: "C", Name: "系统", Size: 0, Path: filepath.Join(basePath, "C"), Type: 0, Status: true},
{Disk: "D", Name: "文档", Size: 0, Path: filepath.Join(basePath, "D"), Type: 0, Status: true},
{Disk: "E", Name: "办公", Size: 0, Path: filepath.Join(basePath, "E"), Type: 0, Status: true},
}
db.Create(&disks)
fmt.Println("Initialized A-Z disks")
}
}
// BeforeDelete 钩子
func (sd *SysDisk) BeforeDelete(tx *gorm.DB) (err error) {
// 不允许删除的磁盘列表
nonDeletableDisks := map[string]struct{}{
"B": {},
"C": {},
"D": {},
"E": {},
"F": {},
}
if _, exists := nonDeletableDisks[sd.Disk]; exists {
return fmt.Errorf("disk %s cannot be deleted", sd.Disk)
}
return nil
}