package config import ( "log" "os" "path" "strconv" ) type Config struct { DatabasePath string CachePath string } // LoadConfig loads configuration from environment variables func LoadConfig() *Config { cfg := &Config{ DatabasePath: getEnv("DATABASE_PATH", "./butterfliu.db"), CachePath: getEnv("CACHE_PATH", "./cache"), } os.MkdirAll(cfg.CachePath, os.ModeAppend) return cfg } func (self *Config) GetCachePath(cacheType string) string { path := path.Join(self.CachePath, cacheType) os.MkdirAll(path, os.ModeAppend) return path } // getEnv gets an environment variable with a default value func getEnv(key, defaultValue string) string { if value := os.Getenv(key); value != "" { return value } return defaultValue } // getEnvAsInt gets an environment variable as integer func getEnvAsInt(key string, defaultValue int) int { if value := os.Getenv(key); value != "" { if intValue, err := strconv.Atoi(value); err == nil { return intValue } log.Printf("Warning: Invalid integer value for %s: %s, using default: %d", key, value, defaultValue) } return defaultValue } // getEnvAsInt64 gets an environment variable as int64 func getEnvAsInt64(key string, defaultValue int64) int64 { if value := os.Getenv(key); value != "" { if intValue, err := strconv.ParseInt(value, 10, 64); err == nil { return intValue } log.Printf("Warning: Invalid int64 value for %s: %s, using default: %d", key, value, defaultValue) } return defaultValue }