76 lines
2.0 KiB
Go
76 lines
2.0 KiB
Go
package lxDb
|
|
|
|
import (
|
|
"fmt"
|
|
"git.listensoft.net/tool/lxutils/lxzap"
|
|
"go.uber.org/zap"
|
|
"gorm.io/driver/mysql"
|
|
"gorm.io/gorm"
|
|
"gorm.io/gorm/logger"
|
|
"gorm.io/gorm/schema"
|
|
"os"
|
|
)
|
|
|
|
// DB2.0 数据库连接 gorm2.0
|
|
var DB *gorm.DB //gs 数据库
|
|
type DbConfig struct {
|
|
Host string
|
|
Port string
|
|
User string
|
|
Password string
|
|
Database string
|
|
Charset string
|
|
}
|
|
|
|
func InitDB(env string, conf DbConfig) {
|
|
//dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
|
|
//newLogger := logger.New(
|
|
// //zap.NewStdLog(),
|
|
// log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer
|
|
// logger.Config{
|
|
// SlowThreshold: 200 * time.Millisecond, // Slow SQL threshold
|
|
// LogLevel: logger.Info, // Log level
|
|
// IgnoreRecordNotFoundError: true, // Ignore ErrRecordNotFound error for logger
|
|
// Colorful: false, // Disable color
|
|
// },
|
|
//)
|
|
if conf.Host == "" {
|
|
DB = nil
|
|
fmt.Println("未配置Db连接")
|
|
return
|
|
}
|
|
if conf.Charset == "" {
|
|
conf.Charset = "utf8mb4"
|
|
}
|
|
dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=True&loc=Local",
|
|
conf.User, conf.Password, conf.Host, conf.Port, conf.Database, conf.Charset)
|
|
if env == "dev" {
|
|
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
|
|
Logger: logger.Default.LogMode(logger.Info),
|
|
NamingStrategy: schema.NamingStrategy{
|
|
SingularTable: true, // 使用单数表名,启用该选项,此时,`User` 的表名应该是 `user`
|
|
},
|
|
})
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
os.Exit(-1)
|
|
}
|
|
DB = db
|
|
} else {
|
|
logger2 := lxzap.NewGormZap(zap.L())
|
|
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
|
|
//Logger: logger.Default.LogMode(logger.Info),
|
|
Logger: logger2,
|
|
NamingStrategy: schema.NamingStrategy{
|
|
SingularTable: true, // 使用单数表名,启用该选项,此时,`User` 的表名应该是 `user`
|
|
},
|
|
})
|
|
if err != nil {
|
|
fmt.Println(err.Error())
|
|
os.Exit(-1)
|
|
}
|
|
DB = db
|
|
}
|
|
//db.AutoMigrate(TaskData{}, Task{}, Version{})
|
|
}
|