2025-03-18 10:13:57 +08:00
|
|
|
package env
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"log/slog"
|
|
|
|
|
"os"
|
2025-03-18 17:57:07 +08:00
|
|
|
"strconv"
|
2025-03-18 10:13:57 +08:00
|
|
|
|
|
|
|
|
"github.com/gofiber/fiber/v2/log"
|
|
|
|
|
"github.com/joho/godotenv"
|
|
|
|
|
)
|
|
|
|
|
|
2025-03-18 17:57:07 +08:00
|
|
|
// region app
|
|
|
|
|
|
2025-03-18 10:13:57 +08:00
|
|
|
var (
|
|
|
|
|
AppName = "platform"
|
|
|
|
|
AppPort = "8080"
|
|
|
|
|
)
|
|
|
|
|
|
2025-03-18 17:57:07 +08:00
|
|
|
func loadApp() {
|
2025-03-18 10:13:57 +08:00
|
|
|
_AppName := os.Getenv("APP_NAME")
|
|
|
|
|
if _AppName != "" {
|
|
|
|
|
AppName = _AppName
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_AppPort := os.Getenv("APP_PORT")
|
|
|
|
|
if _AppPort != "" {
|
|
|
|
|
AppPort = _AppPort
|
|
|
|
|
}
|
2025-03-18 17:57:07 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// endregion
|
|
|
|
|
|
|
|
|
|
// region db
|
|
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
DbHost = "localhost"
|
|
|
|
|
DbPort = "5432"
|
|
|
|
|
DbName string
|
|
|
|
|
DbUserName string
|
|
|
|
|
DbPassword string
|
|
|
|
|
)
|
2025-03-18 10:13:57 +08:00
|
|
|
|
2025-03-18 17:57:07 +08:00
|
|
|
func loadDb() {
|
2025-03-18 10:13:57 +08:00
|
|
|
_DbHost := os.Getenv("DB_HOST")
|
|
|
|
|
if _DbHost != "" {
|
|
|
|
|
DbHost = _DbHost
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_DbPort := os.Getenv("DB_PORT")
|
|
|
|
|
if _DbPort != "" {
|
|
|
|
|
DbPort = _DbPort
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_DbName := os.Getenv("DB_NAME")
|
|
|
|
|
if _DbName != "" {
|
|
|
|
|
DbName = _DbName
|
|
|
|
|
} else {
|
|
|
|
|
panic("环境变量 DB_NAME 的值为空")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_DbUserName := os.Getenv("DB_USERNAME")
|
|
|
|
|
if _DbUserName != "" {
|
|
|
|
|
DbUserName = _DbUserName
|
|
|
|
|
} else {
|
|
|
|
|
panic("环境变量 DB_USERNAME 的值为空")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_DbPassword := os.Getenv("DB_PASSWORD")
|
|
|
|
|
if _DbPassword != "" {
|
|
|
|
|
DbPassword = _DbPassword
|
|
|
|
|
} else {
|
|
|
|
|
panic("环境变量 DB_PASSWORD 的值为空")
|
|
|
|
|
}
|
2025-03-18 17:57:07 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// endregion
|
|
|
|
|
|
|
|
|
|
// region redis
|
|
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
RedisHost = "localhost"
|
|
|
|
|
RedisPort = "6379"
|
|
|
|
|
RedisDb = 0
|
|
|
|
|
RedisPass = ""
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func loadRedis() {
|
|
|
|
|
_RedisHost := os.Getenv("REDIS_HOST")
|
|
|
|
|
if _RedisHost != "" {
|
|
|
|
|
RedisHost = _RedisHost
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_RedisPort := os.Getenv("REDIS_PORT")
|
|
|
|
|
if _RedisPort != "" {
|
|
|
|
|
RedisPort = _RedisPort
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_RedisDb := os.Getenv("REDIS_DB")
|
|
|
|
|
if _RedisDb != "" {
|
|
|
|
|
atoi, err := strconv.Atoi(_RedisDb)
|
|
|
|
|
if err != nil {
|
|
|
|
|
panic("环境变量 REDIS_DB 的值不是数字")
|
|
|
|
|
}
|
|
|
|
|
RedisDb = atoi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
_RedisPass := os.Getenv("REDIS_PASS")
|
|
|
|
|
if _RedisPass != "" {
|
|
|
|
|
RedisPass = _RedisPass
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// endregion
|
2025-03-18 10:13:57 +08:00
|
|
|
|
2025-03-18 17:57:07 +08:00
|
|
|
// region log
|
|
|
|
|
|
|
|
|
|
var (
|
|
|
|
|
LogLevel = slog.LevelDebug
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func loadLog() {
|
2025-03-18 10:13:57 +08:00
|
|
|
_LogLevel := os.Getenv("LOG_LEVEL")
|
|
|
|
|
switch _LogLevel {
|
|
|
|
|
case "debug":
|
|
|
|
|
LogLevel = slog.LevelDebug
|
|
|
|
|
case "info":
|
|
|
|
|
LogLevel = slog.LevelInfo
|
|
|
|
|
case "warn":
|
|
|
|
|
LogLevel = slog.LevelWarn
|
|
|
|
|
case "error":
|
|
|
|
|
LogLevel = slog.LevelError
|
|
|
|
|
}
|
|
|
|
|
}
|
2025-03-18 17:57:07 +08:00
|
|
|
|
|
|
|
|
// endregion
|
|
|
|
|
|
|
|
|
|
func Init() {
|
|
|
|
|
err := godotenv.Load()
|
|
|
|
|
if err != nil {
|
|
|
|
|
log.Debug("❓ 没有本地环境变量")
|
|
|
|
|
} else {
|
|
|
|
|
log.Debug("✔ 加载本地环境变量")
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
loadApp()
|
|
|
|
|
loadDb()
|
|
|
|
|
loadRedis()
|
|
|
|
|
loadLog()
|
|
|
|
|
}
|