boxes-api/config.go

54 lines
1.3 KiB
Go

package main
import (
"fmt"
"io/ioutil"
"os"
"gopkg.in/yaml.v2"
)
// Define the Config struct
type Config struct {
DatabasePath string `yaml:"database_path"`
TestDatabasePath string `yaml:"test_database_path"`
JWTSecret string `yaml:"jwt_secret"`
ImageStorageDir string `yaml:"image_storage_dir"`
ListeningPort int `yaml:"listening_port"`
LogFile string `yaml:"log_file"`
LogLevel string `yaml:"log_level"`
LogOutput string `yaml:"log_output"`
StaticFilesDir string `yaml:"static_files_dir"`
AllowedOrigins string `yaml:"allowed_origins"`
}
func LoadConfig(configPath string) (*Config, error) {
data, err := ioutil.ReadFile(configPath)
if err != nil {
return nil, fmt.Errorf("failed to read config file: %v", err)
}
var config Config
err = yaml.Unmarshal(data, &config)
if err != nil {
return nil, fmt.Errorf("failed to unmarshal config file: %v", err)
}
// Get the database path from environment variables or use the default
dbPath := os.Getenv("TEST_DATABASE_PATH")
if dbPath != "" {
fmt.Println("Using test database path from environment variable:", dbPath)
config.DatabasePath = dbPath
}
if config.StaticFilesDir == "" {
config.StaticFilesDir = "build"
}
if config.AllowedOrigins == "" {
config.AllowedOrigins = "http://localhost:8080"
}
return &config, nil
}