added cargo files
This commit is contained in:
93
PinePods-0.8.2/gpodder-api/config/config.go
Normal file
93
PinePods-0.8.2/gpodder-api/config/config.go
Normal file
@@ -0,0 +1,93 @@
|
||||
package config
|
||||
|
||||
import (
|
||||
"os"
|
||||
"strconv"
|
||||
)
|
||||
|
||||
// Config represents the application configuration
|
||||
type Config struct {
|
||||
Server ServerConfig
|
||||
Database DatabaseConfig
|
||||
Environment string
|
||||
}
|
||||
|
||||
// ServerConfig holds server-related configuration
|
||||
type ServerConfig struct {
|
||||
Port int
|
||||
}
|
||||
|
||||
// DatabaseConfig holds database-related configuration
|
||||
type DatabaseConfig struct {
|
||||
Host string
|
||||
Port int
|
||||
User string
|
||||
Password string
|
||||
DBName string
|
||||
SSLMode string
|
||||
Type string // "postgresql" or "mysql"
|
||||
}
|
||||
|
||||
// Load loads configuration from environment variables
|
||||
func Load() (*Config, error) {
|
||||
// Server configuration
|
||||
serverPort, err := strconv.Atoi(getEnv("SERVER_PORT", "8080"))
|
||||
if err != nil {
|
||||
serverPort = 8080
|
||||
}
|
||||
|
||||
// Database configuration - use DB_* environment variables
|
||||
dbPort, err := strconv.Atoi(getEnv("DB_PORT", "5432"))
|
||||
if err != nil {
|
||||
dbPort = 5432
|
||||
}
|
||||
|
||||
// Get database type - defaults to postgresql if not specified
|
||||
dbType := getEnv("DB_TYPE", "postgresql")
|
||||
|
||||
// Set default port based on database type if not explicitly provided
|
||||
if os.Getenv("DB_PORT") == "" {
|
||||
if dbType == "mysql" {
|
||||
dbPort = 3306
|
||||
} else {
|
||||
dbPort = 5432
|
||||
}
|
||||
}
|
||||
|
||||
// Set default user based on database type if not explicitly provided
|
||||
dbUser := getEnv("DB_USER", "")
|
||||
if dbUser == "" {
|
||||
if dbType == "mysql" {
|
||||
// Use root user for MySQL by default
|
||||
dbUser = "root"
|
||||
} else {
|
||||
// Use postgres user for PostgreSQL by default
|
||||
dbUser = "postgres"
|
||||
}
|
||||
}
|
||||
|
||||
return &Config{
|
||||
Server: ServerConfig{
|
||||
Port: serverPort,
|
||||
},
|
||||
Database: DatabaseConfig{
|
||||
Host: getEnv("DB_HOST", "localhost"),
|
||||
Port: dbPort,
|
||||
User: dbUser,
|
||||
Password: getEnv("DB_PASSWORD", "password"),
|
||||
DBName: getEnv("DB_NAME", "pinepods_database"),
|
||||
SSLMode: getEnv("DB_SSL_MODE", "disable"),
|
||||
Type: dbType,
|
||||
},
|
||||
Environment: getEnv("ENVIRONMENT", "development"),
|
||||
}, nil
|
||||
}
|
||||
|
||||
// getEnv gets an environment variable or returns a default value
|
||||
func getEnv(key, defaultValue string) string {
|
||||
value, exists := os.LookupEnv(key)
|
||||
if !exists {
|
||||
return defaultValue
|
||||
}
|
||||
return value
|
||||
}
|
||||
Reference in New Issue
Block a user