48 lines
1.0 KiB
Go

package config
import (
"fmt"
"os"
"path/filepath"
"github.com/joho/godotenv"
)
type Config struct {
DBPath string
ServerPort string
}
func LoadConfig() (*Config, error) {
// 确保数据目录存在
dbDir := "./data"
if err := os.MkdirAll(dbDir, 0755); err != nil {
return nil, fmt.Errorf("failed to create data directory: %v", err)
}
// 尝试从 data 目录加载 .env 文件
envPath := filepath.Join(dbDir, ".env")
if err := godotenv.Load(envPath); err != nil {
fmt.Printf("Warning: .env file not found in data directory: %v\n", err)
// 如果 data/.env 不存在,尝试加载项目根目录的 .env
if err := godotenv.Load(); err != nil {
fmt.Printf("Warning: .env file not found in root directory: %v\n", err)
}
}
config := &Config{
DBPath: filepath.Join(dbDir, "aimodels.db"),
ServerPort: getEnv("PORT", "8080"),
}
return config, nil
}
func getEnv(key, defaultValue string) string {
value := os.Getenv(key)
if value == "" {
return defaultValue
}
return value
}