package config import ( "os" "strconv" "time" ) type Config struct { Addr string BadgerDir string PageSize int ShutdownTimeout time.Duration } func Load() Config { return Config{ Addr: envOrDefault("APP_ADDR", ":8080"), BadgerDir: envOrDefault("BADGER_DIR", "data/badger"), PageSize: envIntOrDefault("PAGE_SIZE", 50), ShutdownTimeout: envDurationOrDefault("SHUTDOWN_TIMEOUT", 10*time.Second), } } func envOrDefault(key, fallback string) string { if value := os.Getenv(key); value != "" { return value } return fallback } func envIntOrDefault(key string, fallback int) int { value := os.Getenv(key) if value == "" { return fallback } parsed, err := strconv.Atoi(value) if err != nil || parsed <= 0 { return fallback } return parsed } func envDurationOrDefault(key string, fallback time.Duration) time.Duration { value := os.Getenv(key) if value == "" { return fallback } parsed, err := time.ParseDuration(value) if err != nil || parsed <= 0 { return fallback } return parsed }