Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
alist-org
GitHub Repository: alist-org/alist
Path: blob/main/internal/db/tasks.go
1560 views
1
package db
2
3
import (
4
"github.com/alist-org/alist/v3/internal/model"
5
"github.com/pkg/errors"
6
)
7
8
func GetTaskDataByType(type_s string) (*model.TaskItem, error) {
9
task := model.TaskItem{Key: type_s}
10
if err := db.Where(task).First(&task).Error; err != nil {
11
return nil, errors.Wrapf(err, "failed find task")
12
}
13
return &task, nil
14
}
15
16
func UpdateTaskData(t *model.TaskItem) error {
17
return errors.WithStack(db.Model(&model.TaskItem{}).Where("key = ?", t.Key).Update("persist_data", t.PersistData).Error)
18
}
19
20
func CreateTaskData(t *model.TaskItem) error {
21
return errors.WithStack(db.Create(t).Error)
22
}
23
24
func GetTaskDataFunc(type_s string, enabled bool) func() ([]byte, error) {
25
if !enabled {
26
return nil
27
}
28
task, err := GetTaskDataByType(type_s)
29
if err != nil {
30
return nil
31
}
32
return func() ([]byte, error) {
33
return []byte(task.PersistData), nil
34
}
35
}
36
37
func UpdateTaskDataFunc(type_s string, enabled bool) func([]byte) error {
38
if !enabled {
39
return nil
40
}
41
return func(data []byte) error {
42
s := string(data)
43
if s == "null" || s == "" {
44
s = "[]"
45
}
46
return UpdateTaskData(&model.TaskItem{Key: type_s, PersistData: s})
47
}
48
}
49
50