mirror of
https://github.com/xxjwxc/public.git
synced 2025-09-26 20:01:19 +08:00
52 lines
922 B
Go
52 lines
922 B
Go
package mysqldb
|
|
|
|
import (
|
|
"github.com/xxjwxc/public/dev"
|
|
"github.com/xxjwxc/public/errors"
|
|
|
|
"github.com/xxjwxc/public/mylog"
|
|
|
|
_ "github.com/go-sql-driver/mysql"
|
|
"github.com/jinzhu/gorm"
|
|
)
|
|
|
|
type MySqlDB struct {
|
|
*gorm.DB
|
|
IsInit bool
|
|
}
|
|
|
|
func OnInitDBOrm(dataSourceName string) (orm *MySqlDB) {
|
|
orm = new(MySqlDB)
|
|
orm.OnGetDBOrm(dataSourceName)
|
|
return
|
|
}
|
|
|
|
func (i *MySqlDB) OnGetDBOrm(dataSourceName string) (orm *gorm.DB) {
|
|
if i.DB == nil {
|
|
var err error
|
|
i.DB, err = gorm.Open("mysql", dataSourceName)
|
|
if err != nil {
|
|
mylog.Error(errors.Wrap(err, "Got error when connect database:"+dataSourceName))
|
|
return nil
|
|
}
|
|
i.IsInit = true
|
|
}
|
|
|
|
i.DB.SingularTable(true) //全局禁用表名复数
|
|
if dev.OnIsDev() {
|
|
i.DB.LogMode(true)
|
|
//beedb.OnDebug = true
|
|
} else {
|
|
i.DB.SetLogger(DbLog{})
|
|
}
|
|
orm = i.DB
|
|
return
|
|
}
|
|
|
|
func (i *MySqlDB) OnDestoryDB() {
|
|
if i.DB != nil {
|
|
i.DB.Close()
|
|
i.DB = nil
|
|
}
|
|
}
|