ferry/database/mysql.go

75 lines
1.5 KiB
Go
Raw Normal View History

2020-07-13 20:33:20 +08:00
package database
import (
"bytes"
"ferry/global/orm"
"ferry/tools/config"
"strconv"
_ "github.com/go-sql-driver/mysql" //加载mysql
"github.com/jinzhu/gorm"
log "github.com/sirupsen/logrus"
)
var (
DbType string
Host string
Port int
Name string
Username string
Password string
)
func (e *Mysql) Setup() {
var err error
var db Database
db = new(Mysql)
orm.MysqlConn = db.GetConnect()
orm.Eloquent, err = db.Open(DbType, orm.MysqlConn)
if err != nil {
log.Fatalf("%s connect error %v", DbType, err)
} else {
log.Printf("%s connect success!", DbType)
}
if orm.Eloquent.Error != nil {
log.Fatalf("database error %v", orm.Eloquent.Error)
}
orm.Eloquent.LogMode(true)
}
type Mysql struct {
}
func (e *Mysql) Open(dbType string, conn string) (db *gorm.DB, err error) {
return gorm.Open(dbType, conn)
}
func (e *Mysql) GetConnect() string {
DbType = config.DatabaseConfig.Dbtype
Host = config.DatabaseConfig.Host
Port = config.DatabaseConfig.Port
Name = config.DatabaseConfig.Name
Username = config.DatabaseConfig.Username
Password = config.DatabaseConfig.Password
var conn bytes.Buffer
conn.WriteString(Username)
conn.WriteString(":")
conn.WriteString(Password)
conn.WriteString("@tcp(")
conn.WriteString(Host)
conn.WriteString(":")
conn.WriteString(strconv.Itoa(Port))
conn.WriteString(")")
conn.WriteString("/")
conn.WriteString(Name)
conn.WriteString("?charset=utf8&parseTime=True&loc=Local&timeout=1000ms")
return conn.String()
}