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-01-29 22:00:13 +08:00
|
|
|
|
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
|
|
|
}
|
|
|
|
|
}
|