feat: load storages while starting

This commit is contained in:
Noah Hsu
2022-08-11 21:32:33 +08:00
parent 74f1154e5e
commit 0fdfd1f2c2
7 changed files with 65 additions and 1 deletions

View File

@ -0,0 +1,30 @@
package bootstrap
import (
"context"
"github.com/alist-org/alist/v3/internal/conf"
"github.com/alist-org/alist/v3/internal/db"
"github.com/alist-org/alist/v3/internal/model"
"github.com/alist-org/alist/v3/internal/operations"
log "github.com/sirupsen/logrus"
)
func LoadStorages() {
storages, err := db.GetEnabledStorages()
if err != nil {
log.Fatalf("failed get enabled storages: %+v", err)
}
go func(storages []model.Storage) {
for i := range storages {
err := operations.LoadStorage(context.Background(), storages[i])
if err != nil {
log.Errorf("failed get enabled storages: %+v", err)
} else {
log.Infof("success load storage: [%s], driver: [%s]",
storages[i].MountPath, storages[i].Driver)
}
}
conf.StoragesLoaded = true
}(storages)
}

View File

@ -17,3 +17,8 @@ var (
var TypesMap = make(map[string][]string)
var PrivacyReg []*regexp.Regexp
var (
// StoragesLoaded loaded success if empty
StoragesLoaded = false
)

View File

@ -1,6 +1,8 @@
package db
import (
"fmt"
"github.com/alist-org/alist/v3/internal/model"
"github.com/pkg/errors"
)
@ -48,3 +50,11 @@ func GetStorageById(id uint) (*model.Storage, error) {
}
return &storage, nil
}
func GetEnabledStorages() ([]model.Storage, error) {
var storages []model.Storage
if err := db.Where(fmt.Sprintf("%s = ?", columnName("disabled")), false).Find(&storages).Error; err != nil {
return nil, errors.WithStack(err)
}
return storages, nil
}