Files
Message-Push-Nest/pkg/setting/env.go
T
2026-01-15 20:05:00 +08:00

68 lines
1.8 KiB
Go

package setting
import (
"github.com/unknwon/com"
"log"
"os"
)
var optionValueMap = map[string]string{}
// getOptionEnvValue 获取必须声明的环境变量
func getOptionEnvValue(key string, defaultV string) string {
value := os.Getenv(key)
result := ""
if value == "" {
result = defaultV
} else {
result = value
}
optionValueMap[key] = result
return result
}
// getMustEnvValue 获取必须声明的环境变量
func getMustEnvValue(key string) string {
value := os.Getenv(key)
if value == "" {
log.Printf("[message-nest] you must assign env: %s", key)
return ""
} else {
return value
}
}
// printOptionValue 打印可选环境变量值
func printOptionValue() {
for key, val := range optionValueMap {
log.Printf("[message-nest] current option env: %s, value: %s", key, val)
}
}
// loadConfigFromEnv 从环境变量加载配置
func loadConfigFromEnv() {
AppSetting.JwtSecret = getOptionEnvValue("JWT_SECRET", "message-nest")
AppSetting.LogLevel = getOptionEnvValue("LOG_LEVEL", "INFO")
ServerSetting.RunMode = getOptionEnvValue("RUN_MODE", "release")
ServerSetting.HttpPort = 8000
ServerSetting.ReadTimeout = 60
ServerSetting.WriteTimeout = 60
ServerSetting.UrlPrefix = getOptionEnvValue("URL_PREFIX", "")
DatabaseSetting.Type = getOptionEnvValue("DB_TYPE", "sqlite")
DatabaseSetting.Ssl = getOptionEnvValue("SSL", "false")
if DatabaseSetting.Type == "mysql" {
DatabaseSetting.Host = getMustEnvValue("MYSQL_HOST")
DatabaseSetting.Port = com.StrTo(getMustEnvValue("MYSQL_PORT")).MustInt()
DatabaseSetting.User = getMustEnvValue("MYSQL_USER")
DatabaseSetting.Password = getMustEnvValue("MYSQL_PASSWORD")
DatabaseSetting.Name = getMustEnvValue("MYSQL_DB")
}
DatabaseSetting.TablePrefix = getOptionEnvValue("MYSQL_TABLE_PREFIX", "message_")
DatabaseSetting.SqlDebug = getOptionEnvValue("SQL_DEBUG", "disable")
printOptionValue()
}