ai-gateway/model/channel.go

52 lines
1.5 KiB
Go
Raw Normal View History

2023-04-22 12:39:27 +00:00
package model
import (
_ "gorm.io/driver/sqlite"
"gorm.io/gorm"
2023-04-22 13:14:09 +00:00
"one-api/common"
2023-04-22 12:39:27 +00:00
"os"
"path"
)
2023-04-22 13:41:16 +00:00
type Channel struct {
2023-04-22 12:39:27 +00:00
Id int `json:"id"`
Filename string `json:"filename" gorm:"index"`
Description string `json:"description"`
Uploader string `json:"uploader" gorm:"index"`
UploaderId int `json:"uploader_id" gorm:"index"`
Link string `json:"link" gorm:"unique;index"`
UploadTime string `json:"upload_time"`
DownloadCounter int `json:"download_counter"`
}
2023-04-22 13:41:16 +00:00
func GetAllChannels(startIdx int, num int) ([]*Channel, error) {
var files []*Channel
2023-04-22 12:39:27 +00:00
var err error
err = DB.Order("id desc").Limit(num).Offset(startIdx).Find(&files).Error
return files, err
}
2023-04-22 13:41:16 +00:00
func SearchChannels(keyword string) (files []*Channel, err error) {
2023-04-22 12:39:27 +00:00
err = DB.Select([]string{"id", "filename", "description", "uploader", "uploader_id", "link", "upload_time", "download_counter"}).Where(
"filename LIKE ? or uploader LIKE ? or uploader_id = ?", keyword+"%", keyword+"%", keyword).Find(&files).Error
return files, err
}
2023-04-22 13:41:16 +00:00
func (file *Channel) Insert() error {
2023-04-22 12:39:27 +00:00
var err error
err = DB.Create(file).Error
return err
}
// Delete Make sure link is valid! Because we will use os.Remove to delete it!
2023-04-22 13:41:16 +00:00
func (file *Channel) Delete() error {
2023-04-22 12:39:27 +00:00
var err error
err = DB.Delete(file).Error
err = os.Remove(path.Join(common.UploadPath, file.Link))
return err
}
func UpdateDownloadCounter(link string) {
2023-04-22 13:41:16 +00:00
DB.Model(&Channel{}).Where("link = ?", link).UpdateColumn("download_counter", gorm.Expr("download_counter + 1"))
2023-04-22 12:39:27 +00:00
}