package initialize import ( "log" "os" "pure/global" "pure/model" "time" "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" "go.uber.org/zap" ) //@function: Gorm //@description: 初始化数据库并产生数据库全局变量 //@return: *gorm.DB func GormV1() *gorm.DB { switch global.MG_CONFIG.System.DbType { case "mysql": return GormMysqlV1() default: return GormMysqlV1() } } // MysqlTables //@function: MysqlTables //@description: 注册数据库表专用 //@param: db *gorm.DB func MysqlTablesV1(db *gorm.DB) { err := db.AutoMigrate( model.Firmware{}, model.Terminal{}, model.User{}, //model.SysDictionary{}, //model.SysDictionaryDetail{}, //model.ExaFileUploadAndDownload{}, //model.ExaFile{}, //model.ExaFileChunk{}, //model.ExaCustomer{}, //model.ExaSimpleUploader{}, // Code generated by pure Begin; DO NOT EDIT. // Code generated by pure End; DO NOT EDIT. ) if err != nil { global.MG_LOG.Error("register table failed", zap.Any("err", err)) os.Exit(0) } global.MG_LOG.Info("register table success") } // @function: GormMysql // @description: 初始化Mysql数据库 // @return: *gorm.DB func GormMysqlV1() *gorm.DB { m := global.MG_CONFIG.Mysql if m.Dbname == "" { return nil } dsn := m.Username + ":" + m.Password + "@tcp(" + m.Path + ")/" + m.Dbname + "?" + m.Config mysqlDB, err := gorm.Open("mysql", dsn) if err != nil { mysqlDB.Close() panic(err.Error()) } mysqlDB.LogMode(m.LogMode) if err != nil { log.Panicln("connected to mysqlDB failed", err) } else { err = mysqlDB.DB().Ping() // Send a ping to make sure the database connection is alive. if err != nil { panic(err.Error()) } } //自动迁移表,生成的表名自动变成复数 // mysqlDB.AutoMigrate(&User{}) // mysqlDB.DB().SetConnMaxLifetime(time.Minute * 5) //最多空闲5分钟 mysqlDB.DB().SetMaxIdleConns(m.MaxIdleConns) //数据库的空闲连接 mysqlDB.DB().SetMaxOpenConns(m.MaxOpenConns) //最大打开连接,即向Mysql服务端发出的所有连接的最大数目 return mysqlDB }