infoalloggi-monorepo/apps/backend/storage_handlers/storage_handler.go
2025-10-23 15:16:42 +02:00

47 lines
883 B
Go

package storagehandlers
import (
"backend/config"
"backend/typesdefs"
"errors"
"mime/multipart"
)
type StorageHandler interface {
Init() error
Add(file *multipart.FileHeader, fileId string) error
Delete(filename string) error
Get(filename string) (string, error)
List() ([]string, error)
}
func NewStorageHandler(strategy typesdefs.StorageStrategy) (StorageHandler, error) {
if config.Cfg.Storage.Path == "" {
return nil, errors.New("storage path not set")
}
switch strategy {
case typesdefs.FS:
h := NewFsHandler()
err := h.Init()
if err != nil {
return nil, err
}
return h, nil
case typesdefs.S3:
h, err := NewS3Handler()
if err != nil {
return nil, err
}
err = h.Init()
if err != nil {
return nil, err
}
return h, nil
case typesdefs.GOFS:
return nil, nil
default:
return nil, errors.New("invalid storage strategy")
}
}