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{}) }