avicenna/service/data-hub/business-engine/internal/config/config.go

40 lines
876 B
Go

package config
import (
"fmt"
"strings"
"github.com/spf13/viper"
)
type Config struct {
Port string
LogLevel string
DatabaseURL string `mapstructure:"databaseUrl"`
// SurchargeRules []models.SurchargeRule `mapstructure:"surchargeRules"`
}
func Load() (*Config, error) {
viper.AddConfigPath(".")
viper.AddConfigPath("/etc/business-engine/")
viper.SetConfigName("config")
viper.SetConfigType("yaml")
viper.AutomaticEnv()
viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
if err := viper.ReadInConfig(); err != nil {
if _, ok := err.(viper.ConfigFileNotFoundError); !ok {
return nil, fmt.Errorf("failed to read config file: %w", err)
}
}
viper.BindEnv("databaseUrl", "DATABASE_URL")
var cfg Config
if err := viper.Unmarshal(&cfg); err != nil {
return nil, fmt.Errorf("failed to unmarshal config: %w", err)
}
return &cfg, nil
}