82 lines
1.5 KiB
Go
82 lines
1.5 KiB
Go
package setting
|
|
|
|
import (
|
|
"log"
|
|
"time"
|
|
|
|
"github.com/go-ini/ini"
|
|
)
|
|
|
|
type App struct {
|
|
JwtSecret string
|
|
PageSize int
|
|
PrefixUrl string
|
|
|
|
RuntimeRootPath string
|
|
|
|
LogSavePath string
|
|
LogSaveName string
|
|
LogFileExt string
|
|
TimeFormat string
|
|
}
|
|
|
|
var AppSetting = &App{}
|
|
|
|
type Server struct {
|
|
RunMode string
|
|
HttpPort int
|
|
ReadTimeout time.Duration
|
|
WriteTimeout time.Duration
|
|
}
|
|
|
|
var ServerSetting = &Server{}
|
|
|
|
type Database struct {
|
|
Type string
|
|
User string
|
|
Password string
|
|
Host string
|
|
Name string
|
|
TablePrefix string
|
|
}
|
|
|
|
var DatabaseSetting = &Database{}
|
|
|
|
type Redis struct {
|
|
Host string
|
|
Password string
|
|
MaxIdle int
|
|
MaxActive int
|
|
IdleTimeout time.Duration
|
|
}
|
|
|
|
var RedisSetting = &Redis{}
|
|
|
|
var cfg *ini.File
|
|
|
|
// Setup initialize the configuration instance
|
|
func Setup() {
|
|
var err error
|
|
cfg, err = ini.Load("conf/app.ini")
|
|
if err != nil {
|
|
log.Fatalf("setting.Setup, fail to parse 'conf/app.ini': %v", err)
|
|
}
|
|
|
|
mapTo("app", AppSetting)
|
|
mapTo("server", ServerSetting)
|
|
mapTo("database", DatabaseSetting)
|
|
mapTo("redis", RedisSetting)
|
|
|
|
ServerSetting.ReadTimeout = ServerSetting.ReadTimeout * time.Second
|
|
ServerSetting.WriteTimeout = ServerSetting.WriteTimeout * time.Second
|
|
RedisSetting.IdleTimeout = RedisSetting.IdleTimeout * time.Second
|
|
}
|
|
|
|
// mapTo map section
|
|
func mapTo(section string, v interface{}) {
|
|
err := cfg.Section(section).MapTo(v)
|
|
if err != nil {
|
|
log.Fatalf("Cfg.MapTo %s err: %v", section, err)
|
|
}
|
|
}
|