34 lines
1 KiB
Go
34 lines
1 KiB
Go
package service
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/IceWhaleTech/CasaOS-Common/utils/logger"
|
|
"github.com/IceWhaleTech/CasaOS/internal/driver"
|
|
"github.com/IceWhaleTech/CasaOS/pkg/utils"
|
|
"github.com/pkg/errors"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
type StoragePathService interface {
|
|
GetStorageAndActualPath(rawPath string) (storage driver.Driver, actualPath string, err error)
|
|
}
|
|
|
|
type storagePathStruct struct {
|
|
}
|
|
|
|
func (s *storagePathStruct) GetStorageAndActualPath(rawPath string) (storage driver.Driver, actualPath string, err error) {
|
|
rawPath = utils.FixAndCleanPath(rawPath)
|
|
storage = MyService.Storages().GetBalancedStorage(rawPath)
|
|
if storage == nil {
|
|
err = errors.Errorf("can't find storage with rawPath: %s", rawPath)
|
|
return
|
|
}
|
|
logger.Info("use storage", zap.Any("storage mount path", storage.GetStorage().MountPath))
|
|
mountPath := utils.GetActualMountPath(storage.GetStorage().MountPath)
|
|
actualPath = utils.FixAndCleanPath(strings.TrimPrefix(rawPath, mountPath))
|
|
return
|
|
}
|
|
func NewStoragePathService() StoragePathService {
|
|
return &storagePathStruct{}
|
|
}
|