62 lines
1.7 KiB
Go
62 lines
1.7 KiB
Go
package models
|
|
|
|
import (
|
|
"fmt"
|
|
"github.com/Xhofe/alist/conf"
|
|
"time"
|
|
)
|
|
|
|
type File struct {
|
|
Dir string `json:"dir" gorm:"index"`
|
|
FileExtension string `json:"file_extension"`
|
|
FileId string `json:"file_id"`
|
|
Name string `json:"name" gorm:"index"`
|
|
Type string `json:"type"`
|
|
UpdatedAt *time.Time `json:"updated_at"`
|
|
Category string `json:"category"`
|
|
ContentType string `json:"content_type"`
|
|
Size int64 `json:"size"`
|
|
Password string `json:"password"`
|
|
Url string `json:"url" gorm:"-"`
|
|
}
|
|
|
|
func (file *File) Create() error {
|
|
return conf.DB.Create(file).Error
|
|
}
|
|
|
|
func Clear() error {
|
|
return conf.DB.Where("1 = 1").Delete(&File{}).Error
|
|
}
|
|
|
|
func GetFileByDirAndName(dir, name string) (*File, error) {
|
|
var file File
|
|
if err := conf.DB.Where("dir = ? AND name = ?", dir, name).First(&file).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
return &file, nil
|
|
}
|
|
|
|
func GetFilesByDir(dir string) (*[]File, error) {
|
|
var files []File
|
|
if err := conf.DB.Where("dir = ?", dir).Find(&files).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
return &files, nil
|
|
}
|
|
|
|
func SearchByNameGlobal(keyword string) (*[]File, error) {
|
|
var files []File
|
|
if err := conf.DB.Where("name LIKE ? AND password = ''", fmt.Sprintf("%%%s%%", keyword)).Find(&files).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
return &files, nil
|
|
}
|
|
|
|
func SearchByNameInDir(keyword string, dir string) (*[]File, error) {
|
|
var files []File
|
|
if err := conf.DB.Where("dir LIKE ? AND name LIKE ? AND password = ''", fmt.Sprintf("%s%%", dir), fmt.Sprintf("%%%s%%", keyword)).Find(&files).Error; err != nil {
|
|
return nil, err
|
|
}
|
|
return &files, nil
|
|
}
|