代码拉取完成,页面将自动刷新
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
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。