web 服务框架

This commit is contained in:
2025-03-18 10:13:57 +08:00
parent 27e0ed2994
commit 19530d9d40
52 changed files with 8295 additions and 37 deletions

92
init/env/env.go vendored Normal file
View 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
View 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
View 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
}