Files
Message-Push-Nest/pkg/setting/setting.go
T

86 lines
1.6 KiB
Go
Raw Normal View History

2023-12-30 17:40:20 +08:00
package setting
import (
"log"
2024-01-28 19:59:33 +08:00
"os"
2023-12-30 17:40:20 +08:00
"time"
"github.com/go-ini/ini"
)
type App struct {
JwtSecret string
RuntimeRootPath string
2024-01-13 11:43:54 +08:00
LogLevel string
2024-01-13 13:43:30 +08:00
InitData string
2023-12-30 17:40:20 +08:00
}
var AppSetting = &App{}
type Server struct {
RunMode string
HttpPort int
ReadTimeout time.Duration
WriteTimeout time.Duration
2024-01-02 11:50:54 +08:00
EmbedHtml string
2023-12-30 17:40:20 +08:00
}
var ServerSetting = &Server{}
type Database struct {
Type string
User string
Password string
Host string
2024-01-02 22:19:12 +08:00
Port int
2023-12-30 17:40:20 +08:00
Name string
TablePrefix string
2024-01-07 00:25:35 +08:00
SqlDebug string
2023-12-30 17:40:20 +08:00
}
var DatabaseSetting = &Database{}
var cfg *ini.File
2024-01-28 19:59:33 +08:00
func fileExists(filePath string) bool {
_, err := os.Stat(filePath)
return !os.IsNotExist(err)
}
2023-12-30 17:40:20 +08:00
// Setup initialize the configuration instance
func Setup() {
var err error
2024-01-28 19:59:33 +08:00
intPath := "conf/app.ini"
2023-12-30 17:40:20 +08:00
2024-01-28 19:59:33 +08:00
if fileExists(intPath) {
log.Printf("[message-nest] start server from %s.", intPath)
cfg, err = ini.Load(intPath)
if err != nil {
log.Fatalf("[message-nest] setting.Setup, fail to parse 'conf/app.ini': %v", err)
}
mapTo("app", AppSetting)
mapTo("server", ServerSetting)
mapTo("database", DatabaseSetting)
} else {
log.Printf("[message-nest] %s is not exists, start server from env vars.", intPath)
loadConfigFromEnv()
}
2023-12-30 17:40:20 +08:00
ServerSetting.ReadTimeout = ServerSetting.ReadTimeout * time.Second
ServerSetting.WriteTimeout = ServerSetting.WriteTimeout * time.Second
2024-04-29 17:31:13 +08:00
log.Printf("[message-nest] DB type: %s", DatabaseSetting.Type)
2023-12-30 17:40:20 +08:00
}
// mapTo map section
func mapTo(section string, v interface{}) {
err := cfg.Section(section).MapTo(v)
if err != nil {
2024-01-28 19:59:33 +08:00
log.Fatalf("[message-nest] Cfg.MapTo %s err: %v", section, err)
2023-12-30 17:40:20 +08:00
}
}