Create & Init Project...
This commit is contained in:
46
library/database/orm/orm.go
Normal file
46
library/database/orm/orm.go
Normal file
@ -0,0 +1,46 @@
|
||||
package orm
|
||||
|
||||
import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"go-common/library/ecode"
|
||||
"go-common/library/log"
|
||||
xtime "go-common/library/time"
|
||||
|
||||
// database driver
|
||||
_ "github.com/go-sql-driver/mysql"
|
||||
"github.com/jinzhu/gorm"
|
||||
)
|
||||
|
||||
// Config mysql config.
|
||||
type Config struct {
|
||||
DSN string // data source name.
|
||||
Active int // pool
|
||||
Idle int // pool
|
||||
IdleTimeout xtime.Duration // connect max life time.
|
||||
}
|
||||
|
||||
type ormLog struct{}
|
||||
|
||||
func (l ormLog) Print(v ...interface{}) {
|
||||
log.Info(strings.Repeat("%v ", len(v)), v...)
|
||||
}
|
||||
|
||||
func init() {
|
||||
gorm.ErrRecordNotFound = ecode.NothingFound
|
||||
}
|
||||
|
||||
// NewMySQL new db and retry connection when has error.
|
||||
func NewMySQL(c *Config) (db *gorm.DB) {
|
||||
db, err := gorm.Open("mysql", c.DSN)
|
||||
if err != nil {
|
||||
log.Error("db dsn(%s) error: %v", c.DSN, err)
|
||||
panic(err)
|
||||
}
|
||||
db.DB().SetMaxIdleConns(c.Idle)
|
||||
db.DB().SetMaxOpenConns(c.Active)
|
||||
db.DB().SetConnMaxLifetime(time.Duration(c.IdleTimeout) / time.Second)
|
||||
db.SetLogger(ormLog{})
|
||||
return
|
||||
}
|
Reference in New Issue
Block a user