Backend/internal/infrastructure/config.go

43 lines
1.2 KiB
Go

package infrastructure
import (
"github.com/creasty/defaults"
"github.com/spf13/viper"
)
type Config struct {
DBUser string `mapstructure:"DBUser" default:"userpg"`
DBName string `mapstructure:"DBName" default:"58blog"`
DBPass string `mapstructure:"DBPassword" default:"1205"`
DBHost string `mapstructure:"DBHost" default:"localhost"`
DBPort string `mapstructure:"DBPort" default:"5432"`
AdminName string `mapstructure:"ADMIN_NAME" default:"muts"`
AdminPassword string `mapstructure:"ADMIN_PASS" default:"1205"`
ImagesPath string `mapstructure:"IMAGES_PATH" default:"./images/"`
}
func LoadConfig() (config *Config, err error) {
config = &Config{}
if err = defaults.Set(config); err != nil {
return nil, err
}
viper.SetConfigName("config")
viper.SetConfigType("yaml")
viper.AddConfigPath(".")
viper.AddConfigPath("/etc/58team_blog/")
viper.AddConfigPath("/58team_blog/cfgs/")
viper.AutomaticEnv()
if err = viper.ReadInConfig(); err != nil {
if _, ok := err.(viper.ConfigFileNotFoundError); !ok {
return nil, err
}
}
if err = viper.Unmarshal(&config); err != nil {
return nil, err
}
return config, nil
}