2025-12-20 00:01:08 +07:00

89 lines
1.7 KiB
Go

package config
import (
"os"
)
type Config struct {
Database DatabaseConfig
JWT JWTConfig
Server ServerConfig
Groq GroqConfig // NEW: Groq configuration
}
type ServerConfig struct {
Port string
Environment string
UploadPath string
MaxUploadSize int64
AllowedOrigins []string
}
// NEW: Groq configuration struct
type GroqConfig struct {
APIKey string
DefaultModel string
MaxTokens int
Temperature float64
TopP float64
}
func GetConfig() *Config {
return &Config{
Database: GetDatabaseConfig(),
JWT: GetJWTConfig(),
Server: GetServerConfig(),
Groq: GetGroqConfig(), // NEW
}
}
func GetServerConfig() ServerConfig {
port := os.Getenv("PORT")
if port == "" {
port = "8080"
}
env := os.Getenv("ENVIRONMENT")
if env == "" {
env = "development"
}
uploadPath := os.Getenv("UPLOAD_PATH")
if uploadPath == "" {
uploadPath = "./uploads"
}
return ServerConfig{
Port: port,
Environment: env,
UploadPath: uploadPath,
MaxUploadSize: 10 * 1024 * 1024,
AllowedOrigins: []string{"*"},
}
}
// NEW: Get Groq configuration from environment
func GetGroqConfig() GroqConfig {
apiKey := os.Getenv("GROQ_API_KEY")
model := os.Getenv("GROQ_MODEL")
if model == "" {
model = "llama-3.3-70b-versatile" // Default to best model
}
return GroqConfig{
APIKey: apiKey,
DefaultModel: model,
MaxTokens: 1024,
Temperature: 0.7,
TopP: 0.95,
}
}
func IsProduction() bool {
return os.Getenv("ENVIRONMENT") == "production"
}
func IsDevelopment() bool {
return os.Getenv("ENVIRONMENT") != "production"
}