package db import ( "github.com/alist-org/alist/v3/internal/model" "github.com/pkg/errors" ) func GetTaskDataByType(type_s string) (*model.TaskItem, error) { task := model.TaskItem{Key: type_s} if err := db.Where(task).First(&task).Error; err != nil { return nil, errors.Wrapf(err, "failed find task") } return &task, nil } func UpdateTaskData(t *model.TaskItem) error { return errors.WithStack(db.Model(&model.TaskItem{}).Where("key = ?", t.Key).Update("persist_data", t.PersistData).Error) } func CreateTaskData(t *model.TaskItem) error { return errors.WithStack(db.Create(t).Error) } func GetTaskDataFunc(type_s string, enabled bool) func() ([]byte, error) { if !enabled { return nil } task, err := GetTaskDataByType(type_s) if err != nil { return nil } return func() ([]byte, error) { return []byte(task.PersistData), nil } } func UpdateTaskDataFunc(type_s string, enabled bool) func([]byte) error { if !enabled { return nil } return func(data []byte) error { s := string(data) if s == "null" || s == "" { s = "[]" } return UpdateTaskData(&model.TaskItem{Key: type_s, PersistData: s}) } }