33 lines
974 B
Go
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
|
|
} |