Files
athens/cmd/proxy/actions/storage.go
lcd1232 700d6ee7af Add rdbms backend (#74)
* Add rdbms backend

* Remove unused imports

* Fix ci

* Fix problems

* Now test works

* Fix lint errors

* Change name to more descriptive

* Add logic to support rdbms storage

* Update to new newStorage logic
2018-03-29 14:23:08 -07:00

32 lines
917 B
Go

package actions
import (
"fmt"
"github.com/gomods/athens/pkg/storage"
"github.com/gomods/athens/pkg/storage/fs"
"github.com/gomods/athens/pkg/storage/mongo"
"github.com/gomods/athens/pkg/storage/rdbms"
"github.com/spf13/afero"
)
func newStorage(storageType, storageLocation string) (storage.Backend, error) {
switch storageType {
case "memory":
memFs := afero.NewMemMapFs()
tmpDir, err := afero.TempDir(memFs, "inmem", "")
if err != nil {
return nil, fmt.Errorf("could not create temp dir for 'In Memory' storage (%s)", err)
}
return fs.NewStorage(tmpDir, memFs), nil
case "disk":
return fs.NewStorage(storageLocation, afero.NewOsFs()), nil
case "mongo":
return mongo.NewStorage(storageLocation), nil
case "postgres", "sqlite", "cockroach", "mysql":
return rdbms.NewRDBMSStorage(storageLocation), nil
default:
return nil, fmt.Errorf("storage type %s is unknown", storageType)
}
}