web 服务框架
This commit is contained in:
92
init/env/env.go
vendored
Normal file
92
init/env/env.go
vendored
Normal file
@@ -0,0 +1,92 @@
|
||||
package env
|
||||
|
||||
import (
|
||||
"log/slog"
|
||||
"os"
|
||||
|
||||
"github.com/gofiber/fiber/v2/log"
|
||||
"github.com/joho/godotenv"
|
||||
)
|
||||
|
||||
var (
|
||||
AppName = "platform"
|
||||
AppPort = "8080"
|
||||
)
|
||||
|
||||
var (
|
||||
DbHost = "localhost"
|
||||
DbPort = "3306"
|
||||
DbName string
|
||||
DbUserName string
|
||||
DbPassword string
|
||||
)
|
||||
|
||||
var (
|
||||
LogLevel = slog.LevelDebug
|
||||
)
|
||||
|
||||
func Init() {
|
||||
err := godotenv.Load()
|
||||
if err != nil {
|
||||
log.Debug("❓ 没有本地环境变量")
|
||||
} else {
|
||||
log.Debug("✔ 加载本地环境变量")
|
||||
}
|
||||
|
||||
check()
|
||||
}
|
||||
|
||||
func check() {
|
||||
_AppName := os.Getenv("APP_NAME")
|
||||
if _AppName != "" {
|
||||
AppName = _AppName
|
||||
}
|
||||
|
||||
_AppPort := os.Getenv("APP_PORT")
|
||||
if _AppPort != "" {
|
||||
AppPort = _AppPort
|
||||
}
|
||||
|
||||
_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 的值为空")
|
||||
}
|
||||
|
||||
_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
|
||||
}
|
||||
}
|
||||
22
init/logs/logs.go
Normal file
22
init/logs/logs.go
Normal file
@@ -0,0 +1,22 @@
|
||||
package logs
|
||||
|
||||
import (
|
||||
"log/slog"
|
||||
"os"
|
||||
"platform/init/env"
|
||||
"time"
|
||||
|
||||
"github.com/lmittmann/tint"
|
||||
)
|
||||
|
||||
var Default *slog.Logger
|
||||
|
||||
func Init() {
|
||||
Default = slog.New(
|
||||
tint.NewHandler(os.Stdout, &tint.Options{
|
||||
Level: env.LogLevel,
|
||||
TimeFormat: time.Kitchen,
|
||||
}),
|
||||
)
|
||||
slog.SetDefault(Default)
|
||||
}
|
||||
43
init/orm/orm.go
Normal file
43
init/orm/orm.go
Normal file
@@ -0,0 +1,43 @@
|
||||
package orm
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"platform/init/env"
|
||||
"platform/init/logs"
|
||||
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/schema"
|
||||
)
|
||||
import "gorm.io/driver/postgres"
|
||||
|
||||
var DB *gorm.DB
|
||||
|
||||
func Init() {
|
||||
logger := logs.Default
|
||||
|
||||
dsn := fmt.Sprintf(
|
||||
"host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Shanghai",
|
||||
env.DbName, env.DbUserName, env.DbPassword, env.DbName, env.DbPort,
|
||||
)
|
||||
|
||||
open, err := gorm.Open(postgres.Open(dsn), &gorm.Config{
|
||||
NamingStrategy: schema.NamingStrategy{
|
||||
SingularTable: true,
|
||||
},
|
||||
})
|
||||
if err != nil {
|
||||
logger.Error("gorm 打开数据库失败", slog.Any("err", err))
|
||||
panic(err)
|
||||
}
|
||||
|
||||
sql, err := open.DB()
|
||||
if err != nil {
|
||||
logger.Error("gorm open db error: ", slog.Any("err", err))
|
||||
panic(err)
|
||||
}
|
||||
sql.SetMaxIdleConns(10)
|
||||
sql.SetMaxOpenConns(100)
|
||||
|
||||
DB = open
|
||||
}
|
||||
Reference in New Issue
Block a user