busniess-user-center/pkg/db/db.go

43 lines
819 B
Go

package db
import (
"busniess-user-center/config"
"busniess-user-center/pkg/log"
"fmt"
"go.uber.org/zap"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
// todo 兼容同一个mysql实例同时连接多个database
func InitDB(logger *zap.SugaredLogger, conf config.Mysql) (*gorm.DB, error) {
if logger == nil {
return nil, fmt.Errorf("Initdb logger is nil")
}
gormLogger := log.NewGormLogger(logger)
db, err := gorm.Open(mysql.Open(conf.TransDns()), &gorm.Config{Logger: gormLogger})
if err != nil {
if db != nil {
if sqlDB, err := db.DB(); err != nil {
return nil, err
} else {
_ = sqlDB.Close()
}
}
return nil, err
}
sqlDB, err := db.DB()
if err != nil {
return nil, err
}
sqlDB.SetMaxIdleConns(conf.MaxIdleConns)
sqlDB.SetMaxOpenConns(conf.MaxOpenConns)
return db, nil
}