Files
2025-08-03 00:11:15 +08:00

33 lines
974 B
Go

package database
import (
"context"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
"nl-video-api/utility/response"
)
// CheckConnection 检查数据库连接
func CheckConnection(ctx context.Context) error {
return g.DB().PingMaster()
}
// CheckConnectionMiddleware 数据库连接检查中间件
func CheckConnectionMiddleware(r *ghttp.Request) {
if err := CheckConnection(r.Context()); err != nil {
g.Log().Error(r.Context(), "数据库连接失败:", err)
response.Error(r, response.CodeInternalError, "数据库服务暂时不可用,请稍后重试")
return
}
r.Middleware.Next()
}
// WithDBCheck 为控制器方法添加数据库连接检查
func WithDBCheck(r *ghttp.Request) bool {
if err := CheckConnection(r.Context()); err != nil {
g.Log().Error(r.Context(), "数据库连接失败:", err)
response.Error(r, response.CodeInternalError, "数据库服务暂时不可用,请稍后重试")
return false
}
return true
}