Eric Bower
·
2026-01-25
base.go
1package storage
2
3import (
4 "fmt"
5 "log/slog"
6
7 "github.com/picosh/pico/pkg/shared"
8)
9
10func GetStorageTypeFromEnv() string {
11 return shared.GetEnv("STORAGE_ADAPTER", "fs")
12}
13
14func NewStorage(logger *slog.Logger, adapter string) (StorageServe, error) {
15 logger.Info("storage adapter", "adapter", adapter)
16 switch adapter {
17 case "fs":
18 fsPath := shared.GetEnv("FS_STORAGE_DIR", "/tmp/pico_storage")
19 logger.Info("using filesystem storage", "path", fsPath)
20 return NewStorageFS(logger, fsPath)
21 case "memory":
22 data := map[string]map[string]string{}
23 logger.Info("using memory storage")
24 return NewStorageMemory(data)
25 default:
26 return nil, fmt.Errorf("unsupported storage type: %s", adapter)
27 }
28}