package dao

import "server/global"

type DailyFile struct {
	global.GVA_MODEL
	UserId    int       `json:"userId" form:"userId" gorm:"comment:用户编号"`
	Name      string    `json:"name" from:"name" gorm:"comment:文件名称"`
	Genre     int       `json:"genre" form:"genre" gorm:"comment:文件类型"`
	FileGenre FileGenre `json:"fileGenre" form:"fileGenre" gorm:"foreignKey:genre;references:id;"`
	Path      string    `json:"path" from:"path" gorm:"comment:路径"`
}

func (DailyFile) TableName() string {
	return "daily_file"
}

// TODO:日常文件查询

// QueryDailyFileList 查询日常文件列表
func QueryDailyFileList(limit, offset, userId, genre int, name string) (dailyFiles []DailyFile, total int64, err error) {
	// 创建db
	db := global.GVA_DB.Model(&DailyFile{}).Where("user_id=?", userId)
	// 如果有条件搜索 下方会自动创建搜索语句
	if genre != 0 {
		db = db.Where("genre = ?", genre)
	}
	if name != "" {
		db = db.Where("name LIKE ?", "%"+name+"%")
	}
	err = db.Count(&total).Error
	if err != nil {
		return
	}
	err = db.Order("id desc").Limit(limit).Offset(offset).Preload("FileGenre").Find(&dailyFiles).Error
	return dailyFiles, total, err
}

// TODO:日常文件新增

// CreateDailyFile 新增日常文件
func (df DailyFile) CreateDailyFile() error {
	return global.GVA_DB.Create(&df).Error
}

// TODO:日常文件修改

// TODO:日常文件删除

// DeleteDailyFile 删除日常文件
func (df DailyFile) DeleteDailyFile() error {
	return global.GVA_DB.Unscoped().Delete(&df).Error
}
