1 Star 2 Fork 0

xgh2012/api-core

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
mysql.go 1.73 KB
一键复制 编辑 原始数据 按行查看 历史
xgh2012 提交于 2025-09-25 15:53 +08:00 . 日志级别优化
package coreDb
import (
"context"
"errors"
"fmt"
"time"
"gitee.com/xgh2012/api-core/coreZapLog"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"gorm.io/gorm/schema"
)
// ConnectDatabase 连接数据库
func ConnectDatabase(username, password, host, port, database, charset, logLevel string) (*gorm.DB, error) {
var dsn = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=%s&parseTime=true&loc=Local", username, password, host, port, database, charset)
conn, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
NamingStrategy: schema.NamingStrategy{
SingularTable: true, // 使用单数表名
TablePrefix: "", // 表前缀
},
//在打开连接时设置日志级别为Info
Logger: getLoggerStd(logLevel),
})
if err != nil {
return nil, err
}
return conn, nil
}
func getLoggerStd(logLevel string) logger.Interface {
level := logger.Warn
if logLevel == "debug" || logLevel == "info" {
level = logger.Info
} else if logLevel == "error" {
level = logger.Error
} else if logLevel == "warn" {
level = logger.Warn
} else if logLevel == "none" {
level = logger.Silent
}
return coreZapLog.NewGormLogger(coreZapLog.LoggerSkipGorm, level, 3*time.Second)
}
// IsRealError 真实的错误
func IsRealError(err error) bool {
if err == nil {
return false
}
return errors.Is(err, gorm.ErrRecordNotFound) == false
}
// IsErrRecordNotFound 未找到记录
func IsErrRecordNotFound(err error) bool {
return errors.Is(err, gorm.ErrRecordNotFound)
}
// IfTxIsNullGetDB 创建事务
func IfTxIsNullGetDB(tx *gorm.DB, ado *gorm.DB) *gorm.DB {
if tx == nil {
return ado
}
return tx
}
// WithContext 创建上下文
func WithContext(c context.Context) context.Context {
if c == nil {
return context.Background()
}
return c
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/xgh2012/api-core.git
git@gitee.com:xgh2012/api-core.git
xgh2012
api-core
api-core
v0.0.5

搜索帮助