Files
go-admin/database/mysql.go
T

103 lines
1.9 KiB
Go

package database
import (
"bytes"
_ "github.com/go-sql-driver/mysql" //加载mysql
"github.com/jinzhu/gorm"
"go-admin/tools/config"
"log"
"strconv"
)
var Eloquent *gorm.DB
var (
DbType string
Host string
Port int
Name string
Username string
Password string
)
func Setup() {
DbType = config.DatabaseConfig.Dbtype
Host = config.DatabaseConfig.Host
Port = config.DatabaseConfig.Port
Name = config.DatabaseConfig.Name
Username = config.DatabaseConfig.Username
Password = config.DatabaseConfig.Password
if DbType != "mysql" && DbType != "sqlite3" {
log.Println("db type unknow")
}
var err error
conn := GetMysqlConnect()
log.Println(conn)
var db Database
if DbType == "mysql" {
db = new(Mysql)
Eloquent, err = db.Open(DbType, conn)
} else if DbType == "sqlite3" {
db = new(SqlLite)
Eloquent, err = db.Open(DbType, Host)
} else {
panic("db type unknow")
}
if err != nil {
log.Fatalf("%s connect error %v", DbType, err)
} else {
log.Printf("%s connect success!", DbType)
}
if Eloquent.Error != nil {
log.Fatalf("database error %v", Eloquent.Error)
}
Eloquent.LogMode(true)
}
func GetMysqlConnect() string {
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()
}
type Database interface {
Open(dbType string, conn string) (db *gorm.DB, err error)
}
type Mysql struct {
}
func (*Mysql) Open(dbType string, conn string) (db *gorm.DB, err error) {
eloquent, err := gorm.Open(dbType, conn)
return eloquent, err
}
type SqlLite struct {
}
func (*SqlLite) Open(dbType string, conn string) (db *gorm.DB, err error) {
eloquent, err := gorm.Open(dbType, conn)
return eloquent, err
}