/
AngelCareMe
/
task_queue
Обзор
Документация
Войти
/
AngelCareMe
/
task_queue
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
pkg/config/config.go
75 строк
1 KB
AngelCareMe
done
28 июл 2025, 21:07
28 июл 2025, 21:07
c70014b
Код
Авторство
О чём код?
package config import ( "strings" "github.com/spf13/viper" ) type Config struct { Server ServerConfig Database DatabaseConfig Redis RedisConfig Queue QueueConfig Log LogConfig } type ServerConfig struct { Port string } type DatabaseConfig struct { Host string `mapstructure:"host"` Port string `mapstructure:"port"` User string `mapstructure:"user"` Password string `mapstructure:"password"` Name string `mapstructure:"name"` SSLMode string `mapstructure:"sslmode"` MaxConnections int `mapstructure:"max_connections"` } type RedisConfig struct { Host string Port string Password string DB int } type QueueConfig struct { Type string //redis or postgres type } type LogConfig struct { Level string } func Load() (*Config, error) { viper.SetConfigName("config") viper.SetConfigType("yaml") viper.AddConfigPath(".") viper.AddConfigPath("./config") viper.SetEnvPrefix("") viper.SetEnvKeyReplacer(strings.NewReplacer(".", "_")) viper.AutomaticEnv() //Default statement viper.SetDefault("server.port", "8080") viper.SetDefault("queue.type", "redis") viper.SetDefault("log.level", "info") viper.SetDefault("database.max_connections", 25) if err := viper.ReadInConfig(); err != nil { if _, ok := err.(viper.ConfigFileNotFoundError); !ok { return nil, err } } var cfg Config err := viper.Unmarshal(&cfg) if err != nil { return nil, err } return &cfg, nil }