package config import ( "os" "strconv" "time" "github.com/joho/godotenv" ) type Config struct { Server ServerConfig Database DatabaseConfig JWT JWTConfig } type ServerConfig struct { Port string Host string } type DatabaseConfig struct { Host string Port string User string Password string DBName string SSLMode string } type JWTConfig struct { Secret string TTL time.Duration } func Load() (*Config, error) { // Загрузка .env файла если существует godotenv.Load() return &Config{ Server: ServerConfig{ Port: getEnv("SERVER_PORT", "8080"), Host: getEnv("SERVER_HOST", "0.0.0.0"), }, Database: DatabaseConfig{ Host: getEnv("DB_HOST", "localhost"), Port: getEnv("DB_PORT", "5432"), User: getEnv("DB_USER", "erp_user"), Password: getEnv("DB_PASSWORD", "erp_pass"), DBName: getEnv("DB_NAME", "erp_mvp"), SSLMode: getEnv("DB_SSLMODE", "disable"), }, JWT: JWTConfig{ Secret: getEnv("JWT_SECRET", "your-secret-key"), TTL: time.Duration(getEnvAsInt("JWT_TTL_HOURS", 24)) * time.Hour, }, }, nil } func getEnv(key, defaultValue string) string { if value := os.Getenv(key); value != "" { return value } return defaultValue } func getEnvAsInt(key string, defaultValue int) int { if value := os.Getenv(key); value != "" { if intValue, err := strconv.Atoi(value); err == nil { return intValue } } return defaultValue }