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 default: return nil, errors.New("invalid storage strategy") } }