feat: load storages while starting
This commit is contained in:
30
internal/bootstrap/storage.go
Normal file
30
internal/bootstrap/storage.go
Normal 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)
|
||||
}
|
@ -17,3 +17,8 @@ var (
|
||||
|
||||
var TypesMap = make(map[string][]string)
|
||||
var PrivacyReg []*regexp.Regexp
|
||||
|
||||
var (
|
||||
// StoragesLoaded loaded success if empty
|
||||
StoragesLoaded = false
|
||||
)
|
||||
|
@ -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
|
||||
}
|
||||
|
Reference in New Issue
Block a user