repos / pico

pico services mono repo
git clone https://github.com/picosh/pico.git

pico / pkg / shared / storage
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}