mirror of https://github.com/kone-net/go-chat.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.3 KiB
66 lines
1.3 KiB
package config |
|
|
|
import ( |
|
"fmt" |
|
|
|
"github.com/spf13/viper" |
|
) |
|
|
|
type TomlConfig struct { |
|
AppName string |
|
MySQL MySQLConfig |
|
Log LogConfig |
|
StaticPath PathConfig |
|
MsgChannelType MsgChannelType |
|
} |
|
|
|
// MySQL相关配置 |
|
type MySQLConfig struct { |
|
Host string |
|
Name string |
|
Password string |
|
Port int |
|
TablePrefix string |
|
User string |
|
} |
|
|
|
// 日志保存地址 |
|
type LogConfig struct { |
|
Path string |
|
Level string |
|
} |
|
|
|
// 相关地址信息,例如静态文件地址 |
|
type PathConfig struct { |
|
FilePath string |
|
} |
|
|
|
// 消息队列类型及其消息队列相关信息 |
|
// gochannel为单机使用go默认的channel进行消息传递 |
|
// kafka是使用kafka作为消息队列,可以分布式扩展消息聊天程序 |
|
type MsgChannelType struct { |
|
ChannelType string |
|
KafkaHosts string |
|
KafkaTopic string |
|
} |
|
|
|
var c TomlConfig |
|
|
|
func init() { |
|
// 设置文件名 |
|
viper.SetConfigName("config") |
|
// 设置文件类型 |
|
viper.SetConfigType("toml") |
|
// 设置文件路径,可以多个viper会根据设置顺序依次查找 |
|
viper.AddConfigPath(".") |
|
viper.AutomaticEnv() |
|
err := viper.ReadInConfig() |
|
if err != nil { |
|
panic(fmt.Errorf("fatal error config file: %s", err)) |
|
} |
|
|
|
viper.Unmarshal(&c) |
|
} |
|
func GetConfig() TomlConfig { |
|
return c |
|
}
|
|
|