refactor(database): 将数据库初始化逻辑从main函数移至server模块

- 从main.go中删除数据库相关导入和初始化代码
- 在server.go中添加数据库包导入
- 将initDatabase函数从main.go迁移至server.go
- 在server的Run函数中调用数据库初始化逻辑
- 保持原有的数据库连接检查和错误处理机制
main v1.0.2006
maguodong 2026-04-08 10:08:47 +08:00
parent 0f878247de
commit 36426dcf2e
2 changed files with 30 additions and 32 deletions

32
main.go
View File

@ -2,7 +2,6 @@ package main
import (
"git.magicany.cc/black1552/gin-base/config"
"git.magicany.cc/black1552/gin-base/database"
"git.magicany.cc/black1552/gin-base/log"
"git.magicany.cc/black1552/gin-base/server"
)
@ -10,9 +9,6 @@ import (
// TIP <p>To run your response, right-click the response and select <b>Run</b>.</p> <p>Alternatively, click
// the <icon src="AllIcons.Actions.Execute"/> icon in the gutter and select the <b>Run</b> menu item from here.</p>
func main() {
// 初始化数据库连接
initDatabase()
g := server.New()
cf, err := config.Unmarshal[config.BaseConfig]()
if err != nil {
@ -21,31 +17,3 @@ func main() {
log.Info("启动服务:", cf.Server.Addr)
server.Run(g)
}
// initDatabase 初始化数据库连接
func initDatabase() {
// 检查是否配置了数据库
dbConfig := config.GetConfigValue("database")
if dbConfig.IsEmpty() {
log.Warn("未配置数据库,跳过数据库初始化")
return
}
log.Info("正在初始化数据库连接...")
defer func() {
if err := recover(); err != nil {
log.Error("数据库初始化失败:", err)
return
}
}()
// 调用 database 包的 Database 函数进行初始化
// 这会自动读取配置、创建连接池、设置日志器等
db := database.Database()
if db == nil {
log.Error("数据库实例创建失败")
return
}
log.Info("数据库连接初始化成功")
}

View File

@ -12,6 +12,7 @@ import (
"time"
"git.magicany.cc/black1552/gin-base/config"
"git.magicany.cc/black1552/gin-base/database"
"git.magicany.cc/black1552/gin-base/log"
"git.magicany.cc/black1552/gin-base/middleware"
"github.com/gin-gonic/gin"
@ -29,6 +30,34 @@ func New() *gin.Engine {
return g
}
// initDatabase 初始化数据库连接
func initDatabase() {
// 检查是否配置了数据库
dbConfig := config.GetConfigValue("database")
if dbConfig.IsEmpty() {
log.Warn("未配置数据库,跳过数据库初始化")
return
}
log.Info("正在初始化数据库连接...")
defer func() {
if err := recover(); err != nil {
log.Error("数据库初始化失败:", err)
return
}
}()
// 调用 database 包的 Database 函数进行初始化
// 这会自动读取配置、创建连接池、设置日志器等
db := database.Database()
if db == nil {
log.Error("数据库实例创建失败")
return
}
log.Info("数据库连接初始化成功")
}
// Run 启动服务
// @Param *gin.Engine 路由实例
// 设置监听挂壁
@ -44,6 +73,7 @@ func Run(g *gin.Engine) {
MaxHeaderBytes: 20 * 1024 * 1024,
}
go func() {
initDatabase()
if err := s.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) {
// 检查是否是端口被占用的错误
if strings.Contains(err.Error(), "address already in use") ||