Eric Bower
·
2025-06-08
base.go
1package storage
2
3import (
4 "fmt"
5 "log/slog"
6
7 "github.com/picosh/utils"
8)
9
10func GetStorageTypeFromEnv() string {
11 return utils.GetEnv("STORAGE_ADAPTER", "minio")
12}
13
14func NewStorage(logger *slog.Logger, adapter string) (StorageServe, error) {
15 logger.Info("storage adapter", "adapter", adapter)
16 switch adapter {
17 case "minio":
18 minioURL := utils.GetEnv("MINIO_URL", "")
19 minioUser := utils.GetEnv("MINIO_ROOT_USER", "")
20 minioPass := utils.GetEnv("MINIO_ROOT_PASSWORD", "")
21 logger.Info("using minio storage", "url", minioURL, "user", minioUser)
22 return NewStorageMinio(logger, minioURL, minioUser, minioPass)
23 case "fs":
24 fsPath := utils.GetEnv("FS_STORAGE_DIR", "/tmp/pico_storage")
25 logger.Info("using filesystem storage", "path", fsPath)
26 return NewStorageFS(logger, fsPath)
27 case "memory":
28 data := map[string]map[string]string{}
29 logger.Info("using memory storage")
30 return NewStorageMemory(data)
31 default:
32 return nil, fmt.Errorf("unsupported storage type: %s", adapter)
33 }
34}